mirror of
https://github.com/jeffvli/feishin.git
synced 2026-06-15 16:04:19 +02:00
add artist release type configuration, fix page configurations
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
import { useMemo } from 'react';
|
||||
|
||||
import { DraggableItems } from '/@/renderer/features/settings/components/general/draggable-items';
|
||||
import {
|
||||
ArtistItem,
|
||||
ArtistReleaseTypeItem,
|
||||
SortableItem,
|
||||
useGeneralSettings,
|
||||
useSettingsStoreActions,
|
||||
@@ -12,7 +11,6 @@ const ARTIST_ITEMS: Array<[ArtistItem, string]> = [
|
||||
[ArtistItem.BIOGRAPHY, 'table.column.biography'],
|
||||
[ArtistItem.TOP_SONGS, 'page.albumArtistDetail.topSongs'],
|
||||
[ArtistItem.RECENT_ALBUMS, 'page.albumArtistDetail.recentReleases'],
|
||||
[ArtistItem.COMPILATIONS, 'page.albumArtistDetail.appearsOn'],
|
||||
[ArtistItem.SIMILAR_ARTISTS, 'page.albumArtistDetail.relatedArtists'],
|
||||
];
|
||||
|
||||
@@ -20,36 +18,49 @@ export const ArtistSettings = () => {
|
||||
const { artistItems } = useGeneralSettings();
|
||||
const { setArtistItems } = useSettingsStoreActions();
|
||||
|
||||
const mergedArtistItems = useMemo(() => {
|
||||
const settingsMap = new Map(
|
||||
artistItems.map((item) => [item.id, item as SortableItem<ArtistItem>]),
|
||||
);
|
||||
|
||||
const merged = artistItems.map((item) => ({
|
||||
...item,
|
||||
id: item.id as ArtistItem,
|
||||
}));
|
||||
|
||||
ARTIST_ITEMS.forEach(([itemId]) => {
|
||||
const artistItemId = itemId as ArtistItem;
|
||||
if (!settingsMap.has(artistItemId)) {
|
||||
merged.push({
|
||||
disabled: true,
|
||||
id: artistItemId,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return merged;
|
||||
}, [artistItems]);
|
||||
|
||||
return (
|
||||
<DraggableItems
|
||||
description="setting.artistConfiguration"
|
||||
itemLabels={ARTIST_ITEMS}
|
||||
items={artistItems as SortableItem<ArtistItem>[]}
|
||||
setItems={setArtistItems}
|
||||
settings={mergedArtistItems}
|
||||
title="setting.artistConfiguration"
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
const ARTIST_RELEASE_TYPE_ITEMS: Array<[ArtistReleaseTypeItem, string]> = [
|
||||
[ArtistReleaseTypeItem.APPEARS_ON, 'page.albumArtistDetail.appearsOn'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_ALBUM, 'releaseType.primary.album'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_EP, 'releaseType.primary.ep'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_SINGLE, 'releaseType.primary.single'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_BROADCAST, 'releaseType.primary.broadcast'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_COMPILATION, 'releaseType.secondary.compilation'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_AUDIO_DRAMA, 'releaseType.secondary.audioDrama'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_AUDIOBOOK, 'releaseType.secondary.audiobook'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_INTERVIEW, 'releaseType.secondary.interview'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_LIVE, 'releaseType.secondary.live'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_MIXTAPE_STREET, 'releaseType.secondary.mixtape'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_OTHER, 'releaseType.primary.other'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_REMIX, 'releaseType.secondary.remix'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_DJ_MIX, 'releaseType.secondary.djMix'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_DEMO, 'releaseType.secondary.demo'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_FIELD_RECORDING, 'releaseType.secondary.fieldRecording'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_SOUNDTRACK, 'releaseType.secondary.soundtrack'],
|
||||
[ArtistReleaseTypeItem.RELEASE_TYPE_SPOKENWORD, 'releaseType.secondary.spokenWord'],
|
||||
];
|
||||
|
||||
export const ArtistReleaseTypeSettings = () => {
|
||||
const { artistReleaseTypeItems } = useGeneralSettings();
|
||||
const { setArtistReleaseTypeItems } = useSettingsStoreActions();
|
||||
|
||||
return (
|
||||
<DraggableItems
|
||||
description="setting.artistReleaseTypeConfiguration"
|
||||
itemLabels={ARTIST_RELEASE_TYPE_ITEMS}
|
||||
items={artistReleaseTypeItems as SortableItem<ArtistReleaseTypeItem>[]}
|
||||
setItems={setArtistReleaseTypeItems}
|
||||
title="setting.artistReleaseTypeConfiguration"
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user