import { Scheduler } from 'press-ui/common/scheduler/scheduler';

import type { TimInstanceType } from '../types';


let scheduler: InstanceType<typeof Scheduler>;


async function innerLogin({
  tim,
  userId,
  userSig,
}: {
  tim: TimInstanceType;
  userId: string;
  userSig: string;
}) {
  const resp = await tim.login({ userID: userId, userSig }).catch((e) => {
    console.warn(e);
    return Promise.reject(e);
  });
  tim.updateOnlineStatus?.(true);
  console.info('[TIM] login success: ', resp.data);

  return {
    userSig,
    userId,
  };
}

export async function login({
  userId,
  userSig,
  tim,
}: {
  tim: TimInstanceType;
  userId: string;
  userSig: string;
}) {
  if (!scheduler) {
    scheduler = new Scheduler(1);
  }
  // const url = 'LOGIN';

  tim.updateUserId?.(userId);
  tim.updateUserSig?.(userSig);

  // const reqData = { userId, userSig };

  return await scheduler.add(innerLogin.bind(null, {
    userId,
    userSig,
    tim,
  }));

  // return await filterSameRequest({
  //   url,
  //   reqData,
  //   handle: innerLogin.bind(null, {
  //     userId,
  //     userSig,
  //     tim,
  //   }),
  // });
}
