mirror of
https://github.com/jeffvli/feishin.git
synced 2026-07-22 10:26:33 +02:00
persist rescan toggle
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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: {
|
||||||
|
|||||||
Reference in New Issue
Block a user