65 lines
1.3 KiB
TypeScript
Executable File
65 lines
1.3 KiB
TypeScript
Executable File
import type { AvatarProps } from '@nuxt/ui'
|
|
|
|
export type UserStatus = 'subscribed' | 'unsubscribed' | 'bounced'
|
|
export type SaleStatus = 'paid' | 'failed' | 'refunded'
|
|
|
|
export interface User {
|
|
id: number
|
|
name: string
|
|
email: string
|
|
avatar?: AvatarProps
|
|
status: UserStatus
|
|
location: string
|
|
}
|
|
|
|
export interface SearchFiles {
|
|
youtube?: string
|
|
video?: string
|
|
audio?: string
|
|
booklet?: string
|
|
simple?: string
|
|
}
|
|
|
|
export interface MatchPosition { start: number, length: number }
|
|
|
|
export interface SearchHit {
|
|
_id: string | number
|
|
id?: string | number
|
|
title: string
|
|
slug?: string
|
|
date?: number | string
|
|
isodate?: string
|
|
activity?: string
|
|
conference?: string
|
|
place?: string
|
|
city?: string
|
|
state?: string
|
|
country?: string
|
|
body?: string
|
|
thumbnail?: string
|
|
type?: string
|
|
files?: SearchFiles
|
|
unread?: boolean
|
|
_formatted?: Record<string, unknown>
|
|
_matchesPosition?: Record<string, MatchPosition[]>
|
|
[key: string]: unknown
|
|
}
|
|
|
|
// Backwards-compatible alias used by InboxList / InboxActivity
|
|
export type Activity = SearchHit
|
|
|
|
export interface Member {
|
|
name: string
|
|
username: string
|
|
role: 'member' | 'owner'
|
|
avatar: AvatarProps
|
|
}
|
|
|
|
export interface Notification {
|
|
id: number
|
|
unread?: boolean
|
|
sender: User
|
|
body: string
|
|
date: string
|
|
}
|