From 8eab23e9ba7b3a3a8a7af130458f2ca2ec1a5d75 Mon Sep 17 00:00:00 2001 From: Kenta420 Date: Wed, 4 Oct 2023 14:23:44 +0700 Subject: [PATCH] recipe now can memorize recipe version have been selected --- .../src/app/core/services/recipe.service.ts | 49 +++++++++++++------ .../features/dashboard/dashboard.component.ts | 11 ++--- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/client/src/app/core/services/recipe.service.ts b/client/src/app/core/services/recipe.service.ts index c6a4509..21abd16 100644 --- a/client/src/app/core/services/recipe.service.ts +++ b/client/src/app/core/services/recipe.service.ts @@ -1,6 +1,6 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { BehaviorSubject, Observable, distinctUntilChanged } from 'rxjs'; +import { BehaviorSubject, Observable, distinctUntilChanged, tap } from 'rxjs'; import { Recipe, Recipe01 } from '../models/recipe.model'; import { environment } from 'src/environments/environment'; @@ -20,27 +20,44 @@ export class RecipeService { take: 10, offset: 0, search: '', - version: 'coffeethai02_580.json', + version: this.getCurrentVersion(), } ): Observable<{ fileName: string; recipes: Recipe; hasMore: boolean; }> { - return this._httpClient.get<{ - fileName: string; - recipes: Recipe; - hasMore: boolean; - }>(environment.api + '/recipes', { - params: { - offset: params.offset, - take: params.take, - search: params.search, - version: params.version, - }, - withCredentials: true, - responseType: 'json', - }); + return this._httpClient + .get<{ + fileName: string; + recipes: Recipe; + hasMore: boolean; + }>(environment.api + '/recipes', { + params: { + offset: params.offset, + take: params.take, + search: params.search, + version: params.version, + }, + withCredentials: true, + responseType: 'json', + }) + .pipe( + tap((data) => { + if (data.fileName !== this.getCurrentVersion()) { + localStorage.setItem('currentRecipeVersion', data.fileName); + } + }) + ); + } + + getCurrentVersion(): string { + const currentRecipeVersion = localStorage.getItem('currentRecipeVersion'); + if (currentRecipeVersion) { + return currentRecipeVersion; + } + + return 'coffeethai02_580.json'; } getRecipesById(id: string): Observable { diff --git a/client/src/app/features/dashboard/dashboard.component.ts b/client/src/app/features/dashboard/dashboard.component.ts index 21d3af4..ed57892 100644 --- a/client/src/app/features/dashboard/dashboard.component.ts +++ b/client/src/app/features/dashboard/dashboard.component.ts @@ -32,7 +32,6 @@ export class DashboardComponent implements OnInit { private offset = 0; private take = 20; private recipeVersionData: string[] = []; - private currentRecipeVersion: string = 'coffeethai02_580.json'; recipeVersion: BehaviorSubject = new BehaviorSubject(''); recipeVersion$ = this.recipeVersion.asObservable(); @@ -61,7 +60,7 @@ export class DashboardComponent implements OnInit { offset: this.offset, take: this.take, search: this.oldSearchStr, - version: this.currentRecipeVersion, + version: this._recipeService.getCurrentVersion(), }) .subscribe(({ recipes, hasMore, fileName }) => { const { Recipe01, ...recipesWithoutRecipe01 } = recipes; @@ -100,7 +99,7 @@ export class DashboardComponent implements OnInit { offset: this.offset, take: this.take, search: this.oldSearchStr, - version: this.currentRecipeVersion, + version: this._recipeService.getCurrentVersion(), }) .subscribe(({ recipes, hasMore, fileName }) => { const { Recipe01, ...recipesWithoutRecipe01 } = recipes; @@ -139,7 +138,7 @@ export class DashboardComponent implements OnInit { offset: this.offset, take: this.take, search: this.searchStr, - version: this.currentRecipeVersion, + version: this._recipeService.getCurrentVersion(), }) .subscribe(({ recipes, hasMore, fileName }) => { const { Recipe01, ...recipesWithoutRecipe01 } = recipes; @@ -165,7 +164,6 @@ export class DashboardComponent implements OnInit { this.isHasMore = true; this.isLoadMore = false; this.oldSearchStr = ''; - this.currentRecipeVersion = recipeVersion; this._recipeService .getRecipes({ @@ -206,7 +204,8 @@ export class DashboardComponent implements OnInit { openJsonTab() { window.open( - environment.api + `/recipes/${this.currentRecipeVersion}/json`, + environment.api + + `/recipes/${this._recipeService.getCurrentVersion()}/json`, '_blank' ); }