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 API from "@/services/imapAPI";
|
||||||
|
import { isSeenFc } from "@/utils/flagsUtils";
|
||||||
import { decodeEmojis } from "@/utils/string";
|
import { decodeEmojis } from "@/utils/string";
|
||||||
import { AxiosError, AxiosResponse } from "axios";
|
import { AxiosError, AxiosResponse } from "axios";
|
||||||
import { createStore } from "vuex";
|
import { createStore } from "vuex";
|
||||||
@ -55,6 +56,29 @@ const roomOnId = (state: State, roomId: number): Room | undefined =>
|
|||||||
state.rooms.find((room: Room) => room.id == roomId);
|
state.rooms.find((room: Room) => room.id == roomId);
|
||||||
const msgOnRoomId = (state: State, roomId: number) => state.roomMessages.find((roomMsg) => roomMsg.roomId == 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
|
// define injection key todo
|
||||||
// export const key: InjectionKey<Store<State>> = Symbol()
|
// export const key: InjectionKey<Store<State>> = Symbol()
|
||||||
|
|
||||||
@ -135,16 +159,17 @@ const store = createStore<State>({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
addFlag(state, payload) {
|
addFlag(state, payload) {
|
||||||
// todo if seen notif
|
|
||||||
const msg = msgOnRoomId(state, payload.roomId)?.messages.find((msg) => msg.id == payload.messageId);
|
const msg = msgOnRoomId(state, payload.roomId)?.messages.find((msg) => msg.id == payload.messageId);
|
||||||
if (msg) {
|
if (msg) {
|
||||||
msg.flags.push(payload.flag);
|
msg.flags.push(payload.flag);
|
||||||
|
updateSeen(state, payload.roomId, payload.flag, true);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
removeFlag(state, payload) {
|
removeFlag(state, payload) {
|
||||||
const msg = msgOnRoomId(state, payload.roomId)?.messages.find((msg) => msg.id == payload.messageId);
|
const msg = msgOnRoomId(state, payload.roomId)?.messages.find((msg) => msg.id == payload.messageId);
|
||||||
if (msg) {
|
if (msg) {
|
||||||
msg.flags?.splice(msg.flags?.indexOf(payload.flag), 1);
|
msg.flags?.splice(msg.flags?.indexOf(payload.flag), 1);
|
||||||
|
updateSeen(state, payload.roomId, payload.flag, false);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user