diff --git a/frontend/src/pages/random_page.tsx b/frontend/src/pages/random_page.tsx index daa6281..9b6d640 100644 --- a/frontend/src/pages/random_page.tsx +++ b/frontend/src/pages/random_page.tsx @@ -11,6 +11,7 @@ export default function RandomPage() { network.getRandomResource().then((res) => { if (res.success) { navigate(`/resources/${res.data!.id}`, { + replace: true, state: { resource: res.data, }, diff --git a/server/api/resource.go b/server/api/resource.go index 5b3e5c9..49a9f9c 100644 --- a/server/api/resource.go +++ b/server/api/resource.go @@ -252,7 +252,8 @@ func handleUpdateResource(c fiber.Ctx) error { } func handleGetRandomResource(c fiber.Ctx) error { - resource, err := service.RandomResource() + host := c.Hostname() + resource, err := service.RandomResource(host) if err != nil { return err } diff --git a/server/service/resource.go b/server/service/resource.go index 3d1557b..28e13b5 100644 --- a/server/service/resource.go +++ b/server/service/resource.go @@ -256,11 +256,15 @@ func EditResource(uid, rid uint, params *ResourceCreateParams) error { return nil } -func RandomResource() (*model.ResourceDetailView, error) { +func RandomResource(host string) (*model.ResourceDetailView, error) { r, err := dao.RandomResource() if err != nil { return nil, err } v := r.ToDetailView() + if host != "" { + related := findRelatedResources(r, host) + v.Related = related + } return &v, nil }