import { PublicApi } from '~~/lib/api/public';
import { UserApi } from '~~/lib/api/user';
import { Requests } from '~~/lib/requests';
import { useAuthStore } from '~~/stores/auth';

function logger(r: Response) {
  console.log(`${r.status}   ${r.url}   ${r.statusText}`);
}

export function usePublicApi(): PublicApi {
  const requests = new Requests('', '', {});
  return new PublicApi(requests);
}

export function useUserApi(): UserApi {
  const authStore = useAuthStore();

  const requests = new Requests('', () => authStore.token, {});
  requests.addResponseInterceptor(logger);
  requests.addResponseInterceptor(r => {
    if (r.status === 401) {
      authStore.clearSession();
    }
  });

  return new UserApi(requests);
}