openreplay/frontend/app/components/Client/ProfileSettings/ProfileSettings.tsx
2025-03-24 11:09:22 +01:00

110 lines
3.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React from 'react';
import withPageTitle from 'HOCs/withPageTitle';
import { PageTitle } from 'UI';
import { observer } from 'mobx-react-lite';
import { useStore } from 'App/mstore';
import LanguageSwitcher from "App/components/LanguageSwitcher";
import Settings from './Settings';
import ChangePassword from './ChangePassword';
import styles from './profileSettings.module.css';
import Api from './Api';
import TenantKey from './TenantKey';
import OptOut from './OptOut';
import Licenses from './Licenses';
import { useTranslation } from 'react-i18next';
function ProfileSettings() {
const { t } = useTranslation();
const { userStore } = useStore();
const { account } = userStore;
const { isEnterprise } = userStore;
return (
<div className="bg-white rounded-lg border shadow-sm p-5">
<PageTitle title={<div>{t('Account')}</div>} />
<Section
title={t('Profile')}
description={t('Your email address is your identity on OpenReplay and is used to login.')}
children={<Settings />}
/>
<div className="border-b my-10" />
{account.hasPassword && (
<>
<Section
title={t('Change Password')}
description={t('Updating your password from time to time enhaces your accounts security')}
children={<ChangePassword />}
/>
<div className="border-b my-10" />
</>
)}
<Section
title={t('Interface Language')}
description={t('Select the language in which OpenReplay will appear.')}
children={<LanguageSwitcher />}
/>
<Section
title={t('Organization API Key')}
description={t('Your API key gives you access to an extra set of services.')}
children={<Api />}
/>
{isEnterprise && (account.admin || account.superAdmin) && (
<>
<div className="border-b my-10" />
<Section
title={t('Tenant Key')}
description={t('For SSO (SAML) authentication.')}
children={<TenantKey />}
/>
</>
)}
{!isEnterprise && (
<>
<div className="border-b my-10" />
<Section
title={t('Data Collection')}
description={t('Enables you to control how OpenReplay captures data on your organizations usage to improve our product.')}
children={<OptOut />}
/>
</>
)}
{account.license && (
<>
<div className="border-b my-10" />
<Section title={t('License')} description={t('License key and expiration date.')} children={<Licenses />} />
</>
)}
</div>
);
}
function Section({ title, description, children }: {
title: string;
description: string;
children: React.ReactNode;
}) {
return (
<div className="flex items-center">
<div className={styles.left}>
<h4 className="text-lg mb-4">{title}</h4>
<div className={styles.info}>
{description}
</div>
</div>
<div>
{children}
</div>
</div>
)
}
export default withPageTitle('Account - OpenReplay Preferences')(
observer(ProfileSettings),
);