Skip to content

Commit cfcbc5c

Browse files
author
Garrett Downs
committed
feat: fetch and cache categories on app launch
1 parent 0614efa commit cfcbc5c

2 files changed

Lines changed: 16 additions & 16 deletions

File tree

src/components/App.tsx

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import Podcasts from '../routes/Podcasts';
2929
import RecentEpisodes from '../routes/RecentEpisodes';
3030
import Search from '../routes/Search';
3131
import { Core } from '../services/core';
32+
import { setStorageItem, StorageKey } from '../services/storage';
3233
import { themes } from '../themes';
3334

3435
export function AppWrapper(): VNode {
@@ -59,6 +60,16 @@ export default function App(): VNode {
5960

6061
// Core.health().then((res) => console.log(res));
6162

63+
Core.podcastIndex.fetchCategories().then((res) =>
64+
setStorageItem(
65+
StorageKey.Categories,
66+
res.reduce((acc, val) => {
67+
acc[val.id] = val.name;
68+
return acc;
69+
}, {} as { [key: number]: string })
70+
)
71+
);
72+
6273
// Ensure default filters exist
6374
Core.filters.queryAll().then((res) => {
6475
if (res.length === 0) {
@@ -103,24 +114,15 @@ export default function App(): VNode {
103114
// Theme
104115
const theme = themes.find((a) => a.id === settings.theme) || themes[0];
105116
for (const id in theme.values) {
106-
document.documentElement.style.setProperty(
107-
`--${kebabcase(id)}`,
108-
theme.values[id]
109-
);
117+
document.documentElement.style.setProperty(`--${kebabcase(id)}`, theme.values[id]);
110118
}
111-
document.documentElement.style.setProperty(
112-
'--app-accent-color',
113-
`#${settings.accentColor}`
114-
);
119+
document.documentElement.style.setProperty('--app-accent-color', `#${settings.accentColor}`);
115120
document
116121
.querySelector('meta[name="theme-color"]')
117122
?.setAttribute('content', theme.values.headerBgColor);
118123

119124
if (theme.settings.accentText) {
120-
document.documentElement.style.setProperty(
121-
'--accent-text-color',
122-
`#${settings.accentColor}`
123-
);
125+
document.documentElement.style.setProperty('--accent-text-color', `#${settings.accentColor}`);
124126
}
125127
if (theme.settings.accentHighlight) {
126128
document.documentElement.style.setProperty(
@@ -129,10 +131,7 @@ export default function App(): VNode {
129131
);
130132
}
131133
if (theme.settings.accentHeader) {
132-
document.documentElement.style.setProperty(
133-
'--header-bg-color',
134-
`#${settings.accentColor}`
135-
);
134+
document.documentElement.style.setProperty('--header-bg-color', `#${settings.accentColor}`);
136135
document
137136
.querySelector('meta[name="theme-color"]')
138137
?.setAttribute('content', `#${settings.accentColor}`);

src/services/storage.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export enum StorageKey {
22
Settings = 'settings',
3+
Categories = 'categories',
34
}
45

56
export function getStorageItem<T>(key: StorageKey): T {

0 commit comments

Comments
 (0)