From 10aeb962769a6a862b435add6c12ef2c908bcc65 Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Thu, 7 Jul 2022 11:42:04 -0600 Subject: [PATCH 1/6] rm Report_TogglePinned from deprecatedAPI --- src/libs/deprecatedAPI.js | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/libs/deprecatedAPI.js b/src/libs/deprecatedAPI.js index 24a9c3e9c73c..183139a9ffcf 100644 --- a/src/libs/deprecatedAPI.js +++ b/src/libs/deprecatedAPI.js @@ -330,19 +330,6 @@ function Report_GetHistory(parameters) { return Network.post(commandName, parameters); } -/** - * @param {Object} parameters - * @param {Number} parameters.reportID - * @param {Boolean} parameters.pinnedValue - * @returns {Promise} - */ -function Report_TogglePinned(parameters) { - const commandName = 'Report_TogglePinned'; - requireParameters(['reportID', 'pinnedValue'], - parameters, commandName); - return Network.post(commandName, parameters); -} - /** * @param {Object} parameters * @param {Number} parameters.reportID @@ -940,7 +927,6 @@ export { RejectTransaction, Report_AddComment, Report_GetHistory, - Report_TogglePinned, Report_EditComment, Report_UpdateLastRead, ResendValidateCode, From 3c38d5cb4f906edfe1a7dbe6c21cbfabfe7fc372 Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Thu, 7 Jul 2022 11:52:18 -0600 Subject: [PATCH 2/6] add logic to setExpensifyNewsStatus --- src/libs/actions/User.js | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index 148d5cbfa40e..26fb9f66694a 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -157,22 +157,27 @@ function resendValidateCode(login) { /** * Sets whether or not the user is subscribed to Expensify news * - * @param {Boolean} subscribed + * @param {Boolean} isSubscribed */ -function setExpensifyNewsStatus(subscribed) { - Onyx.merge(ONYXKEYS.USER, {expensifyNewsStatus: subscribed}); - - DeprecatedAPI.UpdateAccount({subscribed}) - .then((response) => { - if (response.jsonCode === 200) { - return; - } - - Onyx.merge(ONYXKEYS.USER, {expensifyNewsStatus: !subscribed}); - }) - .catch(() => { - Onyx.merge(ONYXKEYS.USER, {expensifyNewsStatus: !subscribed}); - }); +function setExpensifyNewsStatus(isSubscribed) { + API.write('UpdateNewsletterSubscriptionStatus', { + isSubscribed, + }, { + optimisticData: [ + { + onyxMethod: 'merge', + key: ONYXKEYS.USER, + value: {isSubscribedToNewsletter: isSubscribed}, + }, + ], + failureData: [ + { + onyxMethod: 'merge', + key: ONYXKEYS.USER, + value: {isSubscribedToNewsletter: !isSubscribed}, + }, + ], + }); } /** From d2cb0c5f4c45534f64aa62f5b3ef90adb7e8776a Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Thu, 7 Jul 2022 11:52:56 -0600 Subject: [PATCH 3/6] rename setExpensifyNewsStatus to updateNewsletterSubscriptionStatus --- src/libs/actions/User.js | 4 ++-- src/pages/settings/PreferencesPage.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index 26fb9f66694a..91b177d080e3 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -159,7 +159,7 @@ function resendValidateCode(login) { * * @param {Boolean} isSubscribed */ -function setExpensifyNewsStatus(isSubscribed) { +function updateNewsletterSubscriptionStatus(isSubscribed) { API.write('UpdateNewsletterSubscriptionStatus', { isSubscribed, }, { @@ -458,7 +458,7 @@ export { getBetas, getUserDetails, resendValidateCode, - setExpensifyNewsStatus, + updateNewsletterSubscriptionStatus, setSecondaryLoginAndNavigate, validateLogin, isBlockedFromConcierge, diff --git a/src/pages/settings/PreferencesPage.js b/src/pages/settings/PreferencesPage.js index 56b928553571..1b8d98324e4e 100755 --- a/src/pages/settings/PreferencesPage.js +++ b/src/pages/settings/PreferencesPage.js @@ -79,7 +79,7 @@ const PreferencesPage = (props) => { From 675fc4555efcb94586dda37db8d988e4b807613f Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Thu, 7 Jul 2022 11:53:18 -0600 Subject: [PATCH 4/6] rm UpdateAccount from deprecatedAPI --- src/libs/deprecatedAPI.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/libs/deprecatedAPI.js b/src/libs/deprecatedAPI.js index 183139a9ffcf..a6cb56e513b3 100644 --- a/src/libs/deprecatedAPI.js +++ b/src/libs/deprecatedAPI.js @@ -415,17 +415,6 @@ function SetWalletLinkedAccount(parameters) { return Network.post(commandName, parameters); } -/** - * @param {Object} parameters - * @param {String} parameters.subscribed - * @returns {Promise} - */ -function UpdateAccount(parameters) { - const commandName = 'UpdateAccount'; - requireParameters(['subscribed'], parameters, commandName); - return Network.post(commandName, parameters); -} - /** * @param {Object} parameters * @param {String} parameters.message @@ -934,7 +923,6 @@ export { SetNameValuePair, SetPassword, SetWalletLinkedAccount, - UpdateAccount, UpdatePolicy, User_SignUp, User_Delete, From fdd559797f9fd01fe2c9aa56fa6dc88b4c144414 Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Thu, 7 Jul 2022 11:57:47 -0600 Subject: [PATCH 5/6] rename API command --- src/libs/actions/User.js | 6 +++--- src/pages/settings/PreferencesPage.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index 91b177d080e3..6a2bf2ae4f4c 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -159,8 +159,8 @@ function resendValidateCode(login) { * * @param {Boolean} isSubscribed */ -function updateNewsletterSubscriptionStatus(isSubscribed) { - API.write('UpdateNewsletterSubscriptionStatus', { +function updateNewsletterSubscription(isSubscribed) { + API.write('UpdateNewsletterSubscription', { isSubscribed, }, { optimisticData: [ @@ -458,7 +458,7 @@ export { getBetas, getUserDetails, resendValidateCode, - updateNewsletterSubscriptionStatus, + updateNewsletterSubscription, setSecondaryLoginAndNavigate, validateLogin, isBlockedFromConcierge, diff --git a/src/pages/settings/PreferencesPage.js b/src/pages/settings/PreferencesPage.js index 1b8d98324e4e..a2582a438de4 100755 --- a/src/pages/settings/PreferencesPage.js +++ b/src/pages/settings/PreferencesPage.js @@ -79,7 +79,7 @@ const PreferencesPage = (props) => { From e5eadb6551e9f3bca58c74a5dc1a48f08c232405 Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Thu, 7 Jul 2022 12:29:09 -0600 Subject: [PATCH 6/6] create onyx migration --- src/libs/actions/User.js | 4 +-- src/libs/migrateOnyx.js | 2 ++ .../migrations/RenameExpensifyNewsStatus.js | 35 +++++++++++++++++++ src/pages/settings/PreferencesPage.js | 4 +-- 4 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 src/libs/migrations/RenameExpensifyNewsStatus.js diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index 6a2bf2ae4f4c..2f5084dc03ec 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -123,9 +123,9 @@ function getUserDetails() { .then((response) => { // Update the User onyx key const loginList = _.where(response.loginList, {partnerName: 'expensify.com'}); - const expensifyNewsStatus = lodashGet(response, 'account.subscribed', true); + const isSubscribedToNewsletter = lodashGet(response, 'account.subscribed', true); const validatedStatus = lodashGet(response, 'account.validated', false); - Onyx.merge(ONYXKEYS.USER, {expensifyNewsStatus: !!expensifyNewsStatus, validated: !!validatedStatus}); + Onyx.merge(ONYXKEYS.USER, {isSubscribedToNewsletter: !!isSubscribedToNewsletter, validated: !!validatedStatus}); Onyx.set(ONYXKEYS.LOGIN_LIST, loginList); // Update the nvp_payPalMeAddress NVP diff --git a/src/libs/migrateOnyx.js b/src/libs/migrateOnyx.js index 726ad34abe7f..e9746a8379f2 100644 --- a/src/libs/migrateOnyx.js +++ b/src/libs/migrateOnyx.js @@ -4,6 +4,7 @@ import AddEncryptedAuthToken from './migrations/AddEncryptedAuthToken'; import RenameActiveClientsKey from './migrations/RenameActiveClientsKey'; import RenamePriorityModeKey from './migrations/RenamePriorityModeKey'; import MoveToIndexedDB from './migrations/MoveToIndexedDB'; +import RenameExpensifyNewsStatus from './migrations/RenameExpensifyNewsStatus'; export default function () { const startTime = Date.now(); @@ -16,6 +17,7 @@ export default function () { RenameActiveClientsKey, RenamePriorityModeKey, AddEncryptedAuthToken, + RenameExpensifyNewsStatus, ]; // Reduce all promises down to a single promise. All promises run in a linear fashion, waiting for the diff --git a/src/libs/migrations/RenameExpensifyNewsStatus.js b/src/libs/migrations/RenameExpensifyNewsStatus.js new file mode 100644 index 000000000000..3a5e306c0995 --- /dev/null +++ b/src/libs/migrations/RenameExpensifyNewsStatus.js @@ -0,0 +1,35 @@ +import Onyx from 'react-native-onyx'; +import _ from 'underscore'; +import ONYXKEYS from '../../ONYXKEYS'; +import Log from '../Log'; + +// This migration changes the name of the Onyx key user.expensifyNewsStatus from expensifyNewsStatus to isSubscribedToNewsletter +export default function () { + return new Promise((resolve) => { + // Connect to the USER key in Onyx to get the value of expensifyNewsStatus + // then set that value as isSubscribedToNewsletter + // finally remove expensifyNewsStatus by setting the value to null + const connectionID = Onyx.connect({ + key: ONYXKEYS.USER, + callback: (user) => { + Onyx.disconnect(connectionID); + + // Fail early here because there is nothing to migrate + if (!user || _.isNull(user.expensifyNewsStatus) || _.isUndefined(user.expensifyNewsStatus)) { + Log.info('[Migrate Onyx] Skipped migration RenameExpensifyNewsStatus'); + return resolve(); + } + + // eslint-disable-next-line rulesdir/prefer-actions-set-data + Onyx.merge(ONYXKEYS.USER, { + expensifyNewsStatus: null, + isSubscribedToNewsletter: user.expensifyNewsStatus, + }) + .then(() => { + Log.info('[Migrate Onyx] Ran migration RenameExpensifyNewsStatus'); + resolve(); + }); + }, + }); + }); +} diff --git a/src/pages/settings/PreferencesPage.js b/src/pages/settings/PreferencesPage.js index a2582a438de4..9848380a96f2 100755 --- a/src/pages/settings/PreferencesPage.js +++ b/src/pages/settings/PreferencesPage.js @@ -30,7 +30,7 @@ const propTypes = { /** The details about the user that is signed in */ user: PropTypes.shape({ /** Whether or not the user is subscribed to news updates */ - expensifyNewsStatus: PropTypes.bool, + isSubscribedToNewsletter: PropTypes.bool, shouldUseSecureStaging: PropTypes.bool, }), @@ -78,7 +78,7 @@ const PreferencesPage = (props) => {