From 1d32f75f799400bf30b815137c8c69535850f411 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Mon, 5 May 2025 19:13:00 +0700 Subject: [PATCH] feat(plugins/settings): improve Revenge page --- src/constants.ts | 2 ++ src/plugins/settings/SettingsConstants.ts | 3 +++ .../definitions/HermesVersionSetting.tsx | 2 +- .../definitions/ReactNativeVersionSetting.tsx | 2 +- .../definitions/ReactVersionSetting.tsx | 2 +- .../settings/definitions/ReloadAppSetting.tsx | 17 ++++++++++++ .../RevengeDiscordServerSetting.tsx | 17 ++++++++++++ .../RevengeGitHubOrganizationSetting.tsx | 18 +++++++++++++ .../definitions/RevengeVersionSetting.ts | 2 +- src/plugins/settings/register.ts | 6 +++++ .../settings/screens/RevengeSettingScreen.tsx | 26 ++++++++++++++++--- 11 files changed, 90 insertions(+), 7 deletions(-) create mode 100644 src/constants.ts create mode 100644 src/plugins/settings/definitions/ReloadAppSetting.tsx create mode 100644 src/plugins/settings/definitions/RevengeDiscordServerSetting.tsx create mode 100644 src/plugins/settings/definitions/RevengeGitHubOrganizationSetting.tsx diff --git a/src/constants.ts b/src/constants.ts new file mode 100644 index 0000000..ffeed69 --- /dev/null +++ b/src/constants.ts @@ -0,0 +1,2 @@ +export const GitHubOrganizationURL = 'https://github.com/revenge-mod' +export const DiscordServerURL = 'https://discord.com/invite/ddcQf3s2Uq' diff --git a/src/plugins/settings/SettingsConstants.ts b/src/plugins/settings/SettingsConstants.ts index 8cba260..0b9ab2e 100644 --- a/src/plugins/settings/SettingsConstants.ts +++ b/src/plugins/settings/SettingsConstants.ts @@ -8,6 +8,9 @@ export const MobileSetting = { REVENGE_DEVELOPER: 'REVENGE_DEVELOPER', // SUBSETTINGS + REVENGE_DISCORD_SERVER: 'REVENGE_DISCORD_SERVER', + REVENGE_GITHUB_ORGANIZATION: 'REVENGE_GITHUB_ORGANIZATION', + RELOAD_APP: 'RELOAD_APP', REVENGE_VERSION: 'REVENGE_VERSION', REACT_VERSION: 'REACT_VERSION', diff --git a/src/plugins/settings/definitions/HermesVersionSetting.tsx b/src/plugins/settings/definitions/HermesVersionSetting.tsx index be9e81b..89c0042 100644 --- a/src/plugins/settings/definitions/HermesVersionSetting.tsx +++ b/src/plugins/settings/definitions/HermesVersionSetting.tsx @@ -13,7 +13,7 @@ const HermesVersionSetting: SettingsItem = { IconComponent: () => , title: () => 'Hermes', useDescription: () => `${props['Bytecode Version']} (${props.Build})`, - type: 'pressable', + type: 'static', } export default HermesVersionSetting diff --git a/src/plugins/settings/definitions/ReactNativeVersionSetting.tsx b/src/plugins/settings/definitions/ReactNativeVersionSetting.tsx index 0d57978..aee184d 100644 --- a/src/plugins/settings/definitions/ReactNativeVersionSetting.tsx +++ b/src/plugins/settings/definitions/ReactNativeVersionSetting.tsx @@ -13,7 +13,7 @@ const ReactNativeVersionSetting: SettingsItem = { IconComponent: () => , title: () => 'React Native', useDescription: () => version, - type: 'pressable', + type: 'static', } export default ReactNativeVersionSetting diff --git a/src/plugins/settings/definitions/ReactVersionSetting.tsx b/src/plugins/settings/definitions/ReactVersionSetting.tsx index 84ae828..4260910 100644 --- a/src/plugins/settings/definitions/ReactVersionSetting.tsx +++ b/src/plugins/settings/definitions/ReactVersionSetting.tsx @@ -11,7 +11,7 @@ const ReactVersionSetting: SettingsItem = { IconComponent: () => , title: () => 'React', useDescription: () => React.version, - type: 'pressable', + type: 'static', } export default ReactVersionSetting diff --git a/src/plugins/settings/definitions/ReloadAppSetting.tsx b/src/plugins/settings/definitions/ReloadAppSetting.tsx new file mode 100644 index 0000000..5ef3c52 --- /dev/null +++ b/src/plugins/settings/definitions/ReloadAppSetting.tsx @@ -0,0 +1,17 @@ +import { BundleUpdaterManager } from '@revenge-mod/discord/native' +import { React } from '@revenge-mod/react' + +import AssetIcon from '../components/icons/AssetIcon' +import { MobileSetting } from '../SettingsConstants' + +import type { SettingsItem } from '@revenge-mod/discord/ui/settings' + +const ReloadAppSetting: SettingsItem = { + parent: MobileSetting.REVENGE, + IconComponent: () => , + title: () => 'Reload App', + onPress: () => BundleUpdaterManager.reload(), + type: 'pressable', +} + +export default ReloadAppSetting diff --git a/src/plugins/settings/definitions/RevengeDiscordServerSetting.tsx b/src/plugins/settings/definitions/RevengeDiscordServerSetting.tsx new file mode 100644 index 0000000..887438b --- /dev/null +++ b/src/plugins/settings/definitions/RevengeDiscordServerSetting.tsx @@ -0,0 +1,17 @@ +import { React, ReactNative } from '@revenge-mod/react' + +import AssetIcon from '../components/icons/AssetIcon' +import { MobileSetting } from '../SettingsConstants' + +import type { SettingsItem } from '@revenge-mod/discord/ui/settings' +import { DiscordServerURL } from '../../../constants' + +const RevengeDiscordServerSetting: SettingsItem = { + parent: MobileSetting.REVENGE, + IconComponent: () => , + title: () => 'Discord Server', + onPress: () => ReactNative.Linking.openURL(DiscordServerURL), + type: 'pressable', +} + +export default RevengeDiscordServerSetting diff --git a/src/plugins/settings/definitions/RevengeGitHubOrganizationSetting.tsx b/src/plugins/settings/definitions/RevengeGitHubOrganizationSetting.tsx new file mode 100644 index 0000000..75fa144 --- /dev/null +++ b/src/plugins/settings/definitions/RevengeGitHubOrganizationSetting.tsx @@ -0,0 +1,18 @@ +import { React, ReactNative } from '@revenge-mod/react' + +import AssetIcon from '../components/icons/AssetIcon' +import { MobileSetting } from '../SettingsConstants' + +import { GitHubOrganizationURL } from '../../../constants' + +import type { SettingsItem } from '@revenge-mod/discord/ui/settings' + +const RevengeGitHubOrganizationSetting: SettingsItem = { + parent: MobileSetting.REVENGE, + IconComponent: () => , + title: () => 'GitHub', + onPress: () => ReactNative.Linking.openURL(GitHubOrganizationURL), + type: 'pressable', +} + +export default RevengeGitHubOrganizationSetting diff --git a/src/plugins/settings/definitions/RevengeVersionSetting.ts b/src/plugins/settings/definitions/RevengeVersionSetting.ts index b03a4da..55c479b 100644 --- a/src/plugins/settings/definitions/RevengeVersionSetting.ts +++ b/src/plugins/settings/definitions/RevengeVersionSetting.ts @@ -8,7 +8,7 @@ const RevengeVersionSetting: SettingsItem = { IconComponent: RevengeIcon, title: () => 'Revenge', useDescription: () => `${__BUILD_VERSION__}-${__BUILD_COMMIT__}-${__BUILD_BRANCH__} (${__BUILD_ENV__})`, - type: 'pressable', + type: 'static', } export default RevengeVersionSetting diff --git a/src/plugins/settings/register.ts b/src/plugins/settings/register.ts index 28c5dd8..a96d19b 100644 --- a/src/plugins/settings/register.ts +++ b/src/plugins/settings/register.ts @@ -13,6 +13,9 @@ import RevengeVersionSetting from './definitions/RevengeVersionSetting' import HermesVersionSetting from './definitions/HermesVersionSetting' import RevengeNotImplementedSetting from './definitions/RevengeNotImplementedSetting' import EvaluateJavaScriptSetting from './definitions/EvaluateJavaScriptSetting' +import ReloadAppSetting from './definitions/ReloadAppSetting' +import RevengeDiscordServerSetting from './definitions/RevengeDiscordServerSetting' +import RevengeGitHubOrganizationSetting from './definitions/RevengeGitHubOrganizationSetting' registerSettingsItems({ [MobileSetting.REVENGE]: RevengeSetting, @@ -20,6 +23,9 @@ registerSettingsItems({ // [MobileSetting.REVENGE_THEMES]: RevengeThemesSetting, // [MobileSetting.REVENGE_FONTS]: RevengeFontsSetting, [MobileSetting.REVENGE_DEVELOPER]: RevengeDeveloperSetting, + [MobileSetting.REVENGE_GITHUB_ORGANIZATION]: RevengeGitHubOrganizationSetting, + [MobileSetting.REVENGE_DISCORD_SERVER]: RevengeDiscordServerSetting, + [MobileSetting.RELOAD_APP]: ReloadAppSetting, [MobileSetting.REVENGE_VERSION]: RevengeVersionSetting, [MobileSetting.REACT_VERSION]: ReactVersionSetting, [MobileSetting.REACT_NATIVE_VERSION]: ReactNativeVersionSetting, diff --git a/src/plugins/settings/screens/RevengeSettingScreen.tsx b/src/plugins/settings/screens/RevengeSettingScreen.tsx index e80e221..00321bc 100644 --- a/src/plugins/settings/screens/RevengeSettingScreen.tsx +++ b/src/plugins/settings/screens/RevengeSettingScreen.tsx @@ -1,20 +1,40 @@ import { SettingListRenderer } from '@revenge-mod/discord/ui/settings' import { MobileSetting } from '../SettingsConstants' +import { Components } from '../../../../lib/discord/src/ui/common' export default function RevengeSettingScreen() { return ( + + You are using the next version of Revenge! + + + This version is experimental and may be unstable. + + + ), + }, + { + label: 'Versions', + settings: [ MobileSetting.REACT_VERSION, MobileSetting.REACT_NATIVE_VERSION, MobileSetting.HERMES_VERSION, ], - subLabel: [ - 'You are using the next version of Revenge! This version is experimental and may be unstable.', - ], + }, + { + label: 'Actions', + settings: [MobileSetting.RELOAD_APP], }, ]} />