diff --git a/packages/pl-api/lib/entities/account.ts b/packages/pl-api/lib/entities/account.ts index 3f2136100..790bba7e2 100644 --- a/packages/pl-api/lib/entities/account.ts +++ b/packages/pl-api/lib/entities/account.ts @@ -240,7 +240,7 @@ const untypedCredentialAccountSchema = v.pipe(v.any(), preprocessAccount, v.obje language: v.fallback(v.optional(v.nullable(v.string())), null), follow_requests_count: v.fallback(v.optional(v.pipe(v.number(), v.integer(), v.minValue(0))), 0), hide_collections: v.fallback(v.nullable(v.boolean()), null), - discoverable: v.fallback(v.optional(v.nullable(v.boolean())), undefined), + discoverable: v.fallback(v.optional(v.boolean()), undefined), indexable: v.fallback(v.nullable(v.boolean()), null), quote_policy: v.fallback(v.nullable(v.picklist(['public', 'followers', 'nobody'])), null), diff --git a/packages/pl-api/lib/entities/grouped-notifications-results.ts b/packages/pl-api/lib/entities/grouped-notifications-results.ts index d5d0bda7e..702f2618d 100644 --- a/packages/pl-api/lib/entities/grouped-notifications-results.ts +++ b/packages/pl-api/lib/entities/grouped-notifications-results.ts @@ -46,7 +46,7 @@ const mentionNotificationGroupSchema = v.object({ const statusNotificationGroupSchema = v.object({ ...baseNotificationGroupSchema.entries, - type: v.picklist(['status', 'reblog', 'favourite', 'poll', 'update', 'event_reminder']), + type: v.picklist(['status', 'reblog', 'favourite', 'poll', 'update', 'event_reminder', 'quote', 'quoted_update']), status_id: v.string(), }); diff --git a/packages/pl-fe/src/actions/notifications.ts b/packages/pl-fe/src/actions/notifications.ts index e06f52f1a..df50846a9 100644 --- a/packages/pl-fe/src/actions/notifications.ts +++ b/packages/pl-fe/src/actions/notifications.ts @@ -35,7 +35,7 @@ const NOTIFICATIONS_SCROLL_TOP = 'NOTIFICATIONS_SCROLL_TOP' as const; const FILTER_TYPES = { all: undefined, - mention: ['mention'], + mention: ['mention', 'quote'], favourite: ['favourite', 'emoji_reaction', 'reaction'], reblog: ['reblog'], poll: ['poll'], diff --git a/packages/pl-fe/src/features/notifications/components/notification.tsx b/packages/pl-fe/src/features/notifications/components/notification.tsx index 8a6a43275..46e91f343 100644 --- a/packages/pl-fe/src/features/notifications/components/notification.tsx +++ b/packages/pl-fe/src/features/notifications/components/notification.tsx @@ -65,6 +65,8 @@ const icons: Partial> = { participation_accepted: require('@tabler/icons/outline/calendar-event.svg'), bite: require('@tabler/icons/outline/pacman.svg'), reply: require('@tabler/icons/outline/corner-up-left.svg'), + quote: require('@tabler/icons/outline/quote.svg'), + quoted_update: require('@tabler/icons/outline/pencil.svg'), }; const messages: Record = defineMessages({ @@ -148,6 +150,14 @@ const messages: Record = defineMe id: 'notification.reply', defaultMessage: '{name} replied to your post', }, + quote: { + id: 'notification.quote', + defaultMessage: '{name} quoted your post', + }, + quoted_update: { + id: 'notification.quoted_update', + defaultMessage: '{name} edited a post you quoted', + }, }); const buildMessage = ( @@ -190,7 +200,7 @@ interface INotification { } const getNotificationStatus = (n: Pick & ({ status: StatusEntity } | { })): StatusEntity | null => { - if (['mention', 'status', 'reblog', 'favourite', 'poll', 'update', 'emoji_reaction', 'event_reminder', 'participation_accepted', 'participation_request', 'bite'].includes(n.type)) + if (['mention', 'status', 'reblog', 'favourite', 'poll', 'update', 'emoji_reaction', 'event_reminder', 'participation_accepted', 'participation_request', 'bite', 'quote', 'quoted_update'].includes(n.type)) // @ts-ignore return n.status; return null; @@ -398,6 +408,8 @@ const Notification: React.FC = (props) => { case 'event_reminder': case 'participation_accepted': case 'participation_request': + case 'quote': + case 'quoted_update': return status ? (