0.1.3Updated 6 months ago
import { DracoUser } from "@infinity-beyond/modules/security/draco/draco_user.ts";
import { MemCache } from "@infinity-beyond/utils/memcache.ts";
import { DracoRequest, HOST } from "@infinity-beyond/modules/security/draco/draco_request.ts";

const user_cache = new MemCache<DracoUser>();

export const GetDracoUser = async (cookie_uuid: string, force: boolean = false): Promise<DracoUser | null> => {
  if(!force) {
    const cached_user = user_cache.get(cookie_uuid);
    if(cached_user) return cached_user;
  }

  const { user: user_data } = (await DracoRequest<{ user: DracoUser }>('refresh-token', { cookie_uuid })) ?? {};
  if(!user_data) return null;

  if(user_data?.image_path?.indexOf('/') == 0) {
    user_data.image_path = HOST.replace(/\/+$/, '') + user_data.image_path;
  }

  const user = new DracoUser(user_data);

  user_cache.set(cookie_uuid, user);

  return user;
}