diff --git a/lib/reducers/tunnelbroker-device-token-reducer.js b/lib/reducers/tunnelbroker-device-token-reducer.js --- a/lib/reducers/tunnelbroker-device-token-reducer.js +++ b/lib/reducers/tunnelbroker-device-token-reducer.js @@ -1,13 +1,21 @@ // @flow +import { setDeviceTokenActionTypes } from '../actions/device-actions.js'; import type { BaseAction } from '../types/redux-types.js'; import type { TunnelbrokerDeviceToken } from '../types/tunnelbroker-device-token-types.js'; -/* eslint-disable no-unused-vars */ function reduceTunnelbrokerDeviceToken( state: TunnelbrokerDeviceToken, action: BaseAction, ): TunnelbrokerDeviceToken { + if (action.type === setDeviceTokenActionTypes.started) { + if (!action.payload) { + return state; + } + const { deviceToken } = action.payload; + return { ...state, localToken: deviceToken }; + } + return state; } diff --git a/lib/types/redux-types.js b/lib/types/redux-types.js --- a/lib/types/redux-types.js +++ b/lib/types/redux-types.js @@ -829,7 +829,9 @@ } | { +type: 'SET_DEVICE_TOKEN_STARTED', - +payload?: void, + +payload: ?{ + +deviceToken: ?string, + }, +loadingInfo: LoadingInfo, } | { diff --git a/native/push/push-handler.react.js b/native/push/push-handler.react.js --- a/native/push/push-handler.react.js +++ b/native/push/push-handler.react.js @@ -528,13 +528,18 @@ deviceTokensMap[keyserverID] = deviceToken; } } - this.setDeviceToken(deviceTokensMap); + this.setDeviceToken(deviceTokensMap, { deviceToken }); }; - setDeviceToken(deviceTokens: DeviceTokens) { + setDeviceToken( + deviceTokens: DeviceTokens, + payload: ?{ deviceToken: ?string }, + ) { void this.props.dispatchActionPromise( setDeviceTokenActionTypes, this.props.setDeviceToken(deviceTokens), + undefined, + payload, ); } @@ -542,6 +547,8 @@ void this.props.dispatchActionPromise( setDeviceTokenActionTypes, this.props.setDeviceTokenFanout(null), + undefined, + { deviceToken: null }, ); }; diff --git a/web/push-notif/push-notifs-handler.js b/web/push-notif/push-notifs-handler.js --- a/web/push-notif/push-notifs-handler.js +++ b/web/push-notif/push-notifs-handler.js @@ -60,6 +60,8 @@ void dispatchActionPromise( setDeviceTokenActionTypes, callSetDeviceToken(token), + undefined, + { deviceToken: token }, ); }), [callSetDeviceToken, dispatchActionPromise], @@ -146,9 +148,12 @@ applicationServerKey: publicKey, }); + const token = JSON.stringify(subscription); void dispatchActionPromise( setDeviceTokenActionTypes, - callSetDeviceToken(JSON.stringify(subscription)), + callSetDeviceToken(token), + undefined, + { deviceToken: token }, ); }, [callSetDeviceToken, dispatchActionPromise, publicKey, staffCanSee]); }