Plumb Responses from WASM to JS in the page

This commit is contained in:
Keavon Chambers
2021-04-10 02:48:33 -07:00
parent 22fe11b950
commit 4c546b2819
8 changed files with 104 additions and 112 deletions

View 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.`);
}
}