@@ -67,6 +67,7 @@ const safeParse = (value: string) => {
67
67
}
68
68
const previewDataAtom = atom < PostModel | NoteModel | null > ( null )
69
69
export default function PreviewPage ( ) {
70
+ // handle preview by storage observer
70
71
useIsomorphicLayoutEffect ( ( ) => {
71
72
const search = location . search
72
73
const searchParams = new URLSearchParams ( search )
@@ -105,12 +106,20 @@ export default function PreviewPage() {
105
106
}
106
107
} , [ ] )
107
108
109
+ // handle preview by postMessage
110
+
108
111
useIsomorphicLayoutEffect ( ( ) => {
109
112
const search = location . search
110
113
const searchParams = new URLSearchParams ( search )
111
114
112
115
let targetOrigin = searchParams . get ( 'origin' )
113
116
117
+ // const isInIframe = window.self !== window.top
118
+
119
+ // if (isInIframe) {
120
+ // return
121
+ // }
122
+
114
123
if ( ! targetOrigin ) {
115
124
return
116
125
}
@@ -121,6 +130,7 @@ export default function PreviewPage() {
121
130
122
131
if ( ! parsedData ) return
123
132
const PREVIEW_HASH = new URLSearchParams ( location . search ) . get ( 'key' )
133
+
124
134
if ( ! PREVIEW_HASH ) return
125
135
if ( parsedData . key !== PREVIEW_HASH ) {
126
136
return
@@ -132,16 +142,18 @@ export default function PreviewPage() {
132
142
JSON . stringify ( parsedData . data )
133
143
)
134
144
return
145
+
135
146
jotaiStore . set ( previewDataAtom , simpleCamelcaseKeys ( parsedData . data ) )
136
147
}
137
148
}
138
149
window . addEventListener ( 'message' , handler )
139
150
140
151
console . info ( 'preview page ready' )
141
- window . opener . postMessage ( 'ok' , targetOrigin )
152
+ const parentWindow = window . opener || window . parent
153
+ parentWindow . postMessage ( 'ok' , targetOrigin )
142
154
143
155
const timer = setInterval ( ( ) => {
144
- window . opener . postMessage ( 'ok' , targetOrigin )
156
+ parentWindow . postMessage ( 'ok' , targetOrigin )
145
157
} , 3000 )
146
158
return ( ) => {
147
159
window . removeEventListener ( 'message' , handler )
@@ -216,7 +228,6 @@ const NotePreview = () => {
216
228
next : undefined ,
217
229
data : {
218
230
...data ,
219
-
220
231
created : new Date ( ) . toISOString ( ) ,
221
232
images : data . images ?? [ ] ,
222
233
count : data . count ?? {
0 commit comments