diff --git a/assets/js/src/settings/pages/key_activation/index.tsx b/assets/js/src/settings/pages/key_activation/index.tsx index 31285daf1f..1e4e209dd3 100644 --- a/assets/js/src/settings/pages/key_activation/index.tsx +++ b/assets/js/src/settings/pages/key_activation/index.tsx @@ -36,7 +36,7 @@ export default function KeyActivation() { MailPoet.Modal.loading(false); if (isTrusted) { const authorizedAddressNeeded = !senderAddress || unauthorizedAddresses; - if (mssStatus === 'valid_mss_active' && authorizedAddressNeeded) { + if (mssStatus === MssStatus.VALID_MSS_ACTIVE && authorizedAddressNeeded) { setState({ showFromAddressModal: true }); } } diff --git a/assets/js/src/settings/pages/key_activation/messages/mss_messages.tsx b/assets/js/src/settings/pages/key_activation/messages/mss_messages.tsx index b58fe7b136..f50494df02 100644 --- a/assets/js/src/settings/pages/key_activation/messages/mss_messages.tsx +++ b/assets/js/src/settings/pages/key_activation/messages/mss_messages.tsx @@ -1,6 +1,7 @@ import React from 'react'; import MailPoet from 'mailpoet'; import { useSelector } from 'settings/store/hooks'; +import { MssStatus } from 'settings/store/types'; const ActiveMessage = () => (
@@ -34,11 +35,11 @@ type Props = { export default function MssMessages(props: Props) { const { mssStatus } = useSelector('getKeyActivationState')(); switch (mssStatus) { - case 'valid_mss_active': + case MssStatus.VALID_MSS_ACTIVE: return ; - case 'valid_mss_not_active': + case MssStatus.VALID_MSS_NOT_ACTIVE: return ; - case 'invalid': + case MssStatus.INVALID: return ; default: return null; diff --git a/assets/js/src/settings/pages/key_activation/messages/premium_installation_messages.tsx b/assets/js/src/settings/pages/key_activation/messages/premium_installation_messages.tsx index b05fb8fba3..75283d854b 100644 --- a/assets/js/src/settings/pages/key_activation/messages/premium_installation_messages.tsx +++ b/assets/js/src/settings/pages/key_activation/messages/premium_installation_messages.tsx @@ -52,16 +52,16 @@ type Props = { } export default function PremiumInstallationMessages(props: Props) { switch (props.installationStatus) { - case 'install_installing': + case PremiumInstallationStatus.INSTALL_INSTALLING: return ; - case 'install_activating': + case PremiumInstallationStatus.INSTALL_ACTIVATING: return ( <> ); - case 'install_done': + case PremiumInstallationStatus.INSTALL_DONE: return ( <> @@ -69,14 +69,14 @@ export default function PremiumInstallationMessages(props: Props) { ); - case 'install_installing_error': + case PremiumInstallationStatus.INSTALL_INSTALLING_ERROR: return ( <> ); - case 'install_activating_error': + case PremiumInstallationStatus.INSTALL_ACTIVATING_ERROR: return ( <> @@ -84,16 +84,16 @@ export default function PremiumInstallationMessages(props: Props) { ); - case 'activate_activating': + case PremiumInstallationStatus.ACTIVATE_ACTIVATING: return ; - case 'activate_done': + case PremiumInstallationStatus.ACTIVATE_DONE: return ( <> ); - case 'activate_error': + case PremiumInstallationStatus.ACTIVATE_ERROR: return ( <> diff --git a/assets/js/src/settings/pages/key_activation/messages/premium_messages.tsx b/assets/js/src/settings/pages/key_activation/messages/premium_messages.tsx index 0e1b914897..80facf0b81 100644 --- a/assets/js/src/settings/pages/key_activation/messages/premium_messages.tsx +++ b/assets/js/src/settings/pages/key_activation/messages/premium_messages.tsx @@ -1,7 +1,7 @@ import React from 'react'; import MailPoet from 'mailpoet'; import { useSelector } from 'settings/store/hooks/index'; -import { PremiumInstallationStatus } from 'settings/store/types'; +import { PremiumInstallationStatus, PremiumStatus } from 'settings/store/types'; import PremiumInstallationMessages from './premium_installation_messages'; const ActiveMessage = () => ( @@ -61,16 +61,16 @@ export default function PremiumMessages(props: Props) { const { premiumStatus: status } = useSelector('getKeyActivationState')(); return ( <> - {status === 'valid_premium_plugin_active' && } - {status === 'valid_premium_plugin_not_active' && ( + {status === PremiumStatus.VALID_PREMIUM_PLUGIN_ACTIVE && } + {status === PremiumStatus.VALID_PREMIUM_PLUGIN_NOT_ACTIVE && ( )} - {status === 'valid_premium_plugin_not_installed' && ( + {status === PremiumStatus.VALID_PREMIUM_PLUGIN_NOT_INSTALLED && ( )} - {status === 'valid_premium_plugin_being_installed' && } - {status === 'valid_premium_plugin_being_activated' && } - {status === 'invalid' && } + {status === PremiumStatus.VALID_PREMIUM_PLUGIN_BEING_INSTALLED && } + {status === PremiumStatus.VALID_PREMIUM_PLUGIN_BEING_ACTIVATED && } + {status === PremiumStatus.INVALID && } ); diff --git a/assets/js/src/settings/store/actions.ts b/assets/js/src/settings/store/actions.ts index 12c0901516..0979c5d0bd 100644 --- a/assets/js/src/settings/store/actions.ts +++ b/assets/js/src/settings/store/actions.ts @@ -1,7 +1,9 @@ import { select } from '@wordpress/data'; import MailPoet from 'mailpoet'; import { STORE_NAME } from '.'; -import { Action, KeyActivationState, MssStatus } from './types'; +import { + Action, KeyActivationState, MssStatus, PremiumStatus, PremiumInstallationStatus, +} from './types'; export function setSetting(path: string[], value: any): Action { return { type: 'SET_SETTING', path, value }; @@ -58,7 +60,7 @@ export function* verifyMssKey(key: string, activateMssIfKeyValid: boolean) { }; if (!success) { return updateKeyActivationState({ - mssStatus: 'invalid', + mssStatus: MssStatus.INVALID, mssMessage: error.join(' ') || null, }); } @@ -77,16 +79,16 @@ export function* verifyMssKey(key: string, activateMssIfKeyValid: boolean) { }, }; if (!call.success) { - fields.mssStatus = 'valid_mss_not_active'; + fields.mssStatus = MssStatus.VALID_MSS_NOT_ACTIVE; } else { yield setSetting(['mta_group'], 'mailpoet'); yield setSetting(['mta', 'method'], 'MailPoet'); yield setSetting(['mta', 'mailpoet_api_key'], key); yield setSetting(['signup_confirmation', 'enabled'], '1'); - fields.mssStatus = 'valid_mss_active'; + fields.mssStatus = MssStatus.VALID_MSS_ACTIVE; } } else { - fields.mssStatus = 'valid_mss_not_active'; + fields.mssStatus = MssStatus.VALID_MSS_NOT_ACTIVE; } yield updateKeyActivationState(fields); return fields.mssStatus; @@ -108,7 +110,7 @@ export function* verifyPremiumKey(key: string) { } ); return updateKeyActivationState({ - premiumStatus: 'invalid', + premiumStatus: PremiumStatus.INVALID, premiumMessage: error.join(' ') || null, }); } @@ -133,7 +135,7 @@ export function* verifyPremiumKey(key: string) { } if (pluginInstalled && pluginActive) { - yield updateKeyActivationState({ premiumStatus: 'valid_premium_plugin_active' }); + yield updateKeyActivationState({ premiumStatus: PremiumStatus.VALID_PREMIUM_PLUGIN_ACTIVE }); } MailPoet.trackEvent( @@ -148,11 +150,17 @@ export function* verifyPremiumKey(key: string) { } export function* activatePremiumPlugin(isAfterInstall) { - const doneStatus = isAfterInstall ? 'install_done' : 'activate_done'; - const errorStatus = isAfterInstall ? 'install_activating_error' : 'activate_error'; + const doneStatus = isAfterInstall + ? PremiumInstallationStatus.INSTALL_DONE + : PremiumInstallationStatus.ACTIVATE_DONE; + const errorStatus = isAfterInstall + ? PremiumInstallationStatus.INSTALL_ACTIVATING_ERROR + : PremiumInstallationStatus.ACTIVATE_ERROR; yield updateKeyActivationState({ - premiumStatus: 'valid_premium_plugin_being_activated', - premiumInstallationStatus: isAfterInstall ? 'install_activating' : 'activate_activating', + premiumStatus: PremiumStatus.VALID_PREMIUM_PLUGIN_BEING_ACTIVATED, + premiumInstallationStatus: isAfterInstall + ? PremiumInstallationStatus.INSTALL_ACTIVATING + : PremiumInstallationStatus.ACTIVATE_ACTIVATING, }); const call = yield { type: 'CALL_API', @@ -169,8 +177,8 @@ export function* activatePremiumPlugin(isAfterInstall) { export function* installPremiumPlugin() { yield updateKeyActivationState({ - premiumStatus: 'valid_premium_plugin_being_installed', - premiumInstallationStatus: 'install_installing', + premiumStatus: PremiumStatus.VALID_PREMIUM_PLUGIN_BEING_INSTALLED, + premiumInstallationStatus: PremiumInstallationStatus.INSTALL_INSTALLING, }); const call = yield { type: 'CALL_API', @@ -178,7 +186,9 @@ export function* installPremiumPlugin() { action: 'installPlugin', }; if (call && !call.success) { - yield updateKeyActivationState({ premiumInstallationStatus: 'install_installing_error' }); + yield updateKeyActivationState({ + premiumInstallationStatus: PremiumInstallationStatus.INSTALL_INSTALLING_ERROR, + }); return false; } return yield* activatePremiumPlugin(true); diff --git a/assets/js/src/settings/store/create_reducer.ts b/assets/js/src/settings/store/create_reducer.ts index 4409ee6ba9..4e9b09fa97 100644 --- a/assets/js/src/settings/store/create_reducer.ts +++ b/assets/js/src/settings/store/create_reducer.ts @@ -1,5 +1,7 @@ import _ from 'lodash'; -import { State, Action, KeyActivationState } from './types'; +import { + State, Action, KeyActivationState, MssStatus, PremiumStatus, +} from './types'; export default function createReducer(defaultValue: State) { let keyActivation: KeyActivationState; @@ -20,8 +22,8 @@ export default function createReducer(defaultValue: State) { keyActivation.isKeyValid = null; if (keyActivation.mssStatus !== null && keyActivation.premiumStatus !== null) { keyActivation.isKeyValid = ( - keyActivation.mssStatus !== 'invalid' - || keyActivation.premiumStatus !== 'invalid' + keyActivation.mssStatus !== MssStatus.INVALID + || keyActivation.premiumStatus !== PremiumStatus.INVALID ); } return { ...state, keyActivation }; diff --git a/assets/js/src/settings/store/make_default_state.ts b/assets/js/src/settings/store/make_default_state.ts index 99aad33586..a450b645c4 100644 --- a/assets/js/src/settings/store/make_default_state.ts +++ b/assets/js/src/settings/store/make_default_state.ts @@ -19,7 +19,7 @@ export default function makeDefaultState(window: any): State { const mssStatus = getMssStatus(flags, data); let isKeyValid = null; if (mssStatus !== null || premiumStatus !== null) { - isKeyValid = mssStatus !== 'invalid' || premiumStatus !== 'invalid'; + isKeyValid = mssStatus !== MssStatus.INVALID || premiumStatus !== PremiumStatus.INVALID; } const keyActivation = { mssStatus, @@ -41,19 +41,19 @@ function getPremiumStatus(flags): PremiumStatus { const pluginInstalled = flags.premiumPluginInstalled; const pluginActive = !!MailPoet.premiumVersion; if (!keyValid) { - return 'invalid'; + return PremiumStatus.INVALID; } if (pluginActive) { - return 'valid_premium_plugin_active'; + return PremiumStatus.VALID_PREMIUM_PLUGIN_ACTIVE; } return pluginInstalled - ? 'valid_premium_plugin_not_active' - : 'valid_premium_plugin_not_installed'; + ? PremiumStatus.VALID_PREMIUM_PLUGIN_NOT_ACTIVE + : PremiumStatus.VALID_PREMIUM_PLUGIN_NOT_INSTALLED; } function getMssStatus(flags, data): MssStatus { const keyValid = flags.mssKeyValid; - if (!keyValid) return 'invalid'; + if (!keyValid) return MssStatus.INVALID; const mssActive = data.mta.method === 'MailPoet'; - return mssActive ? 'valid_mss_active' : 'valid_mss_not_active'; + return mssActive ? MssStatus.VALID_MSS_ACTIVE : MssStatus.VALID_MSS_NOT_ACTIVE; } diff --git a/assets/js/src/settings/store/types.ts b/assets/js/src/settings/store/types.ts index 9cfa8524dc..db4296b1dd 100644 --- a/assets/js/src/settings/store/types.ts +++ b/assets/js/src/settings/store/types.ts @@ -186,28 +186,31 @@ type Page = { } } -export type PremiumStatus = - | 'invalid' - | 'valid_premium_plugin_not_installed' - | 'valid_premium_plugin_not_active' - | 'valid_premium_plugin_active' - | 'valid_premium_plugin_being_installed' - | 'valid_premium_plugin_being_activated' +export enum PremiumStatus { + INVALID, + VALID_PREMIUM_PLUGIN_NOT_INSTALLED, + VALID_PREMIUM_PLUGIN_NOT_ACTIVE, + VALID_PREMIUM_PLUGIN_ACTIVE, + VALID_PREMIUM_PLUGIN_BEING_INSTALLED, + VALID_PREMIUM_PLUGIN_BEING_ACTIVATED, +} -export type MssStatus = - | 'invalid' - | 'valid_mss_not_active' - | 'valid_mss_active' +export enum MssStatus { + INVALID, + VALID_MSS_NOT_ACTIVE, + VALID_MSS_ACTIVE, +} -export type PremiumInstallationStatus = - | 'install_installing' - | 'install_activating' - | 'install_done' - | 'install_installing_error' - | 'install_activating_error' - | 'activate_activating' - | 'activate_done' - | 'activate_error' +export enum PremiumInstallationStatus { + INSTALL_INSTALLING, + INSTALL_ACTIVATING, + INSTALL_DONE, + INSTALL_INSTALLING_ERROR, + INSTALL_ACTIVATING_ERROR, + ACTIVATE_ACTIVATING, + ACTIVATE_DONE, + ACTIVATE_ERROR, +} export type KeyActivationState = { key: string