feat(plugins/settings): register custom page as route
This commit is contained in:
parent
fbdea3c9da
commit
65abd86acb
5 changed files with 61 additions and 3 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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,
|
||||
],
|
||||
|
|
|
|||
22
src/plugins/settings/screens/RevengeCustomPageScreen.tsx
Normal file
22
src/plugins/settings/screens/RevengeCustomPageScreen.tsx
Normal 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 />
|
||||
}
|
||||
16
src/plugins/settings/types.ts
Normal file
16
src/plugins/settings/types.ts
Normal 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
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue