- 实现环境配置管理,支持外部和本地主机模式切换 - 集成Demo API接口,包含登录、注册、文件上传等功能 - 构建附件处理仓库,支持图片、视频、音频和文件发送 - 开发认证仓库,管理用户会话和IM令牌刷新机制 - 添加语音录制功能,支持实时音频消息录制 - 创建依赖注入容器,统一管理应用组件实例 - 实现登录界面,提供用户认证交互功能 - 开发聊天界面,集成消息收发和媒体处理功能
113 行
3.0 KiB
TypeScript
113 行
3.0 KiB
TypeScript
import axios from 'axios'
|
|
|
|
const updateClient = axios.create({
|
|
baseURL: 'http://192.168.116.9:8084',
|
|
timeout: 30000,
|
|
})
|
|
|
|
if (import.meta.env.DEV) {
|
|
updateClient.interceptors.request.use((config) => {
|
|
console.debug('[tenant-platform][UPDATE] request', {
|
|
method: config.method?.toUpperCase(),
|
|
url: config.baseURL ? `${config.baseURL}${config.url ?? ''}` : config.url,
|
|
params: config.params,
|
|
})
|
|
return config
|
|
})
|
|
updateClient.interceptors.response.use((res) => {
|
|
console.debug('[tenant-platform][UPDATE] response', {
|
|
status: res.status,
|
|
url: res.config.url,
|
|
})
|
|
return res
|
|
})
|
|
}
|
|
|
|
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' },
|
|
})
|
|
},
|
|
}
|