This commit is contained in:
syuilo
2025-03-23 09:53:02 +09:00
parent 50435a3f68
commit f3bb4d6603
9 changed files with 23 additions and 5 deletions

View File

@@ -248,11 +248,11 @@ export class ChatService {
public async readUserChatMessage(
readerId: MiUser['id'],
senderId: MiUser['id'],
) {
): Promise<void> {
const redisPipeline = this.redisClient.pipeline();
redisPipeline.del(`newChatMessageExists:${readerId}:${senderId}`);
redisPipeline.srem(`newChatMessagesExists:${readerId}`, `user:${senderId}`);
redisPipeline.exec();
await redisPipeline.exec();
}
@bindThis
@@ -467,6 +467,7 @@ export class ChatService {
@bindThis
public async hasUnreadMessages(userId: MiUser['id']) {
// TODO
const card = await this.redisClient.scard(`newChatMessagesExists:${userId}`);
return card > 0;
}
}

View File

@@ -74,6 +74,7 @@ export interface MainEventTypes {
unreadNotification: Packed<'Notification'>;
readAllAntennas: undefined;
unreadAntenna: MiAntenna;
newChatMessage: Packed<'ChatMessage'>;
readAllAnnouncements: undefined;
myTokenRegenerated: undefined;
signin: {

View File

@@ -545,6 +545,10 @@ export const packedMeDetailedOnlySchema = {
type: 'boolean',
nullable: false, optional: false,
},
hasUnreadChatMessages: {
type: 'boolean',
nullable: false, optional: false,
},
hasUnreadNotification: {
type: 'boolean',
nullable: false, optional: false,

View File

@@ -133,6 +133,7 @@ describe('ユーザー', () => {
hasUnreadAnnouncement: user.hasUnreadAnnouncement,
hasUnreadAntenna: user.hasUnreadAntenna,
hasUnreadChannel: user.hasUnreadChannel,
hasUnreadChatMessages: user.hasUnreadChatMessages,
hasUnreadNotification: user.hasUnreadNotification,
unreadNotificationsCount: user.unreadNotificationsCount,
hasPendingReceivedFollowRequest: user.hasPendingReceivedFollowRequest,
@@ -371,6 +372,7 @@ describe('ユーザー', () => {
assert.strictEqual(response.hasUnreadAnnouncement, false);
assert.strictEqual(response.hasUnreadAntenna, false);
assert.strictEqual(response.hasUnreadChannel, false);
assert.strictEqual(response.hasUnreadChatMessages, false);
assert.strictEqual(response.hasUnreadNotification, false);
assert.strictEqual(response.unreadNotificationsCount, 0);
assert.strictEqual(response.hasPendingReceivedFollowRequest, false);