From 49e8ec64e0dca6db350242198d2b630e0e6536ec Mon Sep 17 00:00:00 2001 From: grimhilt Date: Tue, 11 Apr 2023 18:19:09 +0200 Subject: [PATCH] remove unseen in database --- back/db/message/saveMessage-db.ts | 6 --- back/db/message/storeMessage-db.ts | 6 +-- back/db/structureV2.sql | 1 - back/mails/message/saveMessage.ts | 20 ++------ back/mails/message/updateMessage.ts | 1 - back/test/mail/saveMessage-test.ts | 54 ++------------------- back/test/test-utils/db/test-saveMessage.ts | 6 --- 7 files changed, 10 insertions(+), 84 deletions(-) diff --git a/back/db/message/saveMessage-db.ts b/back/db/message/saveMessage-db.ts index c889e52..1d499bc 100644 --- a/back/db/message/saveMessage-db.ts +++ b/back/db/message/saveMessage-db.ts @@ -51,12 +51,6 @@ export function updateLastUpdateRoom(roomId: number, idate: string) { execQuery(query, values); } -export async function incrementNotSeenRoom(roomId: number) { - const query = `UPDATE app_room SET notSeen = notSeen + 1 WHERE room_id = ?`; - const values = [roomId]; - execQuery(query, values); -} - export async function getThreadInfo(messageID: string): Promise<{ room_id: number; root_id: number }[]> { const query = ` SELECT diff --git a/back/db/message/storeMessage-db.ts b/back/db/message/storeMessage-db.ts index 2c6f2d3..1c7a7d5 100644 --- a/back/db/message/storeMessage-db.ts +++ b/back/db/message/storeMessage-db.ts @@ -27,10 +27,10 @@ export function registerMailbox_message( execQuery(query, values); } -export function registerFlag(messageId: number, flagId: number) { - const query = `INSERT IGNORE INTO flag_name (message_id, flag_id) VALUES (?, ?)`; +export async function registerFlag(messageId: number, flagId: number) { + const query = `INSERT IGNORE INTO flag (message_id, flag_id) VALUES (?, ?)`; const values = [messageId, flagId]; - execQuery(query, values); + return await execQueryAsync(query, values); } export function registerBodypart(messageId: number, part: string, bodypartId: number, bytes: number, nbLines: null) { diff --git a/back/db/structureV2.sql b/back/db/structureV2.sql index ef32830..b9aebe3 100644 --- a/back/db/structureV2.sql +++ b/back/db/structureV2.sql @@ -123,7 +123,6 @@ CREATE TABLE app_room ( owner_id INT NOT NULL, message_id INT NOT NULL, room_type INT NOT NULL DEFAULT 0, - notSeen INT NOT NULL DEFAULT 0, lastUpdate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(), PRIMARY KEY (room_id), UNIQUE KEY (owner_id, message_id, room_type), diff --git a/back/mails/message/saveMessage.ts b/back/mails/message/saveMessage.ts index 55f0e0e..d749914 100644 --- a/back/mails/message/saveMessage.ts +++ b/back/mails/message/saveMessage.ts @@ -8,7 +8,6 @@ import { registerMember, getAllMembers, getThreadInfo, - incrementNotSeenRoom, getThreadInfoOnId, } from "../../db/message/saveMessage-db"; @@ -75,14 +74,6 @@ export default class RegisterMessageInApp { return this.ownerId == this.userId; } - async incrementNotSeen(roomId: number) { - // todo it appears there is an error with notifications - console.log("incrementRead", roomId) - if (!this.isSeen) { - await incrementNotSeenRoom(roomId); - } - } - async registerMembers(roomId: number) { getAllMembers(this.messageId).then((res) => { if (res.lenght == 0) return; @@ -97,7 +88,6 @@ export default class RegisterMessageInApp { try { const roomId = await createRoom(this.envelope.subject, owner, this.messageId, roomType); await registerMessageInRoom(this.messageId, roomId, this.envelope.date); - await this.incrementNotSeen(roomId); await this.registerMembers(roomId); return roomId; } catch (err) { @@ -113,7 +103,6 @@ export default class RegisterMessageInApp { } else { // not a reply, add to the list of message if this sender await registerMessageInRoom(this.messageId, res[0].room_id, this.envelope.date); - await this.incrementNotSeen(res[0].room_id); } }); } @@ -133,8 +122,6 @@ export default class RegisterMessageInApp { }); // impl register previous message or go back await registerMessageInRoom(this.messageId, threadId, this.envelope.date); - await this.incrementNotSeen(root_id); - await this.incrementNotSeen(threadId); await this.registerMembers(threadId); }, ); @@ -144,12 +131,10 @@ export default class RegisterMessageInApp { const hasSameMembers = await hasSameMembersAsParent(this.messageId, this.inReplyTo); if (hasSameMembers) { await registerMessageInRoom(this.messageId, roomId, this.envelope.date); - await this.incrementNotSeen(roomId); if (isThread) { await getThreadInfoOnId(roomId).then(async (res) => { let root_id = res[0].root_id; if (root_id == undefined) root_id = res[0].room_id; - await this.incrementNotSeen(res[0].root_id); }); } } else { @@ -172,9 +157,12 @@ export default class RegisterMessageInApp { } else { // it is not a reply and not a dm // so it is a channel, which can be possibly a group - await this.initiateRoom(this.ownerId, RoomType.ROOM); + // this version is considered to be for personnal use + // so by default it will be a group + await this.initiateRoom(this.ownerId, RoomType.GROUP); } } else { + // todo if contains reply in recipent then is channel await this.createOrRegisterOnExistence(this.ownerId, RoomType.ROOM); } } diff --git a/back/mails/message/updateMessage.ts b/back/mails/message/updateMessage.ts index 2c7a2b8..5d5c7d3 100644 --- a/back/mails/message/updateMessage.ts +++ b/back/mails/message/updateMessage.ts @@ -27,7 +27,6 @@ export default class updateMessage { deleteFlag(messageId, flag.flag_id); }); - // todo update seen counter rooms if (flagsToAdd.includes("\\Seen")) { updateMailboxSeen(messageId, true); } else if (flagToRm.find((f) => f.flag_name == "\\Seen")) { diff --git a/back/test/mail/saveMessage-test.ts b/back/test/mail/saveMessage-test.ts index 6974b0b..f46b7c6 100644 --- a/back/test/mail/saveMessage-test.ts +++ b/back/test/mail/saveMessage-test.ts @@ -24,7 +24,7 @@ jest.mock("../../db/utils/mail", () => { getUserIdOfMailbox: jest.fn(), }; }); -jest.mock("../../db/saveMessage-db", () => { +jest.mock("../../db/message/saveMessage-db", () => { return { createRoom: jest.fn(), registerMessageInRoom: jest.fn(), @@ -36,7 +36,6 @@ jest.mock("../../db/saveMessage-db", () => { getAllMembers: jest.fn(), getThreadInfo: jest.fn(), getThreadInfoOnId: jest.fn(), - incrementNotSeenRoom: jest.fn(), }; }); import { getAddresseId, getUserIdOfMailbox, findRoomByOwner } from "../../db/utils/mail"; @@ -51,7 +50,6 @@ import { getAllMembers, getThreadInfo, getThreadInfoOnId, - incrementNotSeenRoom, } from "../../db/message/saveMessage-db"; import { AttrsWithEnvelopeTest, createReplyWithSameMembers } from "../test-utils/test-messageUtils"; // todo esbuild @@ -85,7 +83,6 @@ beforeAll(async () => { mocked(getAllMembers).mockImplementation(db.getAllMembers); mocked(getThreadInfo).mockImplementation(db.getThreadInfo); mocked(getThreadInfoOnId).mockImplementation(db.getThreadInfoOnId); - mocked(incrementNotSeenRoom).mockImplementation(db.incrementNotSeenRoom); }); let msgFromUs_1: AttrsWithEnvelopeTest; @@ -151,7 +148,7 @@ describe("saveMessage", () => { expect(createOrRegisterOnExistence).toHaveBeenCalledWith(db.users[1].id, RoomType.DM); }); - it("should create a ROOM when there is a new first message from us to multiple recipients", async () => { + it("should create a GROUP when there is a new first message from us to multiple recipients", async () => { const attrs = generateAttrs({ from: [ownUser.user], to: [db.users[1].user, db.users[2].user] }); const register = new registerMessageInApp(messageId, attrs, boxId); @@ -162,7 +159,7 @@ describe("saveMessage", () => { await register.save(); - expect(initiateRoom).toHaveBeenCalledWith(ownUser.id, RoomType.ROOM); + expect(initiateRoom).toHaveBeenCalledWith(ownUser.id, RoomType.GROUP); }); // it("response to new first message to multiple recipients with same members should change room type to GROUP", () => { @@ -220,7 +217,6 @@ describe("saveMessage", () => { await register.save(); register = new registerMessageInApp(replyTo1_2.message_id, replyTo1_2.attrs, boxId); await register.save(); - let newReplyInThread = createReplyWithSameMembers(replyTo1_2, db); register = new registerMessageInApp(newReplyInThread.message_id, newReplyInThread.attrs, boxId); await register.save(); @@ -229,48 +225,4 @@ describe("saveMessage", () => { expect(db.room_message.filter((message) => message.room_id === db.rooms[1].room_id)).toHaveLength(2); }); }); - describe("unseen behavior", () => { - it("should add unseen in room when a message creates a room", async () => { - let register = new registerMessageInApp(msgFromUs_1.message_id, msgFromUs_1.attrs, boxId); - await register.save(); - expect(db.rooms[0].notSeen).toBe(1); - }); - - it("should add unseen in room when a message joins a room", async () => { - let register = new registerMessageInApp(msgFromUs_1.message_id, msgFromUs_1.attrs, boxId); - await register.save(); - - register = new registerMessageInApp(msgFromUs_1.message_id, msgFromUs_1.attrs, boxId); - await register.save(); - expect(db.rooms).toHaveLength(1); - expect(db.rooms[0].notSeen).toBe(2); - }); - - it("should add unseen in root room and THREAD when new message creates a THREAD", async () => { - let register = new registerMessageInApp(msgFromUs_1.message_id, msgFromUs_1.attrs, boxId); - await register.save(); - register = new registerMessageInApp(replyTo1_2.message_id, replyTo1_2.attrs, boxId); - await register.save(); - register = new registerMessageInApp(replyTo2_3.message_id, replyTo2_3.attrs, boxId); - await register.save(); - expect(db.rooms[0].notSeen).toBe(3); - expect(db.rooms[1].notSeen).toBe(1); - expect(db.rooms[2].notSeen).toBe(1); - }); - - it("should add unseen in root room and THREAD when new message joins in THREAD", async () => { - let register = new registerMessageInApp(msgFromUs_1.message_id, msgFromUs_1.attrs, boxId); - await register.save(); - register = new registerMessageInApp(replyTo1_2.message_id, replyTo1_2.attrs, boxId); - await register.save(); - - let newReplyInThread = createReplyWithSameMembers(replyTo1_2, db); - register = new registerMessageInApp(newReplyInThread.message_id, newReplyInThread.attrs, boxId); - await register.save(); - - expect(db.rooms).toHaveLength(2); - expect(db.rooms[0].notSeen).toBe(3); - expect(db.rooms[1].notSeen).toBe(2); - }); - }); }); diff --git a/back/test/test-utils/db/test-saveMessage.ts b/back/test/test-utils/db/test-saveMessage.ts index 1904f6a..17675f1 100644 --- a/back/test/test-utils/db/test-saveMessage.ts +++ b/back/test/test-utils/db/test-saveMessage.ts @@ -135,12 +135,6 @@ export default class saveMessageDatabase { return Promise.resolve([{ room_id: room.root_id, root_id: room.root_id }]); }; - incrementNotSeenRoom = (roomId: number): Promise => { - const room = this._findRoomById(roomId); - if (room) room.notSeen++; // todo - return Promise.resolve(); - }; - findRoomByOwner = (ownerId: number): Promise<{ room_id: number }[]> => { return new Promise((resolve, reject) => { const rooms = this.rooms.filter((room) => room.owner_id === ownerId);