From 5a4e9105605a3fd5d80bdf4385c0fb3f207b210c Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Sat, 29 Apr 2023 07:17:35 -0600 Subject: [PATCH 01/12] Add basic skeleton methods --- src/libs/PusherUtils.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/libs/PusherUtils.js b/src/libs/PusherUtils.js index 2cd614c604e5..d7425233bb77 100644 --- a/src/libs/PusherUtils.js +++ b/src/libs/PusherUtils.js @@ -4,6 +4,25 @@ import NetworkConnection from './NetworkConnection'; import * as Pusher from './Pusher/pusher'; import CONST from '../CONST'; +// Keeps track of all the callbacks that need triggered for each event type +const multiEventCallbackMapping = {}; + +/** + * @param {String} eventType + * @param {Function} callback + */ +function subscribeToMultiEvent(eventType, callback) { + +} + +/** + * @param {String} eventType + * @param {Mixed} data + */ +function triggerMultiEventHandler(eventType, data) { + +} + /** * Abstraction around subscribing to private user channel events. Handles all logs and errors automatically. * @@ -45,4 +64,6 @@ function subscribeToPrivateUserChannelEvent(eventName, accountID, onEvent) { export default { subscribeToPrivateUserChannelEvent, + subscribeToMultiEvent, + triggerMultiEventHandler, }; From 8e0a6c3f943822e8ca95addd13b3d4125bc0f40f Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Sat, 29 Apr 2023 07:20:29 -0600 Subject: [PATCH 02/12] Add basic functionality to pubsub --- src/libs/PusherUtils.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/libs/PusherUtils.js b/src/libs/PusherUtils.js index d7425233bb77..cab5f3a1e2a5 100644 --- a/src/libs/PusherUtils.js +++ b/src/libs/PusherUtils.js @@ -1,3 +1,4 @@ +import _ from 'underscore'; import CONFIG from '../CONFIG'; import Log from './Log'; import NetworkConnection from './NetworkConnection'; @@ -12,7 +13,10 @@ const multiEventCallbackMapping = {}; * @param {Function} callback */ function subscribeToMultiEvent(eventType, callback) { - + if (!multiEventCallbackMapping[eventType]) { + multiEventCallbackMapping[eventType] = []; + } + multiEventCallbackMapping[eventType].push(callback); } /** @@ -20,7 +24,10 @@ function subscribeToMultiEvent(eventType, callback) { * @param {Mixed} data */ function triggerMultiEventHandler(eventType, data) { - + if (!multiEventCallbackMapping[eventType] || multiEventCallbackMapping[eventType].length === 0) { + return; + } + _.each(multiEventCallbackMapping[eventType], callback => callback(data)); } /** From d10dc259c9a5e92944be1f16e9d0f69f06334d09 Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Sat, 29 Apr 2023 07:40:33 -0600 Subject: [PATCH 03/12] Split code to listen to old events and new events --- src/libs/Pusher/EventType.js | 4 +++ src/libs/actions/User.js | 48 ++++++++++++++++++++++++++++++------ 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/libs/Pusher/EventType.js b/src/libs/Pusher/EventType.js index a140e04121df..59b11bd3b62d 100644 --- a/src/libs/Pusher/EventType.js +++ b/src/libs/Pusher/EventType.js @@ -9,4 +9,8 @@ export default { SCREEN_SHARE_REQUEST: 'screenshareRequest', ONYX_API_UPDATE: 'onyxApiUpdate', USER_IS_TYPING: 'client-userIsTyping', + MULTIPLE_EVENTS: 'multipleEvents', + MULTIPLE_EVENT_TYPE: { + ONYX_API_UPDATE: 'onyxApiUpdate', + }, }; diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index 916733dd3a8f..5a95b8255ef3 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -484,16 +484,36 @@ function triggerNotifications(onyxUpdates) { } /** - * Initialize our pusher subscription to listen for user changes + * Handles the newest events from Pusher where a single mega multipleEvents contains + * an array of singular events all in one event + * @param {String} pusherChannelName */ -function subscribeToUserEvents() { - // If we don't have the user's accountID yet we can't subscribe so return early - if (!currentUserAccountID) { - return; - } +function subscribeToUserEventsUsingMultipleEventType(pusherChannelName) { + // Handles the mega multipleEvents from Pusher which contains an array of single events. + // Each single event is passed to PusherUtils in order to trigger the callbacks for that event + PusherUtils.subscribeToPrivateUserChannelEvent(Pusher.TYPE.MULTIPLE_EVENTS, currentUserAccountID, (pushJSON) => { + _.each(pushJSON.multipleEvents, (multipleEvent) => { + PusherUtils.triggerMultiEventHandler(multipleEvent.eventType, multipleEvent.data); + }); + }); - const pusherChannelName = `${CONST.PUSHER.PRIVATE_USER_CHANNEL_PREFIX}${currentUserAccountID}${CONFIG.PUSHER.SUFFIX}`; + // Handles Onyx updates coming from Pusher through the mega multipleEvents. + PusherUtils.subscribeToMultiEvent(Pusher.TYPE.MULTIPLE_EVENT_TYPE.ONYX_API_UPDATE, (pushJSON) => { + SequentialQueue.getCurrentRequest().then(() => { + Onyx.update(pushJSON); + triggerNotifications(pushJSON); + }); + }); +} +/** + * Handles the older Pusher events where each event was pushed separately. This is considered legacy code + * and should not be updated. Once the server is sending all pusher events using the multipleEvents type, + * then this code can be removed. This will be handled in https://github.com/Expensify/Expensify/issues/279347 + * @deprecated + * @param {String} pusherChannelName + */ +function subscribeToUserDeprecatedEvents(pusherChannelName) { // Receive any relevant Onyx updates from the server PusherUtils.subscribeToPrivateUserChannelEvent(Pusher.TYPE.ONYX_API_UPDATE, currentUserAccountID, (pushJSON) => { SequentialQueue.getCurrentRequest().then(() => { @@ -533,6 +553,20 @@ function subscribeToUserEvents() { }); } +/** + * Initialize our pusher subscription to listen for user changes + */ +function subscribeToUserEvents() { + // If we don't have the user's accountID yet we can't subscribe so return early + if (!currentUserAccountID) { + return; + } + + const pusherChannelName = `${CONST.PUSHER.PRIVATE_USER_CHANNEL_PREFIX}${currentUserAccountID}${CONFIG.PUSHER.SUFFIX}`; + subscribeToUserEventsUsingMultipleEventType(pusherChannelName); + subscribeToUserDeprecatedEvents(pusherChannelName); +} + /** * Subscribes to Expensify Card updates when checking loginList for private domains */ From 4e0a80aae84eec2b227aa015f41f164339b5e5b8 Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Sat, 29 Apr 2023 07:41:35 -0600 Subject: [PATCH 04/12] Cleanup params --- src/libs/actions/User.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index 5a95b8255ef3..3691843ae69c 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -486,9 +486,8 @@ function triggerNotifications(onyxUpdates) { /** * Handles the newest events from Pusher where a single mega multipleEvents contains * an array of singular events all in one event - * @param {String} pusherChannelName */ -function subscribeToUserEventsUsingMultipleEventType(pusherChannelName) { +function subscribeToUserEventsUsingMultipleEventType() { // Handles the mega multipleEvents from Pusher which contains an array of single events. // Each single event is passed to PusherUtils in order to trigger the callbacks for that event PusherUtils.subscribeToPrivateUserChannelEvent(Pusher.TYPE.MULTIPLE_EVENTS, currentUserAccountID, (pushJSON) => { @@ -511,9 +510,10 @@ function subscribeToUserEventsUsingMultipleEventType(pusherChannelName) { * and should not be updated. Once the server is sending all pusher events using the multipleEvents type, * then this code can be removed. This will be handled in https://github.com/Expensify/Expensify/issues/279347 * @deprecated - * @param {String} pusherChannelName */ -function subscribeToUserDeprecatedEvents(pusherChannelName) { +function subscribeToUserDeprecatedEvents() { + const pusherChannelName = `${CONST.PUSHER.PRIVATE_USER_CHANNEL_PREFIX}${currentUserAccountID}${CONFIG.PUSHER.SUFFIX}`; + // Receive any relevant Onyx updates from the server PusherUtils.subscribeToPrivateUserChannelEvent(Pusher.TYPE.ONYX_API_UPDATE, currentUserAccountID, (pushJSON) => { SequentialQueue.getCurrentRequest().then(() => { @@ -562,9 +562,8 @@ function subscribeToUserEvents() { return; } - const pusherChannelName = `${CONST.PUSHER.PRIVATE_USER_CHANNEL_PREFIX}${currentUserAccountID}${CONFIG.PUSHER.SUFFIX}`; - subscribeToUserEventsUsingMultipleEventType(pusherChannelName); - subscribeToUserDeprecatedEvents(pusherChannelName); + subscribeToUserEventsUsingMultipleEventType(); + subscribeToUserDeprecatedEvents(); } /** From a22baa2ee1be452ae96c98ca1dae783fca3cb9fd Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Sat, 29 Apr 2023 07:50:51 -0600 Subject: [PATCH 05/12] Add more multipleEvent handlers --- src/libs/Pusher/EventType.js | 2 ++ src/libs/actions/User.js | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/libs/Pusher/EventType.js b/src/libs/Pusher/EventType.js index 59b11bd3b62d..425eebd313da 100644 --- a/src/libs/Pusher/EventType.js +++ b/src/libs/Pusher/EventType.js @@ -12,5 +12,7 @@ export default { MULTIPLE_EVENTS: 'multipleEvents', MULTIPLE_EVENT_TYPE: { ONYX_API_UPDATE: 'onyxApiUpdate', + PREFERRED_LOCALE: 'preferredLocale', + SCREEN_SHARE_REQUEST: 'screenshareRequest', }, }; diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index 3691843ae69c..ccd76aabbdf0 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -503,6 +503,16 @@ function subscribeToUserEventsUsingMultipleEventType() { triggerNotifications(pushJSON); }); }); + + // Handles updates to the user's preferred locale + PusherUtils.subscribeToMultiEvent(Pusher.TYPE.MULTIPLE_EVENT_TYPE.PREFERRED_LOCALE, (pushJSON) => { + Onyx.merge(ONYXKEYS.NVP_PREFERRED_LOCALE, pushJSON.preferredLocale); + }); + + // Handles screenshare requests sent by GuidesPlus agents + PusherUtils.subscribeToMultiEvent(Pusher.TYPE.MULTIPLE_EVENT_TYPE.SCREEN_SHARE_REQUEST, (pushJSON) => { + Onyx.merge(ONYXKEYS.SCREEN_SHARE_REQUEST, pushJSON); + }); } /** From 6cd800704df78f52944db717937f4d30dca1f3e8 Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Sat, 29 Apr 2023 08:01:28 -0600 Subject: [PATCH 06/12] Subscribe to the card event just like the others --- src/libs/Pusher/EventType.js | 1 + src/libs/actions/User.js | 48 +++++++++---------- src/pages/ReimbursementAccount/EnableStep.js | 2 - .../card/WorkspaceCardVBANoECardView.js | 2 - 4 files changed, 23 insertions(+), 30 deletions(-) diff --git a/src/libs/Pusher/EventType.js b/src/libs/Pusher/EventType.js index 425eebd313da..e1d565654329 100644 --- a/src/libs/Pusher/EventType.js +++ b/src/libs/Pusher/EventType.js @@ -14,5 +14,6 @@ export default { ONYX_API_UPDATE: 'onyxApiUpdate', PREFERRED_LOCALE: 'preferredLocale', SCREEN_SHARE_REQUEST: 'screenshareRequest', + EXPENSIFY_CARD_UPDATE: 'expensifyCardUpdate', }, }; diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index ccd76aabbdf0..b55daccdbbc6 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -513,6 +513,15 @@ function subscribeToUserEventsUsingMultipleEventType() { PusherUtils.subscribeToMultiEvent(Pusher.TYPE.MULTIPLE_EVENT_TYPE.SCREEN_SHARE_REQUEST, (pushJSON) => { Onyx.merge(ONYXKEYS.SCREEN_SHARE_REQUEST, pushJSON); }); + + // Handle Expensify Card approval flow updates + PusherUtils.subscribeToMultiEvent(Pusher.TYPE.MULTIPLE_EVENT_TYPE.EXPENSIFY_CARD_UPDATE, (pushJSON) => { + if (pushJSON.isUsingExpensifyCard) { + Onyx.merge(ONYXKEYS.USER, {isUsingExpensifyCard: pushJSON.isUsingExpensifyCard, isCheckingDomain: null}); + } else { + Onyx.merge(ONYXKEYS.USER, {isCheckingDomain: pushJSON.isCheckingDomain}); + } + }); } /** @@ -561,36 +570,11 @@ function subscribeToUserDeprecatedEvents() { {error, pusherChannelName, eventName: Pusher.TYPE.SCREEN_SHARE_REQUEST}, ); }); -} - -/** - * Initialize our pusher subscription to listen for user changes - */ -function subscribeToUserEvents() { - // If we don't have the user's accountID yet we can't subscribe so return early - if (!currentUserAccountID) { - return; - } - - subscribeToUserEventsUsingMultipleEventType(); - subscribeToUserDeprecatedEvents(); -} - -/** - * Subscribes to Expensify Card updates when checking loginList for private domains - */ -function subscribeToExpensifyCardUpdates() { - if (!currentUserAccountID) { - return; - } - - const pusherChannelName = `${CONST.PUSHER.PRIVATE_USER_CHANNEL_PREFIX}${currentUserAccountID}${CONFIG.PUSHER.SUFFIX}`; // Handle Expensify Card approval flow updates Pusher.subscribe(pusherChannelName, Pusher.TYPE.EXPENSIFY_CARD_UPDATE, (pushJSON) => { if (pushJSON.isUsingExpensifyCard) { Onyx.merge(ONYXKEYS.USER, {isUsingExpensifyCard: pushJSON.isUsingExpensifyCard, isCheckingDomain: null}); - Pusher.unsubscribe(pusherChannelName, Pusher.TYPE.EXPENSIFY_CARD_UPDATE); } else { Onyx.merge(ONYXKEYS.USER, {isCheckingDomain: pushJSON.isCheckingDomain}); } @@ -607,6 +591,19 @@ function subscribeToExpensifyCardUpdates() { }); } +/** + * Initialize our pusher subscription to listen for user changes + */ +function subscribeToUserEvents() { + // If we don't have the user's accountID yet we can't subscribe so return early + if (!currentUserAccountID) { + return; + } + + subscribeToUserEventsUsingMultipleEventType(); + subscribeToUserDeprecatedEvents(); +} + /** * Sync preferredSkinTone with Onyx and Server * @param {String} skinTone @@ -739,7 +736,6 @@ export { updatePreferredSkinTone, setShouldUseStagingServer, clearUserErrorMessage, - subscribeToExpensifyCardUpdates, updateFrequentlyUsedEmojis, joinScreenShare, clearScreenShareRequest, diff --git a/src/pages/ReimbursementAccount/EnableStep.js b/src/pages/ReimbursementAccount/EnableStep.js index 03b431b270f1..f48ba5f2f027 100644 --- a/src/pages/ReimbursementAccount/EnableStep.js +++ b/src/pages/ReimbursementAccount/EnableStep.js @@ -22,7 +22,6 @@ import userPropTypes from '../settings/userPropTypes'; import Section from '../../components/Section'; import * as Illustrations from '../../components/Icon/Illustrations'; import * as Link from '../../libs/actions/Link'; -import * as User from '../../libs/actions/User'; import ScreenWrapper from '../../components/ScreenWrapper'; import * as BankAccounts from '../../libs/actions/ReimbursementAccount'; import WorkspaceResetBankAccountModal from '../workspace/WorkspaceResetBankAccountModal'; @@ -101,7 +100,6 @@ const EnableStep = (props) => { text={props.translate('workspace.bankAccount.addWorkEmail')} onPress={() => { Link.openOldDotLink(CONST.ADD_SECONDARY_LOGIN_URL); - User.subscribeToExpensifyCardUpdates(); }} icon={Expensicons.Mail} style={[styles.mt4]} diff --git a/src/pages/workspace/card/WorkspaceCardVBANoECardView.js b/src/pages/workspace/card/WorkspaceCardVBANoECardView.js index dbf9a213c832..7f25aa82619d 100644 --- a/src/pages/workspace/card/WorkspaceCardVBANoECardView.js +++ b/src/pages/workspace/card/WorkspaceCardVBANoECardView.js @@ -10,7 +10,6 @@ import * as Illustrations from '../../../components/Icon/Illustrations'; import UnorderedList from '../../../components/UnorderedList'; import Section from '../../../components/Section'; import * as Link from '../../../libs/actions/Link'; -import * as User from '../../../libs/actions/User'; import ONYXKEYS from '../../../ONYXKEYS'; import compose from '../../../libs/compose'; import CONST from '../../../CONST'; @@ -47,7 +46,6 @@ const WorkspaceCardVBANoECardView = props => ( text={props.translate('workspace.card.addWorkEmail')} onPress={() => { Link.openOldDotLink(CONST.ADD_SECONDARY_LOGIN_URL); - User.subscribeToExpensifyCardUpdates(); }} icon={Expensicons.Mail} style={[styles.mt4]} From 3fc4f2466b47d4d2bf1ce5f94ce38a2717b3a31e Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Sat, 29 Apr 2023 08:12:32 -0600 Subject: [PATCH 07/12] Simplify to only allow a single callback per event --- src/libs/PusherUtils.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/libs/PusherUtils.js b/src/libs/PusherUtils.js index cab5f3a1e2a5..200c994b5bdb 100644 --- a/src/libs/PusherUtils.js +++ b/src/libs/PusherUtils.js @@ -13,10 +13,7 @@ const multiEventCallbackMapping = {}; * @param {Function} callback */ function subscribeToMultiEvent(eventType, callback) { - if (!multiEventCallbackMapping[eventType]) { - multiEventCallbackMapping[eventType] = []; - } - multiEventCallbackMapping[eventType].push(callback); + multiEventCallbackMapping[eventType] = callback; } /** @@ -24,10 +21,10 @@ function subscribeToMultiEvent(eventType, callback) { * @param {Mixed} data */ function triggerMultiEventHandler(eventType, data) { - if (!multiEventCallbackMapping[eventType] || multiEventCallbackMapping[eventType].length === 0) { + if (!multiEventCallbackMapping[eventType]) { return; } - _.each(multiEventCallbackMapping[eventType], callback => callback(data)); + multiEventCallbackMapping[eventType](data); } /** From 5d7d0335edb73503103c844967a56334f6e3abeb Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Sat, 29 Apr 2023 08:31:58 -0600 Subject: [PATCH 08/12] Remove unused import --- src/libs/PusherUtils.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/PusherUtils.js b/src/libs/PusherUtils.js index 200c994b5bdb..cb8c855ef95c 100644 --- a/src/libs/PusherUtils.js +++ b/src/libs/PusherUtils.js @@ -1,4 +1,3 @@ -import _ from 'underscore'; import CONFIG from '../CONFIG'; import Log from './Log'; import NetworkConnection from './NetworkConnection'; From c0f6fea9f8197e3b63b57e26af104706520e9650 Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Mon, 1 May 2023 10:53:50 -0600 Subject: [PATCH 09/12] Remove unused events --- src/libs/Pusher/EventType.js | 3 --- src/libs/actions/User.js | 19 ------------------- 2 files changed, 22 deletions(-) diff --git a/src/libs/Pusher/EventType.js b/src/libs/Pusher/EventType.js index e1d565654329..59b11bd3b62d 100644 --- a/src/libs/Pusher/EventType.js +++ b/src/libs/Pusher/EventType.js @@ -12,8 +12,5 @@ export default { MULTIPLE_EVENTS: 'multipleEvents', MULTIPLE_EVENT_TYPE: { ONYX_API_UPDATE: 'onyxApiUpdate', - PREFERRED_LOCALE: 'preferredLocale', - SCREEN_SHARE_REQUEST: 'screenshareRequest', - EXPENSIFY_CARD_UPDATE: 'expensifyCardUpdate', }, }; diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index b55daccdbbc6..3a10e84f2717 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -503,25 +503,6 @@ function subscribeToUserEventsUsingMultipleEventType() { triggerNotifications(pushJSON); }); }); - - // Handles updates to the user's preferred locale - PusherUtils.subscribeToMultiEvent(Pusher.TYPE.MULTIPLE_EVENT_TYPE.PREFERRED_LOCALE, (pushJSON) => { - Onyx.merge(ONYXKEYS.NVP_PREFERRED_LOCALE, pushJSON.preferredLocale); - }); - - // Handles screenshare requests sent by GuidesPlus agents - PusherUtils.subscribeToMultiEvent(Pusher.TYPE.MULTIPLE_EVENT_TYPE.SCREEN_SHARE_REQUEST, (pushJSON) => { - Onyx.merge(ONYXKEYS.SCREEN_SHARE_REQUEST, pushJSON); - }); - - // Handle Expensify Card approval flow updates - PusherUtils.subscribeToMultiEvent(Pusher.TYPE.MULTIPLE_EVENT_TYPE.EXPENSIFY_CARD_UPDATE, (pushJSON) => { - if (pushJSON.isUsingExpensifyCard) { - Onyx.merge(ONYXKEYS.USER, {isUsingExpensifyCard: pushJSON.isUsingExpensifyCard, isCheckingDomain: null}); - } else { - Onyx.merge(ONYXKEYS.USER, {isCheckingDomain: pushJSON.isCheckingDomain}); - } - }); } /** From 032eaa99e8578d68543b3667cc5e72bf9292ac7d Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Mon, 1 May 2023 11:02:24 -0600 Subject: [PATCH 10/12] Removed more unused events --- src/libs/Pusher/EventType.js | 3 --- src/libs/actions/User.js | 51 ------------------------------------ 2 files changed, 54 deletions(-) diff --git a/src/libs/Pusher/EventType.js b/src/libs/Pusher/EventType.js index 59b11bd3b62d..639e10020fc7 100644 --- a/src/libs/Pusher/EventType.js +++ b/src/libs/Pusher/EventType.js @@ -4,9 +4,6 @@ */ export default { REPORT_COMMENT: 'reportComment', - PREFERRED_LOCALE: 'preferredLocale', - EXPENSIFY_CARD_UPDATE: 'expensifyCardUpdate', - SCREEN_SHARE_REQUEST: 'screenshareRequest', ONYX_API_UPDATE: 'onyxApiUpdate', USER_IS_TYPING: 'client-userIsTyping', MULTIPLE_EVENTS: 'multipleEvents', diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index 3a10e84f2717..5785fbe34de1 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -512,8 +512,6 @@ function subscribeToUserEventsUsingMultipleEventType() { * @deprecated */ function subscribeToUserDeprecatedEvents() { - const pusherChannelName = `${CONST.PUSHER.PRIVATE_USER_CHANNEL_PREFIX}${currentUserAccountID}${CONFIG.PUSHER.SUFFIX}`; - // Receive any relevant Onyx updates from the server PusherUtils.subscribeToPrivateUserChannelEvent(Pusher.TYPE.ONYX_API_UPDATE, currentUserAccountID, (pushJSON) => { SequentialQueue.getCurrentRequest().then(() => { @@ -521,55 +519,6 @@ function subscribeToUserDeprecatedEvents() { triggerNotifications(pushJSON); }); }); - - // Live-update an user's preferred locale - Pusher.subscribe(pusherChannelName, Pusher.TYPE.PREFERRED_LOCALE, (pushJSON) => { - Onyx.merge(ONYXKEYS.NVP_PREFERRED_LOCALE, pushJSON.preferredLocale); - }, - () => { - NetworkConnection.triggerReconnectionCallbacks('pusher re-subscribed to private user channel'); - }) - .catch((error) => { - Log.hmmm( - '[User] Failed to subscribe to Pusher channel', - false, - {error, pusherChannelName, eventName: Pusher.TYPE.PREFERRED_LOCALE}, - ); - }); - - // Subscribe to screen share requests sent by GuidesPlus agents - Pusher.subscribe(pusherChannelName, Pusher.TYPE.SCREEN_SHARE_REQUEST, (pushJSON) => { - Onyx.merge(ONYXKEYS.SCREEN_SHARE_REQUEST, pushJSON); - }, - () => { - NetworkConnection.triggerReconnectionCallbacks('pusher re-subscribed to private user channel'); - }) - .catch((error) => { - Log.hmmm( - '[User] Failed to subscribe to Pusher channel', - false, - {error, pusherChannelName, eventName: Pusher.TYPE.SCREEN_SHARE_REQUEST}, - ); - }); - - // Handle Expensify Card approval flow updates - Pusher.subscribe(pusherChannelName, Pusher.TYPE.EXPENSIFY_CARD_UPDATE, (pushJSON) => { - if (pushJSON.isUsingExpensifyCard) { - Onyx.merge(ONYXKEYS.USER, {isUsingExpensifyCard: pushJSON.isUsingExpensifyCard, isCheckingDomain: null}); - } else { - Onyx.merge(ONYXKEYS.USER, {isCheckingDomain: pushJSON.isCheckingDomain}); - } - }, - () => { - NetworkConnection.triggerReconnectionCallbacks('pusher re-subscribed to private user channel'); - }) - .catch((error) => { - Log.info( - '[User] Failed to subscribe to Pusher channel', - false, - {error, pusherChannelName, eventName: Pusher.TYPE.EXPENSIFY_CARD_UPDATE}, - ); - }); } /** From 995f1965a08996557d91979ac01308e4615863a0 Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Mon, 1 May 2023 11:03:02 -0600 Subject: [PATCH 11/12] Remove unused imports --- src/libs/actions/User.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index 5785fbe34de1..456ba833df63 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -4,13 +4,10 @@ import Onyx from 'react-native-onyx'; import moment from 'moment'; import ONYXKEYS from '../../ONYXKEYS'; import * as API from '../API'; -import CONFIG from '../../CONFIG'; import CONST from '../../CONST'; import Navigation from '../Navigation/Navigation'; import ROUTES from '../../ROUTES'; import * as Pusher from '../Pusher/pusher'; -import Log from '../Log'; -import NetworkConnection from '../NetworkConnection'; import Growl from '../Growl'; import * as Localize from '../Localize'; import * as Link from './Link'; From 40f95bf7771d5f636c86077552036b4839749f9b Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Wed, 3 May 2023 12:43:55 -0600 Subject: [PATCH 12/12] Fix the way data is accessed --- src/libs/actions/User.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index 456ba833df63..c4d43c7b71c8 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -488,7 +488,7 @@ function subscribeToUserEventsUsingMultipleEventType() { // Handles the mega multipleEvents from Pusher which contains an array of single events. // Each single event is passed to PusherUtils in order to trigger the callbacks for that event PusherUtils.subscribeToPrivateUserChannelEvent(Pusher.TYPE.MULTIPLE_EVENTS, currentUserAccountID, (pushJSON) => { - _.each(pushJSON.multipleEvents, (multipleEvent) => { + _.each(pushJSON, (multipleEvent) => { PusherUtils.triggerMultiEventHandler(multipleEvent.eventType, multipleEvent.data); }); });