Files
jfa-go/ts/typings/d.ts
Harvey Tindall b40abafb95 list: cleanup, include offset in DateAttempt
included UTC offset in minutes in DateAttempt, will be used shortly.
Also moved this stuff (ParsedDate, DateAttempt) to the common d.ts, and
the method for parsing from a string (now parseDateString) to common.
Also pre-emptively load the user cache when the admin page loads.
2025-05-27 14:29:09 +01:00

181 lines
4.3 KiB
TypeScript

declare interface Modal {
modal: HTMLElement;
closeButton: HTMLSpanElement
show: () => void;
close: (event?: Event, noDispatch?: boolean) => void;
toggle: () => void;
onopen: (f: () => void) => void;
onclose: (f: () => void) => void;
}
interface ArrayConstructor {
from(arrayLike: any, mapFn?, thisArg?): Array<any>;
}
declare interface PagePaths {
// The base subfolder the app is hosted on.
Base: string;
// The subdirectory this bit of the app is hosted on (e.g. admin is usually on "/", myacc is usually on "/my/account")
Current: string;
// Those for other pages
Admin: string;
MyAccount: string;
Form: string;
}
declare interface GlobalWindow extends Window {
pages: PagePaths;
modals: Modals;
cssFile: string;
availableProfiles: string[];
jfUsers: Array<Object>;
notificationsEnabled: boolean;
emailEnabled: boolean;
telegramEnabled: boolean;
discordEnabled: boolean;
matrixEnabled: boolean;
ombiEnabled: boolean;
jellyseerrEnabled: boolean;
pwrEnabled: boolean;
usernameEnabled: boolean;
linkResetEnabled: boolean;
token: string;
buttonWidth: number;
transitionEvent: string;
animationEvent: string;
tabs: Tabs;
invites: inviteList;
notifications: NotificationBox;
language: string;
lang: Lang;
langFile: {};
updater: updater;
jellyfinLogin: boolean;
jfAdminOnly: boolean;
jfAllowAll: boolean;
referralsEnabled: boolean;
loginAppearance: string;
}
declare interface Update {
version: string;
commit: string;
date: number;
description: string;
changelog: string;
link: string;
download_link?: string;
can_update: boolean;
}
declare interface updater extends Update {
checkForUpdates: (run?: (req: XMLHttpRequest) => void) => void;
updateAvailable: boolean;
update: Update;
}
declare interface Lang {
get: (sect: string, key: string) => string;
strings: (key: string) => string;
notif: (key: string) => string;
var: (sect: string, key: string, ...subs: string[]) => string;
quantity: (key: string, number: number) => string;
}
declare interface NotificationBox {
connectionError: () => void;
customError: (type: string, message: string) => void;
customPositive: (type: string, bold: string, message: string) => void;
customSuccess: (type: string, message: string) => void;
}
declare interface Tabs {
current: string;
addTab: (tabID: string, url: string, preFunc?: () => void, postFunc?: () => void, unloadFunc?: () => void) => void;
switch: (tabID: string, noRun?: boolean, keepURL?: boolean) => void;
}
declare interface Modals {
about: Modal;
login: Modal;
addUser: Modal;
modifyUser: Modal;
deleteUser: Modal;
settingsRestart: Modal;
settingsRefresh: Modal;
ombiProfile?: Modal;
jellyseerrProfile?: Modal;
profiles: Modal;
addProfile: Modal;
announce: Modal;
editor: Modal;
customizeEmails: Modal;
extendExpiry: Modal;
updateInfo: Modal;
telegram: Modal;
discord: Modal;
matrix: Modal;
sendPWR?: Modal;
pwr?: Modal;
logs: Modal;
email?: Modal;
enableReferralsUser?: Modal;
enableReferralsProfile?: Modal;
backedUp?: Modal;
backups?: Modal;
}
interface Invite {
code?: string;
expiresIn?: string;
remainingUses?: string;
send_to?: string;
usedBy?: { [name: string]: number };
created?: number;
notifyExpiry?: boolean;
notifyCreation?: boolean;
profile?: string;
label?: string;
user_label?: string;
userExpiry?: boolean;
userExpiryTime?: string;
}
interface inviteList {
empty: boolean;
invites: { [code: string]: Invite }
add: (invite: Invite) => void;
reload: (callback?: () => void) => void;
isInviteURL: () => boolean;
loadInviteURL: () => void;
}
interface paginatedDTO {
last_page: boolean;
}
interface PaginatedReqDTO {
limit: number;
page: number;
sortByField: string;
ascending: boolean;
};
interface DateAttempt {
year?: number;
month?: number;
day?: number;
hour?: number;
minute?: number;
offsetMinutesFromUTC?: number;
}
interface ParsedDate {
attempt: DateAttempt;
date: Date;
text: string;
};
declare var config: Object;
declare var modifiedConfig: Object;