@@ -12,7 +12,11 @@ export class OFSMessage {
1212 sendInitData ?: boolean ;
1313
1414 static parse ( str : string ) {
15- return Object . assign ( new OFSMessage ( ) , JSON . parse ( str ) ) as OFSMessage ;
15+ try {
16+ return Object . assign ( new OFSMessage ( ) , JSON . parse ( str ) ) as OFSMessage ;
17+ } catch ( error ) {
18+ return new OFSMessage ( )
19+ }
1620 }
1721}
1822
@@ -63,7 +67,9 @@ export abstract class OFSPlugin {
6367 private _getWebMessage ( message : MessageEvent ) : boolean {
6468 console . log ( `${ this . _tag } : Message received:` , message . data ) ;
6569 console . log ( `${ this . _tag } : Coming from ${ message . origin } ` ) ;
70+ // Validate that it is a valid OFS message
6671 var parsed_message = OFSMessage . parse ( message . data ) ;
72+ this . _storeCredentials ( parsed_message ) ;
6773 switch ( parsed_message . method ) {
6874 case "init" :
6975 this . _init ( parsed_message ) ;
@@ -80,6 +86,9 @@ export abstract class OFSPlugin {
8086 case "error" :
8187 this . error ( parsed_message ) ;
8288 break ;
89+ case "no method" :
90+ console . warn ( `${ this . _tag } : Message discarded` )
91+ break ;
8392
8493 default :
8594 throw new Error ( `Unknown method ${ parsed_message . method } ` ) ;
@@ -89,7 +98,15 @@ export abstract class OFSPlugin {
8998 }
9099
91100 private async _init ( message : OFSMessage ) {
92- // Processing securedData variables
101+ this . init ( message ) ;
102+ var messageData : OFSMessage = {
103+ apiVersion : 1 ,
104+ method : "initEnd" ,
105+ } ;
106+ this . _sendWebMessage ( messageData ) ;
107+ }
108+
109+ private _storeCredentials ( message : OFSMessage ) {
93110 if ( message . securedData ) {
94111 console . log ( `${ this . _tag } : Processing` , message . securedData ) ;
95112 // STEP 1: are we going to create a proxy?
@@ -103,21 +120,8 @@ export abstract class OFSPlugin {
103120 clientId : message . securedData . ofsClientId ,
104121 clientSecret : message . securedData . ofsClientSecret ,
105122 } ) ;
106- var result = await this . _proxy . getSubscriptions ( ) ;
107- console . log (
108- `${ this . _tag } : Connection with ${ message . securedData . ofsInstance } successful: ` ,
109- result . status == 200
110- ) ;
111123 }
112- // STEP 2: do we need to store type information?
113- // TBD
114124 }
115- this . init ( message ) ;
116- var messageData : OFSMessage = {
117- apiVersion : 1 ,
118- method : "initEnd" ,
119- } ;
120- this . _sendWebMessage ( messageData ) ;
121125 }
122126
123127 private static _getOriginURL ( url : string ) {
@@ -133,7 +137,7 @@ export abstract class OFSPlugin {
133137 private _sendWebMessage ( data : OFSMessage ) {
134138 console . log (
135139 `${ this . _tag } : Sending message` +
136- JSON . stringify ( data , undefined , 4 )
140+ JSON . stringify ( data , undefined , 4 )
137141 ) ;
138142 var originUrl =
139143 document . referrer ||
0 commit comments