Use enum types
[MAILPOET-2681]
This commit is contained in:
committed by
Veljko V
parent
9b5afa5733
commit
fd3a1738d2
@@ -36,7 +36,7 @@ export default function KeyActivation() {
|
|||||||
MailPoet.Modal.loading(false);
|
MailPoet.Modal.loading(false);
|
||||||
if (isTrusted) {
|
if (isTrusted) {
|
||||||
const authorizedAddressNeeded = !senderAddress || unauthorizedAddresses;
|
const authorizedAddressNeeded = !senderAddress || unauthorizedAddresses;
|
||||||
if (mssStatus === 'valid_mss_active' && authorizedAddressNeeded) {
|
if (mssStatus === MssStatus.VALID_MSS_ACTIVE && authorizedAddressNeeded) {
|
||||||
setState({ showFromAddressModal: true });
|
setState({ showFromAddressModal: true });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
import { useSelector } from 'settings/store/hooks';
|
import { useSelector } from 'settings/store/hooks';
|
||||||
|
import { MssStatus } from 'settings/store/types';
|
||||||
|
|
||||||
const ActiveMessage = () => (
|
const ActiveMessage = () => (
|
||||||
<div className="mailpoet_success mailpoet_mss_key_valid">
|
<div className="mailpoet_success mailpoet_mss_key_valid">
|
||||||
@@ -34,11 +35,11 @@ type Props = {
|
|||||||
export default function MssMessages(props: Props) {
|
export default function MssMessages(props: Props) {
|
||||||
const { mssStatus } = useSelector('getKeyActivationState')();
|
const { mssStatus } = useSelector('getKeyActivationState')();
|
||||||
switch (mssStatus) {
|
switch (mssStatus) {
|
||||||
case 'valid_mss_active':
|
case MssStatus.VALID_MSS_ACTIVE:
|
||||||
return <ActiveMessage />;
|
return <ActiveMessage />;
|
||||||
case 'valid_mss_not_active':
|
case MssStatus.VALID_MSS_NOT_ACTIVE:
|
||||||
return <MssNotActiveMessage activationCallback={props.activationCallback} />;
|
return <MssNotActiveMessage activationCallback={props.activationCallback} />;
|
||||||
case 'invalid':
|
case MssStatus.INVALID:
|
||||||
return <NotValidMessage message={props.keyMessage} />;
|
return <NotValidMessage message={props.keyMessage} />;
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
|
@@ -52,16 +52,16 @@ type Props = {
|
|||||||
}
|
}
|
||||||
export default function PremiumInstallationMessages(props: Props) {
|
export default function PremiumInstallationMessages(props: Props) {
|
||||||
switch (props.installationStatus) {
|
switch (props.installationStatus) {
|
||||||
case 'install_installing':
|
case PremiumInstallationStatus.INSTALL_INSTALLING:
|
||||||
return <InstallingMessage />;
|
return <InstallingMessage />;
|
||||||
case 'install_activating':
|
case PremiumInstallationStatus.INSTALL_ACTIVATING:
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<InstallingMessage />
|
<InstallingMessage />
|
||||||
<ActivatingMessage />
|
<ActivatingMessage />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
case 'install_done':
|
case PremiumInstallationStatus.INSTALL_DONE:
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<InstallingMessage />
|
<InstallingMessage />
|
||||||
@@ -69,14 +69,14 @@ export default function PremiumInstallationMessages(props: Props) {
|
|||||||
<DoneMessage />
|
<DoneMessage />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
case 'install_installing_error':
|
case PremiumInstallationStatus.INSTALL_INSTALLING_ERROR:
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<InstallingMessage />
|
<InstallingMessage />
|
||||||
<ErrorMessage />
|
<ErrorMessage />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
case 'install_activating_error':
|
case PremiumInstallationStatus.INSTALL_ACTIVATING_ERROR:
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<InstallingMessage />
|
<InstallingMessage />
|
||||||
@@ -84,16 +84,16 @@ export default function PremiumInstallationMessages(props: Props) {
|
|||||||
<ErrorMessage />
|
<ErrorMessage />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
case 'activate_activating':
|
case PremiumInstallationStatus.ACTIVATE_ACTIVATING:
|
||||||
return <ActivatingMessage />;
|
return <ActivatingMessage />;
|
||||||
case 'activate_done':
|
case PremiumInstallationStatus.ACTIVATE_DONE:
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ActivatingMessage />
|
<ActivatingMessage />
|
||||||
<DoneMessage />
|
<DoneMessage />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
case 'activate_error':
|
case PremiumInstallationStatus.ACTIVATE_ERROR:
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ActivatingMessage />
|
<ActivatingMessage />
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
import { useSelector } from 'settings/store/hooks/index';
|
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';
|
import PremiumInstallationMessages from './premium_installation_messages';
|
||||||
|
|
||||||
const ActiveMessage = () => (
|
const ActiveMessage = () => (
|
||||||
@@ -61,16 +61,16 @@ export default function PremiumMessages(props: Props) {
|
|||||||
const { premiumStatus: status } = useSelector('getKeyActivationState')();
|
const { premiumStatus: status } = useSelector('getKeyActivationState')();
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{status === 'valid_premium_plugin_active' && <ActiveMessage />}
|
{status === PremiumStatus.VALID_PREMIUM_PLUGIN_ACTIVE && <ActiveMessage />}
|
||||||
{status === 'valid_premium_plugin_not_active' && (
|
{status === PremiumStatus.VALID_PREMIUM_PLUGIN_NOT_ACTIVE && (
|
||||||
<PremiumNotActiveMessage callback={props.activationCallback} />
|
<PremiumNotActiveMessage callback={props.activationCallback} />
|
||||||
)}
|
)}
|
||||||
{status === 'valid_premium_plugin_not_installed' && (
|
{status === PremiumStatus.VALID_PREMIUM_PLUGIN_NOT_INSTALLED && (
|
||||||
<PremiumNotInstalledMessage callback={props.installationCallback} />
|
<PremiumNotInstalledMessage callback={props.installationCallback} />
|
||||||
)}
|
)}
|
||||||
{status === 'valid_premium_plugin_being_installed' && <InstallingMessage />}
|
{status === PremiumStatus.VALID_PREMIUM_PLUGIN_BEING_INSTALLED && <InstallingMessage />}
|
||||||
{status === 'valid_premium_plugin_being_activated' && <ActivatingMessage />}
|
{status === PremiumStatus.VALID_PREMIUM_PLUGIN_BEING_ACTIVATED && <ActivatingMessage />}
|
||||||
{status === 'invalid' && <NotValidMessage message={props.keyMessage} />}
|
{status === PremiumStatus.INVALID && <NotValidMessage message={props.keyMessage} />}
|
||||||
<PremiumInstallationMessages installationStatus={props.installationStatus} />
|
<PremiumInstallationMessages installationStatus={props.installationStatus} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
import { select } from '@wordpress/data';
|
import { select } from '@wordpress/data';
|
||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
import { STORE_NAME } from '.';
|
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 {
|
export function setSetting(path: string[], value: any): Action {
|
||||||
return { type: 'SET_SETTING', path, value };
|
return { type: 'SET_SETTING', path, value };
|
||||||
@@ -58,7 +60,7 @@ export function* verifyMssKey(key: string, activateMssIfKeyValid: boolean) {
|
|||||||
};
|
};
|
||||||
if (!success) {
|
if (!success) {
|
||||||
return updateKeyActivationState({
|
return updateKeyActivationState({
|
||||||
mssStatus: 'invalid',
|
mssStatus: MssStatus.INVALID,
|
||||||
mssMessage: error.join(' ') || null,
|
mssMessage: error.join(' ') || null,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -77,16 +79,16 @@ export function* verifyMssKey(key: string, activateMssIfKeyValid: boolean) {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
if (!call.success) {
|
if (!call.success) {
|
||||||
fields.mssStatus = 'valid_mss_not_active';
|
fields.mssStatus = MssStatus.VALID_MSS_NOT_ACTIVE;
|
||||||
} else {
|
} else {
|
||||||
yield setSetting(['mta_group'], 'mailpoet');
|
yield setSetting(['mta_group'], 'mailpoet');
|
||||||
yield setSetting(['mta', 'method'], 'MailPoet');
|
yield setSetting(['mta', 'method'], 'MailPoet');
|
||||||
yield setSetting(['mta', 'mailpoet_api_key'], key);
|
yield setSetting(['mta', 'mailpoet_api_key'], key);
|
||||||
yield setSetting(['signup_confirmation', 'enabled'], '1');
|
yield setSetting(['signup_confirmation', 'enabled'], '1');
|
||||||
fields.mssStatus = 'valid_mss_active';
|
fields.mssStatus = MssStatus.VALID_MSS_ACTIVE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fields.mssStatus = 'valid_mss_not_active';
|
fields.mssStatus = MssStatus.VALID_MSS_NOT_ACTIVE;
|
||||||
}
|
}
|
||||||
yield updateKeyActivationState(fields);
|
yield updateKeyActivationState(fields);
|
||||||
return fields.mssStatus;
|
return fields.mssStatus;
|
||||||
@@ -108,7 +110,7 @@ export function* verifyPremiumKey(key: string) {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
return updateKeyActivationState({
|
return updateKeyActivationState({
|
||||||
premiumStatus: 'invalid',
|
premiumStatus: PremiumStatus.INVALID,
|
||||||
premiumMessage: error.join(' ') || null,
|
premiumMessage: error.join(' ') || null,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -133,7 +135,7 @@ export function* verifyPremiumKey(key: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pluginInstalled && pluginActive) {
|
if (pluginInstalled && pluginActive) {
|
||||||
yield updateKeyActivationState({ premiumStatus: 'valid_premium_plugin_active' });
|
yield updateKeyActivationState({ premiumStatus: PremiumStatus.VALID_PREMIUM_PLUGIN_ACTIVE });
|
||||||
}
|
}
|
||||||
|
|
||||||
MailPoet.trackEvent(
|
MailPoet.trackEvent(
|
||||||
@@ -148,11 +150,17 @@ export function* verifyPremiumKey(key: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function* activatePremiumPlugin(isAfterInstall) {
|
export function* activatePremiumPlugin(isAfterInstall) {
|
||||||
const doneStatus = isAfterInstall ? 'install_done' : 'activate_done';
|
const doneStatus = isAfterInstall
|
||||||
const errorStatus = isAfterInstall ? 'install_activating_error' : 'activate_error';
|
? PremiumInstallationStatus.INSTALL_DONE
|
||||||
|
: PremiumInstallationStatus.ACTIVATE_DONE;
|
||||||
|
const errorStatus = isAfterInstall
|
||||||
|
? PremiumInstallationStatus.INSTALL_ACTIVATING_ERROR
|
||||||
|
: PremiumInstallationStatus.ACTIVATE_ERROR;
|
||||||
yield updateKeyActivationState({
|
yield updateKeyActivationState({
|
||||||
premiumStatus: 'valid_premium_plugin_being_activated',
|
premiumStatus: PremiumStatus.VALID_PREMIUM_PLUGIN_BEING_ACTIVATED,
|
||||||
premiumInstallationStatus: isAfterInstall ? 'install_activating' : 'activate_activating',
|
premiumInstallationStatus: isAfterInstall
|
||||||
|
? PremiumInstallationStatus.INSTALL_ACTIVATING
|
||||||
|
: PremiumInstallationStatus.ACTIVATE_ACTIVATING,
|
||||||
});
|
});
|
||||||
const call = yield {
|
const call = yield {
|
||||||
type: 'CALL_API',
|
type: 'CALL_API',
|
||||||
@@ -169,8 +177,8 @@ export function* activatePremiumPlugin(isAfterInstall) {
|
|||||||
|
|
||||||
export function* installPremiumPlugin() {
|
export function* installPremiumPlugin() {
|
||||||
yield updateKeyActivationState({
|
yield updateKeyActivationState({
|
||||||
premiumStatus: 'valid_premium_plugin_being_installed',
|
premiumStatus: PremiumStatus.VALID_PREMIUM_PLUGIN_BEING_INSTALLED,
|
||||||
premiumInstallationStatus: 'install_installing',
|
premiumInstallationStatus: PremiumInstallationStatus.INSTALL_INSTALLING,
|
||||||
});
|
});
|
||||||
const call = yield {
|
const call = yield {
|
||||||
type: 'CALL_API',
|
type: 'CALL_API',
|
||||||
@@ -178,7 +186,9 @@ export function* installPremiumPlugin() {
|
|||||||
action: 'installPlugin',
|
action: 'installPlugin',
|
||||||
};
|
};
|
||||||
if (call && !call.success) {
|
if (call && !call.success) {
|
||||||
yield updateKeyActivationState({ premiumInstallationStatus: 'install_installing_error' });
|
yield updateKeyActivationState({
|
||||||
|
premiumInstallationStatus: PremiumInstallationStatus.INSTALL_INSTALLING_ERROR,
|
||||||
|
});
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return yield* activatePremiumPlugin(true);
|
return yield* activatePremiumPlugin(true);
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { State, Action, KeyActivationState } from './types';
|
import {
|
||||||
|
State, Action, KeyActivationState, MssStatus, PremiumStatus,
|
||||||
|
} from './types';
|
||||||
|
|
||||||
export default function createReducer(defaultValue: State) {
|
export default function createReducer(defaultValue: State) {
|
||||||
let keyActivation: KeyActivationState;
|
let keyActivation: KeyActivationState;
|
||||||
@@ -20,8 +22,8 @@ export default function createReducer(defaultValue: State) {
|
|||||||
keyActivation.isKeyValid = null;
|
keyActivation.isKeyValid = null;
|
||||||
if (keyActivation.mssStatus !== null && keyActivation.premiumStatus !== null) {
|
if (keyActivation.mssStatus !== null && keyActivation.premiumStatus !== null) {
|
||||||
keyActivation.isKeyValid = (
|
keyActivation.isKeyValid = (
|
||||||
keyActivation.mssStatus !== 'invalid'
|
keyActivation.mssStatus !== MssStatus.INVALID
|
||||||
|| keyActivation.premiumStatus !== 'invalid'
|
|| keyActivation.premiumStatus !== PremiumStatus.INVALID
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return { ...state, keyActivation };
|
return { ...state, keyActivation };
|
||||||
|
@@ -19,7 +19,7 @@ export default function makeDefaultState(window: any): State {
|
|||||||
const mssStatus = getMssStatus(flags, data);
|
const mssStatus = getMssStatus(flags, data);
|
||||||
let isKeyValid = null;
|
let isKeyValid = null;
|
||||||
if (mssStatus !== null || premiumStatus !== null) {
|
if (mssStatus !== null || premiumStatus !== null) {
|
||||||
isKeyValid = mssStatus !== 'invalid' || premiumStatus !== 'invalid';
|
isKeyValid = mssStatus !== MssStatus.INVALID || premiumStatus !== PremiumStatus.INVALID;
|
||||||
}
|
}
|
||||||
const keyActivation = {
|
const keyActivation = {
|
||||||
mssStatus,
|
mssStatus,
|
||||||
@@ -41,19 +41,19 @@ function getPremiumStatus(flags): PremiumStatus {
|
|||||||
const pluginInstalled = flags.premiumPluginInstalled;
|
const pluginInstalled = flags.premiumPluginInstalled;
|
||||||
const pluginActive = !!MailPoet.premiumVersion;
|
const pluginActive = !!MailPoet.premiumVersion;
|
||||||
if (!keyValid) {
|
if (!keyValid) {
|
||||||
return 'invalid';
|
return PremiumStatus.INVALID;
|
||||||
}
|
}
|
||||||
if (pluginActive) {
|
if (pluginActive) {
|
||||||
return 'valid_premium_plugin_active';
|
return PremiumStatus.VALID_PREMIUM_PLUGIN_ACTIVE;
|
||||||
}
|
}
|
||||||
return pluginInstalled
|
return pluginInstalled
|
||||||
? 'valid_premium_plugin_not_active'
|
? PremiumStatus.VALID_PREMIUM_PLUGIN_NOT_ACTIVE
|
||||||
: 'valid_premium_plugin_not_installed';
|
: PremiumStatus.VALID_PREMIUM_PLUGIN_NOT_INSTALLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getMssStatus(flags, data): MssStatus {
|
function getMssStatus(flags, data): MssStatus {
|
||||||
const keyValid = flags.mssKeyValid;
|
const keyValid = flags.mssKeyValid;
|
||||||
if (!keyValid) return 'invalid';
|
if (!keyValid) return MssStatus.INVALID;
|
||||||
const mssActive = data.mta.method === 'MailPoet';
|
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;
|
||||||
}
|
}
|
||||||
|
@@ -186,28 +186,31 @@ type Page = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export type PremiumStatus =
|
export enum PremiumStatus {
|
||||||
| 'invalid'
|
INVALID,
|
||||||
| 'valid_premium_plugin_not_installed'
|
VALID_PREMIUM_PLUGIN_NOT_INSTALLED,
|
||||||
| 'valid_premium_plugin_not_active'
|
VALID_PREMIUM_PLUGIN_NOT_ACTIVE,
|
||||||
| 'valid_premium_plugin_active'
|
VALID_PREMIUM_PLUGIN_ACTIVE,
|
||||||
| 'valid_premium_plugin_being_installed'
|
VALID_PREMIUM_PLUGIN_BEING_INSTALLED,
|
||||||
| 'valid_premium_plugin_being_activated'
|
VALID_PREMIUM_PLUGIN_BEING_ACTIVATED,
|
||||||
|
}
|
||||||
|
|
||||||
export type MssStatus =
|
export enum MssStatus {
|
||||||
| 'invalid'
|
INVALID,
|
||||||
| 'valid_mss_not_active'
|
VALID_MSS_NOT_ACTIVE,
|
||||||
| 'valid_mss_active'
|
VALID_MSS_ACTIVE,
|
||||||
|
}
|
||||||
|
|
||||||
export type PremiumInstallationStatus =
|
export enum PremiumInstallationStatus {
|
||||||
| 'install_installing'
|
INSTALL_INSTALLING,
|
||||||
| 'install_activating'
|
INSTALL_ACTIVATING,
|
||||||
| 'install_done'
|
INSTALL_DONE,
|
||||||
| 'install_installing_error'
|
INSTALL_INSTALLING_ERROR,
|
||||||
| 'install_activating_error'
|
INSTALL_ACTIVATING_ERROR,
|
||||||
| 'activate_activating'
|
ACTIVATE_ACTIVATING,
|
||||||
| 'activate_done'
|
ACTIVATE_DONE,
|
||||||
| 'activate_error'
|
ACTIVATE_ERROR,
|
||||||
|
}
|
||||||
|
|
||||||
export type KeyActivationState = {
|
export type KeyActivationState = {
|
||||||
key: string
|
key: string
|
||||||
|
Reference in New Issue
Block a user