From c26cd5d9f6db5dbe1e07bf819fe61cb8b57efa3a Mon Sep 17 00:00:00 2001 From: MigBash <20924663+migbash@users.noreply.github.com> Date: Sun, 30 Apr 2023 00:25:44 +0200 Subject: [PATCH 1/2] Feature/issue 1231/seo platform speed ehance (#1248) * issue: #1231; revert vite.config.js plugins; * chore: update/template.svelte; * doc: app.html scripts update; aesthetics; * feature: create widget no data component to reuse; * feature: #1231: speed improvement; * chore: aesthetic + comments add; * fix: deepsource issues; --- CONTRIBUTING/TEMPLATE.svelte | 19 -- src/app.html | 19 +- src/lib/api/utils.ts | 10 +- src/lib/components/Widget-No-Data.svelte | 197 ++++++++++++++++++ .../components/_main_/footer/_Footer.svelte | 75 +++---- .../components/_main_/header/Header.svelte | 53 ++--- .../_Best_Goalscorers_Widget.svelte | 184 ++++++---------- .../_FeaturedBettingSitesWidget.svelte | 52 ++--- .../_FeaturedMatch_Widget.svelte | 158 ++++---------- .../assets/no_featured_match_visual.svg | 5 - .../assets/no_featured_match_visual_dark.svg | 5 - .../league_list/_LeagueList_Widget.svelte | 22 +- .../_Leagues_Table_Widget.svelte | 158 +++++--------- .../assets/no_featured_match_visual.svg | 5 - .../assets/no_featured_match_visual_dark.svg | 5 - .../home/seo_block_homepage/_SEO_Block.svelte | 128 ++++-------- .../assets/no_featured_match_visual.svg | 5 - .../assets/no_featured_match_visual_dark.svg | 5 - src/lib/firebase/common.ts | 3 +- .../firebase/fixtures_page/lineups/index.ts | 3 +- src/lib/firebase/scoreboard/index.ts | 3 +- src/lib/utils/languages.ts | 10 +- src/lib/utils/platform-functions.ts | 9 + src/routes/+layout.svelte | 9 +- src/routes/+layout.ts | 81 ++++--- src/routes/[[lang=lang]]/+page.svelte | 15 +- src/routes/[[lang=lang]]/+page.ts | 26 +-- .../[player=player]/[...player_fill]/+page.ts | 7 +- .../[sport]/[fixture=fixture]/+page.ts | 2 +- src/routes/api/cache/_main_/footer/+server.ts | 4 +- src/routes/api/cache/_main_/navbar/+server.ts | 4 +- .../api/cache/_main_/pages_and_seo/+server.ts | 18 +- .../api/cache/fixtures/about/+server.ts | 6 +- .../api/cache/fixtures/content/+server.ts | 6 +- .../api/cache/fixtures/head-2-head/+server.ts | 4 +- .../api/cache/fixtures/incidents/+server.ts | 6 +- .../api/cache/fixtures/lineups/+server.ts | 4 +- .../cache/fixtures/probabilities/+server.ts | 4 +- .../api/cache/fixtures/scoreboard/+server.ts | 6 +- .../api/cache/fixtures/statistics/+server.ts | 6 +- .../api/cache/fixtures/votes/+server.ts | 4 +- .../api/cache/home/best_goalscorer/+server.ts | 6 +- .../home/featured_betting_sites/+server.ts | 6 +- .../api/cache/home/featured_match/+server.ts | 6 +- .../api/cache/home/league_list/+server.ts | 6 +- .../api/cache/home/leagues_table/+server.ts | 6 +- .../api/cache/home/live_scores/+server.ts | 16 +- .../api/cache/home/livescores-v2/+server.ts | 14 +- .../api/cache/home/seo_block/+server.ts | 4 +- .../tournaments/fixtures_odds/+server.ts | 6 +- .../cache/tournaments/league_info/+server.ts | 2 +- .../cache/tournaments/sportbook/+server.ts | 6 +- .../cache/tournaments/standings/+server.ts | 6 +- .../cache/tournaments/top_players/+server.ts | 6 +- src/routes/api/hasura/_main_/auth/+server.ts | 8 +- .../api/hasura/_main_/seo-pages/+server.ts | 6 +- .../api/hasura/fixture/about/+server.ts | 4 +- .../api/hasura/fixture/content/+server.ts | 4 +- .../api/hasura/fixture/head-2-head/+server.ts | 11 +- .../api/hasura/fixture/incidents/+server.ts | 2 +- .../api/hasura/fixture/lineups/+server.ts | 2 +- .../hasura/fixture/probabilities/+server.ts | 4 +- .../api/hasura/fixture/scoreboard/+server.ts | 2 +- .../api/hasura/fixture/statistics/+server.ts | 2 +- .../api/hasura/fixture/votes/+server.ts | 2 +- .../api/hasura/home/livescores-v2/+server.ts | 4 +- .../hasura/league/fixtures-odds/+server.ts | 16 +- .../api/hasura/league/top-players/+server.ts | 2 +- src/routes/api/hasura/profile/+server.ts | 6 +- src/routes/api/hasura/server._TEMPLATE_.ts | 2 +- .../assets/svg/noWidgetData.svg | 0 .../assets/svg/noWidgetDataDark.svg | 0 vite.config.js | 18 +- 73 files changed, 720 insertions(+), 810 deletions(-) create mode 100644 src/lib/components/Widget-No-Data.svelte delete mode 100644 src/lib/components/page/home/featured_match/assets/no_featured_match_visual.svg delete mode 100644 src/lib/components/page/home/featured_match/assets/no_featured_match_visual_dark.svg delete mode 100644 src/lib/components/page/home/leagues_table/assets/no_featured_match_visual.svg delete mode 100644 src/lib/components/page/home/leagues_table/assets/no_featured_match_visual_dark.svg delete mode 100644 src/lib/components/page/home/seo_block_homepage/assets/no_featured_match_visual.svg delete mode 100644 src/lib/components/page/home/seo_block_homepage/assets/no_featured_match_visual_dark.svg rename src/lib/components/page/home/best_goalscorers/assets/no_featured_match_visual.svg => static/assets/svg/noWidgetData.svg (100%) rename src/lib/components/page/home/best_goalscorers/assets/no_featured_match_visual_dark.svg => static/assets/svg/noWidgetDataDark.svg (100%) diff --git a/CONTRIBUTING/TEMPLATE.svelte b/CONTRIBUTING/TEMPLATE.svelte index 79430ba3c..a53639ba5 100644 --- a/CONTRIBUTING/TEMPLATE.svelte +++ b/CONTRIBUTING/TEMPLATE.svelte @@ -19,28 +19,9 @@ COMPONENT JS (w/ TS) //#region ➤ [MAIN] Package Imports // <-imports-go-here-> - //#region ➤ Svelte/SvelteKit Imports - // <-imports-go-here-> import { onMount } from 'svelte'; - //#endregion ➤ Svelte/SvelteKit Imports - - //#region ➤ Project Custom Imports - // <-imports-go-here-> import { viewport_change } from '$lib/utils/platform-functions'; - //#endregion ➤ Project Custom Imports - - //#region ➤ [PLUGIN] Firebase Imports - // <-imports-go-here-> - //#endregion ➤ [PLUGIN] Firebase Imports - - //#region ➤ Types Imports - // <-imports-go-here-> - //#endregion ➤ Types Imports - - //#region ➤ Assets Imports - // <-imports-go-here-> import profile_avatar from './assets/profile-avatar.svg'; - //#endregion ➤ Assets Imports //#endregion ➤ [MAIN] Package Imports diff --git a/src/app.html b/src/app.html index 7af323aaa..4824ecdf4 100644 --- a/src/app.html +++ b/src/app.html @@ -4,7 +4,11 @@ - [ℹ] YANDEX - ORIGINAL - [ℹ] GOOGLE V1 - ORIGINAL - [ℹ] GOOGLE V2 - NONCE BASED + [ℹ] 1. SMARTLOOK + [ℹ] 2. GOOGLE ANALYTICS --> - + > + - %sveltekit.head% { // ... verify if the response is error-free @@ -25,7 +25,7 @@ export async function get( if (dev) logErrorGroup( 'utils [DEV]', - `response: ${response}` + `response: ${JSON.stringify(response)}` ); throw new Error( 'Network response was not ok' @@ -34,6 +34,7 @@ export async function get( // ... return the data return response.json(); }); + return response; } /** @@ -54,7 +55,7 @@ export async function post( data ): Promise { // ... - return await fetch(path, { + const response = await fetch(path, { method: 'POST', credentials: 'include', body: JSON.stringify(data), @@ -69,7 +70,7 @@ export async function post( if (dev) logErrorGroup( 'utils [DEV]', - `response: ${response}` + `response: ${JSON.stringify(response)}` ); throw new Error( 'Network response was not ok' @@ -78,4 +79,5 @@ export async function post( // ... return the data return response.json(); }); + return response; } diff --git a/src/lib/components/Widget-No-Data.svelte b/src/lib/components/Widget-No-Data.svelte new file mode 100644 index 000000000..6b28d56f6 --- /dev/null +++ b/src/lib/components/Widget-No-Data.svelte @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + +
+ + No widget visual icon + +
+

+ {NO_DATA_TITLE} +

+

+ {NO_DATA_DESC} +

+
+
+ + + + \ No newline at end of file diff --git a/src/lib/components/_main_/footer/_Footer.svelte b/src/lib/components/_main_/footer/_Footer.svelte index 3fce827f1..f3b94c879 100644 --- a/src/lib/components/_main_/footer/_Footer.svelte +++ b/src/lib/components/_main_/footer/_Footer.svelte @@ -5,6 +5,7 @@ -
- + + - - {/if} + --> +
+

{SEO_BLOCK_DATA.title}

+ {@html SEO_BLOCK_DATA.html} +
+
+ +
- {#if noSEOBlockData && !loaded} - -

- {SEO_BLOCK_DATA.title} -

- - -
- {#if $userBetarenaSettings.theme == 'Dark'} - no-featured-match-visual_dark - {:else} - no-featured-match-visual - {/if} - - -
-

- No SEO Block Available -

-

- Sorry, at this time there is no SEO data - available! -

-
-
+ {/if} {:then data} - -

- {SEO_BLOCK_DATA.title} -

-
- + {:catch error} {error} {/await} @@ -162,19 +123,6 @@ COMPONENT STYLE ==================== --> + \ No newline at end of file diff --git a/src/routes/[[lang=lang]]/+page.ts b/src/routes/[[lang=lang]]/+page.ts index ef888217e..ca098fec6 100644 --- a/src/routes/[[lang=lang]]/+page.ts +++ b/src/routes/[[lang=lang]]/+page.ts @@ -7,33 +7,56 @@ import { } from '$lib/utils/debug'; import { error } from '@sveltejs/kit'; -import { PRELOAD_invalid_data } from '$lib/utils/platform-functions.js'; +import { PRELOAD_invalid_data, promiseUrlsPreload, promiseValidUrlCheck } from '$lib/utils/platform-functions.js'; import type { PageLoad } from './$types'; -/** - * @type {import('./$types').PageLoad} - */ -export async function load({ - url, - params, - fetch -}): Promise { +/** @type {import('./$types').PageLoad} */ +export async function load +( + { + // url, + params, + fetch + } +): Promise < PageLoad > +{ const t0 = performance.now(); + //#region [0] IMPORTANT EXTRACT URL DATA + const urlLang: string = - params.lang == undefined + params?.lang == undefined ? 'en' - : params.lang + : params?.lang ; - // -------------- - // [ℹ] preload data DOC: REF: [2] - // -------------- + //#endregion [0] IMPORTANT EXTRACT URL DATA + + //#region [0] IMPORTANT VALID URL CHECK + + const validUrlCheck = await promiseValidUrlCheck + ( + fetch, + urlLang + ) + + // [ℹ] exit; + if (!validUrlCheck) { + throw error( + ERROR_CODE_INVALID, + PAGE_INVALID_MSG + ); + } + + //#endregion [0] IMPORTANT EXTRACT URL DATA + + //#region [0] IMPORTANT (PRE) PRE-LOAD DATA DOC: REF: [2] const urls = [ - `/api/cache/_main_/pages_and_seo?lang=${urlLang}&page=homepage`, - // [ℹ] home + // [ℹ] home (page) + `/api/data/main/seo-pages?lang=${urlLang}&page=homepage`, + // [ℹ] home (widgets) `/api/cache/home/featured_match?lang=${urlLang}`, `/api/cache/home/featured_betting_sites?lang=${urlLang}`, `/api/cache/home/best_goalscorer?lang=${urlLang}`, @@ -42,18 +65,13 @@ export async function load({ `/api/cache/home/seo_block?lang=${urlLang}`, `/api/cache/home/livescores-v2?lang=${urlLang}`, `/api/cache/home/livescores-v2?seo=true&lang=${urlLang}`, - // [ℹ] page validation check; - `/api/cache/_main_/pages_and_seo?url=${url.pathname}` ]; - const promises = urls.map((_url) => - fetch(_url).then((response) => - response.json() - ) - ); - - const data = await Promise.all(promises); - dlog(data, false); + const data = await promiseUrlsPreload + ( + urls, + fetch + ); const [ PAGE_DATA_SEO, @@ -64,21 +82,14 @@ export async function load({ LEAGUES_TABLE_SCORES_SEO_DATA, SEO_BLOCK_DATA, LIVESCORES_V2_T_DATA, - LIVESCORES_V2_SEO, - VALID_URL + LIVESCORES_V2_SEO ] = data; - // -------------- - // [ℹ] return(s) - // -------------- + dlog(data, false); - // [ℹ] exit; - if (!VALID_URL) { - throw error( - ERROR_CODE_INVALID, - PAGE_INVALID_MSG - ); - } + //#endregion [0] IMPORTANT (PRE) PRE-LOAD DATA DOC: REF: [2] + + //#region [3] IMPORTANT RETURN // [ℹ] FIXME: valid-page does not count data[7] - already checked const INVALID_PAGE_DATA_POINTS: boolean = data.includes(undefined); @@ -117,4 +128,7 @@ export async function load({ LIVESCORES_V2_T_DATA, LIVESCORES_V2_SEO }; -} + + //#endregion [3] IMPORTANT RETURN + +} \ No newline at end of file diff --git a/src/routes/[[lang=lang]]/[player=player]/[...player_fill]/+page.ts b/src/routes/[[lang=lang]]/[player=player]/[...player_fill]/+page.ts index 46a831a22..4e51cebfd 100644 --- a/src/routes/[[lang=lang]]/[player=player]/[...player_fill]/+page.ts +++ b/src/routes/[[lang=lang]]/[player=player]/[...player_fill]/+page.ts @@ -1,5 +1,5 @@ import { dlog, ERROR_CODE_INVALID, PAGE_INVALID_MSG } from "$lib/utils/debug"; -import { PRELOAD_invalid_data } from "$lib/utils/platform-functions"; +import { PRELOAD_invalid_data, promiseUrlsPreload, promiseValidUrlCheck } from "$lib/utils/platform-functions"; import type { B_SAP_D1, B_SAP_D2, B_SAP_PP_D, B_SAP_PP_T } from "@betarena/scores-lib/types/seo-pages"; import { error } from "@sveltejs/kit"; import type { B_PFIX_D, B_PFIX_T } from "node_modules/@betarena/scores-lib/types/player-fixtures"; @@ -7,53 +7,81 @@ import type { B_PPRO_T } from "node_modules/@betarena/scores-lib/types/player-pr import type { PageLoad } from "../$types"; /** @type {import('./$types').PageLoad} */ -export async function load({ url, params, fetch }): Promise { +export async function load +( + { + url, + params, + fetch + } +): Promise < PageLoad > +{ const t0 = performance.now(); - const { + //#region [0] IMPORTANT EXTRACT URL DATA + + const { lang, - // (example) -> player | jugador + // (example) -> player | jugador (translation) // player, // (example) -> teddy-teuma/829643 | harry-kane/997 player_fill } = params; // console.log(params) - // TODO: - // missing VALID_URL check; - // & redirect; - // IMPORTANT - - //#region [0] IMPORTANT EXTRACT URL DATA - const _lang = lang == undefined ? 'en' : lang; const player_id = player_fill.match(/\d+$/); - // console.log(player_id.toString()) //#endregion [0] IMPORTANT EXTRACT URL DATA + //#region [0] IMPORTANT VALID URL CHECK + + const validUrlCheck = await promiseValidUrlCheck + ( + fetch, + _lang, + null, + null, + null, + null, + player_fill + ) + + // [ℹ] exit; + if (!validUrlCheck) { + // [🐞] + const t1 = performance.now(); + dlog(`⏳ [PLAYER] preload ${((t1 - t0) / 1000).toFixed(2)} sec`, true) + throw error( + ERROR_CODE_INVALID, + PAGE_INVALID_MSG + ); + } + + //#endregion [0] IMPORTANT VALID URL CHECK + //#region [0] IMPORTANT (PRE) PRE-LOAD DATA - const PAGE_DATA: B_SAP_PP_D = await fetch( - `/api/hasura/_main_/seo-pages?player_id=${player_id}`, - { - method: 'GET' - } - ).then((r) => r.json()); - - // TEMP VALIDATE - // console.log('PAGE_DATA', PAGE_DATA) - // [ℹ] exit; - if (!PAGE_DATA) { - const t1 = performance.now(); - dlog(`fixture (load) (exit) complete in: ${(t1 - t0) / 1000} sec`, true) - throw error(ERROR_CODE_INVALID, PAGE_INVALID_MSG); - } + // [1] FIXTURE (CRITICAL) page data; + + type PP_PROMISE_0 = [ + B_SAP_PP_D | undefined + ] + + const data_0: PP_PROMISE_0 = await promiseUrlsPreload + ( + [`/api/data/main/seo-pages?player_id=${player_id}&page=player`], + fetch + ) as PP_PROMISE_0; + + const [ + PAGE_DATA + ] = data_0; const country_id = PAGE_DATA?.data?.country_id; @@ -67,15 +95,11 @@ export async function load({ url, params, fetch }): Promise { //#region [1] IMPORTANT PRE-LOAD DATA - // -------------- - // [ℹ] preload data DOC: REF: [2] - // -------------- - const urls: string[] = [ // NOTE:WARNING:TODO: remove for a cache solution - `/api/hasura/_main_/seo-pages?lang=${_lang}&page=player`, - `/api/cache/_main_/pages_and_seo?country_id=${country_id}`, - `/api/cache/_main_/pages_and_seo?months=true&lang=${_lang}`, + `/api/data/main/seo-pages?lang=${_lang}&page=player`, + `/api/data/main/seo-pages?country_id=${country_id}`, + `/api/data/main/seo-pages?months=true&lang=${_lang}`, // NOTE:WARNING:TODO: remove for a cache solution `/api/data/players/profile?lang=${_lang}`, // NOTE:WARNING:TODO: remove for a cache solution @@ -84,12 +108,6 @@ export async function load({ url, params, fetch }): Promise { `/api/data/players/fixtures?player_id=${player_id}&limit=10&offset=0` ] - const promises = urls.map((_url) => - fetch(_url).then((response) => - response.json() - ) - ); - type PP_PROMISE = [ B_SAP_PP_T | undefined, B_SAP_D1 | undefined, @@ -99,7 +117,11 @@ export async function load({ url, params, fetch }): Promise { B_PFIX_D | undefined ] - const data: PP_PROMISE = await Promise.all(promises) as PP_PROMISE; + const data = await promiseUrlsPreload + ( + urls, + fetch + ) as PP_PROMISE; const [ PAGE_SEO, @@ -154,8 +176,7 @@ export async function load({ url, params, fetch }): Promise { //#region [3] IMPORTANT RETURN // const INVALID_PAGE_DATA: boolean = data.includes(undefined); - - // console.log(data) + console.log(data) PRELOAD_invalid_data(data) diff --git a/src/routes/[[lang=lang]]/[sport]/+page.ts b/src/routes/[[lang=lang]]/[sport]/+page.ts index ba186717d..665e28d94 100644 --- a/src/routes/[[lang=lang]]/[sport]/+page.ts +++ b/src/routes/[[lang=lang]]/[sport]/+page.ts @@ -1,39 +1,61 @@ import { dlog, ERROR_CODE_INVALID, PAGE_INVALID_MSG } from '$lib/utils/debug'; +import { promiseValidUrlCheck } from '$lib/utils/platform-functions.js'; import { error, redirect } from '@sveltejs/kit'; import type { PageLoad, PageLoadEvent } from '../$types'; /** @type {import('./$types').PageLoad} */ -export async function load({ - url, - params, - fetch -}: PageLoadEvent): Promise < PageLoad > { +export async function load +( + { + // url, + params, + fetch + }: PageLoadEvent +): Promise < PageLoad > +{ const t0 = performance.now(); + //#region [0] IMPORTANT EXTRACT URL DATA + + const { + lang, + // @ts-expect-error unknown RouteParam, that exists + sport + } = params + + console.log("SPORT", sport) + + const urlLang: string = + params?.lang == undefined + ? 'en' + : params?.lang + ; + + //#endregion [0] IMPORTANT EXTRACT URL DATA + //#region IMPORTANT URL (validation) - // [ℹ] validate [1] - const VALID_URL = await fetch( - `/api/cache/_main_/pages_and_seo?url=${url.pathname}`, - { - method: 'GET' - } - ).then((r) => r.json()); - - // [ℹ] exit (condition) - if (!VALID_URL) { + const validUrlCheck = await promiseValidUrlCheck + ( + fetch, + urlLang, + sport + ) + + // [ℹ] exit; + if (!validUrlCheck) { + // [🐞] const t1 = performance.now(); - dlog(`fixture (load) (exit) complete in: ${(t1 - t0) / 1000} sec`, true) - throw error(ERROR_CODE_INVALID, PAGE_INVALID_MSG); + dlog(`⏳ [SPORT] preload ${((t1 - t0) / 1000).toFixed(2)} sec`, true) + throw error( + ERROR_CODE_INVALID, + PAGE_INVALID_MSG + ); } //#endregion IMPORTANT URL (validation) - const { - lang - } = params - const URL: string = lang == undefined ? '/' diff --git a/src/routes/[[lang=lang]]/[sport]/[country]/+page.ts b/src/routes/[[lang=lang]]/[sport]/[country]/+page.ts index ba186717d..decb79e48 100644 --- a/src/routes/[[lang=lang]]/[sport]/[country]/+page.ts +++ b/src/routes/[[lang=lang]]/[sport]/[country]/+page.ts @@ -1,38 +1,60 @@ import { dlog, ERROR_CODE_INVALID, PAGE_INVALID_MSG } from '$lib/utils/debug'; +import { promiseValidUrlCheck } from '$lib/utils/platform-functions.js'; import { error, redirect } from '@sveltejs/kit'; import type { PageLoad, PageLoadEvent } from '../$types'; /** @type {import('./$types').PageLoad} */ -export async function load({ - url, - params, - fetch -}: PageLoadEvent): Promise < PageLoad > { +export async function load +( + { + // url, + params, + fetch + }: PageLoadEvent +): Promise < PageLoad > +{ const t0 = performance.now(); - //#region IMPORTANT URL (validation) + //#region [0] IMPORTANT EXTRACT URL DATA - // [ℹ] validate [1] - const VALID_URL = await fetch( - `/api/cache/_main_/pages_and_seo?url=${url.pathname}`, - { - method: 'GET' - } - ).then((r) => r.json()); - - // [ℹ] exit (condition) - if (!VALID_URL) { - const t1 = performance.now(); - dlog(`fixture (load) (exit) complete in: ${(t1 - t0) / 1000} sec`, true) - throw error(ERROR_CODE_INVALID, PAGE_INVALID_MSG); - } + const { + lang, + sport, + // @ts-expect-error unknown RouteParam, that exists + country + } = params - //#endregion IMPORTANT URL (validation) + const urlLang: string = + params?.lang == undefined + ? 'en' + : params?.lang + ; - const { - lang - } = params + //#endregion [0] IMPORTANT EXTRACT URL DATA + + //#region IMPORTANT URL (validation) + + const validUrlCheck = await promiseValidUrlCheck + ( + fetch, + urlLang, + sport, + country + ) + + // [ℹ] exit; + if (!validUrlCheck) { + // [🐞] + const t1 = performance.now(); + dlog(`⏳ [SPORT] preload ${((t1 - t0) / 1000).toFixed(2)} sec`, true) + throw error( + ERROR_CODE_INVALID, + PAGE_INVALID_MSG + ); + } + + //#endregion IMPORTANT URL (validation) const URL: string = lang == undefined diff --git a/src/routes/[[lang=lang]]/[sport]/[country]/[league_name]/+page.svelte b/src/routes/[[lang=lang]]/[sport]/[country]/[league_name]/+page.svelte index 980d7664c..450cdfee6 100644 --- a/src/routes/[[lang=lang]]/[sport]/[country]/[league_name]/+page.svelte +++ b/src/routes/[[lang=lang]]/[sport]/[country]/[league_name]/+page.svelte @@ -39,7 +39,6 @@ } from '$lib/models/tournaments/fixtures_odds/types'; import type { BETARENA_HASURA_scores_tournaments } from '$lib/models/hasura'; - import { dlog } from '$lib/utils/debug'; import { platfrom_lang_ssr, viewport_change } from '$lib/utils/platform-functions'; let PAGE_DATA_SEO: Cache_Single_Tournaments_SEO_Translation_Response; @@ -54,21 +53,15 @@ let FIXTURES_ODDS_DATA: REDIS_CACHE_SINGLE_tournaments_fixtures_odds_widget_data_response; $: PAGE_DATA_SEO = $page.data.PAGE_DATA_SEO; - $: TOURNAMENT_DATA_TRANSLATED_COPIES = - $page.data.TOURNAMENT_DATA_TRANSLATED_COPIES; + $: TOURNAMENT_DATA_TRANSLATED_COPIES = $page.data.TOURNAMENT_DATA_TRANSLATED_COPIES; $: TOURNAMENT_DATA = $page.data.TOURNAMENT_DATA; - $: LEAGUE_INFO_DATA = - $page.data.LEAGUE_INFO_DATA; + $: LEAGUE_INFO_DATA = $page.data.LEAGUE_INFO_DATA; $: STANDINGS_T = $page.data.STANDINGS_T; $: STANDINGS_DATA = $page.data.STANDINGS_DATA; $: TOP_PLAYERS_T = $page.data.TOP_PLAYERS_T; - $: TOP_PLAYERS_DATA = - $page.data.TOP_PLAYERS_DATA; + $: TOP_PLAYERS_DATA = $page.data.TOP_PLAYERS_DATA; $: FIXTURES_ODDS_T = $page.data.FIXTURES_ODDS_T; - $: FIXTURES_ODDS_DATA = - $page.data.FIXTURES_ODDS_DATA; - - $: dlog(`TOURNAMENT_DATA?.tournament_id: ${TOURNAMENT_DATA?.tournament_id}`, true) + $: FIXTURES_ODDS_DATA = $page.data.FIXTURES_ODDS_DATA; // TODO: FIXME: replace into a single __layout.svelte method [?] using page-stores [?] @@ -132,31 +125,28 @@ SVELTE INJECTION TAGS =================== --> - {#if PAGE_DATA_SEO} {/if} - {#if PAGE_DATA_SEO} - {#each PAGE_DATA_SEO.hreflang as item} + {#each PAGE_DATA_SEO?.hreflang || [] as item} {#each TOURNAMENT_DATA_TRANSLATED_COPIES as item_} {#if item.link == item_.lang}