import type { NextRequest } from 'next/server';
import { isLoggedIn, getOrigin, authorize, logout } from 'lib/shopify/auth';

// This function can be marked `async` if using `await` inside
export async function middleware(request: NextRequest) {
  /****
  Authorize Middleware to get access tokens
  *****/
  if (request.nextUrl.pathname.startsWith('/authorize')) {
    console.log('Running Initial Authorization Middleware');
    const origin = getOrigin(request);
    console.log('origin', origin);
    return await authorize(request, origin);
  }
  /****
  END OF Authorize Middleware to get access tokens
  *****/

  /****
  LOGOUT -
  *****/
  if (request.nextUrl.pathname.startsWith('/logout')) {
    console.log('Running Logout middleware');
    const origin = getOrigin(request);
    return await logout(request, origin);
  }
  /****
  END OF LOGOUT
  *****/
  /****
  Account
  *****/

  if (request.nextUrl.pathname.startsWith('/account')) {
    console.log('Running Account middleware');
    //const newHeaders = new Headers(request.headers)
    const origin = getOrigin(request);
    //console.log ("origin", origin)
    return await isLoggedIn(request, origin);
  }

  /****
  END OF Account
  *****/
}

export const config = {
  matcher: ['/authorize', '/logout', '/account/:path*']
};