Логика повторного использования NGXS c между состояниями - PullRequest
0 голосов
/ 19 июня 2020

Я использую NGXS для сохранения некоторых коллекций данных, поступающих из серверной части. Прежде чем получить доступ к этим данным в моем приложении angular, я хочу убедиться, что использую последнюю версию таких данных. Вот как работает действие:

@Action(GetCollectionList)
getCollectionList({ getState, setState }: StateContext<StateModel>) {
    return this.infoService.getAppVersion().pipe(
        switchMap(appVersion => {
            const state = getState();
            if ((appVersion === InfoService.NO_VERSION && state.collection.length) || (appVersion == state.collectionVersion)) {
                return of([])
            }
            if (appVersion !== state.collectionVersion|| !state.collection.length) {
                setState({
                    ...state,
                    collectionVersion: appVersion
                }); 
                return this.mycollectionservice.getList()
            }
        }),
        tap((result) => {
            const state = getState();
            if (result && result.length) {
                setState({
                    ...state,
                    collection: result
                });                    
            }
        })
    )
}

Все мои состояния следуют одной и той же логике c, чтобы заполнить коллекцию состояния (например, moviesCollection, genresCollection, songsCollection et c).

Есть ли способ сделать проверку версии данных и, только если она устарела, сделать вызов для получения новых данных, повторно используемых во всех моих состояниях?

...