From cbe554d299aada2717e68e4bfa76e38524c21ce3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Pailharey?= <rpailharey@grandlyon.com> Date: Mon, 11 Sep 2023 15:50:27 +0200 Subject: [PATCH] feat(splash): init fluidPrices for latest data --- src/components/Splash/SplashRoot.tsx | 2 +- src/services/initialization.service.ts | 30 ++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/components/Splash/SplashRoot.tsx b/src/components/Splash/SplashRoot.tsx index a0cfaf2a2..cd571ee64 100644 --- a/src/components/Splash/SplashRoot.tsx +++ b/src/components/Splash/SplashRoot.tsx @@ -204,7 +204,7 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => { if (subscribed) dispatch(updateTermsStatus(termsStatus)) // Init fluidPrices - await initializationService.initFluidPrices() + await initializationService.initFluidPrices(client) // Init profile and update ecogestures, challenges, analysis const profile = await initializationService.initProfile() diff --git a/src/services/initialization.service.ts b/src/services/initialization.service.ts index a209b48de..8097121fd 100644 --- a/src/services/initialization.service.ts +++ b/src/services/initialization.service.ts @@ -1,5 +1,5 @@ import * as Sentry from '@sentry/react' -import { Client } from 'cozy-client' +import { Client, Q, QueryDefinition, QueryResult } from 'cozy-client' import logger from 'cozy-logger' import challengeEntityData from 'db/challengeEntity.json' import duelEntityData from 'db/duelEntity.json' @@ -29,6 +29,7 @@ import { ProfileEcogesture, ProfileType, TermsStatus, + Trigger, UserChallenge, } from 'models' import React from 'react' @@ -161,14 +162,13 @@ export default class InitializationService { } } - public async initFluidPrices(): Promise<boolean> { + public async initFluidPrices(client: Client): Promise<boolean> { const startTime = performance.now() const fpService = new FluidPricesService(this._client) // Populate data if none ecogesture exists const loadedPrices = await fpService.getAllPrices() if (loadedPrices?.length) { logDuration('[Initialization] FluidPrices db already created', startTime) - return true } else { try { const fluidTypes: FluidType[] = [ @@ -192,7 +192,6 @@ export default class InitializationService { await fpService.createPrice(price) } logDuration('[Initialization] FluidPrices db created', startTime) - return true } catch (error) { const errorMessage = `Initialization error - initFluidPrices: ${JSON.stringify( error @@ -203,6 +202,29 @@ export default class InitializationService { return false } } + // Launching fluidPrices service to apply new price to latest data + logDuration('[Initialization] Launching fluidPrices service', startTime) + const triggerQuery: QueryDefinition = Q('io.cozy.triggers').where({ + 'message.name': 'fluidsPrices', + }) + const { + data: [trigger], + }: QueryResult<Array<Trigger>> = await client.query(triggerQuery) + if (trigger?._id) { + client + .getStackClient() + .fetchJSON('POST', `/jobs/triggers/${trigger._id}/launch`) + logDuration( + '[Initialization] fluidPrices service launched successfully', + startTime + ) + } else { + logDuration( + '[Initialization] FluidPrices service trigger not found', + startTime + ) + } + return true } public async initChallengeEntity(hash: string): Promise<string> { -- GitLab