elk/types/index.ts

87 lines
2.2 KiB
TypeScript
Raw Normal View History

import type { Account, AccountCredentials, Attachment, CreateStatusParams, Emoji, Instance, MastoClient, Notification, PushSubscription, Status } from 'masto'
import type { Ref } from 'vue'
2023-01-04 13:21:18 +03:00
import type { MarkNonNullable, Mutable } from './utils'
2023-01-03 12:39:00 +03:00
import type { LoginTo } from '~/composables/users'
2022-11-15 18:48:23 +03:00
export interface AppInfo {
id: string
name: string
website: string | null
redirect_uri: string
client_id: string
client_secret: string
vapid_key: string
}
2023-01-03 04:23:16 +03:00
interface UserLoginWithToken {
account: AccountCredentials
guest: false
}
interface UserLoginGuest {
account?: undefined
guest: true
}
export type UserLogin<WithToken extends boolean = boolean> = {
2022-11-15 18:48:23 +03:00
server: string
2022-11-29 23:51:52 +03:00
token?: string
vapidKey?: string
pushSubscription?: PushSubscription
2023-01-03 04:23:16 +03:00
} & ((WithToken extends false ? UserLoginGuest : never) | (WithToken extends true ? UserLoginWithToken : never))
2022-11-16 19:11:08 +03:00
export interface ElkMasto extends MastoClient {
2023-01-03 12:39:00 +03:00
loginTo: LoginTo
loggedIn: Ref<boolean>
}
2022-11-17 10:35:42 +03:00
export type PaginatorState = 'idle' | 'loading' | 'done' | 'error'
2022-11-21 09:55:31 +03:00
export interface ServerInfo extends Instance {
server: string
timeUpdated: number
customEmojis?: Record<string, Emoji>
}
2022-11-30 03:47:54 +03:00
export interface GroupedNotifications {
id: string
2022-12-12 01:40:40 +03:00
type: Exclude<string, 'grouped-reblogs-and-favourites'>
2022-11-30 03:47:54 +03:00
items: Notification[]
}
2022-11-30 07:50:29 +03:00
2022-12-12 01:40:40 +03:00
export interface GroupedAccountLike {
account: Account
favourite?: Notification
reblog?: Notification
}
export interface GroupedLikeNotifications {
id: string
type: 'grouped-reblogs-and-favourites'
status: Status
likes: GroupedAccountLike[]
}
export type NotificationSlot = GroupedNotifications | GroupedLikeNotifications | Notification
2022-11-30 07:50:29 +03:00
export type TranslateFn = ReturnType<typeof useI18n>['t']
2022-12-13 17:03:30 +03:00
export interface Draft {
editingStatus?: Status
initialText?: string
2023-01-04 13:21:18 +03:00
params: MarkNonNullable<Mutable<CreateStatusParams>, 'status' | 'language' | 'sensitive' | 'spoilerText' | 'visibility'>
2022-12-13 17:03:30 +03:00
attachments: Attachment[]
}
export type DraftMap = Record<string, Draft>
2022-12-26 22:33:19 +03:00
export interface BuildInfo {
version: string
commit: string
time: number
branch: string
2023-01-04 16:26:30 +03:00
env: 'preview' | 'main' | 'dev' | 'release'
2022-12-26 22:33:19 +03:00
}
export type FontSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'
export type ColorMode = 'light' | 'dark'