fix: 修复修改通知方式所在组后 不会移除其原有map映射关系的问题

This commit is contained in:
Akkia
2022-04-15 23:23:51 +08:00
parent 2ccb8f3477
commit 26646bff1a
4 changed files with 22 additions and 22 deletions

View File

@@ -35,7 +35,7 @@ func LoadNotifications() {
if err := DB.Find(&notifications).Error; err != nil {
panic(err)
}
for i := range notifications {
for i := 0; i < len(notifications); i++ {
// 旧版本的Tag可能不存在 自动设置为默认值
if notifications[i].Tag == "" {
SetDefaultNotificationTagInDB(&notifications[i])
@@ -58,7 +58,7 @@ func OnRefreshOrAddNotification(n *model.Notification) {
defer notificationsLock.Unlock()
var isEdit bool
if _, ok := NotificationList[n.Tag][n.ID]; ok {
if _, ok := NotificationIDToTag[n.ID]; ok {
isEdit = true
}
if !isEdit {
@@ -80,7 +80,16 @@ func AddNotificationToList(n *model.Notification) {
// UpdateNotificationInList 在 map 中更新通知方式
func UpdateNotificationInList(n *model.Notification) {
NotificationList[n.Tag][n.ID] = n
if n.Tag != NotificationIDToTag[n.ID] {
// 如果 Tag 不一致,则需要先移除原有的映射关系
delete(NotificationList[NotificationIDToTag[n.ID]], n.ID)
delete(NotificationIDToTag, n.ID)
// 将新的 Tag 中的通知方式添加到 map 中
AddNotificationToList(n)
} else {
// 如果 Tag 一致,则直接更新
NotificationList[n.Tag][n.ID] = n
}
}
// OnDeleteNotification 在map中删除通知方式