mirror of
https://github.com/jeffvli/feishin.git
synced 2026-07-22 18:36:34 +02:00
persist rescan toggle
This commit is contained in:
@@ -50,7 +50,7 @@ interface UseMetadataEditorArgs {
|
||||
export const useMetadataEditor = ({ browser, songs: songsProp, utils }: UseMetadataEditorArgs) => {
|
||||
const { t } = useTranslation();
|
||||
const server = useCurrentServer();
|
||||
const { favoriteValues, multiValueFields } = useTagEditorSettings();
|
||||
const { favoriteValues, multiValueFields, triggerRescan } = useTagEditorSettings();
|
||||
const { setSettings } = useSettingsStoreActions();
|
||||
|
||||
const [isLoading, setIsLoading] = useState(true);
|
||||
@@ -58,7 +58,6 @@ export const useMetadataEditor = ({ browser, songs: songsProp, utils }: UseMetad
|
||||
const [error, setError] = useState<null | string>(null);
|
||||
const [readWarning, setReadWarning] = useState<null | string>(null);
|
||||
const [resolvedSongs, setResolvedSongs] = useState<Song[]>([]);
|
||||
const [rescan, setRescan] = useState(true);
|
||||
const [isSaving, setIsSaving] = useState(false);
|
||||
const [tagSummary, setTagSummary] = useState<Record<string, null | TagValue>>({});
|
||||
const [editedFields, setEditedFields] = useState<Record<string, TagValue>>({});
|
||||
@@ -68,6 +67,11 @@ export const useMetadataEditor = ({ browser, songs: songsProp, utils }: UseMetad
|
||||
const [artworkDisplayUrl, setArtworkDisplayUrl] = useState<null | string>(null);
|
||||
const [artworkOp, setArtworkOp] = useState<ArtworkOp | null>(null);
|
||||
|
||||
const setRescan = useCallback(
|
||||
(value: boolean) => setSettings({ tagEditor: { triggerRescan: value } }),
|
||||
[setSettings],
|
||||
);
|
||||
|
||||
/**
|
||||
* Merges `tagSummary` (on-disk values) and `editedFields` (unsaved edits) into
|
||||
* `displayFields`. Keys present in `tagSummary` with a `null` value (differing
|
||||
@@ -331,7 +335,7 @@ export const useMetadataEditor = ({ browser, songs: songsProp, utils }: UseMetad
|
||||
await browser?.clearCache();
|
||||
}
|
||||
|
||||
if (rescan && server) {
|
||||
if (triggerRescan && server) {
|
||||
try {
|
||||
await controller.refreshItems({
|
||||
apiClientProps: { serverId: server.id },
|
||||
@@ -347,7 +351,17 @@ export const useMetadataEditor = ({ browser, songs: songsProp, utils }: UseMetad
|
||||
setLoadProgress(null);
|
||||
setIsSaving(false);
|
||||
}
|
||||
}, [artworkOp, browser, editedFields, removedKeys, rescan, resolvedSongs, server, t, utils]);
|
||||
}, [
|
||||
artworkOp,
|
||||
browser,
|
||||
editedFields,
|
||||
removedKeys,
|
||||
resolvedSongs,
|
||||
server,
|
||||
t,
|
||||
triggerRescan,
|
||||
utils,
|
||||
]);
|
||||
|
||||
/** Known tags not yet present in `displayFields`, sorted alphabetically for the add-field dropdown. */
|
||||
const availableToAdd = useMemo(
|
||||
@@ -387,7 +401,7 @@ export const useMetadataEditor = ({ browser, songs: songsProp, utils }: UseMetad
|
||||
mixedPlaceholder,
|
||||
multiValueKeys,
|
||||
readWarning,
|
||||
rescan,
|
||||
rescan: triggerRescan,
|
||||
setRescan,
|
||||
showRemoveArtworkButton,
|
||||
sortedFieldEntries,
|
||||
|
||||
@@ -747,6 +747,7 @@ const AutoDJSettingsSchema = z.object({
|
||||
const TagEditorSettingsSchema = z.object({
|
||||
favoriteValues: z.record(z.string(), z.array(z.string())),
|
||||
multiValueFields: z.array(z.string()),
|
||||
triggerRescan: z.boolean(),
|
||||
});
|
||||
|
||||
/**
|
||||
@@ -1997,6 +1998,7 @@ const initialState: SettingsState = {
|
||||
tagEditor: {
|
||||
favoriteValues: {},
|
||||
multiValueFields: ['artist', 'albumArtist', 'genre', 'composer', 'lyricist'],
|
||||
triggerRescan: true,
|
||||
},
|
||||
visualizer: {
|
||||
audiomotionanalyzer: {
|
||||
|
||||
Reference in New Issue
Block a user