mirror of
https://github.com/antebudimir/feishin.git
synced 2026-01-01 18:33:33 +00:00
Add discord rich presence (#72)
This commit is contained in:
parent
2664a80851
commit
244c00c4c6
12 changed files with 391 additions and 7 deletions
|
|
@ -0,0 +1,95 @@
|
|||
import isElectron from 'is-electron';
|
||||
import { NumberInput, Switch, TextInput } from '/@/renderer/components';
|
||||
import {
|
||||
SettingOption,
|
||||
SettingsSection,
|
||||
} from '/@/renderer/features/settings/components/settings-section';
|
||||
import { useDiscordSetttings, useSettingsStoreActions } from '/@/renderer/store';
|
||||
|
||||
export const DiscordSettings = () => {
|
||||
const settings = useDiscordSetttings();
|
||||
const { setSettings } = useSettingsStoreActions();
|
||||
|
||||
const discordOptions: SettingOption[] = [
|
||||
{
|
||||
control: (
|
||||
<Switch
|
||||
checked={settings.enabled}
|
||||
onChange={(e) => {
|
||||
setSettings({
|
||||
discord: {
|
||||
...settings,
|
||||
enabled: e.currentTarget.checked,
|
||||
},
|
||||
});
|
||||
}}
|
||||
/>
|
||||
),
|
||||
description:
|
||||
'Enable playback status in Discord rich presence. Image keys include: "icon", "playing", and "paused"',
|
||||
isHidden: !isElectron(),
|
||||
title: 'Discord rich presence',
|
||||
},
|
||||
{
|
||||
control: (
|
||||
<TextInput
|
||||
defaultValue={settings.clientId}
|
||||
onBlur={(e) => {
|
||||
setSettings({
|
||||
discord: {
|
||||
...settings,
|
||||
clientId: e.currentTarget.value,
|
||||
},
|
||||
});
|
||||
}}
|
||||
/>
|
||||
),
|
||||
description: 'The Discord application ID (defaults to 1165957668758900787)',
|
||||
isHidden: !isElectron(),
|
||||
title: 'Discord application ID',
|
||||
},
|
||||
{
|
||||
control: (
|
||||
<NumberInput
|
||||
value={settings.updateInterval}
|
||||
onChange={(e) => {
|
||||
let value = e ? Number(e) : 0;
|
||||
if (value < 15) {
|
||||
value = 15;
|
||||
}
|
||||
|
||||
setSettings({
|
||||
discord: {
|
||||
...settings,
|
||||
updateInterval: value,
|
||||
},
|
||||
});
|
||||
}}
|
||||
/>
|
||||
),
|
||||
description: 'The time in seconds between each update (minimum 15 seconds)',
|
||||
isHidden: !isElectron(),
|
||||
title: 'Rich presence update interval (seconds)',
|
||||
},
|
||||
{
|
||||
control: (
|
||||
<Switch
|
||||
checked={settings.enableIdle}
|
||||
onChange={(e) => {
|
||||
setSettings({
|
||||
discord: {
|
||||
...settings,
|
||||
enableIdle: e.currentTarget.checked,
|
||||
},
|
||||
});
|
||||
}}
|
||||
/>
|
||||
),
|
||||
description: 'When enabled, the rich presence will update while player is idle',
|
||||
isHidden: !isElectron(),
|
||||
title: 'Show rich presence when idle',
|
||||
},
|
||||
];
|
||||
|
||||
return <SettingsSection options={discordOptions} />;
|
||||
};
|
||||
|
|
@ -1,12 +1,15 @@
|
|||
import { Divider, Stack } from '@mantine/core';
|
||||
import { UpdateSettings } from '/@/renderer/features/settings/components/window/update-settings';
|
||||
import { WindowSettings } from '/@/renderer/features/settings/components/window/window-settings';
|
||||
import { DiscordSettings } from '/@/renderer/features/settings/components/window/discord-settings';
|
||||
|
||||
export const WindowTab = () => {
|
||||
return (
|
||||
<Stack spacing="md">
|
||||
<WindowSettings />
|
||||
<Divider />
|
||||
<DiscordSettings />
|
||||
<Divider />
|
||||
<UpdateSettings />
|
||||
</Stack>
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue