revenge-bundle-next/lib/discord/src/modules/settings/renderer.ts
PalmDevs b6d1cff9f5
feat(lib/modules)!: filter scopes + fixes and improvements
# Features

- Filters now control what types of modules they see.
- Filters can be reinstantiated via `.new()`
- Added the `Not` type in @revenge-mod/utils/types

# Fixes

- Pitfall with `lookupModules` and `withDependencies` without `uninitialize: true` fixed.
- Filter type-metadata is now stored in a single object instead of multiple parameters.
- Incorrect caching behavior for `lookupModules` where cache always reports not found if you finish the iterator.
- Also attempt to report not found when using `lookupModule`.
2025-10-28 01:01:17 +07:00

42 lines
1.2 KiB
TypeScript

import { lookupModule } from '@revenge-mod/modules/finders'
import {
withDependencies,
withProps,
} from '@revenge-mod/modules/finders/filters'
import {
ReactJSXRuntimeModuleId,
ReactModuleId,
ReactNativeModuleId,
} from '@revenge-mod/react'
import { proxify } from '@revenge-mod/utils/proxy'
import type { DiscordModules } from '../../types'
const { loose, relative } = withDependencies
export type SettingListRenderer =
DiscordModules.Modules.Settings.SettingListRenderer
// modules/settings/native/renderer/SettingListRenderer.tsx
export let SettingListRenderer: SettingListRenderer = proxify(
() => {
const [module] = lookupModule(
withProps<SettingListRenderer>('SettingsList').and(
withDependencies(
loose([
ReactModuleId,
ReactNativeModuleId,
relative(1),
relative(2),
null,
ReactJSXRuntimeModuleId,
]),
),
),
)
if (module) return (SettingListRenderer = module)
},
{
hint: {},
},
)!