upload project
This commit is contained in:
commit
06961cae04
422 changed files with 110626 additions and 0 deletions
|
|
@ -0,0 +1,558 @@
|
|||
// 🔔 通知设置页面逻辑
|
||||
const notificationManager = require('../../../utils/notification-manager.js');
|
||||
|
||||
Page({
|
||||
data: {
|
||||
// 系统信息
|
||||
statusBarHeight: 44,
|
||||
navBarHeight: 88,
|
||||
|
||||
// 通知设置
|
||||
notificationSettings: {
|
||||
enabled: true,
|
||||
message: {
|
||||
enabled: true,
|
||||
showPreview: true,
|
||||
sound: true,
|
||||
vibrate: true,
|
||||
groupByChat: true
|
||||
},
|
||||
group: {
|
||||
enabled: true,
|
||||
mentionOnly: false,
|
||||
sound: true,
|
||||
vibrate: true
|
||||
},
|
||||
friend: {
|
||||
enabled: true,
|
||||
sound: true
|
||||
},
|
||||
system: {
|
||||
enabled: true
|
||||
}
|
||||
},
|
||||
|
||||
// 免打扰设置
|
||||
doNotDisturb: {
|
||||
enabled: false,
|
||||
startTime: '22:00',
|
||||
endTime: '08:00',
|
||||
allowUrgent: true,
|
||||
allowMentions: true
|
||||
},
|
||||
|
||||
// 未读计数
|
||||
unreadCount: 0,
|
||||
|
||||
// 时间选择器
|
||||
showTimePicker: false,
|
||||
selectedTime: '22:00',
|
||||
timePickerType: 'start', // start, end
|
||||
|
||||
// 加载状态
|
||||
loading: false
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
|
||||
// 获取系统信息
|
||||
this.getSystemInfo();
|
||||
|
||||
// 加载通知设置
|
||||
this.loadNotificationSettings();
|
||||
|
||||
// 加载未读计数
|
||||
this.loadUnreadCount();
|
||||
},
|
||||
|
||||
onShow() {
|
||||
|
||||
// 刷新未读计数
|
||||
this.loadUnreadCount();
|
||||
},
|
||||
|
||||
// 获取系统信息
|
||||
getSystemInfo() {
|
||||
try {
|
||||
const windowInfo = wx.getWindowInfo();
|
||||
this.setData({
|
||||
statusBarHeight: windowInfo.statusBarHeight || 44,
|
||||
navBarHeight: 88
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('获取系统信息失败:', error);
|
||||
this.setData({
|
||||
statusBarHeight: 44,
|
||||
navBarHeight: 88
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// 加载通知设置
|
||||
loadNotificationSettings() {
|
||||
try {
|
||||
// 从通知管理器获取设置
|
||||
const settings = notificationManager.getStatus();
|
||||
|
||||
if (settings.notificationSettings) {
|
||||
this.setData({
|
||||
notificationSettings: {
|
||||
...this.data.notificationSettings,
|
||||
...settings.notificationSettings
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 加载免打扰设置
|
||||
const doNotDisturbSettings = wx.getStorageSync('doNotDisturbSettings');
|
||||
if (doNotDisturbSettings) {
|
||||
this.setData({
|
||||
doNotDisturb: {
|
||||
...this.data.doNotDisturb,
|
||||
...doNotDisturbSettings
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 加载通知设置失败:', error);
|
||||
}
|
||||
},
|
||||
|
||||
// 加载未读计数
|
||||
loadUnreadCount() {
|
||||
try {
|
||||
const totalUnread = notificationManager.getTotalUnreadCount();
|
||||
this.setData({
|
||||
unreadCount: totalUnread
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('❌ 加载未读计数失败:', error);
|
||||
}
|
||||
},
|
||||
|
||||
// 🔔 ===== 通知设置变更 =====
|
||||
|
||||
// 通知总开关变更
|
||||
onNotificationEnabledChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.enabled': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 消息通知变更
|
||||
onMessageNotificationChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.message.enabled': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 消息预览变更
|
||||
onMessagePreviewChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.message.showPreview': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 消息提示音变更
|
||||
onMessageSoundChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.message.sound': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 消息震动变更
|
||||
onMessageVibrateChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.message.vibrate': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 消息分组变更
|
||||
onMessageGroupChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.message.groupByChat': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 群聊通知变更
|
||||
onGroupNotificationChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.group.enabled': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 群聊仅@提醒变更
|
||||
onGroupMentionOnlyChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.group.mentionOnly': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 群聊提示音变更
|
||||
onGroupSoundChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.group.sound': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 群聊震动变更
|
||||
onGroupVibrateChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.group.vibrate': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 好友通知变更
|
||||
onFriendNotificationChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.friend.enabled': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 好友提示音变更
|
||||
onFriendSoundChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.friend.sound': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 系统通知变更
|
||||
onSystemNotificationChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'notificationSettings.system.enabled': enabled
|
||||
});
|
||||
|
||||
this.saveNotificationSettings();
|
||||
},
|
||||
|
||||
// 🔕 ===== 免打扰设置 =====
|
||||
|
||||
// 免打扰模式变更
|
||||
onDoNotDisturbChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'doNotDisturb.enabled': enabled
|
||||
});
|
||||
|
||||
this.saveDoNotDisturbSettings();
|
||||
},
|
||||
|
||||
// 选择开始时间
|
||||
selectStartTime() {
|
||||
|
||||
this.setData({
|
||||
showTimePicker: true,
|
||||
selectedTime: this.data.doNotDisturb.startTime,
|
||||
timePickerType: 'start'
|
||||
});
|
||||
},
|
||||
|
||||
// 选择结束时间
|
||||
selectEndTime() {
|
||||
|
||||
this.setData({
|
||||
showTimePicker: true,
|
||||
selectedTime: this.data.doNotDisturb.endTime,
|
||||
timePickerType: 'end'
|
||||
});
|
||||
},
|
||||
|
||||
// 时间选择变更
|
||||
onTimeChange(e) {
|
||||
const time = e.detail.value;
|
||||
|
||||
if (this.data.timePickerType === 'start') {
|
||||
this.setData({
|
||||
'doNotDisturb.startTime': time,
|
||||
showTimePicker: false
|
||||
});
|
||||
} else {
|
||||
this.setData({
|
||||
'doNotDisturb.endTime': time,
|
||||
showTimePicker: false
|
||||
});
|
||||
}
|
||||
|
||||
this.saveDoNotDisturbSettings();
|
||||
},
|
||||
|
||||
// 取消时间选择
|
||||
onTimeCancel() {
|
||||
this.setData({
|
||||
showTimePicker: false
|
||||
});
|
||||
},
|
||||
|
||||
// 允许紧急通知变更
|
||||
onAllowUrgentChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'doNotDisturb.allowUrgent': enabled
|
||||
});
|
||||
|
||||
this.saveDoNotDisturbSettings();
|
||||
},
|
||||
|
||||
// 允许@提醒变更
|
||||
onAllowMentionsChange(e) {
|
||||
const enabled = e.detail.value;
|
||||
|
||||
this.setData({
|
||||
'doNotDisturb.allowMentions': enabled
|
||||
});
|
||||
|
||||
this.saveDoNotDisturbSettings();
|
||||
},
|
||||
|
||||
// 📋 ===== 通知管理 =====
|
||||
|
||||
// 查看通知历史
|
||||
viewNotificationHistory() {
|
||||
|
||||
wx.navigateTo({
|
||||
url: '/subpackages/settings/notification-settings/notification-settings'
|
||||
});
|
||||
},
|
||||
|
||||
// 清空通知历史
|
||||
clearNotificationHistory() {
|
||||
|
||||
wx.showModal({
|
||||
title: '清空通知历史',
|
||||
content: '确定要删除所有通知记录吗?此操作不可恢复。',
|
||||
confirmText: '清空',
|
||||
confirmColor: '#FF3B30',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
this.performClearHistory();
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 执行清空历史
|
||||
performClearHistory() {
|
||||
try {
|
||||
// 清空通知历史
|
||||
wx.removeStorageSync('notificationHistory');
|
||||
|
||||
// 重置未读计数
|
||||
notificationManager.reset();
|
||||
|
||||
this.setData({
|
||||
unreadCount: 0
|
||||
});
|
||||
|
||||
wx.showToast({
|
||||
title: '历史已清空',
|
||||
icon: 'success'
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 清空通知历史失败:', error);
|
||||
wx.showToast({
|
||||
title: '清空失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// 📱 ===== 订阅消息 =====
|
||||
|
||||
// 请求订阅消息权限
|
||||
async requestSubscribeMessage() {
|
||||
|
||||
try {
|
||||
const templateIds = [
|
||||
'template_id_1', // 新消息通知
|
||||
'template_id_2', // 好友请求通知
|
||||
'template_id_3' // 系统通知
|
||||
];
|
||||
|
||||
const result = await notificationManager.requestSubscribeMessage(templateIds);
|
||||
|
||||
if (result) {
|
||||
wx.showToast({
|
||||
title: '权限设置完成',
|
||||
icon: 'success'
|
||||
});
|
||||
} else {
|
||||
wx.showToast({
|
||||
title: '权限设置失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 请求订阅消息权限失败:', error);
|
||||
wx.showToast({
|
||||
title: '权限设置失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// 查看订阅状态
|
||||
viewSubscribeStatus() {
|
||||
|
||||
wx.showToast({
|
||||
title: '功能开发中',
|
||||
icon: 'none'
|
||||
});
|
||||
},
|
||||
|
||||
// ⚙️ ===== 设置管理 =====
|
||||
|
||||
// 保存通知设置
|
||||
saveNotificationSettings() {
|
||||
try {
|
||||
// 更新通知管理器设置
|
||||
notificationManager.updateNotificationSettings(this.data.notificationSettings);
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 保存通知设置失败:', error);
|
||||
}
|
||||
},
|
||||
|
||||
// 保存免打扰设置
|
||||
saveDoNotDisturbSettings() {
|
||||
try {
|
||||
wx.setStorageSync('doNotDisturbSettings', this.data.doNotDisturb);
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 保存免打扰设置失败:', error);
|
||||
}
|
||||
},
|
||||
|
||||
// 重置设置
|
||||
resetSettings() {
|
||||
|
||||
wx.showModal({
|
||||
title: '重置通知设置',
|
||||
content: '确定要将所有通知设置恢复为默认值吗?',
|
||||
confirmText: '重置',
|
||||
confirmColor: '#FF3B30',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
this.performResetSettings();
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 执行重置设置
|
||||
performResetSettings() {
|
||||
try {
|
||||
// 重置为默认设置
|
||||
this.setData({
|
||||
notificationSettings: {
|
||||
enabled: true,
|
||||
message: {
|
||||
enabled: true,
|
||||
showPreview: true,
|
||||
sound: true,
|
||||
vibrate: true,
|
||||
groupByChat: true
|
||||
},
|
||||
group: {
|
||||
enabled: true,
|
||||
mentionOnly: false,
|
||||
sound: true,
|
||||
vibrate: true
|
||||
},
|
||||
friend: {
|
||||
enabled: true,
|
||||
sound: true
|
||||
},
|
||||
system: {
|
||||
enabled: true
|
||||
}
|
||||
},
|
||||
doNotDisturb: {
|
||||
enabled: false,
|
||||
startTime: '22:00',
|
||||
endTime: '08:00',
|
||||
allowUrgent: true,
|
||||
allowMentions: true
|
||||
}
|
||||
});
|
||||
|
||||
// 保存设置
|
||||
this.saveNotificationSettings();
|
||||
this.saveDoNotDisturbSettings();
|
||||
|
||||
wx.showToast({
|
||||
title: '设置已重置',
|
||||
icon: 'success'
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 重置通知设置失败:', error);
|
||||
wx.showToast({
|
||||
title: '重置失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// 🧭 ===== 页面导航 =====
|
||||
|
||||
// 返回上一页
|
||||
goBack() {
|
||||
wx.navigateBack();
|
||||
}
|
||||
});
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue