deps(snjs): 2.20.3

This commit is contained in:
Mo Bitar
2021-12-10 11:56:00 -06:00
parent b29dc8ecc6
commit d5f75fee84
3 changed files with 121 additions and 109 deletions

View File

@@ -17,112 +17,124 @@ interface IProps {
appState: AppState; appState: AppState;
} }
export const OfflineSubscription: FunctionalComponent<IProps> = observer(({ application, appState }) => { export const OfflineSubscription: FunctionalComponent<IProps> = observer(
const [activationCode, setActivationCode] = useState(''); ({ application, appState }) => {
const [isSuccessfullyActivated, setIsSuccessfullyActivated] = useState(false); const [activationCode, setActivationCode] = useState('');
const [isSuccessfullyRemoved, setIsSuccessfullyRemoved] = useState(false); const [isSuccessfullyActivated, setIsSuccessfullyActivated] =
const [hasUserPreviouslyStoredCode, setHasUserPreviouslyStoredCode] = useState(false); useState(false);
const [isSuccessfullyRemoved, setIsSuccessfullyRemoved] = useState(false);
const [hasUserPreviouslyStoredCode, setHasUserPreviouslyStoredCode] =
useState(false);
useEffect(() => { useEffect(() => {
if (application.hasOfflineRepo()) { if (application.hasOfflineRepo()) {
setHasUserPreviouslyStoredCode(true); setHasUserPreviouslyStoredCode(true);
}
}, [application]);
const shouldShowOfflineSubscription = () => {
return !application.hasAccount() || application.isThirdPartyHostUsed();
};
const handleSubscriptionCodeSubmit = async (
event: TargetedEvent<HTMLFormElement, Event>
) => {
event.preventDefault();
const result = await application.setOfflineFeaturesCode(activationCode);
if (result?.error) {
await application.alertService.alert(result.error);
} else {
setIsSuccessfullyActivated(true);
setHasUserPreviouslyStoredCode(true);
setIsSuccessfullyRemoved(false);
}
};
const handleRemoveOfflineKey = async () => {
await application.deleteOfflineFeatureRepo();
setIsSuccessfullyActivated(false);
setHasUserPreviouslyStoredCode(false);
setActivationCode('');
setIsSuccessfullyRemoved(true);
};
const handleRemoveClick = async () => {
application.alertService
.confirm(
STRING_REMOVE_OFFLINE_KEY_CONFIRMATION,
'Remove offline key?',
'Remove Offline Key',
ButtonType.Danger,
'Cancel'
)
.then(async (shouldRemove: boolean) => {
if (shouldRemove) {
await handleRemoveOfflineKey();
}
})
.catch((err: string) => {
application.alertService.alert(err);
});
};
if (!shouldShowOfflineSubscription()) {
return null;
} }
}, [application]);
const shouldShowOfflineSubscription = () => { return (
return !application.hasAccount() || application.isCustomServerHostUsed(); <>
}; <div className="flex items-center justify-between">
<div className="flex flex-col mt-3 w-full">
const handleSubscriptionCodeSubmit = async (event: TargetedEvent<HTMLFormElement, Event>) => { <Subtitle>
event.preventDefault(); {!hasUserPreviouslyStoredCode && 'Activate'} Offline Subscription
</Subtitle>
const result = await application.setOfflineFeaturesCode(activationCode); <form onSubmit={handleSubscriptionCodeSubmit}>
<div className={'mt-2'}>
if (result?.error) { {!hasUserPreviouslyStoredCode && (
await application.alertService.alert(result.error); <DecoratedInput
} else { onChange={(code) => setActivationCode(code)}
setIsSuccessfullyActivated(true); placeholder={'Offline Subscription Code'}
setHasUserPreviouslyStoredCode(true); text={activationCode}
setIsSuccessfullyRemoved(false); disabled={isSuccessfullyActivated}
} className={'mb-3'}
}; />
)}
const handleRemoveOfflineKey = async () => { </div>
await application.deleteOfflineFeatureRepo(); {(isSuccessfullyActivated || isSuccessfullyRemoved) && (
<div className={'mt-3 mb-3 info'}>
setIsSuccessfullyActivated(false); Your offline subscription code has been successfully{' '}
setHasUserPreviouslyStoredCode(false); {isSuccessfullyActivated ? 'activated' : 'removed'}.
setActivationCode(''); </div>
setIsSuccessfullyRemoved(true); )}
}; {hasUserPreviouslyStoredCode && (
<Button
const handleRemoveClick = async () => { type="danger"
application.alertService.confirm( label="Remove offline key"
STRING_REMOVE_OFFLINE_KEY_CONFIRMATION, onClick={() => {
'Remove offline key?', handleRemoveClick();
'Remove Offline Key', }}
ButtonType.Danger,
'Cancel'
)
.then(async (shouldRemove: boolean) => {
if (shouldRemove) {
await handleRemoveOfflineKey();
}
})
.catch((err: string) => {
application.alertService.alert(err);
});
};
if (!shouldShowOfflineSubscription()) {
return null;
}
return (
<>
<div className='flex items-center justify-between'>
<div className='flex flex-col mt-3 w-full'>
<Subtitle>{!hasUserPreviouslyStoredCode && 'Activate'} Offline Subscription</Subtitle>
<form onSubmit={handleSubscriptionCodeSubmit}>
<div className={'mt-2'}>
{!hasUserPreviouslyStoredCode && (
<DecoratedInput
onChange={(code) => setActivationCode(code)}
placeholder={'Offline Subscription Code'}
text={activationCode}
disabled={isSuccessfullyActivated}
className={'mb-3'}
/> />
)} )}
</div> {!hasUserPreviouslyStoredCode && !isSuccessfullyActivated && (
{(isSuccessfullyActivated || isSuccessfullyRemoved) && ( <Button
<div className={'mt-3 mb-3 info'}> label={'Submit'}
Your offline subscription code has been successfully {isSuccessfullyActivated ? 'activated' : 'removed'}. type="primary"
</div> disabled={activationCode === ''}
)} onClick={(event) =>
{hasUserPreviouslyStoredCode && ( handleSubscriptionCodeSubmit(
<Button event as TargetedEvent<HTMLFormElement>
type='danger' )
label='Remove offline key' }
onClick={() => { />
handleRemoveClick(); )}
}} </form>
/> </div>
)}
{!hasUserPreviouslyStoredCode && !isSuccessfullyActivated && (
<Button
label={'Submit'}
type='primary'
disabled={activationCode === ''}
onClick={(event) =>
handleSubscriptionCodeSubmit(event as TargetedEvent<HTMLFormElement>)
}
/>
)}
</form>
</div> </div>
</div> <HorizontalSeparator classes="mt-8 mb-5" />
<HorizontalSeparator classes='mt-8 mb-5' /> </>
</> );
); }
}); );

View File

@@ -1,6 +1,6 @@
{ {
"name": "standard-notes-web", "name": "standard-notes-web",
"version": "3.9.8", "version": "3.9.10",
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
"repository": { "repository": {
"type": "git", "type": "git",
@@ -85,7 +85,7 @@
"@reach/listbox": "^0.16.2", "@reach/listbox": "^0.16.2",
"@standardnotes/features": "1.10.2", "@standardnotes/features": "1.10.2",
"@standardnotes/sncrypto-web": "1.5.3", "@standardnotes/sncrypto-web": "1.5.3",
"@standardnotes/snjs": "2.20.1", "@standardnotes/snjs": "2.20.3",
"mobx": "^6.3.5", "mobx": "^6.3.5",
"mobx-react-lite": "^3.2.2", "mobx-react-lite": "^3.2.2",
"preact": "^10.5.15", "preact": "^10.5.15",

View File

@@ -2614,10 +2614,10 @@
buffer "^6.0.3" buffer "^6.0.3"
libsodium-wrappers "^0.7.9" libsodium-wrappers "^0.7.9"
"@standardnotes/snjs@2.20.1": "@standardnotes/snjs@2.20.3":
version "2.20.1" version "2.20.3"
resolved "https://registry.yarnpkg.com/@standardnotes/snjs/-/snjs-2.20.1.tgz#4813adbfd16a1c373357bd4c7ece3085abf142b4" resolved "https://registry.yarnpkg.com/@standardnotes/snjs/-/snjs-2.20.3.tgz#11fe962dfb017be459e856b9fbc6311c5046a0b0"
integrity sha512-wJILt7YerLFaZTKoIZaCkqSuvpVWoVKqCVjP0KNHrMknnbgMHZygHqrb9sr57JL1AcNCkAULEFS/kev2GYTG3Q== integrity sha512-FHog3p3SuMvTXsEl76UenbjY8PS6VL/b6MjaC9whJR5ZwsvmLwE0G16dWZ+z+izm+CsRaHMWU8R2cy7RG7HjZg==
dependencies: dependencies:
"@standardnotes/auth" "^3.8.1" "@standardnotes/auth" "^3.8.1"
"@standardnotes/common" "^1.2.1" "@standardnotes/common" "^1.2.1"