import { checkTwitter } from "services/oauth.svr"; import { ITask } from "./base/ITask"; import { ActivityUser, TaskStatusEnum } from "models/ActivityUser"; import { ZError } from "common/ZError"; import { TaskCfg } from "models/ActivityInfo"; export default class TwitterConnect extends ITask { static desc = 'twitter connect' static show: boolean = true async execute(data: any) { let { address } = this.params.user let res = await checkTwitter(address) if (res.status !== 200) { throw new ZError(11, 'twitter check failed') } if (res.data.errcode) { throw new ZError(res.data.errcode, res.data.errmsg) } const { task } = data if (res.data.data.userid && task.status === TaskStatusEnum.RUNNING) { task.status = TaskStatusEnum.SUCCESS task.timeFinish = Date.now() task.data = res.data.data task.twitterId = res.data.data.userid try { await this.params.user.save() } catch(err) { throw new ZError(100, 'twitter already binded') } let cfg = this.params.activity.tasks.find((t: TaskCfg) => t.id === this.constructor.name) if (cfg.autoclaim) { try { await this.claimReward(task); } catch(err) { console.log(err) } } } return true } }