forked from truelockmc/streambert
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhomeLayout.js
More file actions
66 lines (53 loc) · 2.04 KB
/
Copy pathhomeLayout.js
File metadata and controls
66 lines (53 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// ── Home Page Layout Utilities ────────────────────────────────────────────────
// Shared between SettingsPage (editing) and HomePage (reading).
import { storage } from "./storage";
export const HOME_ROWS = [
{ id: "continue", label: "Continue Watching" },
{ id: "recommended", label: "Recommended for You" },
{ id: "trendingMovies", label: "Trending Movies" },
{ id: "trendingTV", label: "Trending Series" },
{ id: "topRated", label: "Top Rated" },
];
const DEFAULT_ROW_ORDER = HOME_ROWS.map((r) => r.id);
const DEFAULT_ROW_VISIBLE = Object.fromEntries(
HOME_ROWS.map((r) => [r.id, true]),
);
export function loadHomeLayout() {
let savedOrder = storage.get("homeRowOrder");
let savedVisible = storage.get("homeRowVisible");
// Migration: rename 'similar' to 'recommended'
if (savedOrder && savedOrder.includes("similar")) {
savedOrder = savedOrder.map((id) => (id === "similar" ? "recommended" : id));
storage.set("homeRowOrder", savedOrder);
}
if (savedVisible && "similar" in savedVisible) {
savedVisible.recommended = savedVisible.similar;
delete savedVisible.similar;
storage.set("homeRowVisible", savedVisible);
}
const knownIds = new Set(HOME_ROWS.map((r) => r.id));
const order = savedOrder
? [
...savedOrder.filter((id) => knownIds.has(id)),
...DEFAULT_ROW_ORDER.filter((id) => !savedOrder.includes(id)),
]
: DEFAULT_ROW_ORDER;
const visible = savedVisible
? { ...DEFAULT_ROW_VISIBLE, ...savedVisible }
: DEFAULT_ROW_VISIBLE;
return { order, visible };
}
export function saveHomeLayout(order, visible) {
storage.set("homeRowOrder", order);
storage.set("homeRowVisible", visible);
}
/** "carousel" (default) | "list" */
export function loadHomeViewMode() {
return storage.get("homeViewMode") || "carousel";
}
export function saveHomeViewMode(mode) {
storage.set("homeViewMode", mode);
}
export function loadStartPage() {
return storage.get("startPage") || "home";
}