Compare commits

..

No commits in common. "b66f290d846889e1f37667afe5f0194adae233b6" and "68d4409ec6e7ca0d828a34535201ffe8f468ff01" have entirely different histories.

67 changed files with 56 additions and 56 deletions

View File

@ -3,7 +3,7 @@ import { provideRouter } from '@angular/router';
import { routes } from './app.routes'; import { routes } from './app.routes';
import { provideHttpClient, withInterceptors } from '@angular/common/http'; import { provideHttpClient, withInterceptors } from '@angular/common/http';
import { authInterceptor } from './shared/interceptors/auth.interceptor'; import { authInterceptor } from './interceptor/auth.interceptor';
import { provideTanStackQuery, QueryClient } from '@tanstack/angular-query-experimental'; import { provideTanStackQuery, QueryClient } from '@tanstack/angular-query-experimental';
import { withDevtools } from '@tanstack/angular-query-experimental/devtools'; import { withDevtools } from '@tanstack/angular-query-experimental/devtools';

View File

@ -1,8 +1,8 @@
import { Routes } from '@angular/router'; import { Routes } from '@angular/router';
import { RecipePage } from './pages/recipe-page/recipe-page'; import { RecipePage } from './recipe-page/recipe-page';
import { RecipesPage } from './pages/recipes-page/recipes-page'; import { RecipesPage } from './recipes-page/recipes-page';
import { RecipesSearchPage } from './pages/recipes-search-page/recipes-search-page'; import { RecipesSearchPage } from './recipes-search-page/recipes-search-page';
import { RecipeUploadPage } from './pages/recipe-upload-page/recipe-upload-page'; import { RecipeUpload } from './recipe-upload/recipe-upload';
export const routes: Routes = [ export const routes: Routes = [
{ {
@ -15,7 +15,7 @@ export const routes: Routes = [
}, },
{ {
path: 'recipes-upload', path: 'recipes-upload',
component: RecipeUploadPage, component: RecipeUpload,
}, },
{ {
path: 'recipes/:username/:slug', path: 'recipes/:username/:slug',

View File

@ -1,9 +1,9 @@
import { Component, signal } from '@angular/core'; import { Component, signal } from '@angular/core';
import { RouterOutlet } from '@angular/router'; import { RouterOutlet } from '@angular/router';
import { Header } from './shared/components/header/header'; import { Header } from './header/header';
import { Nav } from './shared/components/nav/nav'; import { Nav } from './nav/nav';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { Footer } from './shared/components/footer/footer'; import { Footer } from './footer/footer';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',

View File

@ -1,5 +1,5 @@
import { Component, computed, inject } from '@angular/core'; import { Component, computed, inject } from '@angular/core';
import { AuthService } from '../../services/AuthService'; import { AuthService } from '../service/auth.service';
@Component({ @Component({
selector: 'app-header', selector: 'app-header',

View File

@ -1,6 +1,6 @@
import { HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http'; import { HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';
import { inject } from '@angular/core'; import { inject } from '@angular/core';
import { AuthService } from '../services/AuthService'; import { AuthService } from '../service/auth.service';
import { catchError, from, switchMap, throwError } from 'rxjs'; import { catchError, from, switchMap, throwError } from 'rxjs';
import { Router } from '@angular/router'; import { Router } from '@angular/router';

View File

@ -1,5 +1,5 @@
import { inject, Pipe, PipeTransform } from '@angular/core'; import { inject, Pipe, PipeTransform } from '@angular/core';
import { DateService } from '../services/DateService'; import { DateService } from '../service/date.service';
@Pipe({ @Pipe({
name: 'dateTimeFormat', name: 'dateTimeFormat',

View File

@ -1,6 +1,6 @@
import { Component, input } from '@angular/core'; import { Component, input } from '@angular/core';
import { RecipeCard } from './recipe-card/recipe-card'; import { RecipeCard } from './recipe-card/recipe-card';
import { Recipe } from '../../models/Recipe.model'; import { Recipe } from '../model/Recipe.model';
@Component({ @Component({
selector: 'app-recipe-card-grid', selector: 'app-recipe-card-grid',

View File

@ -1,8 +1,8 @@
import { Component, computed, inject, input } from '@angular/core'; import { Component, computed, inject, input } from '@angular/core';
import { Recipe } from '../../../models/Recipe.model'; import { Recipe } from '../../model/Recipe.model';
import { RouterLink } from '@angular/router'; import { RouterLink } from '@angular/router';
import { injectQuery } from '@tanstack/angular-query-experimental'; import { injectQuery } from '@tanstack/angular-query-experimental';
import { ImageService } from '../../../services/ImageService'; import { ImageService } from '../../service/image.service';
import { faGlobe, faLock, faStar, faUser } from '@fortawesome/free-solid-svg-icons'; import { faGlobe, faLock, faStar, faUser } from '@fortawesome/free-solid-svg-icons';
import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { FaIconComponent } from '@fortawesome/angular-fontawesome';

View File

@ -1,6 +1,6 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RecipeCommentsList } from './recipe-comments-list'; import { RecipeCommentsList } from './recipe-comments-list.component';
describe('CommentsList', () => { describe('CommentsList', () => {
let component: RecipeCommentsList; let component: RecipeCommentsList;

View File

@ -1,16 +1,16 @@
import { Component, computed, inject, input } from '@angular/core'; import { Component, computed, inject, input } from '@angular/core';
import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
import { RecipeService } from '../../services/RecipeService'; import { RecipeService } from '../service/recipe.service';
import { injectInfiniteQuery, injectMutation } from '@tanstack/angular-query-experimental'; import { injectInfiniteQuery, injectMutation } from '@tanstack/angular-query-experimental';
import { AuthService } from '../../services/AuthService'; import { AuthService } from '../service/auth.service';
import { RecipeComments } from '../../models/RecipeComment.model'; import { RecipeComments } from '../model/RecipeComment.model';
import { DateTimeFormatPipe } from '../../pipes/dateTimeFormat.pipe'; import { DateTimeFormatPipe } from '../pipe/dateTimeFormat.pipe';
@Component({ @Component({
selector: 'app-recipe-comments-list', selector: 'app-comments-list',
imports: [ReactiveFormsModule, DateTimeFormatPipe], imports: [ReactiveFormsModule, DateTimeFormatPipe],
templateUrl: './recipe-comments-list.html', templateUrl: './recipe-comments-list.component.html',
styleUrl: './recipe-comments-list.css', styleUrl: './recipe-comments-list.component.css',
}) })
export class RecipeCommentsList { export class RecipeCommentsList {
public readonly recipeUsername = input.required<string>(); public readonly recipeUsername = input.required<string>();

View File

@ -38,5 +38,5 @@
/> />
} }
<div [innerHTML]="recipe.text"></div> <div [innerHTML]="recipe.text"></div>
<app-recipe-comments-list [recipeUsername]="recipe.owner.username" [recipeSlug]="recipe.slug" /> <app-comments-list [recipeUsername]="recipe.owner.username" [recipeSlug]="recipe.slug" />
</article> </article>

View File

@ -1,12 +1,12 @@
import { Component, computed, inject, input } from '@angular/core'; import { Component, computed, inject, input } from '@angular/core';
import { RecipeView } from '../../../shared/models/Recipe.model'; import { RecipeView } from '../../model/Recipe.model';
import { injectMutation, injectQuery } from '@tanstack/angular-query-experimental'; import { injectMutation, injectQuery } from '@tanstack/angular-query-experimental';
import { ImageService } from '../../../shared/services/ImageService'; import { ImageService } from '../../service/image.service';
import { faGlobe, faLock, faStar, faUser } from '@fortawesome/free-solid-svg-icons'; import { faGlobe, faLock, faStar, faUser } from '@fortawesome/free-solid-svg-icons';
import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { FaIconComponent } from '@fortawesome/angular-fontawesome';
import { RecipeService } from '../../../shared/services/RecipeService'; import { RecipeService } from '../../service/recipe.service';
import { AuthService } from '../../../shared/services/AuthService'; import { AuthService } from '../../service/auth.service';
import { RecipeCommentsList } from '../../../shared/components/recipe-comments-list/recipe-comments-list'; import { RecipeCommentsList } from '../../recipe-comments-list/recipe-comments-list.component';
@Component({ @Component({
selector: 'app-recipe-page-content', selector: 'app-recipe-page-content',

View File

@ -1,6 +1,6 @@
import { Component, inject } from '@angular/core'; import { Component, inject } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { RecipeService } from '../../shared/services/RecipeService'; import { RecipeService } from '../service/recipe.service';
import { RecipePageContent } from './recipe-page-content/recipe-page-content'; import { RecipePageContent } from './recipe-page-content/recipe-page-content';
import { injectQuery } from '@tanstack/angular-query-experimental'; import { injectQuery } from '@tanstack/angular-query-experimental';

View File

@ -1,17 +1,17 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RecipeUploadPage } from './recipe-upload-page'; import { RecipeUpload } from './recipe-upload';
describe('RecipeUpload', () => { describe('RecipeUpload', () => {
let component: RecipeUploadPage; let component: RecipeUpload;
let fixture: ComponentFixture<RecipeUploadPage>; let fixture: ComponentFixture<RecipeUpload>;
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [RecipeUploadPage], imports: [RecipeUpload],
}).compileComponents(); }).compileComponents();
fixture = TestBed.createComponent(RecipeUploadPage); fixture = TestBed.createComponent(RecipeUpload);
component = fixture.componentInstance; component = fixture.componentInstance;
await fixture.whenStable(); await fixture.whenStable();
}); });

View File

@ -7,15 +7,15 @@ import {
Validators, Validators,
} from '@angular/forms'; } from '@angular/forms';
import { SseClient } from 'ngx-sse-client'; import { SseClient } from 'ngx-sse-client';
import { Spinner } from '../../shared/components/spinner/spinner'; import { Spinner } from '../spinner/spinner';
@Component({ @Component({
selector: 'app-recipe-upload-page', selector: 'app-recipe-upload',
imports: [ReactiveFormsModule, Spinner], imports: [ReactiveFormsModule, Spinner],
templateUrl: './recipe-upload-page.html', templateUrl: './recipe-upload.html',
styleUrl: './recipe-upload-page.css', styleUrl: './recipe-upload.css',
}) })
export class RecipeUploadPage { export class RecipeUpload {
private readonly sseClient = inject(SseClient); private readonly sseClient = inject(SseClient);
private readonly formBuilder = inject(FormBuilder); private readonly formBuilder = inject(FormBuilder);

View File

@ -1,7 +1,7 @@
import { Component, inject } from '@angular/core'; import { Component, inject } from '@angular/core';
import { RecipeService } from '../../shared/services/RecipeService'; import { RecipeService } from '../service/recipe.service';
import { injectQuery } from '@tanstack/angular-query-experimental'; import { injectQuery } from '@tanstack/angular-query-experimental';
import { RecipeCardGrid } from '../../shared/components/recipe-card-grid/recipe-card-grid'; import { RecipeCardGrid } from '../recipe-card-grid/recipe-card-grid';
@Component({ @Component({
selector: 'app-recipes-page', selector: 'app-recipes-page',

View File

@ -1,8 +1,8 @@
import { Component, inject, signal } from '@angular/core'; import { Component, inject, signal } from '@angular/core';
import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
import { injectQuery } from '@tanstack/angular-query-experimental'; import { injectQuery } from '@tanstack/angular-query-experimental';
import { RecipeService } from '../../shared/services/RecipeService'; import { RecipeService } from '../service/recipe.service';
import { RecipeCardGrid } from '../../shared/components/recipe-card-grid/recipe-card-grid'; import { RecipeCardGrid } from '../recipe-card-grid/recipe-card-grid';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
@Component({ @Component({

View File

@ -1,8 +1,8 @@
import { TestBed } from '@angular/core/testing'; import { TestBed } from '@angular/core/testing';
import { AuthService } from './AuthService'; import { AuthService } from './auth.service';
describe('AuthService', () => { describe('LoginService', () => {
let service: AuthService; let service: AuthService;
beforeEach(() => { beforeEach(() => {

View File

@ -1,6 +1,6 @@
import { inject, Injectable, Signal, signal } from '@angular/core'; import { inject, Injectable, Signal, signal } from '@angular/core';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { LoginView } from '../models/LoginView.model'; import { LoginView } from '../model/LoginView.model';
import { firstValueFrom, Observable, tap } from 'rxjs'; import { firstValueFrom, Observable, tap } from 'rxjs';
import { QueryClient } from '@tanstack/angular-query-experimental'; import { QueryClient } from '@tanstack/angular-query-experimental';
import { Router } from '@angular/router'; import { Router } from '@angular/router';

View File

@ -1,6 +1,6 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Endpoints } from '../../endpoints'; import { Endpoints } from '../endpoints';
import { QueryParams } from '../models/Query.model'; import { QueryParams } from '../model/Query.model';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',

View File

@ -1,8 +1,8 @@
import { TestBed } from '@angular/core/testing'; import { TestBed } from '@angular/core/testing';
import { RecipeService } from './RecipeService'; import { RecipeService } from './recipe.service';
describe('RecipeService', () => { describe('Recipe', () => {
let service: RecipeService; let service: RecipeService;
beforeEach(() => { beforeEach(() => {

View File

@ -1,12 +1,12 @@
import { inject, Injectable } from '@angular/core'; import { inject, Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { firstValueFrom, lastValueFrom, map } from 'rxjs'; import { firstValueFrom, lastValueFrom, map } from 'rxjs';
import { Recipe, RecipeInfoViews, RecipeView } from '../models/Recipe.model'; import { Recipe, RecipeInfoViews, RecipeView } from '../model/Recipe.model';
import { AuthService } from './AuthService'; import { AuthService } from './auth.service';
import { QueryClient } from '@tanstack/angular-query-experimental'; import { QueryClient } from '@tanstack/angular-query-experimental';
import { RecipeComment, RecipeComments } from '../models/RecipeComment.model'; import { RecipeComment, RecipeComments } from '../model/RecipeComment.model';
import { QueryParams } from '../models/Query.model'; import { QueryParams } from '../model/Query.model';
import { EndpointService } from './EndpointService'; import { EndpointService } from './endpoint.service';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',