
import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { cookieOptions } from 'src/common/constants/cookieOptions.constant';
import type { CookieOptions } from 'express-serve-static-core';
import { AuthService } from 'src/auth/auth.service';

export interface Response<T> {
  data: T;
}

@Injectable()
export class ClearCsrfInterceptor<T> implements NestInterceptor<T, Response<T>> {
  constructor(private authService: AuthService) {}

  intercept(
    context: ExecutionContext,
    next: CallHandler
  ): Observable<Response<T>> {
    // const req = context.switchToHttp().getRequest();
    // const cookieName = this.authService.getCookieName('x-csrf-token');
    // if (
    //   req.originalUrl !== '/csrf' &&
    //   req.method !== 'OPTIONS' &&
    //   req.signedCookies[cookieName] !== undefined
    // ) {
    //   const res = context.switchToHttp().getResponse();
    //   let options = <CookieOptions>cookieOptions(1000 * 60 * 60 * 24 * 1) // 1 day
    //   delete options.maxAge;
    //   res.clearCookie(cookieName, options);
    // }
    return next.handle();
  }
}
