From bcee4ce2ebe28537486bd6eb4941a38e9bac40dd Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Tue, 1 Dec 2020 16:01:50 +0100 Subject: [PATCH] feat: set userSeasonList on init --- src/components/Splash/SplashRoot.tsx | 12 +++++++++--- src/services/initialization.service.ts | 24 ++++++++++++++++++++++++ src/services/season.service.ts | 11 +++-------- 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/src/components/Splash/SplashRoot.tsx b/src/components/Splash/SplashRoot.tsx index d2db9dd99..e3b5b1b88 100644 --- a/src/components/Splash/SplashRoot.tsx +++ b/src/components/Splash/SplashRoot.tsx @@ -7,6 +7,7 @@ import { setFluidStatus, } from 'store/global/global.actions' import { updateProfile } from 'store/profile/profile.actions' +import { setUserSeasonList } from 'store/season/season.actions' import InitializationService from 'services/initialization.service' interface SplashRootProps { @@ -65,14 +66,12 @@ const SplashRoot = ({ ) { profile = resultEcogesture.profile } - // TODO add initSeasons const resultBoss = await initializationService.initBossEntity( profile.bossHash ) if (subscribed && resultBoss.result && resultBoss.profile) { profile = resultBoss.profile } - const resultSeasonEntity = await initializationService.initSeasonEntity( profile.seasonHash ) @@ -92,7 +91,14 @@ const SplashRoot = ({ } // Init Fluid status const fluidStatus = await initializationService.initFluidStatus() - dispatch(setFluidStatus(fluidStatus)) + if (subscribed) { + dispatch(setFluidStatus(fluidStatus)) + } + // Init Season + const userSeasonList = await initializationService.initUserSeasons() + if (subscribed) { + dispatch(setUserSeasonList(userSeasonList)) + } // Update state setState(prev => ({ ...prev, diff --git a/src/services/initialization.service.ts b/src/services/initialization.service.ts index ce0a6c2e4..bbc452881 100644 --- a/src/services/initialization.service.ts +++ b/src/services/initialization.service.ts @@ -564,6 +564,30 @@ export default class InitializationService { } } + /* + * Build the userSeasonList + * sucess return: UserSeason[] + * failure throw error + */ + public async initUserSeasons(): Promise<UserSeason[]> { + const seasonService = new SeasonService(this._client) + try { + const userSeasonList = await seasonService.buildUserSeasonList() + if (userSeasonList) { + console.log( + '%c Initialization: Seasons loaded', + 'background: #222; color: white' + ) + return userSeasonList + } else { + throw new Error('initUserSeasons: userSeasonList not found') + } + } catch (error) { + console.log('Initialization error: ', error) + throw error + } + } + /* * For each fluid get the trigger status and the last data date * sucess return: FluidStatus[] diff --git a/src/services/season.service.ts b/src/services/season.service.ts index 393ebac12..64289d4d0 100644 --- a/src/services/season.service.ts +++ b/src/services/season.service.ts @@ -25,7 +25,7 @@ export default class SeasonService { public formatToUserSeason(season: SeasonEntity): UserSeason { const bossService = new BossService(this._client) - const userBoss = bossService.formatToUserBoss(season.boss) + const userBoss: Boss = bossService.formatToUserBoss(season.boss) const userSeason: UserSeason = { id: season.id, title: season.title, @@ -61,19 +61,14 @@ export default class SeasonService { }: QueryResult<UserSeason[]> = await this._client.query(queryUserSeason) let buildList: UserSeason[] = [] - if (!userSeason && seasonEntity) { + if (seasonEntity.length > 0 && userSeason.length === 0) { seasonEntity.forEach(season => { buildList.push(this.formatToUserSeason(season)) }) buildList = this.isAllSeasonLocked(buildList) return buildList } - if ( - userSeason && - userSeason.length !== 0 && - seasonEntity && - seasonEntity.length !== 0 - ) { + if (userSeason.length !== 0 && seasonEntity.length !== 0) { seasonEntity.forEach(season => { if (userSeason.some(found => found.id === season.id)) { const foundSeason = userSeason.find(s => s.id === season.id) -- GitLab