persist rescan toggle

This commit is contained in:
jeffvli
2026-07-16 21:26:35 -07:00
parent b11ad3e069
commit aa5309c54f
2 changed files with 21 additions and 5 deletions
@@ -50,7 +50,7 @@ interface UseMetadataEditorArgs {
export const useMetadataEditor = ({ browser, songs: songsProp, utils }: UseMetadataEditorArgs) => { export const useMetadataEditor = ({ browser, songs: songsProp, utils }: UseMetadataEditorArgs) => {
const { t } = useTranslation(); const { t } = useTranslation();
const server = useCurrentServer(); const server = useCurrentServer();
const { favoriteValues, multiValueFields } = useTagEditorSettings(); const { favoriteValues, multiValueFields, triggerRescan } = useTagEditorSettings();
const { setSettings } = useSettingsStoreActions(); const { setSettings } = useSettingsStoreActions();
const [isLoading, setIsLoading] = useState(true); 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 [error, setError] = useState<null | string>(null);
const [readWarning, setReadWarning] = useState<null | string>(null); const [readWarning, setReadWarning] = useState<null | string>(null);
const [resolvedSongs, setResolvedSongs] = useState<Song[]>([]); const [resolvedSongs, setResolvedSongs] = useState<Song[]>([]);
const [rescan, setRescan] = useState(true);
const [isSaving, setIsSaving] = useState(false); const [isSaving, setIsSaving] = useState(false);
const [tagSummary, setTagSummary] = useState<Record<string, null | TagValue>>({}); const [tagSummary, setTagSummary] = useState<Record<string, null | TagValue>>({});
const [editedFields, setEditedFields] = useState<Record<string, 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 [artworkDisplayUrl, setArtworkDisplayUrl] = useState<null | string>(null);
const [artworkOp, setArtworkOp] = useState<ArtworkOp | null>(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 * Merges `tagSummary` (on-disk values) and `editedFields` (unsaved edits) into
* `displayFields`. Keys present in `tagSummary` with a `null` value (differing * `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(); await browser?.clearCache();
} }
if (rescan && server) { if (triggerRescan && server) {
try { try {
await controller.refreshItems({ await controller.refreshItems({
apiClientProps: { serverId: server.id }, apiClientProps: { serverId: server.id },
@@ -347,7 +351,17 @@ export const useMetadataEditor = ({ browser, songs: songsProp, utils }: UseMetad
setLoadProgress(null); setLoadProgress(null);
setIsSaving(false); 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. */ /** Known tags not yet present in `displayFields`, sorted alphabetically for the add-field dropdown. */
const availableToAdd = useMemo( const availableToAdd = useMemo(
@@ -387,7 +401,7 @@ export const useMetadataEditor = ({ browser, songs: songsProp, utils }: UseMetad
mixedPlaceholder, mixedPlaceholder,
multiValueKeys, multiValueKeys,
readWarning, readWarning,
rescan, rescan: triggerRescan,
setRescan, setRescan,
showRemoveArtworkButton, showRemoveArtworkButton,
sortedFieldEntries, sortedFieldEntries,
+2
View File
@@ -747,6 +747,7 @@ const AutoDJSettingsSchema = z.object({
const TagEditorSettingsSchema = z.object({ const TagEditorSettingsSchema = z.object({
favoriteValues: z.record(z.string(), z.array(z.string())), favoriteValues: z.record(z.string(), z.array(z.string())),
multiValueFields: z.array(z.string()), multiValueFields: z.array(z.string()),
triggerRescan: z.boolean(),
}); });
/** /**
@@ -1997,6 +1998,7 @@ const initialState: SettingsState = {
tagEditor: { tagEditor: {
favoriteValues: {}, favoriteValues: {},
multiValueFields: ['artist', 'albumArtist', 'genre', 'composer', 'lyricist'], multiValueFields: ['artist', 'albumArtist', 'genre', 'composer', 'lyricist'],
triggerRescan: true,
}, },
visualizer: { visualizer: {
audiomotionanalyzer: { audiomotionanalyzer: {