From d8897d8c4d8bac41e284fac48f6784be958e4773 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Sat, 17 Jan 2026 20:54:14 +0700 Subject: [PATCH] feat(lib/discord/common): expose and switch filters to use `ImportTrackerModuleId` --- lib/discord/src/actions.ts | 14 ++++++++++---- lib/discord/src/common/flux.ts | 10 +++++++++- lib/discord/src/common/index.ts | 11 +++++++---- lib/discord/src/common/utils.ts | 3 ++- lib/discord/src/design.ts | 13 ++++++++----- lib/discord/src/modules/main_tabs_v2.ts | 4 +++- lib/discord/src/patches/import-tracker.ts | 6 +++++- lib/discord/src/preinit.ts | 2 +- lib/externals/src/shopify.ts | 4 +++- 9 files changed, 48 insertions(+), 19 deletions(-) diff --git a/lib/discord/src/actions.ts b/lib/discord/src/actions.ts index b92910a..7b76ea9 100644 --- a/lib/discord/src/actions.ts +++ b/lib/discord/src/actions.ts @@ -10,6 +10,7 @@ import { ReactNativeModuleId, } from '@revenge-mod/react' import { proxify } from '@revenge-mod/utils/proxy' +import { ImportTrackerModuleId } from './common' import { DispatcherModuleId } from './common/flux' import type { DiscordModules } from './types' @@ -31,7 +32,7 @@ export let ActionSheetActionCreators: DiscordModules.Actions.ActionSheetActionCr DispatcherModuleId, relative(1), relative(2), - 2, + ImportTrackerModuleId, ]), ), ) @@ -53,8 +54,8 @@ export let AlertActionCreators: DiscordModules.Actions.AlertActionCreators = ).and( withDependencies([ [relative(1), relative(2)], - [ReactNativeModuleId, 2], - 2, + [ReactNativeModuleId, ImportTrackerModuleId], + ImportTrackerModuleId, ]), ), ) @@ -75,7 +76,12 @@ export let ToastActionCreators: DiscordModules.Actions.ToastActionCreators = const generator = lookupModules( withProps('open') .and(withoutProps('init')) - .and(withDependencies([DispatcherModuleId, 2])), + .and( + withDependencies([ + DispatcherModuleId, + ImportTrackerModuleId, + ]), + ), ) for (const [module] of generator) diff --git a/lib/discord/src/common/flux.ts b/lib/discord/src/common/flux.ts index dd77e39..0b9890e 100644 --- a/lib/discord/src/common/flux.ts +++ b/lib/discord/src/common/flux.ts @@ -3,6 +3,7 @@ import { withDependencies, withProps, } from '@revenge-mod/modules/finders/filters' +import { ImportTrackerModuleId } from '../patches/import-tracker' import type { Metro } from '@revenge-mod/modules/types' import type { DiscordModules } from '../types' @@ -12,6 +13,13 @@ const { relative } = withDependencies export const [Dispatcher, DispatcherModuleId] = lookupModule( withProps('_interceptors').and( - withDependencies([relative(1), null, null, null, null, 2]), + withDependencies([ + relative(1), + null, + null, + null, + null, + ImportTrackerModuleId, + ]), ), ) as [DiscordModules.Flux.Dispatcher, Metro.ModuleID] diff --git a/lib/discord/src/common/index.ts b/lib/discord/src/common/index.ts index ded53a0..e329e46 100644 --- a/lib/discord/src/common/index.ts +++ b/lib/discord/src/common/index.ts @@ -5,6 +5,7 @@ import { withProps, } from '@revenge-mod/modules/finders/filters' import { proxify } from '@revenge-mod/utils/proxy' +import { ImportTrackerModuleId } from '../patches/import-tracker' import type { Metro } from '@revenge-mod/modules/types' import type { DiscordModules } from '../types' @@ -47,10 +48,10 @@ export let Constants: DiscordModules.Constants = proxify( withDependencies( loose([ null, - relative.withDependencies([2], 1), - relative.withDependencies([2], 2), - relative.withDependencies([2], 3), - relative.withDependencies([2], 4), + relative.withDependencies([ImportTrackerModuleId], 1), + relative.withDependencies([ImportTrackerModuleId], 2), + relative.withDependencies([ImportTrackerModuleId], 3), + relative.withDependencies([ImportTrackerModuleId], 4), ]), ), ), @@ -63,3 +64,5 @@ export let Constants: DiscordModules.Constants = proxify( }, { hint: {} }, )! + +export { ImportTrackerModuleId } from '../patches/import-tracker' diff --git a/lib/discord/src/common/utils.ts b/lib/discord/src/common/utils.ts index de93ab8..61b2486 100644 --- a/lib/discord/src/common/utils.ts +++ b/lib/discord/src/common/utils.ts @@ -4,6 +4,7 @@ import { withName, } from '@revenge-mod/modules/finders/filters' import { proxify } from '@revenge-mod/utils/proxy' +import { ImportTrackerModuleId } from '../patches/import-tracker' import type { DiscordModules } from '../types' // ../discord_common/js/shared/utils/TypedEventEmitter.tsx @@ -20,7 +21,7 @@ export let TypedEventEmitter: typeof DiscordModules.Utils.TypedEventEmitter = withName('_classCallCheck'), withName('_createClass'), [], - 2, + ImportTrackerModuleId, ]), ), ) diff --git a/lib/discord/src/design.ts b/lib/discord/src/design.ts index df33bd7..2094716 100644 --- a/lib/discord/src/design.ts +++ b/lib/discord/src/design.ts @@ -10,6 +10,7 @@ import { ReactNativeModuleId, } from '@revenge-mod/react' import { proxify } from '@revenge-mod/utils/proxy' +import { ImportTrackerModuleId } from './common' import type { DiscordModules } from './types' const { loose, relative } = withDependencies @@ -26,9 +27,12 @@ export let Design: Design = proxify( loose([ null, null, - withDependencies([ReactNativeModuleId, 2]), - withDependencies([2]), - 2, + withDependencies([ + ReactNativeModuleId, + ImportTrackerModuleId, + ]), + withDependencies([ImportTrackerModuleId]), + ImportTrackerModuleId, ]), ), ) @@ -63,8 +67,7 @@ export let FormSwitch: DiscordModules.Components.FormSwitch = proxify(() => { // Checkmark and X icons relative(1), relative(2), - // Import tracker - 2, + ImportTrackerModuleId, ]), ), ) diff --git a/lib/discord/src/modules/main_tabs_v2.ts b/lib/discord/src/modules/main_tabs_v2.ts index a5a5663..e623268 100644 --- a/lib/discord/src/modules/main_tabs_v2.ts +++ b/lib/discord/src/modules/main_tabs_v2.ts @@ -4,6 +4,7 @@ import { withProps, } from '@revenge-mod/modules/finders/filters' import { proxify } from '@revenge-mod/utils/proxy' +import { ImportTrackerModuleId } from '../common' import type { NavigationContainerRef } from '@react-navigation/core' const { loose, relative } = withDependencies @@ -28,7 +29,8 @@ export let RootNavigationRef: RootNavigationRef = proxify( 2, ), ]), - 2, + // TODO: Decouple? + ImportTrackerModuleId, ]), ) .keyAs('revenge.discord.modules.mainTabsV2.RootNavigationRef'), diff --git a/lib/discord/src/patches/import-tracker.ts b/lib/discord/src/patches/import-tracker.ts index 1cd2c40..e533764 100644 --- a/lib/discord/src/patches/import-tracker.ts +++ b/lib/discord/src/patches/import-tracker.ts @@ -11,7 +11,11 @@ export type ModuleFinishedImportingCallback = ( export const sImportedPath = new Set() export const mImportedPaths = new Map() -getModules(withProps('fileFinishedImporting'), exports => { +export let ImportTrackerModuleId: Metro.ModuleID + +getModules(withProps('fileFinishedImporting'), (exports, id) => { + ImportTrackerModuleId = id + const orig = exports.fileFinishedImporting exports.fileFinishedImporting = (path: string) => { orig(path) diff --git a/lib/discord/src/preinit.ts b/lib/discord/src/preinit.ts index 11288d0..2c44a57 100644 --- a/lib/discord/src/preinit.ts +++ b/lib/discord/src/preinit.ts @@ -11,7 +11,7 @@ const { relative } = withDependencies // ../discord_common/js/packages/app-start-performance/AppStartPerformance.tsx export const [AppStartPerformance] = lookupModule( withProps('markAndLog').and( - withDependencies([relative(-1), null, null, 2]), + withDependencies([relative(-1), null, null, null]), ), ) as [DiscordModules.AppStartPerformance, Metro.ModuleID] diff --git a/lib/externals/src/shopify.ts b/lib/externals/src/shopify.ts index 7c248cd..fb2ea51 100644 --- a/lib/externals/src/shopify.ts +++ b/lib/externals/src/shopify.ts @@ -1,3 +1,4 @@ +import { ImportTrackerModuleId } from '@revenge-mod/discord/common' import { lookupModule } from '@revenge-mod/modules/finders' import { withDependencies, @@ -23,7 +24,8 @@ export let FlashList: typeof import('@shopify/flash-list') = proxify( null, null, null, - 2, + // TODO: Decouple? + ImportTrackerModuleId, null, ]), ),