Fix scene gallery selection (#990)

This commit is contained in:
InfiniteTF
2020-12-11 01:15:32 +01:00
committed by GitHub
parent fad64ba126
commit 4a08bd351a
2 changed files with 16 additions and 7 deletions

View File

@@ -598,7 +598,7 @@ export const SceneEditPanel: React.FC<IProps> = (props: IProps) => {
<Col xs={9}> <Col xs={9}>
<SceneGallerySelect <SceneGallerySelect
sceneId={props.scene.id} sceneId={props.scene.id}
initialId={galleryId} gallery={props.scene.gallery ?? undefined}
onSelect={(item) => setGalleryId(item ? item.id : undefined)} onSelect={(item) => setGalleryId(item ? item.id : undefined)}
/> />
</Col> </Col>

View File

@@ -72,7 +72,7 @@ interface IFilterSelectProps
extends Omit<ISelectProps, "onChange" | "items" | "onCreateOption"> {} extends Omit<ISelectProps, "onChange" | "items" | "onCreateOption"> {}
interface ISceneGallerySelect { interface ISceneGallerySelect {
initialId?: string; gallery?: Pick<GQL.Gallery, "title" | "path" | "id">;
sceneId: string; sceneId: string;
onSelect: ( onSelect: (
item: item:
@@ -225,8 +225,9 @@ const FilterSelectComponent: React.FC<
}; };
export const SceneGallerySelect: React.FC<ISceneGallerySelect> = (props) => { export const SceneGallerySelect: React.FC<ISceneGallerySelect> = (props) => {
const [query, setQuery] = React.useState<string>(""); const [query, setQuery] = useState<string>("");
const { data, loading } = useFindGalleries(getFilter()); const { data, loading } = useFindGalleries(getFilter());
const [selectedOption, setSelectedOption] = useState<Option>();
const galleries = data?.findGalleries.galleries ?? []; const galleries = data?.findGalleries.galleries ?? [];
const items = galleries.map((g) => ({ const items = galleries.map((g) => ({
@@ -246,14 +247,22 @@ export const SceneGallerySelect: React.FC<ISceneGallerySelect> = (props) => {
const onChange = (selectedItems: ValueType<Option>) => { const onChange = (selectedItems: ValueType<Option>) => {
const selectedItem = getSelectedValues(selectedItems)[0]; const selectedItem = getSelectedValues(selectedItems)[0];
setSelectedOption(
Array.isArray(selectedItems) ? selectedItems[0] : selectedItems
);
props.onSelect( props.onSelect(
selectedItem ? galleries.find((g) => g.id === selectedItem) : undefined selectedItem ? galleries.find((g) => g.id === selectedItem) : undefined
); );
}; };
const selectedOptions: Option[] = props.initialId const selectedOptions: Option[] = [];
? items.filter((item) => props.initialId?.indexOf(item.value) !== -1) if (selectedOption !== undefined) selectedOptions.push(selectedOption);
: []; else if (props.gallery) {
selectedOptions.push({
value: props.gallery.id,
label: props.gallery.title ?? props.gallery.path ?? "Unknown",
});
}
return ( return (
<SelectComponent <SelectComponent
@@ -274,7 +283,7 @@ interface IScrapePerformerSuggestProps {
export const ScrapePerformerSuggest: React.FC<IScrapePerformerSuggestProps> = ( export const ScrapePerformerSuggest: React.FC<IScrapePerformerSuggestProps> = (
props props
) => { ) => {
const [query, setQuery] = React.useState<string>(""); const [query, setQuery] = useState<string>("");
const { data, loading } = useScrapePerformerList(props.scraperId, query); const { data, loading } = useScrapePerformerList(props.scraperId, query);
const performers = data?.scrapePerformerList ?? []; const performers = data?.scrapePerformerList ?? [];