From 9c6f720684fd290a52d1e8964adbac8c54c48356 Mon Sep 17 00:00:00 2001 From: Ota Prokopec Date: Thu, 30 Mar 2023 22:17:43 +0200 Subject: [PATCH] zaloha 30.3.2023 --- src/lib/utils/database/experience.ts | 17 +++++++++++++++++ src/routes/game/experience.svelte | 22 ++++++++++++++++------ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/lib/utils/database/experience.ts b/src/lib/utils/database/experience.ts index 9e3e59f..a58b55e 100644 --- a/src/lib/utils/database/experience.ts +++ b/src/lib/utils/database/experience.ts @@ -37,6 +37,15 @@ export const load = async (pathName: string, previewQuestionsCount?: number, pre return experience } + +export const loadAsStore = (pathName: string, previewQuestionsCount?: number, preview?: Function) => { + const store = writable(null) + load(pathName, previewQuestionsCount, preview).then(experience => { + store.set(experience) + }) + return [store] +} + //Fetch of Rating const getRating = async (expId: string) => { const { documents, total } = await databases.listDocuments('63cef30d6da945dd4250', '63ee6353ebb174cf815d', [Query.equal('ExpID', expId)]) @@ -145,4 +154,12 @@ export const getUserProgressAsStore = (experienceId: string) => { return [store, loading] as const } +export const getExperienceByURL = async(url: string) => { + return (await databases.listDocuments("63cef30d6da945dd4250", "63cef4bd210fdf2e58880", [Query.equal("ExpURL", url)])).documents[0] +} +export const getExperienceByURLAsStore = (url: string) => { + const store = writable(null) + getExperienceByURL(url).then(exp => store.set(exp)) + return [store] as const +} // !pridat trideni podle kategorie! export const getExperiencesByCategory = async (category: string) => {} diff --git a/src/routes/game/experience.svelte b/src/routes/game/experience.svelte index 21a3dad..ee5f5d0 100644 --- a/src/routes/game/experience.svelte +++ b/src/routes/game/experience.svelte @@ -12,26 +12,36 @@ import Renderer from './Forms/Renderer.svelte' import Marker from '../../lib/components/Map/Marker.svelte' import { onMount } from 'svelte' - import { getUserProgressAsStore, load } from '$lib/utils/database/experience' + import { getExperienceByURLAsStore, getUserProgress, getUserProgressAsStore, load, loadAsStore } from '$lib/utils/database/experience' import { getLocationDataFromLatAndLong } from '$lib/utils/locations' import { navigate } from '$lib/router' import { Experience } from '$lib/TStypes/experiences' import Progressbar from '$lib/components/erant/Progressbar.svelte' + import { writable } from 'svelte/store' export let params: { gameurl: string } - let gameData: Experience // - $: [userProgress] = gameData ? getUserProgressAsStore(gameData?.$id) : [] + let gameData = writable(null) + let [exp] = getExperienceByURLAsStore(params.gameurl) + $: [userProgress] = gameData ? getUserProgressAsStore($exp?.$id) : [] - onMount(async () => { + + $gameData = loadAsStore(params.gameurl, $userProgress.length+4 || 8, (preview) => { + $gameData = preview + view = 'experience-preview' + }) + + /*onMount(async () => { try { - gameData = await load(params.gameurl, 2, (preview) => { + console.log($userProgress?.length || 8) + + gameData = await load(params.gameurl, (await getUserProgress(gameData?.$id)) || 8, (preview) => { gameData = preview view = 'experience-preview' }) } catch (error) { navigate('/error') } - }) + })*/ /*$: assets = gameData?.questions ?.filter((q) => q.thumbnail !== null)