79 lines
2.4 KiB
TypeScript
79 lines
2.4 KiB
TypeScript
|
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<TricksterInventory> =>{
|
||
|
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<TricksterAccount[]> => {
|
||
|
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<boolean> => {
|
||
|
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
|
||
|
})
|
||
|
}
|
||
|
}
|