import { Axios, AxiosResponse } from "axios" import { zhCN } from "handsontable/i18n" import log from "loglevel" import { RefStore } from "../../state/state" import { Session } from "../session" import { dummyChar, TricksterAccount, TricksterInventory, TricksterItem, TricksterWallet } from "../trickster" import { LTOApi } from "./api" export class LTOApiv0 implements LTOApi { s: Session constructor(s:Session) { this.s = s } GetInventory = async (char_path: string):Promise =>{ if(char_path.startsWith(":")) { char_path = char_path.replace(":","") } return this.s.authed_request("GET", `item-manager/items/account/${char_path}`,undefined).then((ans:AxiosResponse)=>{ const o = ans.data log.debug("GetInventory", o) let name = "bank" let id = 0 let galders = 0 if(char_path.includes("/")) { let [char, val] = Object.entries(o.characters)[0] as [string,any] name = val.name id = Number(char) galders = val.galders as number }else { id = o.id name = o.name galders = o.galders } let out = { name, id, path: char_path, galders, items:(Object.entries(o.items) as any).map(([k, v]: [string, TricksterItem]):TricksterItem=>{ v.unique_id = Number(k) return v }), } as TricksterInventory return out }) } GetAccounts = async ():Promise => { return this.s.authed_request("GET", "characters/list",undefined).then((ans:AxiosResponse)=>{ log.debug("GetAccounts", ans.data) return ans.data.map((x:any)=>{ return { name: x.name, characters: [{id: x.id, path:x.name, name: x.name+'/bank', class:-8, base_job: -8, current_job: -8},...Object.values(x.characters).map((z:any)=>{ return { id: z.id, name: z.name, path: x.name+"/"+z.name, class: z.class, base_job: z.base_job, current_job: z.current_job, } })], } as TricksterAccount }) }) } GetLoggedin = async ():Promise => { return this.s.authed_request("POST", "accounts/list",undefined).then((ans:AxiosResponse)=>{ if(ans.status == 401) { return false } if(ans.status == 200) { return true } return false }) } }