@ithinkdt/cloud
Version:
iThinkDT Cloud
111 lines (97 loc) • 3.72 kB
JavaScript
import { HttpError } from '@ithinkdt/common'
import { $fetch } from '@ithinkdt/core'
import { CTX, setSourceApp } from './ctx'
import { getAuthApi, getDictApi, loadFrontConfig, _token } from './api'
import { file } from './file'
import { icon } from './icon'
export function cloud(appCode, api, context, sourceApp = appCode) {
Object.assign(CTX, context)
setSourceApp(sourceApp)
CTX._BASE = api
for (const k of Object.keys(CTX)) {
if (!CTX[k].endsWith('/')) {
CTX[k] = CTX[k] + '/'
}
if (CTX[k].startsWith('/')) {
CTX[k] = CTX[k].slice(1)
}
}
if (!/^http(s?):\/\//.test(CTX._BASE)) {
CTX._BASE = '/' + CTX._BASE
}
return {
loadConfig: (apps) => loadFrontConfig(appCode, CTX, apps),
auth: {
...getAuthApi(appCode, CTX.SYS, CTX._BASE),
loadMessages({ status, pageSize, currentPage }) {
return $fetch
.post(`${CTX.MC}cli/mc/msgInternal/page`, {
status: status === 'read' ? 1 : status === 'unread' ? 0 : undefined,
pageSize,
pageNumber: currentPage,
})
.then((page) => {
for (const msg of page.records) {
msg.time = msg.createDate
msg.status = msg.status === 1 ? 'read' : 'unread'
msg.action = msg.link
}
return page
})
},
readMessages(ids) {
return $fetch.post(`${CTX.MC}cli/mc/msgInternal/read`, ids)
},
deleteMessages(ids) {
return $fetch.post(`${CTX.MC}cli/mc/msgInternal/deletes`, ids)
},
},
dict: getDictApi(CTX.DICT),
lang: {
headerField: 'Lang',
localeFormatter: (locale) => locale.replace('-', '_'),
},
page: {
...file(CTX, () => _token),
transformListParams(query, sort, pagin) {
return {
...query,
sortName: sort?.name,
sortOrder: sort?.order,
...(pagin
? {
pageNumber: pagin.currentPage,
pageSize: pagin.pageSize,
}
: {}),
}
},
getUsers(usernames) {
return $fetch
.get(`${CTX.UC}cli/user/name`, { usernames: usernames.join(',') })
.then((data) => Object.entries(data).map(([username, nickname]) => ({ username, nickname })))
},
getDepts(depts) {
return $fetch
.get(`${CTX.UC}cli/org/name`, { codes: depts.join(',') })
.then((data) => Object.entries(data).map(([code, name]) => ({ code, name })))
},
},
icon: icon(CTX),
msgi: (req, next) => {
return next(req).catch((error) => {
if (error instanceof HttpError && error.code === 501) {
const m = error?.resp?.data?.[0]
error.message = `${error.message}:${m?.fieldLabel || ''} ${m?.msg}`
}
throw error
})
},
}
}
export function getServerDate() {
return $fetch.get(`${CTX.BPM}cli/bpm/task/timestamp`, {}, { alert: false }).catch(() => Date.now())
}
export function refreshAuthrization() {
return $fetch.get(`${CTX.SYS}cli/login/refresh`)
}