From 9c6f720684fd290a52d1e8964adbac8c54c48356 Mon Sep 17 00:00:00 2001 From: Ota Prokopec Date: Thu, 30 Mar 2023 22:17:43 +0200 Subject: [PATCH 1/9] 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) -- 2.40.1 From b2721a9c37a41acd9f60f5608f7bb8a22cde1eb8 Mon Sep 17 00:00:00 2001 From: Ota Prokopec Date: Thu, 30 Mar 2023 22:33:56 +0200 Subject: [PATCH 2/9] loading experience as store => better --- src/lib/utils/database/experience.ts | 14 ++++---- src/routes/game/experience.svelte | 49 +++++++++++++--------------- 2 files changed, 30 insertions(+), 33 deletions(-) diff --git a/src/lib/utils/database/experience.ts b/src/lib/utils/database/experience.ts index a58b55e..8028c69 100644 --- a/src/lib/utils/database/experience.ts +++ b/src/lib/utils/database/experience.ts @@ -2,7 +2,7 @@ import { databases, user as userStore } from '$lib/appwrite' import { Account, Models, Permission, Query, Role } from 'appwrite' import database from 'svelte-appwrite-client/src/lib/database' import { getLocationDataFromLatAndLong } from '../locations' -import { writable } from 'svelte/store' +import { Writable, writable } from 'svelte/store' import { CheckPoint, Experience } from '$lib/TStypes/experiences' import collections from '$lib/collections' @@ -154,12 +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 getExperienceIdByUrl = async(url: string) => { + return (await databases.listDocuments("63cef30d6da945dd4250", "63cef4bd210fdf2e5888", [Query.equal("ExpURL", url)])).documents[0].$id } -export const getExperienceByURLAsStore = (url: string) => { - const store = writable(null) - getExperienceByURL(url).then(exp => store.set(exp)) - return [store] as const +export const getExperienceIdByUrlAsStore = (url: string): [Writable] => { + const store = writable(null) + getExperienceIdByUrl(url).then(exp => store.set(exp)) + return [store] } // !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 ee5f5d0..70fe047 100644 --- a/src/routes/game/experience.svelte +++ b/src/routes/game/experience.svelte @@ -12,7 +12,7 @@ import Renderer from './Forms/Renderer.svelte' import Marker from '../../lib/components/Map/Marker.svelte' import { onMount } from 'svelte' - import { getExperienceByURLAsStore, getUserProgress, getUserProgressAsStore, load, loadAsStore } from '$lib/utils/database/experience' + import { getExperienceIdByUrl, getExperienceIdByUrlAsStore, 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' @@ -21,29 +21,26 @@ export let params: { gameurl: string } let gameData = writable(null) - let [exp] = getExperienceByURLAsStore(params.gameurl) - $: [userProgress] = gameData ? getUserProgressAsStore($exp?.$id) : [] - - - $gameData = loadAsStore(params.gameurl, $userProgress.length+4 || 8, (preview) => { + let [id] = getExperienceIdByUrlAsStore(params.gameurl) + $: [userProgress] = $gameData ? getUserProgressAsStore($id) : [] + /* + $: [gameData] = loadAsStore(params.gameurl, $userProgress?.length + 4 || 8, (preview) => { $gameData = preview view = 'experience-preview' - }) + })*/ - /*onMount(async () => { + onMount(async () => { try { - console.log($userProgress?.length || 8) - - gameData = await load(params.gameurl, (await getUserProgress(gameData?.$id)) || 8, (preview) => { - gameData = preview + $gameData = await load(params.gameurl, (await getUserProgress(await getExperienceIdByUrl(params.gameurl))).length || 8, (preview) => { + $gameData = preview view = 'experience-preview' }) } catch (error) { navigate('/error') } - })*/ + }) - /*$: assets = gameData?.questions + /*$: assets = $gameData?.questions ?.filter((q) => q.thumbnail !== null) ?.slice(0, 8) ?.map((q) => q.thumbnail)*/ @@ -52,7 +49,7 @@ //is user already in game //const userInGame = JSON.parse(localStorage.getItem(location.pathname)) - //$: if (gameData && userInGame) view = 'game-play' + //$: if ($gameData && userInGame) view = 'game-play' {#if view === 'experience-loading'} @@ -61,27 +58,27 @@ {:else if view === 'experience-preview'} - +
- {gameData.ExpName} + {$gameData.ExpName}
- {gameData.rating} + {$gameData.rating} - {#await getLocationDataFromLatAndLong(gameData.ExpLocation[0], gameData.ExpLocation[1]) then { city }} + {#await getLocationDataFromLatAndLong($gameData.ExpLocation[0], $gameData.ExpLocation[1]) then { city }} {city} {/await}
- {#if gameData.ExpIntroduction} + {#if $gameData.ExpIntroduction}
- {@html gameData.ExpIntroduction} + {@html $gameData.ExpIntroduction}
{/if} @@ -94,25 +91,25 @@
- +
- - {#each gameData.checkPoints as { CPLocation: [lat, lng] }} + + {#each $gameData.checkPoints as { CPLocation: [lat, lng] }} {/each}
- {#if gameData.checkPoints.length} + {#if $gameData.checkPoints.length} {/if}
{:else if view === 'experience-play'} - + {/if} diff --git a/src/routes/authorization/Components/SocialLogin.svelte b/src/routes/authorization/Components/SocialLogin.svelte new file mode 100644 index 0000000..ce25fa6 --- /dev/null +++ b/src/routes/authorization/Components/SocialLogin.svelte @@ -0,0 +1,76 @@ + + +
+ + + +
+ + + diff --git a/src/routes/authorization/login/log_in.svelte b/src/routes/authorization/login/log_in.svelte index 0362ae8..bbe001a 100644 --- a/src/routes/authorization/login/log_in.svelte +++ b/src/routes/authorization/login/log_in.svelte @@ -8,6 +8,7 @@ import { Helper } from 'flowbite-svelte' import { getErrorMessage } from '../utils/authorizationErrors' import Button from '$lib/components/Buttons/Button.svelte' + import SocialLogin from '../Components/SocialLogin.svelte' export let purpose = 'login' //possible values login, register @@ -20,6 +21,9 @@ const emailLogin = async () => { state = 'loading' error = null + try { + await user.deleteSessions() + } catch (error) {} try { await user.createEmailSession(email, password) //if (navigation.canGoBack) navigation.back() @@ -69,16 +73,7 @@ -
- - - -
+
diff --git a/src/routes/authorization/register/register.svelte b/src/routes/authorization/register/register.svelte index b952e35..e035c07 100644 --- a/src/routes/authorization/register/register.svelte +++ b/src/routes/authorization/register/register.svelte @@ -1,5 +1,5 @@ diff --git a/src/routes/game/experience.svelte b/src/routes/game/experience.svelte index 70fe047..e94e615 100644 --- a/src/routes/game/experience.svelte +++ b/src/routes/game/experience.svelte @@ -31,10 +31,8 @@ onMount(async () => { try { - $gameData = await load(params.gameurl, (await getUserProgress(await getExperienceIdByUrl(params.gameurl))).length || 8, (preview) => { - $gameData = preview - view = 'experience-preview' - }) + $gameData = await load(params.gameurl) + view = 'experience-preview' } catch (error) { navigate('/error') } -- 2.40.1 From 181462fcaae20d8f5f36cfb4fd9f158bbf675112 Mon Sep 17 00:00:00 2001 From: Ota Prokopec Date: Thu, 6 Apr 2023 15:43:58 +0200 Subject: [PATCH 5/9] experience loading speeded up (before con. load.) --- src/routes/game/experience.svelte | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/routes/game/experience.svelte b/src/routes/game/experience.svelte index e94e615..aea18fe 100644 --- a/src/routes/game/experience.svelte +++ b/src/routes/game/experience.svelte @@ -29,14 +29,17 @@ view = 'experience-preview' })*/ - onMount(async () => { + $: [gameData] = loadAsStore(params.gameurl) + $: if ($gameData) view = 'experience-preview' + + /*onMount(async () => { try { $gameData = await load(params.gameurl) view = 'experience-preview' } catch (error) { navigate('/error') } - }) + })*/ /*$: assets = $gameData?.questions ?.filter((q) => q.thumbnail !== null) -- 2.40.1 From c39f68cef539eb380dd668cd9cbabfe59b8ed5cb Mon Sep 17 00:00:00 2001 From: Ota Prokopec Date: Thu, 6 Apr 2023 16:11:26 +0200 Subject: [PATCH 6/9] register sent email component --- src/__routes.svelte | 17 ++- .../components/Layouts/BlankedLayout.svelte | 6 + .../authorization/Components/EmailSent.svelte | 144 ++++++++++++++++++ .../authorization/register/register.svelte | 3 +- 4 files changed, 164 insertions(+), 6 deletions(-) create mode 100644 src/lib/components/Layouts/BlankedLayout.svelte create mode 100644 src/routes/authorization/Components/EmailSent.svelte diff --git a/src/__routes.svelte b/src/__routes.svelte index fdb8155..7f7adf2 100644 --- a/src/__routes.svelte +++ b/src/__routes.svelte @@ -6,6 +6,7 @@ import Error from '$src/__error.svelte' import NavigationBarLayout from '$lib/components/Layouts/NavigationBarLayout.svelte' import ArrowBackLayout from '$lib/components/Layouts/ArrowBackLayout.svelte' + import BlankedLayout from '$lib/components/Layouts/BlankedLayout.svelte' import('$routes/authorization/login/log_in.svelte'), }, - { - path: '/register', - component: () => import('$root/src/routes/authorization/register/register.svelte'), - }, + { path: '/register/failed', component: () => import('$routes/authorization/register/registerFailed.svelte'), @@ -67,6 +65,15 @@ ].map((routes) => { return { ...routes, layout: ArrowBackLayout } }), + ...[ + //authorization + { + path: '/register', + component: () => import('$root/src/routes/authorization/register/register.svelte'), + }, + ].map((routes) => { + return { ...routes, layout: BlankedLayout } + }), { path: '/error', component: () => import('$routes/error.svelte'), @@ -99,6 +106,6 @@ { path: '/cookie-policy', component: () => import('$routes/legal/cookie-policy.svelte'), - } + }, ]} /> diff --git a/src/lib/components/Layouts/BlankedLayout.svelte b/src/lib/components/Layouts/BlankedLayout.svelte new file mode 100644 index 0000000..d92205c --- /dev/null +++ b/src/lib/components/Layouts/BlankedLayout.svelte @@ -0,0 +1,6 @@ + + +
+ +
diff --git a/src/routes/authorization/Components/EmailSent.svelte b/src/routes/authorization/Components/EmailSent.svelte new file mode 100644 index 0000000..f313e99 --- /dev/null +++ b/src/routes/authorization/Components/EmailSent.svelte @@ -0,0 +1,144 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mail Sent + Verify your account by clicking the link we sent you. +
diff --git a/src/routes/authorization/register/register.svelte b/src/routes/authorization/register/register.svelte index e035c07..1e788b1 100644 --- a/src/routes/authorization/register/register.svelte +++ b/src/routes/authorization/register/register.svelte @@ -11,6 +11,7 @@ import Button from '$lib/components/Buttons/Button.svelte' import SocialLogin from '../Components/SocialLogin.svelte' import Input from '$lib/components/Inputs/Input.svelte' + import EmailSent from '../Components/EmailSent.svelte' let email = '' let password = '' @@ -110,7 +111,7 @@
{:else} -
email has been sent
+ {/if}