File tree Expand file tree Collapse file tree 4 files changed +30
-22
lines changed Expand file tree Collapse file tree 4 files changed +30
-22
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ " @frames.js/render " : patch
3
+ ---
4
+
5
+ fix: pass original frame app source url to view
Original file line number Diff line number Diff line change @@ -105,17 +105,7 @@ export function useFrameAppInIframe(
105
105
case "pending" :
106
106
return frameApp ;
107
107
case "success" : {
108
- const frameUrl = frameApp . frame . frame . button ?. action ?. url ;
109
-
110
- if ( ! frameUrl ) {
111
- return {
112
- status : "error" ,
113
- error : new Error (
114
- "Frame URL is not provided, please check button.action.url"
115
- ) ,
116
- } ;
117
- }
118
-
108
+ const frameUrl = frameApp . frameUrl . toString ( ) ;
119
109
const frameOrigin = new URL ( frameUrl ) . origin ;
120
110
121
111
return {
Original file line number Diff line number Diff line change @@ -120,17 +120,7 @@ export function useFrameAppInWebView(
120
120
case "pending" :
121
121
return frameApp ;
122
122
case "success" : {
123
- const frame = frameApp . frame . frame ;
124
- const frameUrl = frame . button ?. action ?. url ;
125
-
126
- if ( ! frameUrl ) {
127
- return {
128
- status : "error" ,
129
- error : new Error (
130
- "Frame URL is not provided, please check button.action.url"
131
- ) ,
132
- } ;
133
- }
123
+ const frameUrl = frameApp . frameUrl . toString ( ) ;
134
124
135
125
return {
136
126
...frameApp ,
Original file line number Diff line number Diff line change @@ -205,6 +205,12 @@ export type UseFrameAppReturn =
205
205
| {
206
206
frame : ParseFramesV2ResultWithFrameworkDetails ;
207
207
client : FrameClientConfig ;
208
+ /**
209
+ * Url that has been used to fetch the frame app.
210
+ *
211
+ * If the source was set to parse result object, this will contain url of the frame's button action definition.
212
+ */
213
+ frameUrl : URL ;
208
214
status : "success" ;
209
215
/**
210
216
* Creates sdk that must be exposed to frame app endpoint
@@ -302,6 +308,22 @@ export function useFrameApp({
302
308
switch ( frameResolutionState . status ) {
303
309
case "success" : {
304
310
const frame = frameResolutionState . frame ;
311
+ let frameUrl : URL ;
312
+
313
+ if ( frameResolutionState . source instanceof URL ) {
314
+ frameUrl = frameResolutionState . source ;
315
+ } else if ( typeof frameResolutionState . source === "string" ) {
316
+ frameUrl = new URL ( frameResolutionState . source ) ;
317
+ } else if ( frame . frame . button ?. action ?. url ) {
318
+ frameUrl = new URL ( frame . frame . button . action . url ) ;
319
+ } else {
320
+ return {
321
+ status : "error" ,
322
+ error : new Error (
323
+ "Frame URL is not provided, please check button.action.url"
324
+ ) ,
325
+ } ;
326
+ }
305
327
306
328
return {
307
329
getEmitter : ( endpoint ) => ( {
@@ -416,6 +438,7 @@ export function useFrameApp({
416
438
} ) ,
417
439
status : "success" ,
418
440
frame : frameResolutionState . frame ,
441
+ frameUrl,
419
442
client : clientResolutionState . client ,
420
443
} ;
421
444
}
You can’t perform that action at this time.
0 commit comments