Add messageId to each message, refactor listeners
This commit is contained in:
parent
929e7ee36d
commit
ac11893e93
146
src/router.ts
146
src/router.ts
@ -170,16 +170,18 @@ export async function registerAllListeners() {
|
||||
const services = await Services.getInstance();
|
||||
const tokenService = await TokenService.getInstance();
|
||||
|
||||
const errorResponse = (errorMsg: string, origin: string) => {
|
||||
const errorResponse = (errorMsg: string, origin: string, messageId?: string) => {
|
||||
window.parent.postMessage(
|
||||
{
|
||||
type: MessageType.ERROR,
|
||||
error: errorMsg
|
||||
error: errorMsg,
|
||||
messageId
|
||||
},
|
||||
origin
|
||||
);
|
||||
}
|
||||
|
||||
// --- Handler functions ---
|
||||
const handleRequestLink = async (event: MessageEvent) => {
|
||||
if (event.data.type !== MessageType.REQUEST_LINK) {
|
||||
return;
|
||||
@ -212,7 +214,7 @@ export async function registerAllListeners() {
|
||||
}
|
||||
} catch (error) {
|
||||
const errorMsg = `Failed to pair device: ${error}`;
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
|
||||
try {
|
||||
@ -220,7 +222,8 @@ export async function registerAllListeners() {
|
||||
const acceptedMsg = {
|
||||
type: MessageType.LINK_ACCEPTED,
|
||||
accessToken: tokens.accessToken,
|
||||
refreshToken: tokens.refreshToken
|
||||
refreshToken: tokens.refreshToken,
|
||||
messageId: event.data.messageId
|
||||
};
|
||||
window.parent.postMessage(
|
||||
acceptedMsg,
|
||||
@ -228,7 +231,7 @@ export async function registerAllListeners() {
|
||||
);
|
||||
} catch (error) {
|
||||
const errorMsg = `Failed to generate tokens: ${error}`;
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -239,7 +242,7 @@ export async function registerAllListeners() {
|
||||
|
||||
if (!services.isPaired()) {
|
||||
const errorMsg = 'Device not paired';
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -255,13 +258,14 @@ export async function registerAllListeners() {
|
||||
window.parent.postMessage(
|
||||
{
|
||||
type: MessageType.GET_MY_PROCESSES,
|
||||
myProcesses
|
||||
myProcesses,
|
||||
messageId: event.data.messageId
|
||||
},
|
||||
event.origin
|
||||
);
|
||||
} catch (e) {
|
||||
const errorMsg = `Failed to get processes: ${e}`;
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -274,7 +278,7 @@ export async function registerAllListeners() {
|
||||
|
||||
if (!services.isPaired()) {
|
||||
const errorMsg = 'Device not paired';
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -291,13 +295,14 @@ export async function registerAllListeners() {
|
||||
window.parent.postMessage(
|
||||
{
|
||||
type: MessageType.PROCESSES_RETRIEVED,
|
||||
processes
|
||||
processes,
|
||||
messageId: event.data.messageId
|
||||
},
|
||||
event.origin
|
||||
);
|
||||
} catch (e) {
|
||||
const errorMsg = `Failed to get processes: ${e}`;
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -310,7 +315,7 @@ export async function registerAllListeners() {
|
||||
|
||||
if (!services.isPaired()) {
|
||||
const errorMsg = 'Device not paired';
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -348,12 +353,13 @@ export async function registerAllListeners() {
|
||||
{
|
||||
type: MessageType.DATA_RETRIEVED,
|
||||
data: res,
|
||||
messageId: event.data.messageId
|
||||
},
|
||||
event.origin
|
||||
);
|
||||
} catch (e) {
|
||||
const errorMsg = `Failed to retrieve data: ${e}`;
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -365,7 +371,7 @@ export async function registerAllListeners() {
|
||||
const accessToken = event.data.accessToken;
|
||||
const refreshToken = event.data.refreshToken;
|
||||
if (!accessToken || !refreshToken) {
|
||||
errorResponse('Failed to validate token: missing access, refresh token or both', event.origin);
|
||||
errorResponse('Failed to validate token: missing access, refresh token or both', event.origin, event.data.messageId);
|
||||
}
|
||||
|
||||
const isValid = await tokenService.validateToken(accessToken, event.origin);
|
||||
@ -375,7 +381,8 @@ export async function registerAllListeners() {
|
||||
type: MessageType.VALIDATE_TOKEN,
|
||||
accessToken: accessToken,
|
||||
refreshToken: refreshToken,
|
||||
isValid: isValid
|
||||
isValid: isValid,
|
||||
messageId: event.data.messageId
|
||||
},
|
||||
event.origin
|
||||
);
|
||||
@ -403,13 +410,14 @@ export async function registerAllListeners() {
|
||||
{
|
||||
type: MessageType.RENEW_TOKEN,
|
||||
accessToken: newAccessToken,
|
||||
refreshToken: refreshToken
|
||||
refreshToken: refreshToken,
|
||||
messageId: event.data.messageId
|
||||
},
|
||||
event.origin
|
||||
);
|
||||
} catch (error) {
|
||||
const errorMsg = `Failed to renew token: ${error}`;
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -418,7 +426,7 @@ export async function registerAllListeners() {
|
||||
|
||||
if (!services.isPaired()) {
|
||||
const errorMsg = 'Device not paired';
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -435,12 +443,13 @@ export async function registerAllListeners() {
|
||||
{
|
||||
type: MessageType.GET_PAIRING_ID,
|
||||
userPairingId,
|
||||
messageId: event.data.messageId
|
||||
},
|
||||
event.origin
|
||||
);
|
||||
} catch (e) {
|
||||
const errorMsg = `Failed to get pairing id: ${e}`;
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -449,7 +458,7 @@ export async function registerAllListeners() {
|
||||
|
||||
if (!services.isPaired()) {
|
||||
const errorMsg = 'Device not paired';
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -481,12 +490,13 @@ export async function registerAllListeners() {
|
||||
{
|
||||
type: MessageType.PROCESS_CREATED,
|
||||
processCreated: res,
|
||||
messageId: event.data.messageId
|
||||
},
|
||||
event.origin
|
||||
);
|
||||
} catch (e) {
|
||||
const errorMsg = `Failed to create process: ${e}`;
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -495,7 +505,7 @@ export async function registerAllListeners() {
|
||||
|
||||
if (!services.isPaired()) {
|
||||
const errorMsg = 'Device not paired';
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -516,12 +526,13 @@ export async function registerAllListeners() {
|
||||
window.parent.postMessage(
|
||||
{
|
||||
type: MessageType.UPDATE_NOTIFIED,
|
||||
messageId: event.data.messageId
|
||||
},
|
||||
event.origin
|
||||
);
|
||||
} catch (e) {
|
||||
const errorMsg = `Failed to notify update for process: ${e}`;
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -530,7 +541,7 @@ export async function registerAllListeners() {
|
||||
|
||||
if (!services.isPaired()) {
|
||||
const errorMsg = 'Device not paired';
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -548,12 +559,13 @@ export async function registerAllListeners() {
|
||||
{
|
||||
type: MessageType.STATE_VALIDATED,
|
||||
validatedProcess: res.updated_process,
|
||||
messageId: event.data.messageId
|
||||
},
|
||||
event.origin
|
||||
);
|
||||
} catch (e) {
|
||||
const errorMsg = `Failed to validate process: ${e}`;
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -562,7 +574,7 @@ export async function registerAllListeners() {
|
||||
|
||||
if (!services.isPaired()) {
|
||||
const errorMsg = 'Device not paired';
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
|
||||
try {
|
||||
@ -638,12 +650,13 @@ export async function registerAllListeners() {
|
||||
{
|
||||
type: MessageType.PROCESS_UPDATED,
|
||||
updatedProcess: res.updated_process,
|
||||
messageId: event.data.messageId
|
||||
},
|
||||
event.origin
|
||||
);
|
||||
} catch (e) {
|
||||
const errorMsg = `Failed to update process: ${e}`;
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -652,7 +665,7 @@ export async function registerAllListeners() {
|
||||
|
||||
if (!services.isPaired()) {
|
||||
const errorMsg = 'Device not paired';
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -669,41 +682,66 @@ export async function registerAllListeners() {
|
||||
{
|
||||
type: MessageType.PUBLIC_DATA_DECODED,
|
||||
decodedData,
|
||||
messageId: event.data.messageId
|
||||
},
|
||||
event.origin
|
||||
);
|
||||
} catch (e) {
|
||||
const errorMsg = `Failed to decode data: ${e}`;
|
||||
errorResponse(errorMsg, event.origin);
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove before adding to be sure there's no duplicate
|
||||
window.removeEventListener('message', handleUpdateProcess);
|
||||
window.removeEventListener('message', handleRequestLink);
|
||||
window.removeEventListener('message', handleGetProcesses);
|
||||
window.removeEventListener('message', handleGetMyProcesses);
|
||||
window.removeEventListener('message', handleDecryptState);
|
||||
window.removeEventListener('message', handleValidateToken);
|
||||
window.removeEventListener('message', handleRenewToken);
|
||||
window.removeEventListener('message', handleGetPairingId);
|
||||
window.removeEventListener('message', handleCreateProcess);
|
||||
window.removeEventListener('message', handleValidateState);
|
||||
window.removeEventListener('message', handleNotifyUpdate);
|
||||
window.removeEventListener('message', handleDecodePublicData);
|
||||
window.removeEventListener('message', handleMessage);
|
||||
window.addEventListener('message', handleMessage);
|
||||
|
||||
window.addEventListener('message', handleUpdateProcess);
|
||||
window.addEventListener('message', handleRequestLink);
|
||||
window.addEventListener('message', handleGetProcesses);
|
||||
window.addEventListener('message', handleGetMyProcesses);
|
||||
window.addEventListener('message', handleDecryptState);
|
||||
window.addEventListener('message', handleValidateToken);
|
||||
window.addEventListener('message', handleRenewToken);
|
||||
window.addEventListener('message', handleGetPairingId);
|
||||
window.addEventListener('message', handleCreateProcess);
|
||||
window.addEventListener('message', handleValidateState);
|
||||
window.addEventListener('message', handleNotifyUpdate);
|
||||
window.addEventListener('message', handleDecodePublicData);
|
||||
async function handleMessage(event: MessageEvent) {
|
||||
try {
|
||||
switch (event.data.type) {
|
||||
case MessageType.REQUEST_LINK:
|
||||
await handleRequestLink(event);
|
||||
break;
|
||||
case MessageType.GET_MY_PROCESSES:
|
||||
await handleGetMyProcesses(event);
|
||||
break;
|
||||
case MessageType.GET_PROCESSES:
|
||||
await handleGetProcesses(event);
|
||||
break;
|
||||
case MessageType.RETRIEVE_DATA:
|
||||
await handleDecryptState(event);
|
||||
break;
|
||||
case MessageType.VALIDATE_TOKEN:
|
||||
await handleValidateToken(event);
|
||||
break;
|
||||
case MessageType.RENEW_TOKEN:
|
||||
await handleRenewToken(event);
|
||||
break;
|
||||
case MessageType.GET_PAIRING_ID:
|
||||
await handleGetPairingId(event);
|
||||
break;
|
||||
case MessageType.CREATE_PROCESS:
|
||||
await handleCreateProcess(event);
|
||||
break;
|
||||
case MessageType.NOTIFY_UPDATE:
|
||||
await handleNotifyUpdate(event);
|
||||
break;
|
||||
case MessageType.VALIDATE_STATE:
|
||||
await handleValidateState(event);
|
||||
break;
|
||||
case MessageType.UPDATE_PROCESS:
|
||||
await handleUpdateProcess(event);
|
||||
break;
|
||||
case MessageType.DECODE_PUBLIC_DATA:
|
||||
await handleDecodePublicData(event);
|
||||
break;
|
||||
default:
|
||||
console.warn(`Unhandled message type: ${event.data.type}`);
|
||||
}
|
||||
} catch (error) {
|
||||
const errorMsg = `Error handling message: ${error}`;
|
||||
errorResponse(errorMsg, event.origin, event.data.messageId);
|
||||
}
|
||||
}
|
||||
|
||||
console.log('Initialized event handlers');
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user