diff --git a/app/javascript/mastodon/api_types/notifications.ts b/app/javascript/mastodon/api_types/notifications.ts index fe729c0ee4..01ae3c3b1d 100644 --- a/app/javascript/mastodon/api_types/notifications.ts +++ b/app/javascript/mastodon/api_types/notifications.ts @@ -44,6 +44,10 @@ interface ReportNotificationGroupJSON extends BaseNotificationGroupJSON { report: ApiReportJSON; } +interface SimpleNotificationGroupJSON extends BaseNotificationGroupJSON { + type: 'follow' | 'follow_request' | 'admin.sign_up'; +} + export interface ApiAccountWarningJSON { id: string; action: AccountWarningAction; @@ -77,6 +81,7 @@ interface AccountRelationshipSeveranceNotificationGroupJSON } export type NotificationGroupJSON = + | SimpleNotificationGroupJSON | ReportNotificationGroupJSON | AccountRelationshipSeveranceNotificationGroupJSON | NotificationGroupWithStatusJSON diff --git a/app/javascript/mastodon/features/notifications_v2/components/notification_group_with_status.tsx b/app/javascript/mastodon/features/notifications_v2/components/notification_group_with_status.tsx index 76d038d6a2..b040c3a68e 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/notification_group_with_status.tsx +++ b/app/javascript/mastodon/features/notifications_v2/components/notification_group_with_status.tsx @@ -62,7 +62,7 @@ export const NotificationGroupWithStatus: React.FC<{
{label} - + {timestamp && }
diff --git a/app/javascript/mastodon/models/notification_group.ts b/app/javascript/mastodon/models/notification_group.ts index 78dd1b948a..f9c76e80e7 100644 --- a/app/javascript/mastodon/models/notification_group.ts +++ b/app/javascript/mastodon/models/notification_group.ts @@ -113,25 +113,28 @@ export function createNotificationGroupFromJSON( const { sample_accounts, ...group } = groupJson; const sampleAccountsIds = sample_accounts.map((account) => account.id); - if ('status' in group) { - const { status, ...groupWithoutStatus } = group; - return { - statusId: status.id, - sampleAccountsIds, - ...groupWithoutStatus, - }; - } - - if ('report' in group) { - const { report, ...groupWithoutTargetAccount } = group; - return { - report: createReportFromJSON(report), - sampleAccountsIds, - ...groupWithoutTargetAccount, - }; - } - switch (group.type) { + case 'favourite': + case 'reblog': + case 'status': + case 'mention': + case 'poll': + case 'update': { + const { status, ...groupWithoutStatus } = group; + return { + statusId: status.id, + sampleAccountsIds, + ...groupWithoutStatus, + }; + } + case 'admin.report': { + const { report, ...groupWithoutTargetAccount } = group; + return { + report: createReportFromJSON(report), + sampleAccountsIds, + ...groupWithoutTargetAccount, + }; + } case 'severed_relationships': return { ...group, @@ -147,11 +150,10 @@ export function createNotificationGroupFromJSON( sampleAccountsIds, }; } - // This is commented out because all group types are covered in the previous statement and have their returns - // default: - // return { - // sampleAccountsIds, - // ...group, - // }; + default: + return { + sampleAccountsIds, + ...group, + }; } }