From 1e0e41ad80859dcf2c088963eebcadcc69611469 Mon Sep 17 00:00:00 2001 From: rubikscraft Date: Tue, 5 Apr 2022 20:37:25 +0200 Subject: [PATCH] small fixes --- backend/src/layers/success/success.interceptor.ts | 9 +++++---- frontend/src/app/routes/view/view.component.ts | 2 +- frontend/src/app/services/api/image.service.ts | 3 ++- shared/src/dto/api/api.dto.ts | 9 +++++++++ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/backend/src/layers/success/success.interceptor.ts b/backend/src/layers/success/success.interceptor.ts index 5299e3b..f1ecbb7 100644 --- a/backend/src/layers/success/success.interceptor.ts +++ b/backend/src/layers/success/success.interceptor.ts @@ -8,6 +8,7 @@ import { Optional } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; +import { ApiAnySuccessResponse } from 'picsur-shared/dist/dto/api/api.dto'; import { ZodDtoStatic } from 'picsur-shared/dist/util/create-zod-dto'; import { map, Observable } from 'rxjs'; @@ -31,7 +32,7 @@ export class SuccessInterceptor implements NestInterceptor { this.strict = options?.strict ?? true; } - intercept(context: ExecutionContext, next: CallHandler): Observable { + intercept(context: ExecutionContext, next: CallHandler): Observable { return next.handle().pipe( map((data) => { if (data instanceof Buffer) { @@ -47,7 +48,7 @@ export class SuccessInterceptor implements NestInterceptor { ); } - private validate(context: ExecutionContext, data: any): any { + private validate(context: ExecutionContext, data: unknown): unknown { const schemaStatic = this.reflector.get( 'returns', context.getHandler(), @@ -75,10 +76,10 @@ export class SuccessInterceptor implements NestInterceptor { return parseResult.data; } - private createResponse(context: ExecutionContext, data: any): any { + private createResponse(context: ExecutionContext, data: unknown): ApiAnySuccessResponse { const status = context.switchToHttp().getResponse().statusCode; const response = { - success: true, + success: true as true, // really typescript statusCode: status, timestamp: new Date().toISOString(), diff --git a/frontend/src/app/routes/view/view.component.ts b/frontend/src/app/routes/view/view.component.ts index 06ecb59..e4ec627 100644 --- a/frontend/src/app/routes/view/view.component.ts +++ b/frontend/src/app/routes/view/view.component.ts @@ -19,7 +19,7 @@ export class ViewComponent implements OnInit { ) {} public imageUrl: string = ''; - public imageLinks: ImageLinks = new ImageLinks(); + public imageLinks = new ImageLinks(); async ngOnInit() { const params = this.route.snapshot.paramMap; diff --git a/frontend/src/app/services/api/image.service.ts b/frontend/src/app/services/api/image.service.ts index 2295493..bfc5bc8 100644 --- a/frontend/src/app/services/api/image.service.ts +++ b/frontend/src/app/services/api/image.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@angular/core'; import { ImageMetaResponse } from 'picsur-shared/dist/dto/api/image.dto'; +import { ImageLinks } from 'picsur-shared/dist/dto/imagelinks.dto'; import { EImage } from 'picsur-shared/dist/entities/image.entity'; import { AsyncFailable } from 'picsur-shared/dist/types'; import { Open } from 'picsur-shared/dist/types/failable'; @@ -31,7 +32,7 @@ export class ImageService { return `${baseURL}/i/${image}`; } - public CreateImageLinks(imageURL: string) { + public CreateImageLinks(imageURL: string): ImageLinks { return { source: imageURL, markdown: `![image](${imageURL})`, diff --git a/shared/src/dto/api/api.dto.ts b/shared/src/dto/api/api.dto.ts index 24094e8..a8ee7bc 100644 --- a/shared/src/dto/api/api.dto.ts +++ b/shared/src/dto/api/api.dto.ts @@ -26,3 +26,12 @@ export const ApiResponseSchema = (data: T) => ApiErrorResponse.or(ApiSuccessResponse(data)); export type ApiErrorResponse = z.infer; + +const ApiAnySuccessResponseSchema = ApiSuccessResponse(z.object({})) + .omit({ data: true }) + .merge( + z.object({ + data: z.any(), + }), + ); +export type ApiAnySuccessResponse = z.infer;