refactor: 替换自定义 toast 为 uni.showToast 并添加微信更新管理器
移除自定义 toast 工具,统一使用 uni.showToast 实现提示功能 添加微信小程序更新管理器实现版本更新检测和应用
This commit is contained in:
@@ -1,77 +0,0 @@
|
||||
/**
|
||||
* toast 弹窗组件
|
||||
* 支持 success/error/warning/info 四种状态
|
||||
* 可配置 duration, position 等参数
|
||||
*/
|
||||
|
||||
type ToastType = 'success' | 'error' | 'warning' | 'info'
|
||||
|
||||
interface ToastOptions {
|
||||
type?: ToastType
|
||||
duration?: number
|
||||
position?: 'top' | 'middle' | 'bottom'
|
||||
icon?: 'success' | 'error' | 'none' | 'loading' | 'fail' | 'exception'
|
||||
message: string
|
||||
/**
|
||||
* 是否显示透明蒙层,防止触摸穿透
|
||||
* @default true
|
||||
*/
|
||||
mask?: boolean
|
||||
}
|
||||
/**
|
||||
* 显示 toast
|
||||
*/
|
||||
export function showToast(message: string): void
|
||||
export function showToast(options: ToastOptions): void
|
||||
export function showToast(options: ToastOptions | string): void {
|
||||
const defaultOptions: ToastOptions = {
|
||||
type: 'info',
|
||||
duration: 2000,
|
||||
position: 'middle',
|
||||
message: '',
|
||||
mask: true,
|
||||
}
|
||||
const mergedOptions
|
||||
= typeof options === 'string'
|
||||
? { ...defaultOptions, message: options }
|
||||
: { ...defaultOptions, ...options }
|
||||
// 映射position到uniapp支持的格式
|
||||
const positionMap: Record<ToastOptions['position'], 'top' | 'bottom' | 'center'> = {
|
||||
top: 'top',
|
||||
middle: 'center',
|
||||
bottom: 'bottom',
|
||||
}
|
||||
|
||||
// 映射图标类型
|
||||
const iconMap: Record<
|
||||
ToastType,
|
||||
'success' | 'error' | 'none' | 'loading' | 'fail' | 'exception'
|
||||
> = {
|
||||
success: 'success',
|
||||
error: 'error',
|
||||
warning: 'fail',
|
||||
info: 'none',
|
||||
}
|
||||
|
||||
// 调用uni.showToast显示提示
|
||||
uni.showToast({
|
||||
title: mergedOptions.message,
|
||||
duration: mergedOptions.duration,
|
||||
position: positionMap[mergedOptions.position],
|
||||
icon: mergedOptions.icon || iconMap[mergedOptions.type],
|
||||
mask: mergedOptions.mask,
|
||||
})
|
||||
}
|
||||
|
||||
type _ToastOptions = Omit<ToastOptions, 'type' | 'message'>
|
||||
|
||||
export const toast = {
|
||||
success: (message: string, options?: _ToastOptions) =>
|
||||
showToast({ ...options, type: 'success', message }),
|
||||
error: (message: string, options?: _ToastOptions) =>
|
||||
showToast({ ...options, type: 'error', message }),
|
||||
warning: (message: string, options?: _ToastOptions) =>
|
||||
showToast({ ...options, type: 'warning', message }),
|
||||
info: (message: string, options?: _ToastOptions) =>
|
||||
showToast({ ...options, type: 'info', message }),
|
||||
}
|
||||
29
src/utils/updateManager.wx.ts
Normal file
29
src/utils/updateManager.wx.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
export default () => {
|
||||
if (!wx.canIUse('getUpdateManager')) {
|
||||
return
|
||||
}
|
||||
|
||||
const updateManager = wx.getUpdateManager()
|
||||
|
||||
updateManager.onCheckForUpdate((res) => {
|
||||
// 请求完新版本信息的回调
|
||||
console.log('版本信息', res)
|
||||
})
|
||||
|
||||
updateManager.onUpdateReady(() => {
|
||||
wx.showModal({
|
||||
title: '更新提示',
|
||||
content: '新版本已经准备好,是否重启应用?',
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
|
||||
updateManager.applyUpdate()
|
||||
}
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
updateManager.onUpdateFailed(() => {
|
||||
// 新版本下载失败
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user