umami/src/app/(main)/profile/ProfileSettings.tsx

62 lines
1.8 KiB
TypeScript
Raw Normal View History

2023-09-29 12:29:22 +00:00
'use client';
import { Form, FormRow } from 'react-basics';
2024-02-05 06:35:14 +00:00
import TimezoneSetting from 'app/(main)/profile/TimezoneSetting';
import DateRangeSetting from 'app/(main)/profile/DateRangeSetting';
import LanguageSetting from 'app/(main)/profile/LanguageSetting';
import ThemeSetting from 'app/(main)/profile/ThemeSetting';
2023-03-23 23:33:10 +00:00
import PasswordChangeButton from './PasswordChangeButton';
import { useLogin, useMessages } from 'components/hooks';
2023-07-07 06:02:16 +00:00
import { ROLES } from 'lib/constants';
2023-09-29 12:29:22 +00:00
export function ProfileSettings() {
const { user } = useLogin();
2023-03-22 04:28:36 +00:00
const { formatMessage, labels } = useMessages();
2023-08-28 02:56:44 +00:00
const cloudMode = Boolean(process.env.cloudMode);
if (!user) {
return null;
}
const { username, role } = user;
2024-02-05 07:55:14 +00:00
const renderRole = (value: string) => {
2023-07-07 06:02:16 +00:00
if (value === ROLES.user) {
return formatMessage(labels.user);
}
if (value === ROLES.admin) {
return formatMessage(labels.admin);
}
if (value === ROLES.viewOnly) {
return formatMessage(labels.viewOnly);
}
return formatMessage(labels.unknown);
};
return (
<Form>
2023-01-25 15:42:46 +00:00
<FormRow label={formatMessage(labels.username)}>{username}</FormRow>
2023-07-07 06:02:16 +00:00
<FormRow label={formatMessage(labels.role)}>{renderRole(role)}</FormRow>
2023-03-23 23:33:10 +00:00
{!cloudMode && (
<FormRow label={formatMessage(labels.password)}>
<PasswordChangeButton />
</FormRow>
)}
2023-01-31 05:44:07 +00:00
<FormRow label={formatMessage(labels.defaultDateRange)}>
<DateRangeSetting />
</FormRow>
<FormRow label={formatMessage(labels.language)}>
<LanguageSetting />
</FormRow>
<FormRow label={formatMessage(labels.timezone)}>
<TimezoneSetting />
</FormRow>
2023-01-25 15:42:46 +00:00
<FormRow label={formatMessage(labels.theme)}>
<ThemeSetting />
</FormRow>
</Form>
);
}
2023-04-21 15:00:42 +00:00
2023-09-29 12:29:22 +00:00
export default ProfileSettings;