keeweb/app/scripts/views/settings/general/settings-general-storage-vi...

90 lines
3.4 KiB
TypeScript
Raw Normal View History

2021-07-03 21:55:11 +02:00
import { FunctionComponent } from 'preact';
2021-07-04 13:02:48 +02:00
import { Locale } from 'util/locale';
import { SettingsGeneralStorageProvider } from 'ui/settings/general/settings-general-storage-provider';
2021-07-03 21:55:11 +02:00
2021-07-04 13:02:48 +02:00
interface SettingsGeneralStorageProviderItem {
name: string;
locName: string;
enabled: boolean;
loggedIn: boolean;
hasConfig: boolean;
}
export const SettingsGeneralStorageView: FunctionComponent<{
disableOfflineStorage: boolean;
shortLivedStorageToken: boolean;
storageProviders: SettingsGeneralStorageProviderItem[];
2021-07-04 16:01:34 +02:00
disableOfflineStorageChanged: () => void;
shortLivedStorageTokenChanged: () => void;
storageEnabledChanged: (storageName: string) => void;
logoutFromStorage: (storageName: string) => void;
}> = ({
disableOfflineStorage,
shortLivedStorageToken,
storageProviders,
disableOfflineStorageChanged,
shortLivedStorageTokenChanged,
storageEnabledChanged,
logoutFromStorage
}) => {
2021-07-04 13:02:48 +02:00
return (
<>
<h2 id="storage">{Locale.setGenStorage}</h2>
<div>
<input
type="checkbox"
class="settings__input input-base settings__general-disable-offline-storage"
id="settings__general-disable-offline-storage"
checked={disableOfflineStorage}
2021-07-04 16:01:34 +02:00
onClick={disableOfflineStorageChanged}
2021-07-04 13:02:48 +02:00
/>
<label for="settings__general-disable-offline-storage">
{Locale.setGenDisableOfflineStorage}
</label>
</div>
<div>
<input
type="checkbox"
class="settings__input input-base settings__general-short-lived-storage-token"
id="settings__general-short-lived-storage-token"
checked={shortLivedStorageToken}
2021-07-04 16:01:34 +02:00
onClick={shortLivedStorageTokenChanged}
2021-07-04 13:02:48 +02:00
/>
<label for="settings__general-short-lived-storage-token">
{Locale.setGenShortLivedStorageToken}
</label>
</div>
{storageProviders.map((prv) => (
<div key={prv.name}>
<h4 class="settings__general-storage-header">
<input
type="checkbox"
id={`settings__general-prv-check-${prv.name}`}
class="settings__general-prv-check"
checked={prv.enabled}
2021-07-04 16:01:34 +02:00
onClick={() => storageEnabledChanged(prv.name)}
2021-07-04 13:02:48 +02:00
/>
<label for={`settings__general-prv-check-${prv.name}`}>{prv.locName}</label>
</h4>
{prv.enabled && prv.hasConfig ? (
2021-07-04 20:54:59 +02:00
<div class={`settings__general-prv-wrap settings__general-${prv.name}`}>
2021-07-04 13:02:48 +02:00
<SettingsGeneralStorageProvider name={prv.name} />
</div>
) : null}
{prv.loggedIn ? (
<button
class="btn-silent settings__general-prv-logout"
2021-07-04 16:01:34 +02:00
onClick={() => logoutFromStorage(prv.name)}
2021-07-04 13:02:48 +02:00
>
{Locale.setGenStorageLogout}
</button>
) : null}
</div>
))}
</>
);
2021-07-03 21:55:11 +02:00
};