buildfix
This commit is contained in:
parent
1eb9c57f0d
commit
8f9dea9bfb
|
@ -5,9 +5,9 @@ import {
|
||||||
createContext,
|
createContext,
|
||||||
createEffect,
|
createEffect,
|
||||||
createMemo,
|
createMemo,
|
||||||
createReaction,
|
|
||||||
createSignal,
|
createSignal,
|
||||||
on,
|
on,
|
||||||
|
onMount,
|
||||||
useContext
|
useContext
|
||||||
} from 'solid-js'
|
} from 'solid-js'
|
||||||
import { loadTopics } from '~/graphql/api/public'
|
import { loadTopics } from '~/graphql/api/public'
|
||||||
|
@ -163,21 +163,26 @@ export const TopicsProvider = (props: { children: JSX.Element }) => {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const [db, setDb] = createSignal()
|
const [db, setDb] = createSignal()
|
||||||
|
createEffect(
|
||||||
|
on(
|
||||||
|
() => window?.indexedDB,
|
||||||
|
async (_raw) => {
|
||||||
|
const initialized = await setupIndexedDB()
|
||||||
|
setDb(initialized)
|
||||||
|
},
|
||||||
|
{ defer: true }
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
const loadAllTopics = async () => {
|
const loadAllTopics = async () => {
|
||||||
const topicsLoader = loadTopics()
|
const topicsLoader = loadTopics()
|
||||||
const ttt = await topicsLoader()
|
const ttt = await topicsLoader()
|
||||||
|
ttt && addTopics(ttt)
|
||||||
if (db()) await saveTopicsToIndexedDB(db() as IDBDatabase, ttt as Topic[])
|
if (db()) await saveTopicsToIndexedDB(db() as IDBDatabase, ttt as Topic[])
|
||||||
return ttt || []
|
return ttt || []
|
||||||
}
|
}
|
||||||
|
|
||||||
createReaction(async () => {
|
|
||||||
setDb(await setupIndexedDB())
|
|
||||||
console.info('[context.topics] idb loaded')
|
|
||||||
})
|
|
||||||
|
|
||||||
const [randomTopic, setRandomTopic] = createSignal<Topic>()
|
const [randomTopic, setRandomTopic] = createSignal<Topic>()
|
||||||
createEffect(
|
createEffect(
|
||||||
on(
|
on(
|
||||||
|
@ -198,6 +203,20 @@ export const TopicsProvider = (props: { children: JSX.Element }) => {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const getCachedOrLoadTopics = async () => {
|
||||||
|
const { topics: stored } = await getTopicsFromIndexedDB(db() as IDBDatabase)
|
||||||
|
if (stored) {
|
||||||
|
setSortedTopics(stored)
|
||||||
|
return stored
|
||||||
|
}
|
||||||
|
const loaded = await loadAllTopics()
|
||||||
|
if (loaded) setSortedTopics(loaded)
|
||||||
|
return loaded
|
||||||
|
}
|
||||||
|
|
||||||
|
// preload all topics
|
||||||
|
onMount(getCachedOrLoadTopics)
|
||||||
|
|
||||||
const value: TopicsContextType = {
|
const value: TopicsContextType = {
|
||||||
setTopicsSort: setSortAllBy,
|
setTopicsSort: setSortAllBy,
|
||||||
topicEntities,
|
topicEntities,
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
import { type RouteDefinition, type RouteSectionProps, createAsync } from '@solidjs/router'
|
import { type RouteDefinition, type RouteSectionProps, createAsync } from '@solidjs/router'
|
||||||
import { createEffect } from 'solid-js'
|
|
||||||
import { LoadMoreItems, LoadMoreWrapper } from '~/components/_shared/LoadMoreWrapper'
|
import { LoadMoreItems, LoadMoreWrapper } from '~/components/_shared/LoadMoreWrapper'
|
||||||
import { useFeed } from '~/context/feed'
|
import { useFeed } from '~/context/feed'
|
||||||
import { useTopics } from '~/context/topics'
|
|
||||||
import { loadShouts, loadTopics } from '~/graphql/api/public'
|
import { loadShouts, loadTopics } from '~/graphql/api/public'
|
||||||
import { LoadShoutsOptions, Shout } from '~/graphql/schema/core.gen'
|
import { LoadShoutsOptions, Shout } from '~/graphql/schema/core.gen'
|
||||||
import { HomeView, HomeViewProps } from '../components/Views/Home'
|
import { HomeView, HomeViewProps } from '../components/Views/Home'
|
||||||
|
@ -81,12 +79,6 @@ export default function HomePage(props: RouteSectionProps<HomeViewProps>) {
|
||||||
topFeed: topRatedFeed
|
topFeed: topRatedFeed
|
||||||
} = useFeed()
|
} = useFeed()
|
||||||
|
|
||||||
// preload all topics
|
|
||||||
const { addTopics, sortedTopics } = useTopics()
|
|
||||||
createEffect(() => {
|
|
||||||
!sortedTopics() && props.data.topics && addTopics(props.data.topics)
|
|
||||||
})
|
|
||||||
|
|
||||||
// load more faetured shouts
|
// load more faetured shouts
|
||||||
const loadMoreFeatured = async (offset?: number) => {
|
const loadMoreFeatured = async (offset?: number) => {
|
||||||
const shoutsLoader = featuredLoader(offset)
|
const shoutsLoader = featuredLoader(offset)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user