codev / desktop /src /api /adapters.ts
chenbhao's picture
feat: desktop
1f21206
Raw
History Blame
1.58 kB
import { api } from './client'
import type { AdapterFileConfig } from '../types/adapter'
export type DingtalkRegistrationBegin = {
deviceCode: string
userCode?: string
verificationUri?: string
verificationUriComplete: string
expiresInSeconds: number
intervalSeconds: number
qrDataUrl?: string
}
export type DingtalkRegistrationPoll = {
status: 'WAITING' | 'SUCCESS' | 'FAIL' | 'EXPIRED' | 'UNKNOWN'
failReason?: string
config?: AdapterFileConfig
}
export const adaptersApi = {
getConfig() {
return api.get<AdapterFileConfig>('/api/adapters')
},
updateConfig(patch: Partial<AdapterFileConfig>) {
return api.put<AdapterFileConfig>('/api/adapters', patch)
},
startWechatLogin() {
return api.post<{ qrcodeUrl?: string; message: string; sessionKey: string }>('/api/adapters/wechat/login/start', {})
},
pollWechatLogin(sessionKey: string) {
return api.post<
| AdapterFileConfig
| { connected: false; status: string; message: string }
>('/api/adapters/wechat/login/poll', { sessionKey }, { timeout: 45_000 })
},
unbindWechat() {
return api.post<AdapterFileConfig>('/api/adapters/wechat/unbind', {})
},
unbindDingtalk() {
return api.post<AdapterFileConfig>('/api/adapters/dingtalk/unbind', {})
},
beginDingtalkRegistration() {
return api.post<DingtalkRegistrationBegin>('/api/adapters/dingtalk/registration/begin', {})
},
pollDingtalkRegistration(deviceCode: string) {
return api.post<DingtalkRegistrationPoll>('/api/adapters/dingtalk/registration/poll', { deviceCode })
},
}