62 lines
2.3 KiB
TypeScript
62 lines
2.3 KiB
TypeScript
|
import { Registry } from "tc-shared/events";
|
||
|
export declare const kIPCIconChannel = "icons";
|
||
|
export declare const kGlobalIconHandlerId = "global";
|
||
|
export interface RemoteIconEvents {
|
||
|
notify_state_changed: {
|
||
|
oldState: RemoteIconState;
|
||
|
newState: RemoteIconState;
|
||
|
};
|
||
|
}
|
||
|
export declare type RemoteIconState = "loading" | "loaded" | "error" | "empty" | "destroyed";
|
||
|
export declare type RemoteIconInfo = {
|
||
|
iconId: number;
|
||
|
serverUniqueId: string;
|
||
|
handlerId?: string;
|
||
|
};
|
||
|
export declare abstract class RemoteIcon {
|
||
|
readonly events: Registry<RemoteIconEvents>;
|
||
|
readonly iconId: number;
|
||
|
readonly serverUniqueId: string;
|
||
|
private state;
|
||
|
protected imageUrl: string;
|
||
|
protected errorMessage: string;
|
||
|
protected constructor(serverUniqueId: string, iconId: number);
|
||
|
destroy(): void;
|
||
|
getState(): RemoteIconState;
|
||
|
protected setState(state: RemoteIconState): void;
|
||
|
hasImageUrl(): boolean;
|
||
|
/**
|
||
|
* Will throw an string if the icon isn't in loaded state
|
||
|
*/
|
||
|
getImageUrl(): string;
|
||
|
protected setImageUrl(url: string): void;
|
||
|
/**
|
||
|
* Will throw an string if the state isn't error
|
||
|
*/
|
||
|
getErrorMessage(): string | undefined;
|
||
|
protected setErrorMessage(message: string): void;
|
||
|
/**
|
||
|
* Waits 'till the icon has been loaded or any other, non loading, state has been reached.
|
||
|
*/
|
||
|
awaitLoaded(): Promise<void>;
|
||
|
/**
|
||
|
* Returns true if the icon isn't loading any more.
|
||
|
* This includes all other states like error, destroy or empty.
|
||
|
*/
|
||
|
isLoaded(): boolean;
|
||
|
}
|
||
|
export declare abstract class AbstractIconManager {
|
||
|
protected static iconUniqueKey(iconId: number, serverUniqueId: string): string;
|
||
|
/**
|
||
|
* @param iconId The requested icon
|
||
|
* @param serverUniqueId The server unique id for the icon
|
||
|
* @param handlerId Hint which connection handler should be used if we're downloading the icon
|
||
|
*/
|
||
|
abstract resolveIcon(iconId: number, serverUniqueId?: string, handlerId?: string): RemoteIcon;
|
||
|
}
|
||
|
export declare function setIconManager(instance: AbstractIconManager): void;
|
||
|
export declare function getIconManager(): AbstractIconManager;
|
||
|
export declare function generateIconJQueryTag(icon: RemoteIcon | undefined, options?: {
|
||
|
animate?: boolean;
|
||
|
}): JQuery<HTMLDivElement>;
|