fix: settings patches and definitions for 306203+

This commit is contained in:
PalmDevs 2025-11-13 16:55:23 +07:00
parent d9968c6e22
commit 6c63ba5a31
No known key found for this signature in database
GPG key ID: 6FAE8F8677ACA8BA
4 changed files with 78 additions and 64 deletions

View file

@ -620,13 +620,16 @@ export namespace DiscordModules {
export interface SettingsListProps { export interface SettingsListProps {
containerStyle?: StyleProp<ViewStyle> containerStyle?: StyleProp<ViewStyle>
initialSetting?: string initialSetting?: string
ListHeaderComponent?: ComponentType node: {
ListFooterComponent?: ComponentType type: 'list'
sections: Array<{ ListHeaderComponent?: ComponentType
label?: string | ReactNode ListFooterComponent?: ComponentType
settings: string[] sections: Array<{
subLabel?: string | ReactNode label?: string | ReactNode
}> settings: string[]
subLabel?: string | ReactNode
}>
}
} }
export type SettingsList = FC<SettingsListProps> export type SettingsList = FC<SettingsListProps>
@ -651,6 +654,7 @@ export namespace DiscordModules {
export interface PressableSettingsItem extends BaseSettingsItem { export interface PressableSettingsItem extends BaseSettingsItem {
type: 'pressable' type: 'pressable'
withArrow?: boolean
onPress?: () => void onPress?: () => void
} }

View file

@ -35,41 +35,47 @@ export default function RevengeDeveloperSettingScreen() {
<View> <View>
<SettingListRenderer.SettingsList <SettingListRenderer.SettingsList
containerStyle={listStyles.container} containerStyle={listStyles.container}
ListHeaderComponent={DTAddrSetting} node={{
sections={[ type: 'list',
{ ListHeaderComponent: DTAddrSetting,
settings: [ sections: [
Setting.DTAutoConnect, {
Setting.DTConnect, settings: [
Setting.DTDisconnect, Setting.DTAutoConnect,
], Setting.DTConnect,
}, Setting.DTDisconnect,
]} ],
},
],
}}
/> />
</View> </View>
<View> <View>
<SettingListRenderer.SettingsList <SettingListRenderer.SettingsList
containerStyle={listStyles.container} containerStyle={listStyles.container}
ListHeaderComponent={ node={{
RDTContext.active ? RDTAddrSetting : undefined type: 'list',
} ListHeaderComponent: RDTContext.active
sections={[ ? RDTAddrSetting
{ : undefined,
settings: [ sections: [
Setting.RDTAutoConnect, {
Setting.RDTConnect, settings: [
Setting.RDTDisconnect, Setting.RDTAutoConnect,
], Setting.RDTConnect,
}, Setting.RDTDisconnect,
{ ],
label: 'Tools', },
settings: [ {
Setting.EvalJS, label: 'Tools',
Setting.AssetBrowser, settings: [
Setting.TestErrorBoundary, Setting.EvalJS,
], Setting.AssetBrowser,
}, Setting.TestErrorBoundary,
]} ],
},
],
}}
/> />
</View> </View>
</Design.Stack> </Design.Stack>

View file

@ -125,7 +125,8 @@ function patchSettingsOverviewScreen(exports: any) {
const unpatchMemo = instead(React, 'useMemo', (args, orig) => { const unpatchMemo = instead(React, 'useMemo', (args, orig) => {
if (sRefresher.overviewScreen) args[1] = undefined if (sRefresher.overviewScreen) args[1] = undefined
let sections = Reflect.apply(orig, React, args) const node = Reflect.apply(orig, React, args)
const sections = node.sections
// Add our custom sections here, and only do this per instance! // Add our custom sections here, and only do this per instance!
if (sectionsInst !== sections) { if (sectionsInst !== sections) {
@ -138,11 +139,11 @@ function patchSettingsOverviewScreen(exports: any) {
} }
if (sRefresher.overviewScreen) { if (sRefresher.overviewScreen) {
sections = sectionsInst = [...sections] node.sections = sectionsInst = [...sections]
sRefresher.overviewScreen = false sRefresher.overviewScreen = false
} }
return sections return node
}) })
const el = Reflect.apply(orig, undefined, args) const el = Reflect.apply(orig, undefined, args)

View file

@ -4,30 +4,33 @@ import { Setting } from '../constants'
export default function RevengeSettingScreen() { export default function RevengeSettingScreen() {
return ( return (
<SettingListRenderer.SettingsList <SettingListRenderer.SettingsList
sections={[ node={{
{ type: 'list',
label: 'Revenge', sections: [
settings: [ {
Setting.RevengeVersion, label: 'Revenge',
Setting.LoaderVersion, settings: [
Setting.RevengeDiscord, Setting.RevengeVersion,
Setting.RevengeSourceRepository, Setting.LoaderVersion,
Setting.RevengeLicense, Setting.RevengeDiscord,
], Setting.RevengeSourceRepository,
}, Setting.RevengeLicense,
{ ],
label: 'Versions', },
settings: [ {
Setting.ReactVersion, label: 'Versions',
Setting.ReactNativeVersion, settings: [
Setting.HermesVersion, Setting.ReactVersion,
], Setting.ReactNativeVersion,
}, Setting.HermesVersion,
{ ],
label: 'Actions', },
settings: [Setting.Reload], {
}, label: 'Actions',
]} settings: [Setting.Reload],
},
],
}}
/> />
) )
} }