From fabb8bd517184f7f41e7e103f2e358891f2f08ae Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Fri, 20 Feb 2026 09:01:41 -0600 Subject: [PATCH] MME-34 Remove tanstack from recipe page. --- .../recipe-edit-page/recipe-edit-page.ts | 2 +- src/app/pages/recipe-page/recipe-page.html | 12 +++---- src/app/pages/recipe-page/recipe-page.ts | 31 ++++++++++++++----- src/app/shared/services/RecipeService.ts | 8 +---- 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/app/pages/recipe-edit-page/recipe-edit-page.ts b/src/app/pages/recipe-edit-page/recipe-edit-page.ts index de93a7b..6dc7dfb 100644 --- a/src/app/pages/recipe-edit-page/recipe-edit-page.ts +++ b/src/app/pages/recipe-edit-page/recipe-edit-page.ts @@ -31,7 +31,7 @@ export class RecipeEditPage implements OnInit { const username = paramMap.get('username')!; const slug = paramMap.get('slug')!; this.loadingRecipe.set(true); - this.recipeService.getRecipeView2(username, slug, true).subscribe({ + this.recipeService.getRecipeView(username, slug, true).subscribe({ next: (recipeView) => { this.loadingRecipe.set(false); this.recipeView.set(recipeView); diff --git a/src/app/pages/recipe-page/recipe-page.html b/src/app/pages/recipe-page/recipe-page.html index 6d2f806..c647f72 100644 --- a/src/app/pages/recipe-page/recipe-page.html +++ b/src/app/pages/recipe-page/recipe-page.html @@ -1,9 +1,7 @@ -@if (recipeView.isLoading()) { -

Loading...

-} @else if (recipeView.isSuccess()) { - -} @else if (recipeView.error(); as error) { -

{{ error.message }}

-} @else { +@if (loadingRecipe()) { + +} @else if (loadRecipeError()) {

There was an error loading the recipe.

+} @else if (recipe(); as recipe) { + } diff --git a/src/app/pages/recipe-page/recipe-page.ts b/src/app/pages/recipe-page/recipe-page.ts index bad2305..42572a1 100644 --- a/src/app/pages/recipe-page/recipe-page.ts +++ b/src/app/pages/recipe-page/recipe-page.ts @@ -1,23 +1,38 @@ -import { Component, inject } from '@angular/core'; +import { Component, inject, OnInit, signal } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { RecipeService } from '../../shared/services/RecipeService'; import { RecipePageContent } from './recipe-page-content/recipe-page-content'; -import { injectQuery } from '@tanstack/angular-query-experimental'; +import { FullRecipeViewWrapper } from '../../shared/models/Recipe.model'; +import { Spinner } from '../../shared/components/spinner/spinner'; @Component({ selector: 'app-recipe-page', - imports: [RecipePageContent], + imports: [RecipePageContent, Spinner], templateUrl: './recipe-page.html', styleUrl: './recipe-page.css', }) -export class RecipePage { +export class RecipePage implements OnInit { private recipeService = inject(RecipeService); private route = inject(ActivatedRoute); private username = this.route.snapshot.paramMap.get('username') as string; private slug = this.route.snapshot.paramMap.get('slug') as string; - protected recipeView = injectQuery(() => ({ - queryKey: ['recipe', this.username, this.slug], - queryFn: () => this.recipeService.getRecipeView(this.username, this.slug), - })); + protected readonly loadingRecipe = signal(false); + protected readonly loadRecipeError = signal(null); + protected readonly recipe = signal(null); + + public ngOnInit(): void { + this.loadingRecipe.set(true); + this.recipeService.getRecipeView(this.username, this.slug).subscribe({ + next: (recipe) => { + this.loadingRecipe.set(false); + this.recipe.set(recipe); + }, + error: (e) => { + this.loadingRecipe.set(false); + this.loadRecipeError.set(e); + console.error(e); + }, + }); + } } diff --git a/src/app/shared/services/RecipeService.ts b/src/app/shared/services/RecipeService.ts index 21af289..2464512 100644 --- a/src/app/shared/services/RecipeService.ts +++ b/src/app/shared/services/RecipeService.ts @@ -76,13 +76,7 @@ export class RecipeService { .pipe(map((res) => res.count)); } - public getRecipeView(username: string, slug: string): Promise { - return firstValueFrom( - this.http.get(this.endpointService.getUrl('recipes', [username, slug])), - ); - } - - public getRecipeView2( + public getRecipeView( username: string, slug: string, includeRawText: boolean = false,