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,