XuqmGroup-Web/tenant-platform/src/api/update.ts
XuqmGroup 491a1ce8d3 feat(sdk): 初始化 Android SDK 核心功能模块
- 添加 SDK 配置管理、网络请求客户端和令牌存储功能
- 实现即时通讯 IM 模块,包括消息收发、群组管理和会话功能
- 集成推送服务和应用更新功能模块
- 创建示例应用演示 SDK 使用方法
- 配置项目依赖管理和构建设置
2026-04-27 17:18:56 +08:00

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' },
})
},
}