From e76e4c978f2d9d8546ff07e267f15e099681e3f4 Mon Sep 17 00:00:00 2001 From: WithoutPants <53250216+WithoutPants@users.noreply.github.com> Date: Mon, 4 Apr 2022 10:31:51 +1000 Subject: [PATCH] Fix scene edit panel not updating on scene change (#2471) --- .../Scenes/SceneDetails/SceneEditPanel.tsx | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx index 7e2d1a5a3..38937907f 100644 --- a/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx +++ b/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import React, { useEffect, useState, useMemo } from "react"; import { FormattedMessage, useIntl } from "react-intl"; import { Button, @@ -107,27 +107,31 @@ export const SceneEditPanel: React.FC = ({ stash_ids: yup.mixed().optional().nullable(), }); - const initialValues = { - title: scene.title ?? "", - details: scene.details ?? "", - url: scene.url ?? "", - date: scene.date ?? "", - rating: scene.rating ?? null, - gallery_ids: (scene.galleries ?? []).map((g) => g.id), - studio_id: scene.studio?.id, - performer_ids: (scene.performers ?? []).map((p) => p.id), - movies: (scene.movies ?? []).map((m) => { - return { movie_id: m.movie.id, scene_index: m.scene_index }; + const initialValues = useMemo( + () => ({ + title: scene.title ?? "", + details: scene.details ?? "", + url: scene.url ?? "", + date: scene.date ?? "", + rating: scene.rating ?? null, + gallery_ids: (scene.galleries ?? []).map((g) => g.id), + studio_id: scene.studio?.id, + performer_ids: (scene.performers ?? []).map((p) => p.id), + movies: (scene.movies ?? []).map((m) => { + return { movie_id: m.movie.id, scene_index: m.scene_index }; + }), + tag_ids: (scene.tags ?? []).map((t) => t.id), + cover_image: undefined, + stash_ids: getStashIDs(scene.stash_ids), }), - tag_ids: (scene.tags ?? []).map((t) => t.id), - cover_image: undefined, - stash_ids: getStashIDs(scene.stash_ids), - }; + [scene] + ); type InputValues = typeof initialValues; const formik = useFormik({ initialValues, + enableReinitialize: true, validationSchema: schema, onSubmit: (values) => onSave(getSceneInput(values)), });