fchat-rising/site/character_page/interfaces.ts

164 lines
4.5 KiB
TypeScript

import {
Character as CharacterInfo, CharacterImage, CharacterSettings, KinkChoice, SharedDefinitions, SimpleCharacter
} from '../../interfaces';
export interface SharedStore {
shared: SharedDefinitions
authenticated: boolean
}
export interface StoreMethods {
bookmarkUpdate(id: number, state: boolean): Promise<void>
characterBlock?(id: number, block: boolean, reason?: string): Promise<void>
characterCustomKinkAdd(id: number, name: string, description: string, choice: KinkChoice): Promise<void>
characterData(name: string | undefined, id: number | undefined, skipEvent: boolean | undefined): Promise<Character>
characterDelete(id: number): Promise<void>
characterDuplicate(id: number, name: string): Promise<void>
characterFriends(id: number): Promise<FriendsByCharacter>
characterNameCheck(name: string): Promise<void>
characterRename?(id: number, name: string, renamedFor?: string): Promise<void>
characterReport(reportData: CharacterReportData): Promise<void>
contactMethodIconUrl(name: string): string
sendNoteUrl(character: CharacterInfo): string
fieldsGet(): Promise<void>
friendDissolve(friend: Friend): Promise<void>
friendRequest(target: number, source: number): Promise<Friend | number>
friendRequestAccept(request: FriendRequest): Promise<Friend>
friendRequestIgnore(request: FriendRequest): Promise<void>
friendRequestCancel(request: FriendRequest): Promise<void>
friendsGet(id: number): Promise<SimpleCharacter[]>
groupsGet(id: number): Promise<CharacterGroup[]>
guestbookPageGet(character: number, offset?: number, limit?: number, unapproved_only?: boolean): Promise<Guestbook>
guestbookPostApprove(character: number, id: number, approval: boolean): Promise<void>
guestbookPostDelete(character: number, id: number): Promise<void>
guestbookPostPost(target: number, source: number, message: string, privatePost: boolean): Promise<void>
guestbookPostReply(character: number, id: number, reply: string | null): Promise<void>
hasPermission?(permission: string): boolean
imagesGet(id: number): Promise<CharacterImage[]>
imageUrl(image: CharacterImage): string
imageThumbUrl(image: CharacterImage): string
kinksGet(id: number): Promise<CharacterKink[]>
memoUpdate(id: number, memo: string): Promise<void>
}
export type SiteDate = number | string | null;
export type KinkChoiceFull = KinkChoice | number;
export const CONTACT_GROUP_ID = 1;
export interface DisplayKink {
id: number
name: string
description: string
choice?: KinkChoice
group: number
isCustom: boolean
hasSubkinks: boolean
subkinks: DisplayKink[]
ignore: boolean
key: string
}
export interface CharacterKink {
id: number
choice: KinkChoice
}
export type ThreadOrderMode = 'post' | 'explicit';
export interface GroupPermissions {
view: boolean
edit: boolean
threads: boolean
permissions: boolean
}
export interface CharacterGroup {
id: number
title: string
public: boolean
description: string
threadCount: number
orderMode: ThreadOrderMode
createdAt: SiteDate
myPermissions: GroupPermissions
character: SimpleCharacter
owner: boolean
}
export interface CharacterMemo {
id: number;
memo: string;
}
export interface Character {
readonly is_self: boolean
character: CharacterInfo
readonly settings: CharacterSettings
readonly badges?: string[]
memo?: CharacterMemo;
readonly character_list?: {
id: number
name: string
}[]
bookmarked?: boolean
readonly self_staff: boolean
readonly ban?: string
readonly ban_reason?: string
readonly timeout?: number
readonly block_reason?: string
}
export interface GuestbookPost {
readonly id: number
readonly character: SimpleCharacter
approved: boolean
readonly private: boolean
postedAt: SiteDate
message: string
reply: string | null
repliedAt: SiteDate
canEdit: boolean
deleted?: boolean
}
export interface Guestbook {
readonly posts: GuestbookPost[]
readonly total: number
}
export interface CharacterReportData {
subject: string
message: string
character: number | null
type: string
url: string
reported_character: number
}
export interface Friend {
id: number
source: SimpleCharacter
target: SimpleCharacter
createdAt: SiteDate
}
export type FriendRequest = Friend;
export interface FriendsByCharacter {
existing: Friend[]
pending: FriendRequest[]
incoming: FriendRequest[]
name: string
}