164 lines
4.5 KiB
TypeScript
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
|
|
}
|