@@ -5,41 +5,41 @@ module openflow {
55 [ key : string ] : T ;
66 }
77 interface WebAppInterface {
8- getFirebaseToken ( ) : any ;
9- getOneSignalRegisteredId ( ) : any ;
10- isProductPurchased ( ) : any ;
11- showLoader ( ) : void ;
12- hideLoader ( ) : void ;
13- rateApp ( ) : void ;
14- playSound ( file :string ) : void ;
15- createNotification ( displayname :string , message :string ) :void ;
8+ getFirebaseToken ( ) : any ;
9+ getOneSignalRegisteredId ( ) : any ;
10+ isProductPurchased ( ) : any ;
11+ showLoader ( ) : void ;
12+ hideLoader ( ) : void ;
13+ rateApp ( ) : void ;
14+ playSound ( file : string ) : void ;
15+ createNotification ( displayname : string , message : string ) : void ;
1616
1717 }
1818 declare var android : WebAppInterface ;
1919
2020 type QueuedMessageCallback = ( msg : any ) => any ;
2121 export class QueuedMessage {
22- constructor ( message :any , cb : QueuedMessageCallback ) {
22+ constructor ( message : any , cb : QueuedMessageCallback ) {
2323 this . id = message . id ;
2424 this . message = message ;
2525 this . cb = cb ;
2626 }
2727 public cb : QueuedMessageCallback ;
28- public id :string ;
29- public message :any ;
28+ public id : string ;
29+ public message : any ;
3030 }
3131 export class WebSocketClient {
32- private _socketObject :ReconnectingWebSocket = null ;
33- private _url :string = null ;
34- private static instance :WebSocketClient = null ;
32+ private _socketObject : ReconnectingWebSocket = null ;
33+ private _url : string = null ;
34+ private static instance : WebSocketClient = null ;
3535 private _receiveQueue : SocketMessage [ ] = [ ] ;
3636 private _sendQueue : SocketMessage [ ] = [ ] ;
37- public user :TokenUser = null ;
38- public jwt :string = null ;
37+ public user : TokenUser = null ;
38+ public jwt : string = null ;
3939 static $inject = [ "$rootScope" , "$location" , "$window" ] ;
4040 public messageQueue : IHashTable < QueuedMessage > = { } ;
41- constructor ( public $rootScope :ng . IRootScopeService , public $location , public $window :any ) {
42- this . getJSON ( "/config" , async ( error :any , data :any ) => {
41+ constructor ( public $rootScope : ng . IRootScopeService , public $location , public $window : any ) {
42+ this . getJSON ( "/config" , async ( error : any , data : any ) => {
4343 console . debug ( "WebSocketClient::onopen: connecting to " + data . wshost ) ;
4444 this . _socketObject = new ReconnectingWebSocket ( data . wshost ) ;
4545 this . _socketObject . onopen = ( this . onopen ) . bind ( this ) ;
@@ -49,13 +49,13 @@ module openflow {
4949 WebSocketClient . instance = this ;
5050 } ) ;
5151 }
52- public connect ( ) :void {
52+ public connect ( ) : void {
5353 }
54- getJSON ( url :string , callback :any ) : void {
54+ getJSON ( url : string , callback : any ) : void {
5555 var xhr : XMLHttpRequest = new XMLHttpRequest ( ) ;
5656 xhr . open ( "GET" , url , true ) ;
5757 xhr . responseType = "json" ;
58- xhr . onload = function ( ) :void {
58+ xhr . onload = function ( ) : void {
5959 var status : number = xhr . status ;
6060 if ( status === 200 ) {
6161 callback ( null , xhr . response ) ;
@@ -66,7 +66,7 @@ module openflow {
6666 xhr . send ( ) ;
6767 }
6868 onSignedin ( callback ) {
69- if ( this . user !== null ) {
69+ if ( this . user !== null ) {
7070 callback ( this . user ) ;
7171 return ;
7272 }
@@ -76,31 +76,45 @@ module openflow {
7676 callback ( this . user ) ;
7777 } ) ;
7878 }
79- private async onopen ( evt : Event ) :Promise < void > {
79+ iosGetOnesignalToken ( ) {
80+ return new Promise < any > ( async ( resolve , reject ) => {
81+ try {
82+ ( window as any ) . bridge . post ( 'onesignaltoken' , { } , ( results , error ) => {
83+ if ( error ) { return reject ( error ) ; }
84+ resolve ( results . token ) ;
85+ console . log ( results . token ) ;
86+ } ) ;
87+ } catch ( error ) {
88+ reject ( error ) ;
89+ }
90+ } ) ;
91+
92+ }
93+ private async onopen ( evt : Event ) : Promise < void > {
8094 console . log ( "WebSocketClient::onopen: connected" ) ;
81- var me :WebSocketClient = WebSocketClient . instance ;
82- var q :SigninMessage = new SigninMessage ( ) ;
83- this . getJSON ( "/jwt" , async ( error :any , data :any ) => {
95+ var me : WebSocketClient = WebSocketClient . instance ;
96+ var q : SigninMessage = new SigninMessage ( ) ;
97+ this . getJSON ( "/jwt" , async ( error : any , data : any ) => {
8498 try {
85- if ( data === null || data === undefined || data . jwt === "" ) {
86- if ( this . $location . path ( ) !== "/Login" ) {
99+ if ( data === null || data === undefined || data . jwt === "" ) {
100+ if ( this . $location . path ( ) !== "/Login" ) {
87101 console . log ( "path: " + this . $location . path ( ) ) ;
88102 console . log ( "WebSocketClient::onopen: Not signed in, redirect /Login" ) ;
89103 this . $location . path ( "/Login" ) ;
90104 this . $rootScope . $apply ( ) ;
91105 }
92106 return ;
93107 }
94- var _android :WebAppInterface = null ;
108+ var _android : WebAppInterface = null ;
95109 try {
96110 _android = android ;
97- } catch ( error ) {
111+ } catch ( error ) {
98112 }
99113 q . jwt = data . jwt ;
100114 q . rawAssertion = data . rawAssertion ;
101115 q . realm = "browser" ;
102116 console . log ( "WebSocketClient::onopen: Validate jwt" ) ;
103- if ( _android != null ) {
117+ if ( _android != null ) {
104118 q . realm = "android" ;
105119 try {
106120 q . firebasetoken = _android . getFirebaseToken ( ) ;
@@ -112,10 +126,16 @@ module openflow {
112126 } catch ( error ) {
113127 console . log ( error ) ;
114128 }
129+ try {
130+ var results = await this . iosGetOnesignalToken ( ) ;
131+ q . onesignalid = results . token ;
132+ } catch ( error ) {
133+ console . log ( error ) ;
134+ }
115135 }
116- var msg :Message = new Message ( ) ; msg . command = "signin" ; msg . data = JSON . stringify ( q ) ;
117- var a :any = await this . Send ( msg ) ;
118- var result :SigninMessage = a ;
136+ var msg : Message = new Message ( ) ; msg . command = "signin" ; msg . data = JSON . stringify ( q ) ;
137+ var a : any = await this . Send ( msg ) ;
138+ var result : SigninMessage = a ;
119139 this . user = result . user ;
120140 this . $rootScope . $broadcast ( msg . command , result ) ;
121141 } catch ( error ) {
@@ -126,80 +146,80 @@ module openflow {
126146 }
127147 } ) ;
128148 }
129- private onclose ( evt : CloseEvent ) :void {
130- var me :WebSocketClient = WebSocketClient . instance ;
149+ private onclose ( evt : CloseEvent ) : void {
150+ var me : WebSocketClient = WebSocketClient . instance ;
131151 }
132- private onerror ( evt : ErrorEvent ) :void {
133- var me :WebSocketClient = WebSocketClient . instance ;
152+ private onerror ( evt : ErrorEvent ) : void {
153+ var me : WebSocketClient = WebSocketClient . instance ;
134154 }
135- private onmessage ( evt : MessageEvent ) :void {
136- var me :WebSocketClient = WebSocketClient . instance ;
137- let msg :SocketMessage = SocketMessage . fromjson ( evt . data ) ;
155+ private onmessage ( evt : MessageEvent ) : void {
156+ var me : WebSocketClient = WebSocketClient . instance ;
157+ let msg : SocketMessage = SocketMessage . fromjson ( evt . data ) ;
138158 me . _receiveQueue . push ( msg ) ;
139159 me . ProcessQueue . bind ( me ) ( ) ;
140160 }
141- public async Send < T > ( message : Message ) :Promise < T > {
161+ public async Send < T > ( message : Message ) : Promise < T > {
142162 return new Promise < T > ( async ( resolve , reject ) => {
143- this . _Send ( message , ( ( msg ) => {
144- if ( msg . error !== null && msg . error !== undefined ) { console . log ( message ) ; return reject ( msg . error ) ; }
163+ this . _Send ( message , ( ( msg ) => {
164+ if ( msg . error !== null && msg . error !== undefined ) { console . log ( message ) ; return reject ( msg . error ) ; }
145165 resolve ( msg ) ;
146166 } ) . bind ( this ) ) ;
147167 } ) ;
148168 }
149- private _Send ( message : Message , cb : QueuedMessageCallback ) :void {
169+ private _Send ( message : Message , cb : QueuedMessageCallback ) : void {
150170 var messages : string [ ] = this . chunkString ( message . data , 500 ) ;
151- if ( messages === null || messages === undefined || messages . length === 0 ) {
171+ if ( messages === null || messages === undefined || messages . length === 0 ) {
152172 var singlemessage : SocketMessage = SocketMessage . frommessage ( message , "" , 1 , 0 ) ;
153- if ( message . replyto === null || message . replyto === undefined ) {
173+ if ( message . replyto === null || message . replyto === undefined ) {
154174 this . messageQueue [ singlemessage . id ] = new QueuedMessage ( singlemessage , cb ) ;
155175 }
156176 this . _sendQueue . push ( singlemessage ) ;
157177 return ;
158178 }
159- if ( message . id === null || message . id === undefined ) { message . id = Math . random ( ) . toString ( 36 ) . substr ( 2 , 9 ) ; }
160- for ( let i : number = 0 ; i < messages . length ; i ++ ) {
179+ if ( message . id === null || message . id === undefined ) { message . id = Math . random ( ) . toString ( 36 ) . substr ( 2 , 9 ) ; }
180+ for ( let i : number = 0 ; i < messages . length ; i ++ ) {
161181 var _message : SocketMessage = SocketMessage . frommessage ( message , messages [ i ] , messages . length , i ) ;
162182 this . _sendQueue . push ( _message ) ;
163183 }
164- if ( message . replyto === null || message . replyto === undefined ) {
184+ if ( message . replyto === null || message . replyto === undefined ) {
165185 this . messageQueue [ message . id ] = new QueuedMessage ( message , cb ) ;
166186 }
167187 this . ProcessQueue ( ) ;
168188 }
169189 public chunkString ( str : string , length : number ) : string [ ] {
170- if ( str === null || str === undefined ) {
190+ if ( str === null || str === undefined ) {
171191 return [ ] ;
172192 }
173193 // tslint:disable-next-line: quotemark
174194 return str . match ( new RegExp ( '.{1,' + length + '}' , 'g' ) ) ;
175195 }
176- private ProcessQueue ( ) :void {
196+ private ProcessQueue ( ) : void {
177197 let ids : string [ ] = [ ] ;
178198 this . _receiveQueue . forEach ( msg => {
179- if ( ids . indexOf ( msg . id ) === - 1 ) { ids . push ( msg . id ) ; }
199+ if ( ids . indexOf ( msg . id ) === - 1 ) { ids . push ( msg . id ) ; }
180200 } ) ;
181201 ids . forEach ( id => {
182- var msgs : SocketMessage [ ] = this . _receiveQueue . filter ( function ( msg :SocketMessage ) :boolean { return msg . id === id ; } ) ;
202+ var msgs : SocketMessage [ ] = this . _receiveQueue . filter ( function ( msg : SocketMessage ) : boolean { return msg . id === id ; } ) ;
183203 msgs . sort ( ( a , b ) => a . index - b . index ) ;
184204 var first : SocketMessage = msgs [ 0 ] ;
185- if ( first . count === msgs . length ) {
186- if ( msgs . length === 1 ) {
205+ if ( first . count === msgs . length ) {
206+ if ( msgs . length === 1 ) {
187207 var singleresult : Message = Message . frommessage ( first , first . data ) ;
188- this . _receiveQueue = this . _receiveQueue . filter ( function ( msg : SocketMessage ) :boolean { return msg . id !== id ; } ) ;
208+ this . _receiveQueue = this . _receiveQueue . filter ( function ( msg : SocketMessage ) : boolean { return msg . id !== id ; } ) ;
189209 singleresult . Process ( this ) ;
190210 } else {
191211 var buffer : string = "" ;
192212 msgs . forEach ( msg => {
193- if ( msg . data !== null && msg . data !== undefined ) { buffer += msg . data ; }
213+ if ( msg . data !== null && msg . data !== undefined ) { buffer += msg . data ; }
194214 } ) ;
195215 var result : Message = Message . frommessage ( first , buffer ) ;
196- this . _receiveQueue = this . _receiveQueue . filter ( function ( msg : SocketMessage ) :boolean { return msg . id !== id ; } ) ;
216+ this . _receiveQueue = this . _receiveQueue . filter ( function ( msg : SocketMessage ) : boolean { return msg . id !== id ; } ) ;
197217 result . Process ( this ) ;
198218 }
199- this . _receiveQueue = this . _receiveQueue . filter ( function ( msg : SocketMessage ) :boolean { return msg . id !== id ; } ) ;
219+ this . _receiveQueue = this . _receiveQueue . filter ( function ( msg : SocketMessage ) : boolean { return msg . id !== id ; } ) ;
200220 }
201221 } ) ;
202- if ( this . _socketObject !== null && this . _socketObject . readyState !== 1 ) {
222+ if ( this . _socketObject !== null && this . _socketObject . readyState !== 1 ) {
203223 this . connect ( ) ;
204224 setTimeout ( ( ) => {
205225 this . ProcessQueue ( ) ;
@@ -208,10 +228,10 @@ module openflow {
208228 }
209229 this . _sendQueue . forEach ( msg => {
210230 try {
211- if ( this . _socketObject !== null && this . _socketObject . readyState === 1 ) {
231+ if ( this . _socketObject !== null && this . _socketObject . readyState === 1 ) {
212232 let id : string = msg . id ;
213233 this . _socketObject . send ( JSON . stringify ( msg ) ) ;
214- this . _sendQueue = this . _sendQueue . filter ( function ( msg : SocketMessage ) :boolean { return msg . id !== id ; } ) ;
234+ this . _sendQueue = this . _sendQueue . filter ( function ( msg : SocketMessage ) : boolean { return msg . id !== id ; } ) ;
215235 }
216236 } catch ( error ) {
217237 console . error ( error ) ;
0 commit comments