Skip to content
Snippets Groups Projects
Commit 317655b5 authored by Bastien DUMONT's avatar Bastien DUMONT :angel:
Browse files

parallelize steps

parent a8903c22
No related branches found
No related tags found
1 merge request!1196feat: improve app load time
...@@ -19,7 +19,6 @@ import { ...@@ -19,7 +19,6 @@ import {
PartnersInfo, PartnersInfo,
Profile, Profile,
ProfileType, ProfileType,
UserChallenge,
} from 'models' } from 'models'
import React, { ReactNode, useCallback, useEffect, useState } from 'react' import React, { ReactNode, useCallback, useEffect, useState } from 'react'
import ActionService from 'services/action.service' import ActionService from 'services/action.service'
...@@ -194,19 +193,24 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => { ...@@ -194,19 +193,24 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => {
const startTime = performance.now() const startTime = performance.now()
const transaction = Sentry.startTransaction({ name: 'Initialize app' }) const transaction = Sentry.startTransaction({ name: 'Initialize app' })
try { try {
// init Terms // Load app in parallel
const termsStatus = await initializationService.initConsent() const [
termsStatus,
,
profile,
profileType,
profileEcogesture,
fluidStatus,
] = await Promise.all([
initializationService.initConsent(),
initializationService.initFluidPrices(),
initializationService.initProfile(),
initializationService.initProfileType(),
initializationService.initProfileEcogesture(),
initializationService.initFluidStatus(),
])
if (subscribed) dispatch(updateTermsStatus(termsStatus)) if (subscribed) dispatch(updateTermsStatus(termsStatus))
// Init fluidPrices
await initializationService.initFluidPrices()
// Init profile and update ecogestures, challenges, analysis
const profile = await initializationService.initProfile()
const profileType = await initializationService.initProfileType()
const profileEcogesture =
await initializationService.initProfileEcogesture()
const migrationsResult = await ms.runMigrations(migrations) const migrationsResult = await ms.runMigrations(migrations)
// Init last release notes when they exist // Init last release notes when they exist
dispatch( dispatch(
...@@ -249,11 +253,11 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => { ...@@ -249,11 +253,11 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => {
} }
dispatch(toggleAnalysisNotification(!profile.haveSeenLastAnalysis)) dispatch(toggleAnalysisNotification(!profile.haveSeenLastAnalysis))
} }
// Init Fluid status && lastDate for the chart
const fluidStatus = await initializationService.initFluidStatus() // Process fluids status
if (subscribed) { if (subscribed) {
dispatch(setFluidStatus(fluidStatus)) dispatch(setFluidStatus(fluidStatus))
let lastDataDate: DateTime | null = DateTime.fromISO('0001-01-01') let lastDataDate = DateTime.fromISO('0001-01-01')
for (const fluid of fluidStatus) { for (const fluid of fluidStatus) {
if (fluid.lastDataDate && fluid.lastDataDate > lastDataDate) { if (fluid.lastDataDate && fluid.lastDataDate > lastDataDate) {
lastDataDate = fluid.lastDataDate lastDataDate = fluid.lastDataDate
...@@ -281,10 +285,9 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => { ...@@ -281,10 +285,9 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => {
UserActionState.ONGOING UserActionState.ONGOING
) { ) {
const actionService = new ActionService(client) const actionService = new ActionService(client)
const updatedUserChallenge: UserChallenge | null = const updatedUserChallenge = await actionService.isActionDone(
await actionService.isActionDone( filteredCurrentOngoingChallenge[0]
filteredCurrentOngoingChallenge[0] )
)
if (updatedUserChallenge) { if (updatedUserChallenge) {
dispatch(updateUserChallengeList(updatedUserChallenge)) dispatch(updateUserChallengeList(updatedUserChallenge))
} }
......
export enum InitSteps { export enum InitSteps {
MIGRATION,
CONSENT, CONSENT,
PRICES,
PROFILE, PROFILE,
CHALLENGES,
PRICES, // never used
CONSOS, CONSOS,
MIGRATION,
CHALLENGES,
} }
export enum InitStepsErrors { export enum InitStepsErrors {
MIGRATION_ERROR = 'migration_error', MIGRATION_ERROR = 'migration_error',
......
...@@ -160,6 +160,7 @@ export default class InitializationService { ...@@ -160,6 +160,7 @@ export default class InitializationService {
public async initFluidPrices(): Promise<void> { public async initFluidPrices(): Promise<void> {
const startTime = performance.now() const startTime = performance.now()
this._setInitStep(InitSteps.PRICES)
logDuration('[Initialization] Launching fluidPrices service', startTime) logDuration('[Initialization] Launching fluidPrices service', startTime)
const triggerQuery: QueryDefinition = Q(TRIGGERS_DOCTYPE).where({ const triggerQuery: QueryDefinition = Q(TRIGGERS_DOCTYPE).where({
'message.name': 'fluidsPrices', 'message.name': 'fluidsPrices',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment