XuqmGroup-Web/tenant-platform/src/api/update.ts

95 行
2.5 KiB
TypeScript

import axios from 'axios'
const updateClient = axios.create({
baseURL: 'https://dev.xuqinmin.com',
timeout: 30000,
})
updateClient.interceptors.request.use((config) => {
const token = localStorage.getItem('token')
if (token) config.headers.Authorization = `Bearer ${token}`
return config
})
export interface AppVersion {
id: string
appId: string
platform: 'ANDROID' | 'IOS'
versionName: string
versionCode: number
downloadUrl?: string
changeLog?: string
forceUpdate: boolean
publishStatus: 'DRAFT' | 'PUBLISHED' | 'DEPRECATED'
grayEnabled: boolean
grayPercent: number
appStoreUrl?: string
marketUrl?: string
createdAt: string
}
export interface RnBundle {
id: string
appId: string
moduleId: string
platform: 'ANDROID' | 'IOS'
version: string
md5: string
minCommonVersion?: string
note?: string
publishStatus: 'DRAFT' | 'PUBLISHED' | 'DEPRECATED'
grayEnabled: boolean
grayPercent: number
createdAt: string
}
export const updateAdminApi = {
listAppVersions(appId: string, platform: 'ANDROID' | 'IOS') {
return updateClient.get<{ data: AppVersion[] }>('/api/v1/updates/app/list', {
params: { appId, platform },
})
},
publishAppVersion(id: string) {
return updateClient.post(`/api/v1/updates/app/${id}/publish`)
},
unpublishAppVersion(id: string) {
return updateClient.post(`/api/v1/updates/app/${id}/unpublish`)
},
grayAppVersion(id: string, enabled: boolean, percent: number) {
return updateClient.post(`/api/v1/updates/app/${id}/gray`, { enabled, percent })
},
uploadAppVersion(formData: FormData) {
return updateClient.post<{ data: AppVersion }>('/api/v1/updates/app/upload', formData, {
headers: { 'Content-Type': 'multipart/form-data' },
})
},
listRnBundles(appId: string, moduleId?: string, platform?: string) {
return updateClient.get<{ data: RnBundle[] }>('/api/v1/rn/list', {
params: { appId, ...(moduleId && { moduleId }), ...(platform && { platform }) },
})
},
publishRnBundle(id: string) {
return updateClient.post(`/api/v1/rn/${id}/publish`)
},
unpublishRnBundle(id: string) {
return updateClient.post(`/api/v1/rn/${id}/unpublish`)
},
grayRnBundle(id: string, enabled: boolean, percent: number) {
return updateClient.post(`/api/v1/rn/${id}/gray`, { enabled, percent })
},
uploadRnBundle(formData: FormData) {
return updateClient.post<{ data: RnBundle }>('/api/v1/rn/upload', formData, {
headers: { 'Content-Type': 'multipart/form-data' },
})
},
}