Skip to content

Commit a2f77b4

Browse files
committed
add iosGetOnesignalToken
1 parent 51e9901 commit a2f77b4

2 files changed

Lines changed: 84 additions & 64 deletions

File tree

OpenFlow/src/public/WebSocketClient.ts

Lines changed: 83 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -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);

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.0.123
1+
0.0.124

0 commit comments

Comments
 (0)