Skip to content

Commit 7aef33d

Browse files
authored
Merge pull request #17 from AplaProject/hotfix/centrifugo_init
Initialize centrifugo automatically
2 parents aa52e19 + 3e36087 commit 7aef33d

4 files changed

Lines changed: 51 additions & 9 deletions

File tree

src/app/modules/engine/epics/discoverNetworkEpic.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import { Observable } from 'rxjs';
88
import { discoverNetwork } from '../actions';
99
import NodeObservable from '../util/NodeObservable';
1010
import { discover } from 'services/network';
11-
import { connect } from 'modules/socket/actions';
1211
import { mergeFullNodes } from 'modules/storage/actions';
1312
import NetworkError from 'services/network/errors';
1413

@@ -38,13 +37,6 @@ const setNetworkEpic: Epic = (action$, store, { api, defaultKey }) => action$.of
3837
}
3938
}
4039
})),
41-
Observable.of(connect.started({
42-
wsHost: network.socketUrl || result.socketUrl,
43-
session: result.loginResult.token,
44-
socketToken: result.loginResult.notify_key,
45-
timestamp: result.loginResult.timestamp,
46-
userID: result.loginResult.key_id
47-
})),
4840
Observable.of(mergeFullNodes({
4941
uuid: network.uuid,
5042
fullNodes: result.fullNodes

src/app/modules/socket/epic.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import subscribeWalletsEpic from './epics/subscribeWalletsEpic';
1313
import subscribeReconnectEpic from './epics/subscribeReconnectEpic';
1414
import unsubscribeRemovedWalletEpic from './epics/unsubscribeRemovedWalletEpic';
1515
import subscribeWalletEpic from './epics/subscribeWalletEpic';
16+
import initConnectEpic from './epics/initConnectEpic';
1617

1718
export default combineEpics(
1819
connectEpic,
@@ -23,5 +24,6 @@ export default combineEpics(
2324
subscribeWalletsEpic,
2425
subscribeWalletEpic,
2526
subscribeReconnectEpic,
26-
unsubscribeRemovedWalletEpic
27+
unsubscribeRemovedWalletEpic,
28+
initConnectEpic
2729
);
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) EGAAS S.A. All rights reserved.
3+
* See LICENSE in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
import { Epic } from 'modules';
7+
import { Observable } from 'rxjs/Observable';
8+
import { discoverNetwork, initialize } from 'modules/engine/actions';
9+
import { connect } from '../actions';
10+
import keyring from 'lib/keyring';
11+
12+
const initConnectEpic: Epic = (action$, store, { api, defaultKey }) => action$.ofType(discoverNetwork.done.type, initialize.done.type)
13+
.filter(() => !!store.getState().engine.guestSession)
14+
.flatMap(action => {
15+
const state = store.getState();
16+
const network = state.storage.networks.find(n => n.uuid === state.engine.guestSession.network.uuid);
17+
18+
if (!network) {
19+
return Observable.empty<never>();
20+
}
21+
22+
const publicKey = keyring.generatePublicKey(defaultKey);
23+
const client = api({
24+
apiHost: state.engine.guestSession.network.apiHost
25+
});
26+
27+
return Observable.from(client.getUid())
28+
.flatMap(uid => client.authorize(uid.token).login({
29+
publicKey,
30+
signature: keyring.sign(uid.uid, defaultKey)
31+
}))
32+
.flatMap(loginResult =>
33+
Observable.from(client.authorize(loginResult.token).getConfig({
34+
name: 'centrifugo'
35+
36+
})).map(centrifugo => connect.started({
37+
wsHost: network.socketUrl || centrifugo,
38+
session: loginResult.token,
39+
socketToken: loginResult.notify_key,
40+
timestamp: loginResult.timestamp,
41+
userID: loginResult.key_id
42+
}))
43+
)
44+
.catch((e: any) => Observable.empty<never>());
45+
});
46+
47+
export default initConnectEpic;

src/app/modules/socket/reducers/connectDoneHandler.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const connectDoneHandler: Reducer<typeof connect.done, State> = (state, payload)
1111
...state,
1212
session: payload.result.session,
1313
socket: payload.result.instance,
14+
notifications: [],
1415
connected: true
1516
});
1617

0 commit comments

Comments
 (0)