feat(plugins/settings): register custom page as route

This commit is contained in:
PalmDevs 2025-05-08 19:04:28 +07:00
parent fbdea3c9da
commit 65abd86acb
No known key found for this signature in database
GPG key ID: 6FAE8F8677ACA8BA
5 changed files with 61 additions and 3 deletions

View file

@ -5,6 +5,7 @@ export const MobileSetting = {
REVENGE_PLUGINS: 'REVENGE_PLUGINS',
REVENGE_THEMES: 'REVENGE_THEMES',
REVENGE_FONTS: 'REVENGE_FONTS',
REVENGE_CUSTOM_PAGE: 'REVENGE_CUSTOM_PAGE',
// SUBSETTINGS
@ -25,4 +26,5 @@ export const UserSettingsSections = {
[MobileSetting.REVENGE_PLUGINS]: 'Revenge Plugins',
[MobileSetting.REVENGE_THEMES]: 'Revenge Themes',
[MobileSetting.REVENGE_FONTS]: 'Revenge Fonts',
[MobileSetting.REVENGE_CUSTOM_PAGE]: 'Revenge Custom Page',
} as const

View file

@ -0,0 +1,16 @@
import { MobileSetting, UserSettingsSections } from '../constants'
import type { SettingsItem } from '@revenge-mod/discord/modules/settings'
const RevengeCustomPageSetting: SettingsItem = {
parent: null,
title: () => 'Revenge Custom Page',
type: 'route',
unsearchable: true,
screen: {
route: UserSettingsSections[MobileSetting.REVENGE_CUSTOM_PAGE],
getComponent: () => require('../screens/RevengeCustomPageScreen').default,
},
}
export default RevengeCustomPageSetting

View file

@ -4,11 +4,12 @@ import { MobileSetting } from './constants'
import HermesVersionSetting from './definitions/HermesVersionSetting'
import ReactNativeVersionSetting from './definitions/ReactNativeVersionSetting'
// import RevengePluginsSetting from './definitions/RevengePluginsSetting'
import RevengePluginsSetting from './definitions/RevengePluginsSetting'
// import RevengeThemesSetting from './definitions/RevengeThemesSetting'
// import RevengeFontsSetting from './definitions/RevengeFontsSetting'
import ReactVersionSetting from './definitions/ReactVersionSetting'
import ReloadAppSetting from './definitions/ReloadAppSetting'
import RevengeCustomPageSetting from './definitions/RevengeCustomPageSetting'
import RevengeDiscordServerSetting from './definitions/RevengeDiscordServerSetting'
import RevengeGitHubOrganizationSetting from './definitions/RevengeGitHubOrganizationSetting'
import RevengeNotImplementedSetting from './definitions/RevengeNotImplementedSetting'
@ -17,9 +18,10 @@ import RevengeVersionSetting from './definitions/RevengeVersionSetting'
registerSettingsItems({
[MobileSetting.REVENGE]: RevengeSetting,
// [MobileSetting.REVENGE_PLUGINS]: RevengePluginsSetting,
[MobileSetting.REVENGE_PLUGINS]: RevengePluginsSetting,
// [MobileSetting.REVENGE_THEMES]: RevengeThemesSetting,
// [MobileSetting.REVENGE_FONTS]: RevengeFontsSetting,
[MobileSetting.REVENGE_CUSTOM_PAGE]: RevengeCustomPageSetting,
[MobileSetting.REVENGE_GITHUB_ORGANIZATION]: RevengeGitHubOrganizationSetting,
[MobileSetting.REVENGE_DISCORD_SERVER]: RevengeDiscordServerSetting,
[MobileSetting.RELOAD_APP]: ReloadAppSetting,
@ -34,7 +36,7 @@ registerSettingsSection('REVENGE', {
label: 'Revenge',
settings: [
MobileSetting.REVENGE,
// MobileSetting.REVENGE_PLUGINS,
MobileSetting.REVENGE_PLUGINS,
// MobileSetting.REVENGE_THEMES,
// MobileSetting.REVENGE_FONTS,
],

View file

@ -0,0 +1,22 @@
import { React } from '@revenge-mod/react'
import type { ReactNavigationParamList } from '@revenge-mod/externals/react-navigation'
import type { StackScreenProps } from '@react-navigation/stack'
import type { MobileSetting, UserSettingsSections } from '../constants'
export default function RevengeCustomPageScreen({
route,
navigation,
}: StackScreenProps<
ReactNavigationParamList,
(typeof UserSettingsSections)[(typeof MobileSetting)['REVENGE_CUSTOM_PAGE']]
>) {
const { render: PageComponent, options } = route.params
React.useEffect(() => {
if (options) navigation.setOptions(options)
}, [])
return <PageComponent />
}

View file

@ -0,0 +1,16 @@
import type { StackNavigationOptions } from '@react-navigation/stack'
import type { ComponentType } from 'react'
import type { MobileSetting, UserSettingsSections } from './constants'
declare module '@revenge-mod/externals/react-navigation' {
interface ReactNavigationParamList extends RevengeSettingsParamList {}
}
type RevengeSettingsParamList = {
[K in (typeof UserSettingsSections)[keyof typeof UserSettingsSections]]: object
} & {
[K in (typeof UserSettingsSections)[(typeof MobileSetting)['REVENGE_CUSTOM_PAGE']]]: {
render: ComponentType
options?: StackNavigationOptions
}
}