From 0d08d0ad6a0b06f83f02ca8912c48e2056f5c0a1 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Mon, 9 Jun 2025 19:43:27 +0700 Subject: [PATCH] feat(lib/discord/modules): export `main_tabs_v2` --- lib/discord/package.json | 3 ++ lib/discord/src/init.ts | 16 ++++++--- lib/discord/src/modules/main_tabs_v2.ts | 44 +++++++++++++++++++++++++ lib/discord/src/types/revenge.ts | 1 + 4 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 lib/discord/src/modules/main_tabs_v2.ts diff --git a/lib/discord/package.json b/lib/discord/package.json index b08ee68..6c4bbcc 100644 --- a/lib/discord/package.json +++ b/lib/discord/package.json @@ -27,6 +27,9 @@ "./preinit": { "default": "./src/preinit.ts" }, + "./modules/main_tabs_v2": { + "default": "./src/modules/main_tabs_v2/index.ts" + }, "./modules/settings": { "default": "./src/modules/settings/index.ts" }, diff --git a/lib/discord/src/init.ts b/lib/discord/src/init.ts index 0887951..5e6417a 100644 --- a/lib/discord/src/init.ts +++ b/lib/discord/src/init.ts @@ -26,12 +26,20 @@ defineLazyProperty(discord, 'native', function () { }) defineLazyProperty(discord, 'modules', function () { - return { - settings: { + const modules = {} as PluginApiDiscord.Modules + + defineLazyProperty(modules, 'mainTabsV2', function () { + return require('@revenge-mod/discord/modules/main_tabs_v2') + }) + + defineLazyProperty(modules, 'settings', function () { + return { ...require('@revenge-mod/discord/modules/settings'), renderer: require('@revenge-mod/discord/modules/settings/renderer'), - }, - } + } + }) + + return modules }) _initExts.push((api, { manifest: { id } }) => diff --git a/lib/discord/src/modules/main_tabs_v2.ts b/lib/discord/src/modules/main_tabs_v2.ts new file mode 100644 index 0000000..edc9653 --- /dev/null +++ b/lib/discord/src/modules/main_tabs_v2.ts @@ -0,0 +1,44 @@ +import { + byDependencies, + byProps, + every, + looseDeps, + preferExports, + relativeDep, +} from '@revenge-mod/modules/finders/filters' +import { lookupModule } from '@revenge-mod/modules/finders/lookup' +import { proxify } from '@revenge-mod/utils/proxy' +import type { NavigationContainerRef } from '@react-navigation/core' + +export interface RootNavigationRef { + getRootNavigationRef< + T extends object = Record, + >(): NavigationContainerRef +} + +export let RootNavigationRef: RootNavigationRef = proxify( + () => { + const [module] = lookupModule( + preferExports( + byProps('getRootNavigationRef'), + every( + byDependencies([ + looseDeps([ + [], + looseDeps([relativeDep(1), relativeDep(2)]), + ]), + 2, + ]), + ), + ), + { + includeUninitialized: true, + }, + ) + + if (module) return (RootNavigationRef = module) + }, + { + hint: 'object', + }, +)! diff --git a/lib/discord/src/types/revenge.ts b/lib/discord/src/types/revenge.ts index b325a35..d7f8935 100644 --- a/lib/discord/src/types/revenge.ts +++ b/lib/discord/src/types/revenge.ts @@ -15,6 +15,7 @@ export namespace PluginApiDiscord { export type Native = typeof import('@revenge-mod/discord/native') export interface Modules { + mainTabsV2: typeof import('@revenge-mod/discord/modules/main_tabs_v2') settings: typeof import('@revenge-mod/discord/modules/settings') & { renderer: typeof import('@revenge-mod/discord/modules/settings/renderer') }