change notif when setting seen flag
This commit is contained in:
parent
8cb1271f9a
commit
b48c834d36
@ -1,4 +1,5 @@
|
||||
import API from "@/services/imapAPI";
|
||||
import { isSeenFc } from "@/utils/flagsUtils";
|
||||
import { decodeEmojis } from "@/utils/string";
|
||||
import { AxiosError, AxiosResponse } from "axios";
|
||||
import { createStore } from "vuex";
|
||||
@ -55,6 +56,29 @@ const roomOnId = (state: State, roomId: number): Room | undefined =>
|
||||
state.rooms.find((room: Room) => room.id == roomId);
|
||||
const msgOnRoomId = (state: State, roomId: number) => state.roomMessages.find((roomMsg) => roomMsg.roomId == roomId);
|
||||
|
||||
function updateSeen(state: State, roomId: number, flag: string[], adding: boolean) {
|
||||
// if is seen flag decrement unread value
|
||||
if (isSeenFc(flag)) {
|
||||
const room = roomOnId(state, roomId);
|
||||
if (!room) return;
|
||||
if (adding) {
|
||||
room.notSeen--;
|
||||
} else {
|
||||
room.notSeen++;
|
||||
}
|
||||
// if is thread change seen on parent
|
||||
if (room.roomType == RoomType.THREAD) {
|
||||
const parentRoom = state.rooms.find((room) => room.threadIds.includes(roomId));
|
||||
if (parentRoom) {
|
||||
if (adding) {
|
||||
parentRoom.notSeen--;
|
||||
} else {
|
||||
parentRoom.notSeen++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// define injection key todo
|
||||
// export const key: InjectionKey<Store<State>> = Symbol()
|
||||
|
||||
@ -135,16 +159,17 @@ const store = createStore<State>({
|
||||
});
|
||||
},
|
||||
addFlag(state, payload) {
|
||||
// todo if seen notif
|
||||
const msg = msgOnRoomId(state, payload.roomId)?.messages.find((msg) => msg.id == payload.messageId);
|
||||
if (msg) {
|
||||
msg.flags.push(payload.flag);
|
||||
updateSeen(state, payload.roomId, payload.flag, true);
|
||||
}
|
||||
},
|
||||
removeFlag(state, payload) {
|
||||
const msg = msgOnRoomId(state, payload.roomId)?.messages.find((msg) => msg.id == payload.messageId);
|
||||
if (msg) {
|
||||
msg.flags?.splice(msg.flags?.indexOf(payload.flag), 1);
|
||||
updateSeen(state, payload.roomId, payload.flag, false);
|
||||
}
|
||||
},
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user