Skip to content

Commit

Permalink
✨ (context.tsx, types.ts): Add support for ALL message type to handle…
Browse files Browse the repository at this point in the history
… bulk updates in iframe context for efficiency
  • Loading branch information
sebpalluel committed May 15, 2024
1 parent 8ee82d8 commit 41da918
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
26 changes: 26 additions & 0 deletions libs/next/iframe/src/lib/context.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,32 @@ export const IFrameProvider: React.FC<IFrameProviderProps> = ({ children }) => {
<T extends ReceiveMessageType>({ type, value }: IFrameParentMessage<T>) => {
console.log(`Received message from iframe parent for ${type}`, value);
switch (type) {
case ReceiveMessageType.ALL:
// eslint-disable-next-line no-case-declarations
const {
offKeyState,
connectStatus,
cssVariablesAndClasses,
customer,
linkedCustomer,
product,
} = value as ReceiveMessageValues[ReceiveMessageType.ALL];
if (connectStatus.status) {
setConnectStatus(connectStatus.status);
}
if (offKeyState.status) {
setOffKeyState(offKeyState.status);
}
if (cssVariablesAndClasses) {
setCssVariables(cssVariablesAndClasses.cssVariables);
setClasses(
`${cssVariablesAndClasses.classes} font-${cssVariablesAndClasses.fontFamily}`,
);
}
setCustomer(customer);
setLinkedCustomer(linkedCustomer);
setProduct(product);
break;
case ReceiveMessageType.CONNECT_STATUS:
setConnectStatus(
(value as ReceiveMessageValues[ReceiveMessageType.CONNECT_STATUS])
Expand Down
9 changes: 9 additions & 0 deletions libs/next/iframe/src/lib/types.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export enum ReceiveMessageType {
ALL = 'ALL', // RECEIVE ALL MESSAGES AT ONCE (For fast initialization)
CONNECT_STATUS = 'CONNECT_STATUS',
UPDATE_CSS_VARIABLES_AND_CLASSES = 'UPDATE_CSS_VARIABLES_AND_CLASSES',
OFF_KEY_STATE = 'OFF_KEY_STATE',
Expand Down Expand Up @@ -57,6 +58,14 @@ export interface ReceiveMessageValues {
title: string;
available: boolean;
};
[ReceiveMessageType.ALL]: {
offKeyState: ReceiveMessageValues[ReceiveMessageType.OFF_KEY_STATE];
connectStatus: ReceiveMessageValues[ReceiveMessageType.CONNECT_STATUS];
cssVariablesAndClasses: ReceiveMessageValues[ReceiveMessageType.UPDATE_CSS_VARIABLES_AND_CLASSES];
customer: ReceiveMessageValues[ReceiveMessageType.CUSTOMER];
linkedCustomer: ReceiveMessageValues[ReceiveMessageType.LINKED_CUSTOMER];
product: ReceiveMessageValues[ReceiveMessageType.PRODUCT];
};
// Additional value shapes can be defined here corresponding to the ReceiveMessageType
}

Expand Down

0 comments on commit 41da918

Please sign in to comment.