diff --git a/app/javascript/flavours/glitch/api_types/notifications.ts b/app/javascript/flavours/glitch/api_types/notifications.ts index c4556fa8e5..50b03cc109 100644 --- a/app/javascript/flavours/glitch/api_types/notifications.ts +++ b/app/javascript/flavours/glitch/api_types/notifications.ts @@ -102,8 +102,7 @@ export interface ApiAccountWarningJSON { appeal: unknown; } -interface ModerationWarningNotificationGroupJSON - extends BaseNotificationGroupJSON { +interface ModerationWarningNotificationGroupJSON extends BaseNotificationGroupJSON { type: 'moderation_warning'; moderation_warning: ApiAccountWarningJSON; } @@ -123,14 +122,12 @@ export interface ApiAccountRelationshipSeveranceEventJSON { created_at: string; } -interface AccountRelationshipSeveranceNotificationGroupJSON - extends BaseNotificationGroupJSON { +interface AccountRelationshipSeveranceNotificationGroupJSON extends BaseNotificationGroupJSON { type: 'severed_relationships'; event: ApiAccountRelationshipSeveranceEventJSON; } -interface AccountRelationshipSeveranceNotificationJSON - extends BaseNotificationJSON { +interface AccountRelationshipSeveranceNotificationJSON extends BaseNotificationJSON { type: 'severed_relationships'; event: ApiAccountRelationshipSeveranceEventJSON; } diff --git a/app/javascript/flavours/glitch/components/button/index.tsx b/app/javascript/flavours/glitch/components/button/index.tsx index c6300bd684..fb107c78e0 100644 --- a/app/javascript/flavours/glitch/components/button/index.tsx +++ b/app/javascript/flavours/glitch/components/button/index.tsx @@ -5,8 +5,10 @@ import classNames from 'classnames'; import { LoadingIndicator } from 'flavours/glitch/components/loading_indicator'; -interface BaseProps - extends Omit, 'children'> { +interface BaseProps extends Omit< + React.ButtonHTMLAttributes, + 'children' +> { block?: boolean; secondary?: boolean; plain?: boolean; diff --git a/app/javascript/flavours/glitch/components/dropdown_menu.tsx b/app/javascript/flavours/glitch/components/dropdown_menu.tsx index 52a6072ee7..fa196a8bdb 100644 --- a/app/javascript/flavours/glitch/components/dropdown_menu.tsx +++ b/app/javascript/flavours/glitch/components/dropdown_menu.tsx @@ -309,7 +309,7 @@ interface DropdownProps { renderItem?: RenderItemFn; renderHeader?: RenderHeaderFn; onOpen?: // Must use a union type for the full function as a union with void is not allowed. - | ((event: React.MouseEvent | React.KeyboardEvent) => void) + | ((event: React.MouseEvent | React.KeyboardEvent) => void) | ((event: React.MouseEvent | React.KeyboardEvent) => boolean); onItemClick?: ItemClickFn; } diff --git a/app/javascript/flavours/glitch/entrypoints/admin.tsx b/app/javascript/flavours/glitch/entrypoints/admin.tsx index 25680391d4..1ec50cf59e 100644 --- a/app/javascript/flavours/glitch/entrypoints/admin.tsx +++ b/app/javascript/flavours/glitch/entrypoints/admin.tsx @@ -256,9 +256,8 @@ async function mountReactComponent(element: Element) { const componentProps = JSON.parse(stringProps) as object; - const { default: AdminComponent } = await import( - '@/flavours/glitch/containers/admin_component' - ); + const { default: AdminComponent } = + await import('@/flavours/glitch/containers/admin_component'); const { default: Component } = (await import( `@/flavours/glitch/components/admin/${componentName}.jsx` diff --git a/app/javascript/flavours/glitch/main.tsx b/app/javascript/flavours/glitch/main.tsx index 167f8df476..d91cd2bcff 100644 --- a/app/javascript/flavours/glitch/main.tsx +++ b/app/javascript/flavours/glitch/main.tsx @@ -55,9 +55,8 @@ function main() { 'Notification' in window && Notification.permission === 'granted' ) { - const registerPushNotifications = await import( - 'flavours/glitch/actions/push_notifications' - ); + const registerPushNotifications = + await import('flavours/glitch/actions/push_notifications'); store.dispatch(registerPushNotifications.register()); } diff --git a/app/javascript/flavours/glitch/models/account.ts b/app/javascript/flavours/glitch/models/account.ts index 3164555345..a8410662d9 100644 --- a/app/javascript/flavours/glitch/models/account.ts +++ b/app/javascript/flavours/glitch/models/account.ts @@ -42,10 +42,9 @@ const AccountRoleFactory = ImmutableRecord({ }); // Account -export interface AccountShape - extends Required< - Omit - > { +export interface AccountShape extends Required< + Omit +> { emojis: ImmutableList; fields: ImmutableList; roles: ImmutableList; diff --git a/app/javascript/flavours/glitch/models/notification_group.ts b/app/javascript/flavours/glitch/models/notification_group.ts index 886ab5a639..29db886b5e 100644 --- a/app/javascript/flavours/glitch/models/notification_group.ts +++ b/app/javascript/flavours/glitch/models/notification_group.ts @@ -14,20 +14,24 @@ import type { ApiReportJSON } from 'flavours/glitch/api_types/reports'; // This corresponds to the max length of `group.sampleAccountIds` export const NOTIFICATIONS_GROUP_MAX_AVATARS = 8; -interface BaseNotificationGroup - extends Omit { +interface BaseNotificationGroup extends Omit< + BaseNotificationGroupJSON, + 'sample_account_ids' +> { sampleAccountIds: string[]; partial: boolean; } -interface BaseNotificationWithStatus - extends BaseNotificationGroup { +interface BaseNotificationWithStatus< + Type extends NotificationWithStatusType, +> extends BaseNotificationGroup { type: Type; statusId: string | undefined; } -interface BaseNotification - extends BaseNotificationGroup { +interface BaseNotification< + Type extends NotificationType, +> extends BaseNotificationGroup { type: Type; } @@ -53,26 +57,25 @@ export type AccountWarningAction = | 'sensitive' | 'silence' | 'suspend'; -export interface AccountWarning - extends Omit { +export interface AccountWarning extends Omit< + ApiAccountWarningJSON, + 'target_account' +> { targetAccountId: string; } -export interface NotificationGroupModerationWarning - extends BaseNotification<'moderation_warning'> { +export interface NotificationGroupModerationWarning extends BaseNotification<'moderation_warning'> { moderationWarning: AccountWarning; } type AccountRelationshipSeveranceEvent = ApiAccountRelationshipSeveranceEventJSON; -export interface NotificationGroupSeveredRelationships - extends BaseNotification<'severed_relationships'> { +export interface NotificationGroupSeveredRelationships extends BaseNotification<'severed_relationships'> { event: AccountRelationshipSeveranceEvent; } type AnnualReportEvent = ApiAnnualReportEventJSON; -export interface NotificationGroupAnnualReport - extends BaseNotification<'annual_report'> { +export interface NotificationGroupAnnualReport extends BaseNotification<'annual_report'> { annualReport: AnnualReportEvent; } @@ -80,8 +83,7 @@ interface Report extends Omit { targetAccountId: string; } -export interface NotificationGroupAdminReport - extends BaseNotification<'admin.report'> { +export interface NotificationGroupAdminReport extends BaseNotification<'admin.report'> { report: Report; } diff --git a/app/javascript/flavours/glitch/models/notification_request.ts b/app/javascript/flavours/glitch/models/notification_request.ts index 4b4b97758f..be4a2bcf30 100644 --- a/app/javascript/flavours/glitch/models/notification_request.ts +++ b/app/javascript/flavours/glitch/models/notification_request.ts @@ -1,7 +1,9 @@ import type { ApiNotificationRequestJSON } from 'flavours/glitch/api_types/notifications'; -export interface NotificationRequest - extends Omit { +export interface NotificationRequest extends Omit< + ApiNotificationRequestJSON, + 'account' | 'notifications_count' +> { account_id: string; notifications_count: number; } diff --git a/app/javascript/flavours/glitch/models/poll.ts b/app/javascript/flavours/glitch/models/poll.ts index 03f61fd6be..7559e6f12c 100644 --- a/app/javascript/flavours/glitch/models/poll.ts +++ b/app/javascript/flavours/glitch/models/poll.ts @@ -28,8 +28,10 @@ export function createPollOptionTranslationFromServerJSON(translation: { } as PollOptionTranslation; } -export interface Poll - extends Omit { +export interface Poll extends Omit< + ApiPollJSON, + 'emojis' | 'options' | 'own_votes' +> { emojis: CustomEmoji[]; options: PollOption[]; own_votes?: number[];