Skip to content

Commit

Permalink
Add .getSnapshot() to @xstate/inspect
Browse files Browse the repository at this point in the history
  • Loading branch information
davidkpiano committed May 14, 2021
1 parent 28059b9 commit 1432ae7
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions packages/xstate-inspect/src/browser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -222,11 +222,13 @@ export function createWindowReceiver(
targetWindow = window.self === window.top ? window.opener : window.parent
} = options || {};
const observers = new Set<Observer<ParsedReceiverEvent>>();
let latestEvent: ParsedReceiverEvent;

const handler = (event: MessageEvent) => {
const { data } = event;
if (isReceiverEvent(data)) {
observers.forEach((listener) => listener.next(parseReceiverEvent(data)));
latestEvent = parseReceiverEvent(data);
observers.forEach((listener) => listener.next(latestEvent));
}
};

Expand Down Expand Up @@ -256,6 +258,9 @@ export function createWindowReceiver(
observers.clear();

ownWindow.removeEventListener('message', handler);
},
getSnapshot() {
return latestEvent;
}
};

Expand All @@ -272,6 +277,7 @@ export function createWebSocketReceiver(
const { protocol = 'ws' } = options;
const ws = new WebSocket(`${protocol}://${options.server}`);
const observers = new Set<Observer<ParsedReceiverEvent>>();
let latestEvent: ParsedReceiverEvent;

const actorRef: InspectReceiver = {
id: 'xstate.webSocketReceiver',
Expand All @@ -288,6 +294,9 @@ export function createWebSocketReceiver(
observers.delete(observer);
}
};
},
getSnapshot() {
return latestEvent;
}
};

Expand All @@ -305,9 +314,10 @@ export function createWebSocketReceiver(
try {
const eventObject = JSON.parse(event.data);

if (isReceiverEvent(eventObject)) {
if (isReceiverEvent(latestEvent)) {
latestEvent = parseReceiverEvent(eventObject);
observers.forEach((observer) => {
observer.next(parseReceiverEvent(eventObject));
observer.next(latestEvent);
});
}
} catch (e) {
Expand Down

0 comments on commit 1432ae7

Please sign in to comment.