From e810aae21240be2baea365a99e2b61e2eb1e0996 Mon Sep 17 00:00:00 2001 From: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> Date: Wed, 20 Mar 2024 13:24:08 +0100 Subject: [PATCH] fix(web): show search page errors and use feature flag (#8088) --- web/src/routes/(user)/search/+page.svelte | 40 ++++++++++++++--------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/web/src/routes/(user)/search/+page.svelte b/web/src/routes/(user)/search/+page.svelte index 77ebe7ad2f14d..5774541e4eb5a 100644 --- a/web/src/routes/(user)/search/+page.svelte +++ b/web/src/routes/(user)/search/+page.svelte @@ -37,6 +37,8 @@ import LoadingSpinner from '$lib/components/shared-components/loading-spinner.svelte'; import { handlePromiseError } from '$lib/utils'; import { parseUtcDate } from '$lib/utils/date-time'; + import { featureFlags } from '$lib/stores/server-config.store'; + import { handleError } from '$lib/utils/handle-error'; const MAX_ASSET_COUNT = 5000; let { isViewing: showAssetViewer } = assetViewingStore; @@ -98,11 +100,12 @@ type SearchTerms = MetadataSearchDto & Pick; $: searchQuery = $page.url.searchParams.get(QueryParameter.QUERY); - $: terms = ((): SearchTerms => { - return searchQuery ? JSON.parse(searchQuery) : {}; - })(); + let terms: SearchTerms; + $: terms = searchQuery ? JSON.parse(searchQuery) : {}; - $: terms, handlePromiseError(onSearchQueryUpdate()); + $: if (terms && $featureFlags.loaded) { + handlePromiseError(onSearchQueryUpdate()); + } async function onSearchQueryUpdate() { nextPage = 1; @@ -124,18 +127,23 @@ ...terms, }; - const { albums, assets } = - 'query' in searchDto - ? await searchSmart({ smartSearchDto: searchDto }) - : await searchMetadata({ metadataSearchDto: searchDto }); - - searchResultAlbums.push(...albums.items); - searchResultAssets.push(...assets.items); - searchResultAlbums = searchResultAlbums; - searchResultAssets = searchResultAssets; - - nextPage = assets.nextPage ? Number(assets.nextPage) : null; - isLoading = false; + try { + const { albums, assets } = + 'query' in searchDto && $featureFlags.smartSearch + ? await searchSmart({ smartSearchDto: searchDto }) + : await searchMetadata({ metadataSearchDto: searchDto }); + + searchResultAlbums.push(...albums.items); + searchResultAssets.push(...assets.items); + searchResultAlbums = searchResultAlbums; + searchResultAssets = searchResultAssets; + + nextPage = assets.nextPage ? Number(assets.nextPage) : null; + } catch (error) { + handleError(error, 'Loading search results failed'); + } finally { + isLoading = false; + } }; function getHumanReadableDate(dateString: string) {