* feat(blacklist): add 'Hide Blacklisted Items' setting to general settings and UI * feat(migration): add HideBlacklistedItems migration for PostgreSQL and SQLite * feat(settings): add hideBlacklisted option to application settings * feat(settings): add tooltips for hideAvailable and hideBlacklisted options in settings * chore(migration): remove HideBlacklistedItems migration files for PostgreSQL and SQLite * docs(settings): clarify description of 'Hide Blacklisted Items' setting to specify it affects all users * docs(settings): update tooltip and description for 'Hide Blacklisted Items' to clarify it applies to all users, including administrators * docs(settings): clarify 'Hide Blacklisted Items' functionality to specify it applies only to administrators with the "Manage Blacklist" permission * fix(hooks): update permission check for 'Hide Blacklisted Items' to include 'Manage Blacklist' * fix(settings): update tooltip for 'Hide Blacklisted Items' to clarify it applies to all users with the "Manage Blacklist" permission * feat(settings): add experimental badge to settings tooltip for 'Hide Available' option
60 lines
1.4 KiB
TypeScript
60 lines
1.4 KiB
TypeScript
import { MediaServerType } from '@server/constants/server';
|
|
import type { PublicSettingsResponse } from '@server/interfaces/api/settingsInterfaces';
|
|
import React from 'react';
|
|
import useSWR from 'swr';
|
|
|
|
export interface SettingsContextProps {
|
|
currentSettings: PublicSettingsResponse;
|
|
children?: React.ReactNode;
|
|
}
|
|
|
|
const defaultSettings = {
|
|
initialized: false,
|
|
applicationTitle: 'Jellyseerr',
|
|
applicationUrl: '',
|
|
hideAvailable: false,
|
|
hideBlacklisted: false,
|
|
localLogin: true,
|
|
mediaServerLogin: true,
|
|
movie4kEnabled: false,
|
|
series4kEnabled: false,
|
|
discoverRegion: '',
|
|
streamingRegion: '',
|
|
originalLanguage: '',
|
|
mediaServerType: MediaServerType.NOT_CONFIGURED,
|
|
partialRequestsEnabled: true,
|
|
enableSpecialEpisodes: false,
|
|
cacheImages: false,
|
|
vapidPublic: '',
|
|
enablePushRegistration: false,
|
|
locale: 'en',
|
|
emailEnabled: false,
|
|
newPlexLogin: true,
|
|
};
|
|
|
|
export const SettingsContext = React.createContext<SettingsContextProps>({
|
|
currentSettings: defaultSettings,
|
|
});
|
|
|
|
export const SettingsProvider = ({
|
|
children,
|
|
currentSettings,
|
|
}: SettingsContextProps) => {
|
|
const { data, error } = useSWR<PublicSettingsResponse>(
|
|
'/api/v1/settings/public',
|
|
{ fallbackData: currentSettings }
|
|
);
|
|
|
|
let newSettings = defaultSettings;
|
|
|
|
if (data && !error) {
|
|
newSettings = data;
|
|
}
|
|
|
|
return (
|
|
<SettingsContext.Provider value={{ currentSettings: newSettings }}>
|
|
{children}
|
|
</SettingsContext.Provider>
|
|
);
|
|
};
|