remove unseen in database
This commit is contained in:
parent
dcb7075dca
commit
49e8ec64e0
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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),
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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")) {
|
||||
|
@ -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);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -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<void> => {
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user