fix: allow users to override language/region settings

fixes #1013
This commit is contained in:
sct
2021-02-27 12:37:18 +00:00
parent 537850f414
commit 69294a7c4c
6 changed files with 141 additions and 39 deletions

View File

@@ -6,6 +6,7 @@ import { defineMessages, useIntl } from 'react-intl';
import { useToasts } from 'react-toast-notifications';
import useSWR from 'swr';
import { Language } from '../../../../../server/lib/settings';
import useSettings from '../../../../hooks/useSettings';
import { UserType, useUser } from '../../../../hooks/useUser';
import Error from '../../../../pages/_error';
import Badge from '../../../Common/Badge';
@@ -29,6 +30,7 @@ const messages = defineMessages({
originallanguageTip:
'Filter content by original language (only applies to the "Popular" and "Upcoming" categories)',
originalLanguageDefault: 'All Languages',
languageServerDefault: '{applicationTitle} Default ({language})',
});
const UserGeneralSettings: React.FC = () => {
@@ -36,6 +38,7 @@ const UserGeneralSettings: React.FC = () => {
const { addToast } = useToasts();
const router = useRouter();
const { user, mutate } = useUser({ id: Number(router.query.userId) });
const { currentSettings } = useSettings();
const { data, error, revalidate } = useSWR<{
username?: string;
region?: string;
@@ -143,6 +146,7 @@ const UserGeneralSettings: React.FC = () => {
<RegionSelector
name="region"
value={values.region ?? ''}
isUserSetting
onChange={setFieldValue}
/>
</div>
@@ -162,6 +166,19 @@ const UserGeneralSettings: React.FC = () => {
name="originalLanguage"
>
<option value="">
{intl.formatMessage(messages.languageServerDefault, {
applicationTitle: currentSettings.applicationTitle,
language:
intl.formatDisplayName(
currentSettings.originalLanguage,
{
type: 'language',
fallback: 'none',
}
) ?? currentSettings.originalLanguage,
})}
</option>
<option value="all">
{intl.formatMessage(messages.originalLanguageDefault)}
</option>
{languages?.map((language) => (