diff --git a/src/core/plugins/quickInstall/forumPost.tsx b/src/core/plugins/quickInstall/forumPost.tsx index 026d88f..3d99516 100644 --- a/src/core/plugins/quickInstall/forumPost.tsx +++ b/src/core/plugins/quickInstall/forumPost.tsx @@ -1,5 +1,5 @@ import { Strings } from "@core/i18n"; -import { getAssetIDByName } from "@lib/api/assets"; +import { requireAssetIndex } from "@lib/api/assets"; import { isThemeSupported } from "@lib/api/native/loader"; import { after } from "@lib/api/patcher"; import { useProxy } from "@lib/api/storage"; @@ -77,7 +77,7 @@ function useInstaller(thread: any, firstMessage = null, actionSheet = false): [t try { await postMap[postType].installOrRemove(url); } catch (e: any) { - showToast(e.message, getAssetIDByName("Small")); + showToast(e.message, requireAssetIndex("Small")); } finally { setIsInstalling(false); } @@ -119,7 +119,7 @@ const installButtonPatch = () => after("MostCommonForumPostReaction", forumReact variant={installed ? "secondary" : "primary"} text={installed ? Strings.UNINSTALL : Strings.INSTALL} onPress={installOrRemove} - icon={getAssetIDByName(installed ? "ic_message_delete" : "DownloadIcon")} + icon={requireAssetIndex(installed ? "ic_message_delete" : "DownloadIcon")} style={{ marginLeft: 8 }} /> diff --git a/src/core/plugins/quickInstall/url.tsx b/src/core/plugins/quickInstall/url.tsx index 1f97fd4..5f094e8 100644 --- a/src/core/plugins/quickInstall/url.tsx +++ b/src/core/plugins/quickInstall/url.tsx @@ -1,5 +1,5 @@ import { formatString, Strings } from "@core/i18n"; -import { getAssetIDByName } from "@lib/api/assets"; +import { requireAssetIndex } from "@lib/api/assets"; import { isThemeSupported } from "@lib/api/native/loader"; import { after, instead } from "@lib/api/patcher"; import { installPlugin } from "@lib/managers/plugins"; @@ -30,10 +30,10 @@ function typeFromUrl(url: string) { function installWithToast(type: "plugin" | "theme", url: string) { (type === "plugin" ? installPlugin : installTheme)(url) .then(() => { - showToast(Strings.SUCCESSFULLY_INSTALLED, getAssetIDByName("Check")); + showToast(Strings.SUCCESSFULLY_INSTALLED, requireAssetIndex("Check")); }) .catch((e: Error) => { - showToast(e.message, getAssetIDByName("Small")); + showToast(e.message, requireAssetIndex("Small")); }); } diff --git a/src/core/ui/components/AddonPage.tsx b/src/core/ui/components/AddonPage.tsx index b55c0d0..63f09f6 100644 --- a/src/core/ui/components/AddonPage.tsx +++ b/src/core/ui/components/AddonPage.tsx @@ -1,6 +1,6 @@ import { Strings } from "@core/i18n"; import { CardWrapper } from "@core/ui/components/Card"; -import { getAssetIDByName } from "@lib/api/assets"; +import { requireAssetIndex } from "@lib/api/assets"; import { useProxy } from "@lib/api/storage"; import { settings } from "@lib/settings"; import { HTTP_REGEX_MULTI } from "@lib/utils/constants"; @@ -85,7 +85,7 @@ export default function AddonPage({ floatingButtonText, fetchFunction, items, /> { // from ./InstallButton.tsx diff --git a/src/core/ui/components/Card.tsx b/src/core/ui/components/Card.tsx index 4b2bba8..434ce00 100644 --- a/src/core/ui/components/Card.tsx +++ b/src/core/ui/components/Card.tsx @@ -1,4 +1,4 @@ -import { getAssetIDByName } from "@lib/api/assets"; +import { requireAssetIndex } from "@lib/api/assets"; import { lazyDestructure } from "@lib/utils/lazy"; import { ReactNative as RN } from "@metro/common"; import { findByProps } from "@metro/utils"; @@ -96,7 +96,7 @@ export default function Card(props: CardProps) { return ( @@ -119,14 +119,14 @@ export default function Card(props: CardProps) { key: "CardOverflow", header: { title: props.overflowTitle, - icon: props.headerIcon && , + icon: props.headerIcon && , onClose: () => hideActionSheet(), }, - options: props.overflowActions?.map(i => ({ ...i, icon: getAssetIDByName(i.icon) })), + options: props.overflowActions?.map(i => ({ ...i, icon: requireAssetIndex(i.icon) })), })} size="sm" variant="secondary" - icon={getAssetIDByName("CircleInformationIcon-primary")} + icon={requireAssetIndex("CircleInformationIcon-primary")} />} {props.actions?.map(({ icon, onPress, disabled }) => ( ))} diff --git a/src/core/ui/components/FontCard.tsx b/src/core/ui/components/FontCard.tsx index b71e733..396e667 100644 --- a/src/core/ui/components/FontCard.tsx +++ b/src/core/ui/components/FontCard.tsx @@ -1,6 +1,6 @@ import { Strings } from "@core/i18n"; import { CardWrapper } from "@core/ui/components/Card"; -import { getAssetIDByName } from "@lib/api/assets"; +import { requireAssetIndex } from "@lib/api/assets"; import { useProxy } from "@lib/api/storage"; import { FontDefinition, fonts, removeFont, selectFont } from "@lib/managers/fonts"; import { FormCheckbox, IconButton, TableRow, TableRowGroup } from "@ui/components/discord/Redesign"; @@ -23,13 +23,13 @@ export default function FontCard({ item: font, index }: CardWrapper { selectFont(selected ? null : font.name).then(() => { - showToast(Strings.RESTART_REQUIRED_TO_TAKE_EFFECT, getAssetIDByName("WarningIcon")); + showToast(Strings.RESTART_REQUIRED_TO_TAKE_EFFECT, requireAssetIndex("WarningIcon")); }); }}> {!removeMode ? : removeFont(font.name)} />} diff --git a/src/core/ui/components/InstallButton.tsx b/src/core/ui/components/InstallButton.tsx index 40c3a60..525bf17 100644 --- a/src/core/ui/components/InstallButton.tsx +++ b/src/core/ui/components/InstallButton.tsx @@ -1,5 +1,5 @@ import { Strings } from "@core/i18n"; -import { getAssetIDByName } from "@lib/api/assets"; +import { requireAssetIndex } from "@lib/api/assets"; import { HTTP_REGEX_MULTI } from "@lib/utils/constants"; import { clipboard } from "@metro/common"; import { showInputAlert } from "@ui/alerts"; @@ -35,7 +35,7 @@ export default function InstallButton({ alertTitle, installFunction: fetchFuncti }) ) }> - + ); } diff --git a/src/core/ui/components/PluginCard.tsx b/src/core/ui/components/PluginCard.tsx index c2219a0..a3b8972 100644 --- a/src/core/ui/components/PluginCard.tsx +++ b/src/core/ui/components/PluginCard.tsx @@ -1,6 +1,6 @@ import { formatString, Strings } from "@core/i18n"; import Card, { CardWrapper } from "@core/ui/components/Card"; -import { getAssetIDByName } from "@lib/api/assets"; +import { requireAssetIndex } from "@lib/api/assets"; import { purgeStorage, useProxy } from "@lib/api/storage"; import { BunnyPlugin, fetchPlugin, getSettings, removePlugin, startPlugin, stopPlugin } from "@lib/managers/plugins"; import { ButtonColors } from "@lib/utils/types"; @@ -37,7 +37,7 @@ export default function PluginCard({ item: plugin, index }: CardWrapper { stopThenStart(plugin, () => { fetchPlugin(plugin.id).then(async () => { - showToast(Strings.PLUGIN_REFETCH_SUCCESSFUL, getAssetIDByName("toast_image_saved")); + showToast(Strings.PLUGIN_REFETCH_SUCCESSFUL, requireAssetIndex("toast_image_saved")); }).catch(() => { - showToast(Strings.PLUGIN_REFETCH_FAILED, getAssetIDByName("Small")); + showToast(Strings.PLUGIN_REFETCH_FAILED, requireAssetIndex("Small")); }); }); }, @@ -85,7 +85,7 @@ export default function PluginCard({ item: plugin, index }: CardWrapper { plugin.update = !plugin.update; - showToast(formatString("TOASTS_PLUGIN_UPDATE", { update: plugin.update, name: plugin.manifest.name }), getAssetIDByName("toast_image_saved")); + showToast(formatString("TOASTS_PLUGIN_UPDATE", { update: plugin.update, name: plugin.manifest.name }), requireAssetIndex("toast_image_saved")); } }, { @@ -102,9 +102,9 @@ export default function PluginCard({ item: plugin, index }: CardWrapper { try { purgeStorage(plugin.id); - showToast(formatString("CLEAR_DATA_SUCCESSFUL", { name: plugin.manifest.name }), getAssetIDByName("trash")); + showToast(formatString("CLEAR_DATA_SUCCESSFUL", { name: plugin.manifest.name }), requireAssetIndex("trash")); } catch { - showToast(formatString("CLEAR_DATA_FAILED", { name: plugin.manifest.name }), getAssetIDByName("Small")); + showToast(formatString("CLEAR_DATA_FAILED", { name: plugin.manifest.name }), requireAssetIndex("Small")); } }); } @@ -125,7 +125,7 @@ export default function PluginCard({ item: plugin, index }: CardWrapper) { label: Strings.REFETCH, onPress: () => { fetchTheme(theme.id, theme.selected).then(() => { - showToast(Strings.THEME_REFETCH_SUCCESSFUL, getAssetIDByName("toast_image_saved")); + showToast(Strings.THEME_REFETCH_SUCCESSFUL, requireAssetIndex("toast_image_saved")); }).catch(() => { - showToast(Strings.THEME_REFETCH_FAILED, getAssetIDByName("Small")); + showToast(Strings.THEME_REFETCH_FAILED, requireAssetIndex("Small")); }); }, }, @@ -75,7 +75,7 @@ export default function ThemeCard({ item: theme, index }: CardWrapper) { setRemoved(true); if (wasSelected) selectAndApply(false, theme); }).catch((e: Error) => { - showToast(e.message, getAssetIDByName("Small")); + showToast(e.message, requireAssetIndex("Small")); }); } }) diff --git a/src/core/ui/components/Version.tsx b/src/core/ui/components/Version.tsx index 3607e27..3fcb489 100644 --- a/src/core/ui/components/Version.tsx +++ b/src/core/ui/components/Version.tsx @@ -1,4 +1,4 @@ -import { getAssetIDByName } from "@lib/api/assets"; +import { requireAssetIndex } from "@lib/api/assets"; import { clipboard } from "@metro/common"; import { FormText } from "@ui/components/discord/Forms"; import { TableRow } from "@ui/components/discord/Redesign"; @@ -14,7 +14,7 @@ export default function Version({ label, version, icon }: VersionProps) { return ( } + icon={} trailing={{version}} onPress={() => { clipboard.setString(`${label} - ${version}`); diff --git a/src/core/ui/settings/index.ts b/src/core/ui/settings/index.ts index 1f7c7cf..1a310b1 100644 --- a/src/core/ui/settings/index.ts +++ b/src/core/ui/settings/index.ts @@ -1,5 +1,5 @@ import { Strings } from "@core/i18n"; -import { getAssetIDByName } from "@lib/api/assets"; +import { requireAssetIndex } from "@lib/api/assets"; import { isFontSupported, isThemeSupported } from "@lib/api/native/loader"; import { useProxy } from "@lib/api/storage"; import { settings } from "@lib/settings"; @@ -28,27 +28,27 @@ export default function initSettings() { { key: "BUNNY_PLUGINS", title: () => Strings.PLUGINS, - icon: getAssetIDByName("ActivitiesIcon"), + icon: requireAssetIndex("ActivitiesIcon"), render: () => import("@core/ui/settings/pages/Plugins") }, { key: "BUNNY_THEMES", title: () => Strings.THEMES, - icon: getAssetIDByName("PaintPaletteIcon"), + icon: requireAssetIndex("PaintPaletteIcon"), render: () => import("@core/ui/settings/pages/Themes"), usePredicate: () => isThemeSupported() }, { key: "BUNNY_FONTS", title: () => Strings.FONTS, - icon: getAssetIDByName("ic_add_text"), + icon: requireAssetIndex("ic_add_text"), render: () => import("@core/ui/settings/pages/Fonts"), usePredicate: () => isFontSupported() }, { key: "BUNNY_DEVELOPER", title: () => Strings.DEVELOPER, - icon: getAssetIDByName("WrenchIcon"), + icon: requireAssetIndex("WrenchIcon"), render: () => import("@core/ui/settings/pages/Developer"), usePredicate: () => useProxy(settings).developerSettings ?? false } diff --git a/src/core/ui/settings/pages/AssetBrowser.tsx b/src/core/ui/settings/pages/AssetBrowser.tsx index 7b45d97..2ad3e8c 100644 --- a/src/core/ui/settings/pages/AssetBrowser.tsx +++ b/src/core/ui/settings/pages/AssetBrowser.tsx @@ -1,5 +1,5 @@ import AssetDisplay from "@core/ui/components/AssetDisplay"; -import { all } from "@lib/api/assets"; +import { assetsMap } from "@lib/api/assets"; import { ErrorBoundary, Search } from "@ui/components"; import { FormDivider } from "@ui/components/discord/Forms"; import { FlatList, View } from "react-native"; @@ -15,7 +15,7 @@ export default function AssetBrowser() { onChangeText={(v: string) => setSearch(v)} /> a.name.includes(search) || a.id.toString() === search)} + data={Object.values(assetsMap).filter(a => a.name.includes(search) || a.id.toString() === search)} renderItem={({ item }) => } ItemSeparatorComponent={FormDivider} keyExtractor={item => item.name} diff --git a/src/core/ui/settings/pages/Developer.tsx b/src/core/ui/settings/pages/Developer.tsx index 6bf907b..bb87aff 100644 --- a/src/core/ui/settings/pages/Developer.tsx +++ b/src/core/ui/settings/pages/Developer.tsx @@ -1,7 +1,7 @@ import { Strings } from "@core/i18n"; import { CheckState, useFileExists } from "@core/ui/settings/hooks/useFS"; import AssetBrowser from "@core/ui/settings/pages/AssetBrowser"; -import { getAssetIDByName } from "@lib/api/assets"; +import { requireAssetIndex } from "@lib/api/assets"; import { getReactDevToolsProp, getReactDevToolsVersion, isLoaderConfigSupported, isReactDevToolsPreloaded, isVendettaLoader } from "@lib/api/native/loader"; import { useProxy } from "@lib/api/storage"; import { connectToDebugger } from "@lib/debug"; @@ -53,13 +53,13 @@ export default function Developer() { } + icon={} onPress={() => connectToDebugger(settings.debuggerUrl)} /> {isReactDevToolsPreloaded() && <> } + icon={} onPress={() => window[getReactDevToolsProp() || "__vendetta_rdc"]?.connectToDevTools({ host: settings.debuggerUrl.split(":")?.[0], resolveRNStyle: StyleSheet.flatten, @@ -72,7 +72,7 @@ export default function Developer() { } + icon={} value={loaderConfig.customLoadUrl.enabled} onValueChange={(v: boolean) => { loaderConfig.customLoadUrl.enabled = v; @@ -88,7 +88,7 @@ export default function Developer() { {isReactDevToolsPreloaded() && isVendettaLoader() && } + icon={} value={loaderConfig.loadReactDevTools} onValueChange={(v: boolean) => { loaderConfig.loadReactDevTools = v; @@ -100,7 +100,7 @@ export default function Developer() { } + icon={} trailing={TableRow.Arrow} onPress={() => navigation.push("VendettaCustomPage", { title: Strings.ASSET_BROWSER, @@ -110,12 +110,12 @@ export default function Developer() { } + icon={} onPress={() => showSimpleActionSheet({ key: "ErrorBoundaryTools", header: { title: "Which ErrorBoundary do you want to trip?", - icon: , + icon: , onClose: () => hideActionSheet(), }, options: [ @@ -129,7 +129,7 @@ export default function Developer() { } + icon={} trailing={