import {
  Catch,
  HttpException,
  ExceptionFilter,
  ArgumentsHost,
} from '@nestjs/common';
import { Response } from 'express';

@Catch(HttpException)
export class CustomExceptionFilter implements ExceptionFilter {
  catch(exception: HttpException, host: ArgumentsHost) {
    const ctx = host.switchToHttp();
    const res = ctx.getResponse<Response>();
    const status = exception.getStatus();
    let { message }: any = exception.getResponse();
    if (status === 413) {
      return res.status(status).json({
        success: false,
        statusCode: status,
        message: `File size can't exceed 20MB!`,
      });
    }
    message = typeof message === 'object' ? message[0] : message;
    return res.status(status).json({
      success: false,
      statusCode: status,
      message:
        status === 401
          ? 'Authetication failed.'
          : message == 'jwt expired'
            ? 'Session expired.'
            : message,
    });
  }
}
