Files
Graphite/client/web/src/response-handler.ts
2021-05-02 22:46:47 +02:00

36 lines
1.0 KiB
TypeScript

type ResponseCallback = (responseData: string) => void;
type ResponseMap = {
[response: string]: ResponseCallback | undefined;
};
declare global {
interface Window {
responseMap: ResponseMap;
}
}
export enum ResponseType {
"Tool::UpdateCanvas" = "Tool::UpdateCanvas",
"Document::ExpandFolder" = "Document::ExpandFolder",
"Document::CollapseFolder" = "Document::CollapseFolder",
"Tool::SetActiveTool" = "Tool::SetActiveTool",
}
export function attachResponseHandlerToPage() {
window.responseMap = {};
}
export function registerResponseHandler(responseType: ResponseType, callback: ResponseCallback) {
window.responseMap[responseType] = callback;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function handleResponse(responseType: ResponseType, responseData: any) {
const callback = window.responseMap[responseType];
if (callback) {
callback(responseData);
} else {
console.error(`Received a Response of type "${responseType}" but no handler was registered for it from the client.`);
}
}