Skip to content

Commit dda0f4d

Browse files
feat: live preview: added outside iframe code
1 parent a3d3294 commit dda0f4d

4 files changed

Lines changed: 30 additions & 3 deletions

File tree

src/livePreview/eventManager/livePreviewEventManager.constant.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export const LIVE_PREVIEW_POST_MESSAGE_EVENTS = {
55
CHECK_ENTRY_PAGE: "check-entry-page",
66
URL_CHANGE: "url-change",
77
VARIANT_PATCH: "variant-patch-update",
8+
ON_RELOAD: "cslp-reload"
89
} as const;
910

1011
export const LIVE_PREVIEW_CHANNEL_ID = "live-preview";

src/livePreview/eventManager/livePreviewEventManager.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,17 @@ import { LIVE_PREVIEW_CHANNEL_ID } from "./livePreviewEventManager.constant";
44
let livePreviewPostMessage: EventManager | undefined;
55

66
if (typeof window !== "undefined") {
7-
livePreviewPostMessage = new EventManager(LIVE_PREVIEW_CHANNEL_ID, {
7+
let eventOptions = {
88
target: window.parent,
99
debug: false,
10-
suppressErrors: true,
11-
});
10+
suppressErrors: true
11+
};
12+
13+
if (window.opener) {
14+
eventOptions.target = window.opener;
15+
}
16+
17+
livePreviewPostMessage = new EventManager(LIVE_PREVIEW_CHANNEL_ID, eventOptions);
1218
}
1319

1420
export default livePreviewPostMessage;

src/livePreview/eventManager/postMessageEvent.hooks.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
HistoryLivePreviewPostMessageEventData,
88
LivePreviewInitEventResponse,
99
OnChangeLivePreviewPostMessageEventData,
10+
OnReloadLivePreviewPostMessageEventData,
1011
} from "./types/livePreviewPostMessageEvent.type";
1112

1213
/**
@@ -57,6 +58,20 @@ export function useOnEntryUpdatePostMessageEvent(): void {
5758
);
5859
}
5960

61+
export function useOnReloadPostMessageEvent(): void {
62+
livePreviewPostMessage?.on<OnReloadLivePreviewPostMessageEventData>(
63+
LIVE_PREVIEW_POST_MESSAGE_EVENTS.ON_RELOAD,
64+
(event) => {
65+
setConfigFromParams({
66+
live_preview: event.data.hash,
67+
});
68+
if (window) {
69+
window.location?.reload();
70+
}
71+
}
72+
);
73+
}
74+
6075
export function sendInitializeLivePreviewPostMessageEvent(): void {
6176
livePreviewPostMessage
6277
?.send<LivePreviewInitEventResponse>(
@@ -109,6 +124,7 @@ export function sendInitializeLivePreviewPostMessageEvent(): void {
109124

110125
useHistoryPostMessageEvent();
111126
useOnEntryUpdatePostMessageEvent();
127+
useOnReloadPostMessageEvent();
112128
})
113129
.catch((e) => {
114130
// TODO: add debug logs that runs conditionally

src/livePreview/eventManager/types/livePreviewPostMessageEvent.type.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ export interface OnChangeLivePreviewPostMessageEventData {
88
hash: string;
99
}
1010

11+
export interface OnReloadLivePreviewPostMessageEventData {
12+
hash: string;
13+
}
14+
1115
export interface LivePreviewInitEventResponse {
1216
contentTypeUid: string;
1317
entryUid: string;

0 commit comments

Comments
 (0)