mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-19 19:08:05 +08:00
Plumb Responses from WASM to JS in the page
This commit is contained in:
30
client/web/src/response-handler.ts
Normal file
30
client/web/src/response-handler.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
type ResponseCallback = (responseData: string) => void;
|
||||
type ResponseMap = {
|
||||
[response: string]: ResponseCallback | undefined;
|
||||
};
|
||||
declare global {
|
||||
interface Window { responseMap: ResponseMap }
|
||||
}
|
||||
|
||||
export enum ResponseType {
|
||||
UpdateCanvas = "UpdateCanvas",
|
||||
}
|
||||
|
||||
export function attachResponseHandlerToPage() {
|
||||
window.responseMap = {};
|
||||
}
|
||||
|
||||
export function registerResponseHandler(responseType: ResponseType, callback: ResponseCallback) {
|
||||
window.responseMap[responseType] = callback;
|
||||
}
|
||||
|
||||
export function handleResponse(responseType: ResponseType, responseData: string) {
|
||||
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.`);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user