Fix scene edit panel not updating on scene change (#2471)

This commit is contained in:
WithoutPants
2022-04-04 10:31:51 +10:00
committed by GitHub
parent 92320b3418
commit e76e4c978f

View File

@@ -1,4 +1,4 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useState, useMemo } from "react";
import { FormattedMessage, useIntl } from "react-intl"; import { FormattedMessage, useIntl } from "react-intl";
import { import {
Button, Button,
@@ -107,27 +107,31 @@ export const SceneEditPanel: React.FC<IProps> = ({
stash_ids: yup.mixed<GQL.StashIdInput>().optional().nullable(), stash_ids: yup.mixed<GQL.StashIdInput>().optional().nullable(),
}); });
const initialValues = { const initialValues = useMemo(
title: scene.title ?? "", () => ({
details: scene.details ?? "", title: scene.title ?? "",
url: scene.url ?? "", details: scene.details ?? "",
date: scene.date ?? "", url: scene.url ?? "",
rating: scene.rating ?? null, date: scene.date ?? "",
gallery_ids: (scene.galleries ?? []).map((g) => g.id), rating: scene.rating ?? null,
studio_id: scene.studio?.id, gallery_ids: (scene.galleries ?? []).map((g) => g.id),
performer_ids: (scene.performers ?? []).map((p) => p.id), studio_id: scene.studio?.id,
movies: (scene.movies ?? []).map((m) => { performer_ids: (scene.performers ?? []).map((p) => p.id),
return { movie_id: m.movie.id, scene_index: m.scene_index }; 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), [scene]
cover_image: undefined, );
stash_ids: getStashIDs(scene.stash_ids),
};
type InputValues = typeof initialValues; type InputValues = typeof initialValues;
const formik = useFormik({ const formik = useFormik({
initialValues, initialValues,
enableReinitialize: true,
validationSchema: schema, validationSchema: schema,
onSubmit: (values) => onSave(getSceneInput(values)), onSubmit: (values) => onSave(getSceneInput(values)),
}); });