From a003dda0479e0c97db7e23356ded654bd201db44 Mon Sep 17 00:00:00 2001 From: Ivan Izobov <54995954+Izobov@users.noreply.github.com> Date: Thu, 9 May 2024 22:26:39 +0300 Subject: [PATCH] Dev (#2120) * fix: userguid modal (#2096) * Fix/tag links/draft/0 (#2098) * Fix/tutorial popup/draft/0 (#2099) * fix: userguid modal * fix: body scroll * fix: prevent articles with same id (#2102) * Feature/bottom menu/draft/0 (#2103) * dev: mobile menu * dev: mobile menu d'n'd * dev: popup styles * dev: dragged style * dev: modal mouse events * [dev] Mobile menu * dev: change bottom position * dev: mobile menu threshold * fix: disable drag out * remove unused code * Feature/bottom menu/draft/0 (#2104) * dev: mobile menu * dev: mobile menu d'n'd * dev: popup styles * dev: dragged style * dev: modal mouse events * [dev] Mobile menu * dev: change bottom position * dev: mobile menu threshold * fix: disable drag out * remove unused code * remove yarn.lock * remove yarn lock * fix: canonical link (#2105) * fix reopen userguide (#2106) * Feature/bottom menu/draft/0 (#2107) * dev: mobile menu * dev: mobile menu d'n'd * dev: popup styles * dev: dragged style * dev: modal mouse events * [dev] Mobile menu * dev: change bottom position * dev: mobile menu threshold * fix: disable drag out * remove unused code * remove yarn.lock * icons color * dev: mobile menu * dev: blur popup background * Feature/bottom menu/draft/0 (#2112) * dev: mobile menu * dev: mobile menu d'n'd * dev: popup styles * dev: dragged style * dev: modal mouse events * [dev] Mobile menu * dev: change bottom position * dev: mobile menu threshold * fix: disable drag out * remove unused code * remove yarn.lock * icons color * dev: mobile menu * dev: blur popup background * dev: add new route * Feature/bottom menu/draft/0 (#2113) * dev: mobile menu * dev: mobile menu d'n'd * dev: popup styles * dev: dragged style * dev: modal mouse events * [dev] Mobile menu * dev: change bottom position * dev: mobile menu threshold * fix: disable drag out * remove unused code * remove yarn.lock * icons color * dev: mobile menu * dev: blur popup background * dev: add new route * fix redirects * dev: Avatar size * Feature/bottom menu/draft/0 (#2114) * dev: mobile menu * dev: mobile menu d'n'd * dev: popup styles * dev: dragged style * dev: modal mouse events * [dev] Mobile menu * dev: change bottom position * dev: mobile menu threshold * fix: disable drag out * remove unused code * remove yarn.lock * icons color * dev: mobile menu * dev: blur popup background * dev: add new route * fix redirects * dev: Avatar size * fix leag load * Feature/bottom menu/draft/0 (#2115) * dev: mobile menu * dev: mobile menu d'n'd * dev: popup styles * dev: dragged style * dev: modal mouse events * [dev] Mobile menu * dev: change bottom position * dev: mobile menu threshold * fix: disable drag out * remove unused code * remove yarn.lock * icons color * dev: mobile menu * dev: blur popup background * dev: add new route * fix redirects * dev: Avatar size * fix leag load * avatar size * fix redirect (#2118) * ci: reset branch (dev) reset [1] ----- Update Github actions workflow to make use of the 'dev' branch reset on 'main' (PR). Initially disabled for the idea of using a 'release' branch to be reset, instead of 'dev', as multiple developers can have pushed to 'dev' when a 'PR' goes to 'main', resetting version control state and unding work. --------- Co-authored-by: MigBash <20924663+migbash@users.noreply.github.com> --- .github/workflows/pr-main-tag.yml | 1 - src/lib/constants/paths.ts | 7 +- src/lib/firebase/common.ts | 46 ++++++++++ src/lib/store/user-settings.ts | 4 +- src/lib/utils/deeplink.ts | 40 +++++++-- .../(scores)/[[lang=lang]]/+page.server.ts | 89 +++++++++---------- .../(scores)/[[lang=lang]]/+page.svelte | 20 ++--- src/routes/+layout.svelte | 2 +- 8 files changed, 141 insertions(+), 68 deletions(-) diff --git a/.github/workflows/pr-main-tag.yml b/.github/workflows/pr-main-tag.yml index 2a6641339..377c84f9d 100644 --- a/.github/workflows/pr-main-tag.yml +++ b/.github/workflows/pr-main-tag.yml @@ -242,7 +242,6 @@ jobs: dev-branch-reset: name: Git Reset Dev - if: false needs: create-release runs-on: ubuntu-22.04 steps: diff --git a/src/lib/constants/paths.ts b/src/lib/constants/paths.ts index b6c951042..f25be62ae 100644 --- a/src/lib/constants/paths.ts +++ b/src/lib/constants/paths.ts @@ -60,5 +60,10 @@ export const * @description * 📣 Target `path` for **scores page**. */ - routeIdScores = '/(scores)/[[lang=lang]]/scores' + routeIdScores = '/(scores)/[[lang=lang]]/scores', + /** + * @description + * 📣 Target `path` for **home page**. + */ + routeIdHome = '/(scores)/[[lang=lang]]' ; diff --git a/src/lib/firebase/common.ts b/src/lib/firebase/common.ts index 573dea4ec..cb3a5367e 100644 --- a/src/lib/firebase/common.ts +++ b/src/lib/firebase/common.ts @@ -18,6 +18,52 @@ import type { Page } from '@sveltejs/kit'; // #region 🔥 USER +/** + * @author + * @izobov + * @summary + * - 🟥 MAIN + * - 🟦 HELPER + * @description + * 📣 Retrieves `Firebase/Firestore` data for **current user**. + * @param { string } uid + * 💠 **[required]** Target user **uid**. + * @return { Promise < void > } + */ +export async function getUserById +( + uid: string +) +{ + // [🐞] + dlog + ( + '🚏 checkpoint ➤ getUserById(..)', + true + ); + + console.log("db_firestore",db_firestore) + console.log("UID",uid) + + const + docRef + = doc + ( + db_firestore, + 'betarena_users', + uid + ), + docSnap + = await getDoc + ( + docRef + ) + ; + + if (!docSnap.exists()) return; + + return docSnap.data(); +} /** * @author * @migbash diff --git a/src/lib/store/user-settings.ts b/src/lib/store/user-settings.ts index 25c192354..138749dab 100644 --- a/src/lib/store/user-settings.ts +++ b/src/lib/store/user-settings.ts @@ -524,7 +524,7 @@ function createLocalStore extract: ( - dataPoint: 'geo-bookmaker' | 'lang' | 'lang-user' | 'uid' + dataPoint: 'geo-bookmaker' | 'lang' | 'lang-user' | 'uid' | 'user' ): Typ1 | NullUndef => { const @@ -539,6 +539,8 @@ function createLocalStore return localStore?.user?.scores_user_data?.lang as Typ1 | NullUndef; else if (dataPoint == 'uid') return localStore?.user?.firebase_user_data?.uid as Typ1 | NullUndef; + else if (dataPoint === 'user') + return localStore?.user?.scores_user_data as Typ1 | NullUndef; ; return; diff --git a/src/lib/utils/deeplink.ts b/src/lib/utils/deeplink.ts index 3dbf517d1..6d7a3eb0a 100644 --- a/src/lib/utils/deeplink.ts +++ b/src/lib/utils/deeplink.ts @@ -20,10 +20,14 @@ import { isSignInWithEmailLink, signInWithCustomToken, signInWithEmailLink } fro import { auth } from '$lib/firebase/init.js'; import { setCookie } from '$lib/store/cookie.js'; import sessionStore from '$lib/store/session.js'; +import userBetarenaSettings from '$lib/store/user-settings.js'; import { authWithMoralis, successAuthComplete } from './authentication.js'; import { AU_W_TAG, dlog, dlogv2, errlog } from './debug.js'; import type { Page } from '@sveltejs/kit'; +import { routeIdHome } from '$lib/constants/paths.js'; +import type { B_NAV_T } from '@betarena/scores-lib/types/navbar.js'; +import { generateUrlCompetitions } from './string.js'; // #endregion ➤ 📦 Package Imports @@ -51,13 +55,35 @@ export async function mainDeepLinkCheck * @description * 📝 Data for `page`. */ - page = sessionStore.extract('page'), - /** - * @description - * 📝 Data for `page`. - */ - revertUrl = `${page?.url.origin}${page?.url.pathname}` - ; + page = sessionStore.extract('page') + ; + let /** + * @description + * 📝 Data for `page`. + */ + revertUrl = `${page?.url.origin}${page?.url.pathname}` + if (page?.route.id === routeIdHome) + { + const lang = sessionStore.extract('lang'); + const [preferedPage] = userBetarenaSettings.extract<{buttons_order: string[]}>('user')?.buttons_order || ["scores"]; + const translations = page.data.B_NAV_T as B_NAV_T | null | undefined; + switch (preferedPage) { + case "competitions": + revertUrl = generateUrlCompetitions( + lang || "", + page.data.B_SAP_D3_CP_H + ); + break; + case "content": + revertUrl = + translations?.scores_header_translations?.section_links + ?.sports_content_url as string; + break; + case "scores": + default: + revertUrl = `/${lang === "en" ? "" : `${lang}/`}scores`; + } + } await goto ( diff --git a/src/routes/(scores)/[[lang=lang]]/+page.server.ts b/src/routes/(scores)/[[lang=lang]]/+page.server.ts index e5a42f9d8..0872a0fb8 100644 --- a/src/routes/(scores)/[[lang=lang]]/+page.server.ts +++ b/src/routes/(scores)/[[lang=lang]]/+page.server.ts @@ -1,16 +1,16 @@ -// ╭──────────────────────────────────────────────────────────────────────────────────╮ -// │ 📌 High Order Component Overview │ -// ┣──────────────────────────────────────────────────────────────────────────────────┫ -// │ ➤ Internal Svelte Code Format :|: V.8.0 │ -// │ ➤ Status :|: 🔒 LOCKED │ -// │ ➤ Author(s) :|: @migbash │ -// ┣──────────────────────────────────────────────────────────────────────────────────┫ -// │ 📝 Description │ -// ┣──────────────────────────────────────────────────────────────────────────────────┫ -// │ Main Scores Platform Page Loader ('Client-Side') │ -// ╰──────────────────────────────────────────────────────────────────────────────────╯ - -// #region ➤ 📦 Package Imports +// // ╭──────────────────────────────────────────────────────────────────────────────────╮ +// // │ 📌 High Order Component Overview │ +// // ┣──────────────────────────────────────────────────────────────────────────────────┫ +// // │ ➤ Internal Svelte Code Format :|: V.8.0 │ +// // │ ➤ Status :|: 🔒 LOCKED │ +// // │ ➤ Author(s) :|: @migbash │ +// // ┣──────────────────────────────────────────────────────────────────────────────────┫ +// // │ 📝 Description │ +// // ┣──────────────────────────────────────────────────────────────────────────────────┫ +// // │ Main Scores Platform Page Loader ('Client-Side') │ +// // ╰──────────────────────────────────────────────────────────────────────────────────╯ + +// // #region ➤ 📦 Package Imports // import { ServerLoadEvent, redirect } from '@sveltejs/kit'; @@ -18,48 +18,45 @@ // import { dlogv2 } from '$lib/utils/debug.js'; // import { getUserById, userDataFetch } from '$lib/firebase/common.js'; -// #endregion ➤ 📦 Package Imports +// // #endregion ➤ 📦 Package Imports -// #region ➤ 🔄 LIFECYCLE [SVELTE] +// // #region ➤ 🔄 LIFECYCLE [SVELTE] -// /** -// * @type {import('./$types').PageLoad} -// */ +// // /** +// // * @type {import('./$types').PageLoad} +// // */ // export async function load // ( // event: ServerLoadEvent // ): Promise < any > // { -// console.log("EVENT :", event); -// const userId = await JSON.parse(event.locals.user); -// console.log("COOKIES :", userId["user-uid"]); -// if (!userId) redirect(300, "/scores"); -// const user = await getUserById(userId); +// const { langParam } = await event.parent(); +// // [🐞] +// dlogv2 +// ( +// '🚏 checkpoint ➤ src/routes/(scores)/[[lang=lang]]/+page.server.ts', +// [ +// `🔹 [var] ➤ langParam :|: ${langParam}`, +// ], +// true +// ); +// const defaultRedirectURL = `${langParam !== "en" ? `/${langParam}` : ""}/scores`; +// console.log("langParam1 :", langParam); +// const event_user = await JSON.parse(event.locals.user); +// const userId = event_user["user-uid"]; +// console.log("COOKIES UID:", userId); + +// const user = userId ? await getUserById(userId) : null; // console.log("USER :", user); -// if (!user) redirect(300, "/scores"); -// const -// d = await event.parent() -// ; -// console.log("PARENT DATA :", d); -// const {langParam} = d; -// // [🐞] -// dlogv2 -// ( -// '🚏 checkpoint ➤ src/routes/(scores)/[[lang=lang]]/+page.server.ts', -// [ -// `🔹 [var] ➤ langParam :|: ${langParam}`, -// ], -// true -// ); +// if (user) +// { +// return {} +// }; +// console.log("REDIRECTING...", defaultRedirectURL) +// redirect(300, defaultRedirectURL) + -// return await main -// ( -// event, -// { -// langParam -// } - // ); // } -// #endregion ➤ 🔄 LIFECYCLE [SVELTE] +// // #endregion ➤ 🔄 LIFECYCLE [SVELTE] diff --git a/src/routes/(scores)/[[lang=lang]]/+page.svelte b/src/routes/(scores)/[[lang=lang]]/+page.svelte index 0a380281d..57cfc9b43 100644 --- a/src/routes/(scores)/[[lang=lang]]/+page.svelte +++ b/src/routes/(scores)/[[lang=lang]]/+page.svelte @@ -42,12 +42,13 @@ import { goto } from "$app/navigation"; import { page } from "$app/stores"; import { generateUrlCompetitions } from "$lib/utils/string.js"; + import { browser } from "$app/environment"; + import type { B_NAV_T } from "@betarena/scores-lib/types/navbar.js"; $: ({ serverLang } = $sessionStore); $: [preferedPage] = $userBetarenaSettings.user?.scores_user_data ?.buttons_order || ["scores"]; $: trsanslationData = $page.data.B_NAV_T as B_NAV_T | null | undefined; - let isRedirect = false; $: { let url = $page.url.pathname; switch (preferedPage) { @@ -59,27 +60,24 @@ break; case "content": url = - trsanslationData?.scores_header_translations?.section_links - ?.sports_content_url; + trsanslationData?.scores_header_translations?.section_links + ?.sports_content_url; break; - case "scores": + case "scores": default: url = `/${serverLang === "en" ? "" : `${serverLang}/`}scores`; - } - if (!isRedirect) { - goto(url); - isRedirect = true; - } + } + if (browser) { + goto(url); + } } // #endregion ➤ 📦 Package Imports
- - diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index d25876ffc..a5b162339 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -245,9 +245,9 @@ // ╰───── $: if (browser) { _DEBUG_("Option1"); - mainDeepLinkCheck(); userBetarenaSettings.useLocalStorage(); scoresAdminStore.useLocalStorage(); + mainDeepLinkCheck(); } // ╭─────