Fix #5403
This commit is contained in:
parent
a36e5b4543
commit
e7fcca0e06
@ -1,5 +1,5 @@
|
|||||||
import $ from 'cafy';
|
import $ from 'cafy';
|
||||||
import { EntityRepository, Repository, In } from 'typeorm';
|
import { EntityRepository, Repository, In, Not } from 'typeorm';
|
||||||
import { User, ILocalUser, IRemoteUser } from '../entities/user';
|
import { User, ILocalUser, IRemoteUser } from '../entities/user';
|
||||||
import { Emojis, Notes, NoteUnreads, FollowRequests, Notifications, MessagingMessages, UserNotePinings, Followings, Blockings, Mutings, UserProfiles, UserSecurityKeys, UserGroupJoinings, Pages } from '..';
|
import { Emojis, Notes, NoteUnreads, FollowRequests, Notifications, MessagingMessages, UserNotePinings, Followings, Blockings, Mutings, UserProfiles, UserSecurityKeys, UserGroupJoinings, Pages } from '..';
|
||||||
import { ensure } from '../../prelude/ensure';
|
import { ensure } from '../../prelude/ensure';
|
||||||
@ -56,6 +56,10 @@ export class UserRepository extends Repository<User> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async getHasUnreadMessagingMessage(userId: User['id']): Promise<boolean> {
|
public async getHasUnreadMessagingMessage(userId: User['id']): Promise<boolean> {
|
||||||
|
const mute = await Mutings.find({
|
||||||
|
muterId: userId
|
||||||
|
});
|
||||||
|
|
||||||
const joinings = await UserGroupJoinings.find({ userId: userId });
|
const joinings = await UserGroupJoinings.find({ userId: userId });
|
||||||
|
|
||||||
const groupQs = Promise.all(joinings.map(j => MessagingMessages.createQueryBuilder('message')
|
const groupQs = Promise.all(joinings.map(j => MessagingMessages.createQueryBuilder('message')
|
||||||
@ -66,11 +70,11 @@ export class UserRepository extends Repository<User> {
|
|||||||
.getOne().then(x => x != null)));
|
.getOne().then(x => x != null)));
|
||||||
|
|
||||||
const [withUser, withGroups] = await Promise.all([
|
const [withUser, withGroups] = await Promise.all([
|
||||||
// TODO: ミュートを考慮
|
|
||||||
MessagingMessages.count({
|
MessagingMessages.count({
|
||||||
where: {
|
where: {
|
||||||
recipientId: userId,
|
recipientId: userId,
|
||||||
isRead: false
|
isRead: false,
|
||||||
|
...(mute.length > 0 ? { userId: Not(In(mute.map(x => x.muteeId))) } : {}),
|
||||||
},
|
},
|
||||||
take: 1
|
take: 1
|
||||||
}).then(count => count > 0),
|
}).then(count => count > 0),
|
||||||
|
Loading…
Reference in New Issue
Block a user