diff --git a/materialious/src/lib/store.ts b/materialious/src/lib/store.ts index 9793df64..ab92921d 100644 --- a/materialious/src/lib/store.ts +++ b/materialious/src/lib/store.ts @@ -118,6 +118,6 @@ export const feedCacheStore: Writable<{ [key: string]: (VideoBase | Video | PlaylistPageVideo)[]; }> = writable({}); export const searchCacheStore: Writable<{ - [searchType: string]: (Channel | Video | Playlist | HashTag)[]; + [searchTypeAndQuery: string]: (Channel | Video | Playlist | HashTag)[]; }> = writable({}); export const feedLastItemId: Writable = writable(undefined); diff --git a/materialious/src/routes/(app)/search/[slug]/+page.svelte b/materialious/src/routes/(app)/search/[slug]/+page.svelte index c147dd55..aad5e202 100644 --- a/materialious/src/routes/(app)/search/[slug]/+page.svelte +++ b/materialious/src/routes/(app)/search/[slug]/+page.svelte @@ -27,7 +27,7 @@ async function changeType(type: 'playlist' | 'all' | 'video' | 'channel') { currentType = type; currentPage = 1; - searchCacheStore.set({ [type]: await getSearch(data.slug, { type: type }) }); + searchCacheStore.set({ [data.searchStoreId]: await getSearch(data.slug, { type: type }) }); } async function loadMore(event: InfiniteEvent) { @@ -41,7 +41,7 @@ event.detail.complete(); } else { searchCacheStore.set({ - [currentType]: [...($searchCacheStore[currentType] ?? []), ...newSearch] + [data.searchStoreId]: [...($searchCacheStore[data.searchStoreId] ?? []), ...newSearch] }); event.detail.loaded(); } diff --git a/materialious/src/routes/(app)/search/[slug]/+page.ts b/materialious/src/routes/(app)/search/[slug]/+page.ts index 64ce5236..533b0f46 100644 --- a/materialious/src/routes/(app)/search/[slug]/+page.ts +++ b/materialious/src/routes/(app)/search/[slug]/+page.ts @@ -13,24 +13,26 @@ export async function load({ params, url }) { type = 'all'; } - const search = get(searchCacheStore).all; + const searchStoreId = type + params.slug; + const search = get(searchCacheStore)[searchStoreId]; if (!search) { try { - searchCacheStore.set({ [type]: await getSearch(params.slug, { type: type }) }); + searchCacheStore.set({ [searchStoreId]: await getSearch(params.slug, { type: type }) }); } catch (errorMessage: any) { error(500, errorMessage); } } else { getSearch(params.slug, { type: type }).then((newSearch) => { searchCacheStore.set({ - [type]: [...new Set([...newSearch, ...search])] + [searchStoreId]: [...new Set([...newSearch, ...search])] }); }); } return { slug: params.slug, - searchType: type + searchType: type, + searchStoreId: searchStoreId }; }