This commit is contained in:
syuilo 2023-11-02 15:04:47 +09:00
parent ce5ff70cb3
commit 314fb4bfd9
5 changed files with 9 additions and 38 deletions

View file

@ -212,21 +212,6 @@ export class NotificationEntityService implements OnModuleInit {
note: noteIfNeed, note: noteIfNeed,
users, users,
}); });
} else if (notification.type === 'follow:grouped') {
const users = await Promise.all(notification.userIds.map(userId => {
const user = hint?.packedUsers != null
? hint.packedUsers.get(userId)
: this.userEntityService.pack(userId!, { id: meId }, {
detail: false,
});
return user;
}));
return await awaitAll({
id: notification.id,
createdAt: new Date(notification.createdAt).toISOString(),
type: notification.type,
users,
});
} }
return await awaitAll({ return await awaitAll({
@ -276,7 +261,6 @@ export class NotificationEntityService implements OnModuleInit {
if ('notifierId' in notification) userIds.push(notification.notifierId); if ('notifierId' in notification) userIds.push(notification.notifierId);
if (notification.type === 'reaction:grouped') userIds.push(...notification.reactions.map(x => x.userId)); if (notification.type === 'reaction:grouped') userIds.push(...notification.reactions.map(x => x.userId));
if (notification.type === 'renote:grouped') userIds.push(...notification.userIds); if (notification.type === 'renote:grouped') userIds.push(...notification.userIds);
if (notification.type === 'follow:grouped') userIds.push(...notification.userIds);
} }
const users = userIds.length > 0 ? await this.usersRepository.find({ const users = userIds.length > 0 ? await this.usersRepository.find({
where: { id: In(userIds) }, where: { id: In(userIds) },

View file

@ -119,9 +119,4 @@ export type MiGroupedNotification = MiNotification | {
createdAt: string; createdAt: string;
noteId: MiNote['id']; noteId: MiNote['id'];
userIds: string[]; userIds: string[];
} | {
type: 'follow:grouped';
id: string;
createdAt: string;
userIds: string[];
}; };

View file

@ -21,7 +21,7 @@ export const packedNotificationSchema = {
type: { type: {
type: 'string', type: 'string',
optional: false, nullable: false, optional: false, nullable: false,
enum: [...notificationTypes, 'reaction:grouped', 'renote:grouped', 'follow:grouped'], enum: [...notificationTypes, 'reaction:grouped', 'renote:grouped'],
}, },
user: { user: {
type: 'object', type: 'object',

View file

@ -157,20 +157,6 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
prevGroupedNotification.id = notification.id; prevGroupedNotification.id = notification.id;
continue; continue;
} }
if (prev.type === 'follow' && notification.type === 'follow') {
if (prevGroupedNotification.type !== 'follow:grouped') {
groupedNotifications.push({
type: 'follow:grouped',
id: '',
createdAt: notification.createdAt,
userIds: [],
});
prevGroupedNotification = groupedNotifications.at(-1)!;
}
(prevGroupedNotification as FilterUnionByProperty<MiGroupedNotification, 'type', 'follow:grouped'>).userIds.push(notification.notifierId!);
prevGroupedNotification.id = notification.id;
continue;
}
groupedNotifications.push(notification); groupedNotifications.push(notification);
} }

View file

@ -115,6 +115,11 @@ SPDX-License-Identifier: AGPL-3.0-only
</div> </div>
</div> </div>
</div> </div>
<div v-else-if="notification.type === 'renote:grouped'">
<div v-for="user of notification.users" :class="$style.reactionsItem">
<MkAvatar :class="$style.reactionsItemAvatar" :user="user" link preview/>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -321,8 +326,9 @@ useTooltip(reactionRef, (showing) => {
.reactionsItem { .reactionsItem {
display: inline-block; display: inline-block;
position: relative; position: relative;
width: 42px; width: 38px;
height: 42px; height: 38px;
margin-top: 8px;
margin-right: 8px; margin-right: 8px;
} }