You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
227 lines
7.9 KiB
227 lines
7.9 KiB
import Alert from '@app/components/Common/Alert';
|
|
import Badge from '@app/components/Common/Badge';
|
|
import List from '@app/components/Common/List';
|
|
import LoadingSpinner from '@app/components/Common/LoadingSpinner';
|
|
import PageTitle from '@app/components/Common/PageTitle';
|
|
import Releases from '@app/components/Settings/SettingsAbout/Releases';
|
|
import globalMessages from '@app/i18n/globalMessages';
|
|
import Error from '@app/pages/_error';
|
|
import { InformationCircleIcon } from '@heroicons/react/solid';
|
|
import type {
|
|
SettingsAboutResponse,
|
|
StatusResponse,
|
|
} from '@server/interfaces/api/settingsInterfaces';
|
|
import { defineMessages, useIntl } from 'react-intl';
|
|
import useSWR from 'swr';
|
|
|
|
const messages = defineMessages({
|
|
about: 'About',
|
|
overseerrinformation: 'About Overseerr',
|
|
version: 'Version',
|
|
totalmedia: 'Total Media',
|
|
totalrequests: 'Total Requests',
|
|
gettingsupport: 'Getting Support',
|
|
githubdiscussions: 'GitHub Discussions',
|
|
timezone: 'Time Zone',
|
|
appDataPath: 'Data Directory',
|
|
supportoverseerr: 'Support Overseerr',
|
|
helppaycoffee: 'Help Pay for Coffee',
|
|
documentation: 'Documentation',
|
|
preferredmethod: 'Preferred',
|
|
outofdate: 'Out of Date',
|
|
uptodate: 'Up to Date',
|
|
betawarning:
|
|
'This is BETA software. Features may be broken and/or unstable. Please report any issues on GitHub!',
|
|
runningDevelop:
|
|
'You are running the <code>develop</code> branch of Overseerr, which is only recommended for those contributing to development or assisting with bleeding-edge testing.',
|
|
});
|
|
|
|
const SettingsAbout = () => {
|
|
const intl = useIntl();
|
|
const { data, error } = useSWR<SettingsAboutResponse>(
|
|
'/api/v1/settings/about'
|
|
);
|
|
|
|
const { data: status } = useSWR<StatusResponse>('/api/v1/status');
|
|
|
|
if (!data && !error) {
|
|
return <LoadingSpinner />;
|
|
}
|
|
|
|
if (!data) {
|
|
return <Error statusCode={500} />;
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<PageTitle
|
|
title={[
|
|
intl.formatMessage(messages.about),
|
|
intl.formatMessage(globalMessages.settings),
|
|
]}
|
|
/>
|
|
<div className="mt-6 rounded-md border border-indigo-500 bg-indigo-400 bg-opacity-20 p-4 backdrop-blur">
|
|
<div className="flex">
|
|
<div className="flex-shrink-0">
|
|
<InformationCircleIcon className="h-5 w-5 text-gray-100" />
|
|
</div>
|
|
<div className="ml-3 flex-1 md:flex md:justify-between">
|
|
<p className="text-sm leading-5 text-gray-100">
|
|
{intl.formatMessage(messages.betawarning)}
|
|
</p>
|
|
<p className="mt-3 text-sm leading-5 md:mt-0 md:ml-6">
|
|
<a
|
|
href="http://github.com/sct/overseerr"
|
|
className="whitespace-nowrap font-medium text-gray-100 transition duration-150 ease-in-out hover:text-white"
|
|
target="_blank"
|
|
rel="noreferrer"
|
|
>
|
|
GitHub →
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div className="section">
|
|
<List title={intl.formatMessage(messages.overseerrinformation)}>
|
|
{data.version.startsWith('develop-') && (
|
|
<Alert
|
|
title={intl.formatMessage(messages.runningDevelop, {
|
|
code: (msg: React.ReactNode) => (
|
|
<code className="bg-opacity-50">{msg}</code>
|
|
),
|
|
})}
|
|
/>
|
|
)}
|
|
<List.Item
|
|
title={intl.formatMessage(messages.version)}
|
|
className="flex flex-row items-center truncate"
|
|
>
|
|
<code className="truncate">
|
|
{data.version.replace('develop-', '')}
|
|
</code>
|
|
{status?.commitTag !== 'local' &&
|
|
(status?.updateAvailable ? (
|
|
<a
|
|
href={
|
|
data.version.startsWith('develop-')
|
|
? `https://github.com/sct/overseerr/compare/${status.commitTag}...develop`
|
|
: 'https://github.com/sct/overseerr/releases'
|
|
}
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<Badge
|
|
badgeType="warning"
|
|
className="ml-2 !cursor-pointer transition hover:bg-yellow-400"
|
|
>
|
|
{intl.formatMessage(messages.outofdate)}
|
|
</Badge>
|
|
</a>
|
|
) : (
|
|
<a
|
|
href={
|
|
data.version.startsWith('develop-')
|
|
? 'https://github.com/sct/overseerr/commits/develop'
|
|
: 'https://github.com/sct/overseerr/releases'
|
|
}
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<Badge
|
|
badgeType="success"
|
|
className="ml-2 !cursor-pointer transition hover:bg-green-400"
|
|
>
|
|
{intl.formatMessage(messages.uptodate)}
|
|
</Badge>
|
|
</a>
|
|
))}
|
|
</List.Item>
|
|
<List.Item title={intl.formatMessage(messages.totalmedia)}>
|
|
{intl.formatNumber(data.totalMediaItems)}
|
|
</List.Item>
|
|
<List.Item title={intl.formatMessage(messages.totalrequests)}>
|
|
{intl.formatNumber(data.totalRequests)}
|
|
</List.Item>
|
|
<List.Item title={intl.formatMessage(messages.appDataPath)}>
|
|
<code>{data.appDataPath}</code>
|
|
</List.Item>
|
|
{data.tz && (
|
|
<List.Item title={intl.formatMessage(messages.timezone)}>
|
|
<code>{data.tz}</code>
|
|
</List.Item>
|
|
)}
|
|
</List>
|
|
</div>
|
|
<div className="section">
|
|
<List title={intl.formatMessage(messages.gettingsupport)}>
|
|
<List.Item title={intl.formatMessage(messages.documentation)}>
|
|
<a
|
|
href="https://docs.overseerr.dev"
|
|
target="_blank"
|
|
rel="noreferrer"
|
|
className="text-indigo-500 transition duration-300 hover:underline"
|
|
>
|
|
https://docs.overseerr.dev
|
|
</a>
|
|
</List.Item>
|
|
<List.Item title={intl.formatMessage(messages.githubdiscussions)}>
|
|
<a
|
|
href="https://github.com/sct/overseerr/discussions"
|
|
target="_blank"
|
|
rel="noreferrer"
|
|
className="text-indigo-500 transition duration-300 hover:underline"
|
|
>
|
|
https://github.com/sct/overseerr/discussions
|
|
</a>
|
|
</List.Item>
|
|
<List.Item title="Discord">
|
|
<a
|
|
href="https://discord.gg/overseerr"
|
|
target="_blank"
|
|
rel="noreferrer"
|
|
className="text-indigo-500 transition duration-300 hover:underline"
|
|
>
|
|
https://discord.gg/overseerr
|
|
</a>
|
|
</List.Item>
|
|
</List>
|
|
</div>
|
|
<div className="section">
|
|
<List title={intl.formatMessage(messages.supportoverseerr)}>
|
|
<List.Item
|
|
title={`${intl.formatMessage(messages.helppaycoffee)} ☕️`}
|
|
>
|
|
<a
|
|
href="https://github.com/sponsors/sct"
|
|
target="_blank"
|
|
rel="noreferrer"
|
|
className="text-indigo-500 transition duration-300 hover:underline"
|
|
>
|
|
https://github.com/sponsors/sct
|
|
</a>
|
|
<Badge className="ml-2">
|
|
{intl.formatMessage(messages.preferredmethod)}
|
|
</Badge>
|
|
</List.Item>
|
|
<List.Item title="">
|
|
<a
|
|
href="https://patreon.com/overseerr"
|
|
target="_blank"
|
|
rel="noreferrer"
|
|
className="text-indigo-500 transition duration-300 hover:underline"
|
|
>
|
|
https://patreon.com/overseerr
|
|
</a>
|
|
</List.Item>
|
|
</List>
|
|
</div>
|
|
<div className="section">
|
|
<Releases currentVersion={data.version} />
|
|
</div>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default SettingsAbout;
|