mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-16 13:40:24 +02:00
add genres to home route configuration
This commit is contained in:
@@ -63,17 +63,19 @@ const HomeRoute = () => {
|
||||
},
|
||||
};
|
||||
|
||||
const sortedCarousel = homeItems
|
||||
.filter((item) => {
|
||||
if (item.disabled) {
|
||||
return false;
|
||||
}
|
||||
if (isJellyfin && item.id === HomeItem.RECENTLY_PLAYED) {
|
||||
return false;
|
||||
}
|
||||
const sortedItems = homeItems.filter((item) => {
|
||||
if (item.disabled) {
|
||||
return false;
|
||||
}
|
||||
if (isJellyfin && item.id === HomeItem.RECENTLY_PLAYED) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
return true;
|
||||
});
|
||||
|
||||
const sortedCarousel = sortedItems
|
||||
.filter((item) => item.id !== HomeItem.GENRES)
|
||||
.map((item) => ({
|
||||
...carousels[item.id],
|
||||
uniqueId: item.id,
|
||||
@@ -103,8 +105,16 @@ const HomeRoute = () => {
|
||||
px="2rem"
|
||||
>
|
||||
{homeFeature && <AlbumInfiniteFeatureCarousel />}
|
||||
<FeaturedGenres />
|
||||
{sortedCarousel.map((carousel) => {
|
||||
{sortedItems.map((item) => {
|
||||
if (item.id === HomeItem.GENRES) {
|
||||
return <FeaturedGenres key="featured-genres" />;
|
||||
}
|
||||
|
||||
const carousel = sortedCarousel.find((c) => c.uniqueId === item.id);
|
||||
if (!carousel) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (carousel.itemType === LibraryItem.ALBUM) {
|
||||
return (
|
||||
<AlbumInfiniteCarousel
|
||||
|
||||
@@ -1,7 +1,15 @@
|
||||
import { useMemo } from 'react';
|
||||
|
||||
import { DraggableItems } from '/@/renderer/features/settings/components/general/draggable-items';
|
||||
import { HomeItem, useGeneralSettings, useSettingsStoreActions } from '/@/renderer/store';
|
||||
import {
|
||||
HomeItem,
|
||||
SortableItem,
|
||||
useGeneralSettings,
|
||||
useSettingsStoreActions,
|
||||
} from '/@/renderer/store';
|
||||
|
||||
const HOME_ITEMS: Array<[string, string]> = [
|
||||
[HomeItem.GENRES, 'page.home.genres'],
|
||||
[HomeItem.RANDOM, 'page.home.explore'],
|
||||
[HomeItem.RECENTLY_PLAYED, 'page.home.recentlyPlayed'],
|
||||
[HomeItem.RECENTLY_ADDED, 'page.home.newlyAdded'],
|
||||
@@ -13,17 +21,48 @@ export const HomeSettings = () => {
|
||||
const { homeItems } = useGeneralSettings();
|
||||
const { setHomeItems } = useSettingsStoreActions();
|
||||
|
||||
const mappedHomeItems = homeItems.map((item) => ({
|
||||
...item,
|
||||
id: item.id as HomeItem,
|
||||
}));
|
||||
const mergedHomeItems = useMemo(() => {
|
||||
const settingsMap = new Map(
|
||||
homeItems.map((item) => [item.id, item as SortableItem<HomeItem>]),
|
||||
);
|
||||
|
||||
const merged = HOME_ITEMS.map(([itemId]) => {
|
||||
const homeItemId = itemId as HomeItem;
|
||||
const existing = settingsMap.get(homeItemId);
|
||||
if (existing) {
|
||||
return {
|
||||
...existing,
|
||||
id: homeItemId,
|
||||
};
|
||||
}
|
||||
|
||||
// Item not in settings, add it as disabled
|
||||
return {
|
||||
disabled: true,
|
||||
id: homeItemId,
|
||||
};
|
||||
});
|
||||
|
||||
// Add any items from settings that aren't in HOME_ITEMS (for backwards compatibility)
|
||||
homeItems.forEach((item) => {
|
||||
const existsInHomeItems = HOME_ITEMS.some(([itemId]) => itemId === item.id);
|
||||
if (!existsInHomeItems) {
|
||||
merged.push({
|
||||
...item,
|
||||
id: item.id as HomeItem,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return merged;
|
||||
}, [homeItems]);
|
||||
|
||||
return (
|
||||
<DraggableItems
|
||||
description="setting.homeConfiguration"
|
||||
itemLabels={HOME_ITEMS}
|
||||
setItems={setHomeItems}
|
||||
settings={mappedHomeItems}
|
||||
settings={mergedHomeItems}
|
||||
title="setting.homeConfiguration"
|
||||
/>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user