Compute state of address modal reactively (fix edge case on first input)
[MAILPOET-2806]
This commit is contained in:
@@ -24,6 +24,10 @@ export default function KeyActivation() {
|
|||||||
await setUnauthorizedAddresses(null);
|
await setUnauthorizedAddresses(null);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const showFromAddressModal = state.fromAddressModalCanBeShown
|
||||||
|
&& state.mssStatus === MssStatus.VALID_MSS_ACTIVE
|
||||||
|
&& (!senderAddress || unauthorizedAddresses);
|
||||||
|
|
||||||
const verifyKey = async (event) => {
|
const verifyKey = async (event) => {
|
||||||
if (!state.key) {
|
if (!state.key) {
|
||||||
notices.error(<p>{t('premiumTabNoKeyNotice')}</p>, { scroll: true });
|
notices.error(<p>{t('premiumTabNoKeyNotice')}</p>, { scroll: true });
|
||||||
@@ -36,14 +40,11 @@ export default function KeyActivation() {
|
|||||||
premiumInstallationStatus: null,
|
premiumInstallationStatus: null,
|
||||||
});
|
});
|
||||||
MailPoet.Modal.loading(true);
|
MailPoet.Modal.loading(true);
|
||||||
const mssStatus: MssStatus = (await verifyMssKey(state.key, isUserTriggered)) as any;
|
await verifyMssKey(state.key, isUserTriggered);
|
||||||
await verifyPremiumKey(state.key);
|
await verifyPremiumKey(state.key);
|
||||||
MailPoet.Modal.loading(false);
|
MailPoet.Modal.loading(false);
|
||||||
if (isUserTriggered) {
|
if (isUserTriggered) {
|
||||||
const authorizedAddressNeeded = !senderAddress || unauthorizedAddresses;
|
setState({ fromAddressModalCanBeShown: true });
|
||||||
if (mssStatus === MssStatus.VALID_MSS_ACTIVE && authorizedAddressNeeded) {
|
|
||||||
setState({ showFromAddressModal: true });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -96,9 +97,9 @@ export default function KeyActivation() {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</Inputs>
|
</Inputs>
|
||||||
{state.showFromAddressModal && (
|
{showFromAddressModal && (
|
||||||
<SetFromAddressModal
|
<SetFromAddressModal
|
||||||
onRequestClose={() => setState({ showFromAddressModal: false })}
|
onRequestClose={() => setState({ fromAddressModalCanBeShown: false })}
|
||||||
setAuthorizedAddress={setAuthorizedAddress}
|
setAuthorizedAddress={setAuthorizedAddress}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
@@ -63,11 +63,10 @@ export function* verifyMssKey(key: string, activateMssIfKeyValid: boolean) {
|
|||||||
data: { key },
|
data: { key },
|
||||||
};
|
};
|
||||||
if (!success) {
|
if (!success) {
|
||||||
yield updateKeyActivationState({
|
return updateKeyActivationState({
|
||||||
mssStatus: MssStatus.INVALID,
|
mssStatus: MssStatus.INVALID,
|
||||||
mssMessage: error.join(' ') || null,
|
mssMessage: error.join(' ') || null,
|
||||||
});
|
});
|
||||||
return MssStatus.INVALID;
|
|
||||||
}
|
}
|
||||||
const fields: Partial<KeyActivationState> = {
|
const fields: Partial<KeyActivationState> = {
|
||||||
mssMessage: res.data.message || null,
|
mssMessage: res.data.message || null,
|
||||||
@@ -92,8 +91,7 @@ export function* verifyMssKey(key: string, activateMssIfKeyValid: boolean) {
|
|||||||
} else {
|
} else {
|
||||||
fields.mssStatus = MssStatus.VALID_MSS_NOT_ACTIVE;
|
fields.mssStatus = MssStatus.VALID_MSS_NOT_ACTIVE;
|
||||||
}
|
}
|
||||||
yield updateKeyActivationState(fields);
|
return updateKeyActivationState(fields);
|
||||||
return fields.mssStatus;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function* verifyPremiumKey(key: string) {
|
export function* verifyPremiumKey(key: string) {
|
||||||
|
@@ -35,7 +35,7 @@ export default function makeDefaultState(window: any): State {
|
|||||||
premiumStatus,
|
premiumStatus,
|
||||||
mssMessage: null,
|
mssMessage: null,
|
||||||
premiumMessage: null,
|
premiumMessage: null,
|
||||||
showFromAddressModal: false,
|
fromAddressModalCanBeShown: false,
|
||||||
premiumInstallationStatus: null,
|
premiumInstallationStatus: null,
|
||||||
key: data.premium.premium_key || data.mta.mailpoet_api_key,
|
key: data.premium.premium_key || data.mta.mailpoet_api_key,
|
||||||
};
|
};
|
||||||
|
@@ -222,7 +222,7 @@ export type KeyActivationState = {
|
|||||||
mssStatus: MssStatus
|
mssStatus: MssStatus
|
||||||
mssMessage: string
|
mssMessage: string
|
||||||
premiumInstallationStatus: PremiumInstallationStatus
|
premiumInstallationStatus: PremiumInstallationStatus
|
||||||
showFromAddressModal: boolean
|
fromAddressModalCanBeShown: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export type State = {
|
export type State = {
|
||||||
|
Reference in New Issue
Block a user