diff --git a/src/plugins/init/settings/components/NavigatorHeaderWithIcon.tsx b/src/plugins/init/settings/components/NavigatorHeaderWithIcon.tsx
new file mode 100644
index 0000000..df090b5
--- /dev/null
+++ b/src/plugins/init/settings/components/NavigatorHeaderWithIcon.tsx
@@ -0,0 +1,43 @@
+import { getAssetIdByName } from '@revenge-mod/assets'
+import { Tokens } from '@revenge-mod/discord/common'
+import { Stores } from '@revenge-mod/discord/common/flux'
+import { Design } from '@revenge-mod/discord/design'
+import { Image } from 'react-native'
+import type { DiscordModules } from '@revenge-mod/discord/types'
+
+const { NavigatorHeader } = Design
+const { default: tokens } = Tokens
+
+const ThemeStore = Stores.ThemeStore as DiscordModules.Flux.Store<{
+ theme: string
+}>
+
+interface NavigatorHeaderWithIconProps {
+ title: string
+ icon: string
+}
+
+export default function NavigatorHeaderWithIcon({
+ title,
+ icon,
+}: NavigatorHeaderWithIconProps) {
+ return (
+
+ }
+ title={title}
+ />
+ )
+}
diff --git a/src/plugins/init/settings/components/PluginCard.tsx b/src/plugins/init/settings/components/PluginCard.tsx
index 20dea64..53f852b 100644
--- a/src/plugins/init/settings/components/PluginCard.tsx
+++ b/src/plugins/init/settings/components/PluginCard.tsx
@@ -3,6 +3,7 @@ import { styles } from '@revenge-mod/components/_'
import FormSwitch from '@revenge-mod/components/FormSwitch'
import { Tokens } from '@revenge-mod/discord/common'
import { Design } from '@revenge-mod/discord/design'
+import { RootNavigationRef } from '@revenge-mod/discord/modules/main_tabs_v2'
import {
enablePlugin,
InternalPluginFlags,
@@ -12,7 +13,6 @@ import {
} from '@revenge-mod/plugins/_'
import { Image, Pressable } from 'react-native'
import { useClickOutside } from 'react-native-click-outside'
-import { navigatePluginSettings } from '../utils'
import {
enableTooltipTarget,
essentialTooltipTarget,
@@ -94,7 +94,9 @@ export function InstalledPluginCard({
variant="secondary"
icon={SettingsIcon}
onPress={() => {
- navigatePluginSettings(plugin)
+ RootNavigationRef.getRootNavigationRef().navigate(
+ plugin.manifest.id,
+ )
}}
disabled={!enabled}
/>
diff --git a/src/plugins/init/settings/constants.ts b/src/plugins/init/settings/constants.ts
index 77c4e2b..944c1cb 100644
--- a/src/plugins/init/settings/constants.ts
+++ b/src/plugins/init/settings/constants.ts
@@ -3,8 +3,6 @@ export const Setting = {
Revenge: 'Revenge',
RevengePlugins: 'RevengePlugins',
- RevengeThemes: 'RevengeThemes',
- RevengeFonts: 'RevengeFonts',
// SUBSETTINGS
@@ -22,6 +20,4 @@ export const Setting = {
export const RouteNames = {
[Setting.Revenge]: 'Revenge',
[Setting.RevengePlugins]: 'Revenge Plugins',
- [Setting.RevengeThemes]: 'Revenge Themes',
- [Setting.RevengeFonts]: 'Revenge Fonts',
} as const
diff --git a/src/plugins/init/settings/definitions/RevengeFontsSetting.tsx b/src/plugins/init/settings/definitions/RevengeFontsSetting.tsx
deleted file mode 100644
index 85db888..0000000
--- a/src/plugins/init/settings/definitions/RevengeFontsSetting.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import TableRowAssetIcon from '@revenge-mod/components/TableRowAssetIcon'
-import { RouteNames, Setting } from '../constants'
-import type { SettingsItem } from '@revenge-mod/discord/modules/settings'
-
-const RevengeFontsSetting: SettingsItem = {
- parent: null,
- type: 'route',
- IconComponent: () => ,
- title: () => 'Fonts',
- screen: {
- route: RouteNames[Setting.RevengePlugins],
- getComponent: () =>
- require('../screens/RevengePluginsSettingScreen').default,
- },
-}
-
-export default RevengeFontsSetting
diff --git a/src/plugins/init/settings/definitions/RevengeThemesSetting.tsx b/src/plugins/init/settings/definitions/RevengeThemesSetting.tsx
deleted file mode 100644
index 574bfaa..0000000
--- a/src/plugins/init/settings/definitions/RevengeThemesSetting.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import TableRowAssetIcon from '@revenge-mod/components/TableRowAssetIcon'
-import { RouteNames, Setting } from '../constants'
-import type { SettingsItem } from '@revenge-mod/discord/modules/settings'
-
-const RevengeThemesSetting: SettingsItem = {
- parent: null,
- type: 'route',
- IconComponent: () => ,
- title: () => 'Themes',
- screen: {
- route: RouteNames[Setting.RevengeThemes],
- getComponent: () =>
- require('../screens/RevengeThemesSettingScreen').default,
- },
-}
-
-export default RevengeThemesSetting
diff --git a/src/plugins/init/settings/index.ts b/src/plugins/init/settings/index.ts
index 33d9356..6a8772c 100644
--- a/src/plugins/init/settings/index.ts
+++ b/src/plugins/init/settings/index.ts
@@ -13,7 +13,7 @@ import { PluginFlags } from '@revenge-mod/plugins/constants'
import type { SettingsItem } from '@revenge-mod/discord/modules/settings'
import type { FC } from 'react'
-import './routes'
+import './register-routes'
onSettingsModulesLoaded(() => {
require('./register')
@@ -28,7 +28,7 @@ registerPlugin(
icon: 'SettingsIcon',
},
{
- start({ logger }) {
+ start() {
const unsubRC = waitForModules(
byProps<{
SETTING_RENDERER_CONFIG: Record
@@ -36,19 +36,10 @@ registerPlugin(
SettingRendererConfig => {
unsubRC()
- logger.info(
- 'Settings modules loaded, running subscriptions and patching...',
- )
-
for (const sub of sSubscriptions)
try {
sub()
- } catch (e) {
- logger.error(
- 'Failed to run settings modules subscription',
- e,
- )
- }
+ } catch {}
// We don't ever need to call this again
sSubscriptions.clear()
@@ -97,19 +88,15 @@ registerPlugin(
if (!firstCustomSection) return tree
// Check if sections are already spliced
- const firstCustomItem = firstCustomSection.settings[0]
+ const [firstCustomItem] = firstCustomSection.settings
if (
sections.findIndex(section =>
- section.settings.some(
- setting => setting === firstCustomItem,
- ),
- ) !== -1
+ section.settings.includes(firstCustomItem),
+ ) < 0
)
- return tree
-
- for (const section of Object.values(customSections))
- if (!section.index) sections.unshift(section)
- else sections.splice(section.index, 0, section)
+ for (const section of Object.values(customSections))
+ if (!section.index) sections.unshift(section)
+ else sections.splice(section.index, 0, section)
return tree
})
diff --git a/src/plugins/init/settings/routes.tsx b/src/plugins/init/settings/register-routes.tsx
similarity index 63%
rename from src/plugins/init/settings/routes.tsx
rename to src/plugins/init/settings/register-routes.tsx
index 1a52d35..41fb5f5 100644
--- a/src/plugins/init/settings/routes.tsx
+++ b/src/plugins/init/settings/register-routes.tsx
@@ -1,24 +1,15 @@
-import { getAssetIdByName } from '@revenge-mod/assets'
import TableRowAssetIcon from '@revenge-mod/components/TableRowAssetIcon'
-import { Tokens } from '@revenge-mod/discord/common'
-import { Stores } from '@revenge-mod/discord/common/flux'
-import { Design } from '@revenge-mod/discord/design'
import { registerSettingsItem } from '@revenge-mod/discord/modules/settings'
import { pEmitter, pMetadata } from '@revenge-mod/plugins/_'
-import { useLayoutEffect } from 'react'
-import { Image } from 'react-native'
+import { lazy, useLayoutEffect } from 'react'
import { Setting } from './constants'
import type { StackScreenProps } from '@react-navigation/stack'
-import type { DiscordModules } from '@revenge-mod/discord/types'
import type { ReactNavigationParamList } from '@revenge-mod/externals/react-navigation'
import type { PluginApi } from '@revenge-mod/plugins/types'
-const { NavigatorHeader } = Design
-const { default: tokens } = Tokens
-
-const ThemeStore = Stores.ThemeStore as DiscordModules.Flux.Store<{
- theme: string
-}>
+const NavigatorHeaderWithIcon = lazy(
+ () => import('./components/NavigatorHeaderWithIcon'),
+)
pEmitter.on('started', plugin => {
if (plugin.SettingsComponent) {
@@ -62,34 +53,8 @@ pEmitter.on('started', plugin => {
getComponent: () => PluginSettings,
},
}),
+ // TODO(PalmDevs): In the future, we may allow pinning plugin settings, so we'll need this cleanup
+ // () => refreshSettingsOverviewScreen(),
)
}
})
-
-function NavigatorHeaderWithIcon({
- title,
- icon,
-}: {
- title: string
- icon?: string
-}) {
- return (
-
- }
- title={title}
- />
- )
-}
diff --git a/src/plugins/init/settings/register.tsx b/src/plugins/init/settings/register.tsx
index 40cd37f..bc48476 100644
--- a/src/plugins/init/settings/register.tsx
+++ b/src/plugins/init/settings/register.tsx
@@ -5,8 +5,6 @@ import {
import { Setting } from './constants'
import HermesVersionSetting from './definitions/HermesVersionSetting'
import ReactNativeVersionSetting from './definitions/ReactNativeVersionSetting'
-// import RevengeThemesSetting from './definitions/RevengeThemesSetting'
-// import RevengeFontsSetting from './definitions/RevengeFontsSetting'
import ReactVersionSetting from './definitions/ReactVersionSetting'
import ReloadSetting from './definitions/ReloadSetting'
import RevengeDiscordSetting from './definitions/RevengeDiscordSetting'
@@ -19,8 +17,6 @@ import RevengeVersionSetting from './definitions/RevengeVersionSetting'
registerSettingsItems({
[Setting.Revenge]: RevengeSetting,
[Setting.RevengePlugins]: RevengePluginsSetting,
- // [MobileSetting.REVENGE_THEMES]: RevengeThemesSetting,
- // [MobileSetting.REVENGE_FONTS]: RevengeFontsSetting,
[Setting.RevengeSourceRepository]: RevengeSourceRepositorySetting,
[Setting.RevengeLicense]: RevengeLicenseSetting,
[Setting.RevengeDiscord]: RevengeDiscordSetting,
@@ -33,10 +29,5 @@ registerSettingsItems({
registerSettingsSection('REVENGE', {
label: 'Revenge',
- settings: [
- Setting.Revenge,
- Setting.RevengePlugins,
- // MobileSetting.RevengeThemes,
- // MobileSetting.RevengeFonts,
- ],
+ settings: [Setting.Revenge, Setting.RevengePlugins],
})
diff --git a/src/plugins/init/settings/screens/RevengeFontsSettingScreen.tsx b/src/plugins/init/settings/screens/RevengeFontsSettingScreen.tsx
deleted file mode 100644
index 28169a9..0000000
--- a/src/plugins/init/settings/screens/RevengeFontsSettingScreen.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { SettingListRenderer } from '@revenge-mod/discord/modules/settings/renderer'
-
-export default function RevengeFontsSettingScreen() {
- return (
-
- )
-}
diff --git a/src/plugins/init/settings/screens/RevengeThemesSettingScreen.tsx b/src/plugins/init/settings/screens/RevengeThemesSettingScreen.tsx
deleted file mode 100644
index 11347a9..0000000
--- a/src/plugins/init/settings/screens/RevengeThemesSettingScreen.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { SettingListRenderer } from '@revenge-mod/discord/modules/settings/renderer'
-
-export default function RevengeThemesSettingScreen() {
- return (
-
- )
-}
diff --git a/src/plugins/init/settings/utils.tsx b/src/plugins/init/settings/utils.tsx
deleted file mode 100644
index 87fa221..0000000
--- a/src/plugins/init/settings/utils.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import { RootNavigationRef } from '@revenge-mod/discord/modules/main_tabs_v2'
-import type { ReactNavigationParamList } from '@revenge-mod/externals/react-navigation'
-import type { Plugin } from '@revenge-mod/plugins/types'
-
-export function navigatePluginSettings(plugin: Plugin) {
- const navigation =
- RootNavigationRef.getRootNavigationRef()
- if (!navigation.isReady()) return
-
- navigation.navigate(plugin.manifest.id)
-}