From d3754c2195780bd5e9e00b22e09f19cbdc1147f6 Mon Sep 17 00:00:00 2001
From: kmmiio99o <164557248+kmmiio99o@users.noreply.github.com>
Date: Sat, 18 Oct 2025 20:14:41 +0200
Subject: [PATCH] Rename PUPU to ShiggyCord and bump version
- Rename i18n keys and string usages (PUPU -> SHIGGYCORD) and export
shiggycordIcon instead of PupuIcon - Replace navigation route/keys
PUPU_CUSTOM_PAGE -> SHIGGYCORD_CUSTOM_PAGE - Bump bunny-build-info
version to 1.1.4-2 - Minor formatting and refactor in
PluginInfoActionSheet and shared code
---
scripts/build.mjs | 2 +-
src/core/i18n/default.json | 4 +-
src/core/ui/settings/index.ts | 8 +-
.../ui/settings/pages/Developer/index.tsx | 10 +-
src/core/ui/settings/pages/General/About.tsx | 8 +-
src/core/ui/settings/pages/General/index.tsx | 6 +-
.../pages/Plugins/components/PluginCard.tsx | 2 +-
.../ui/settings/pages/Plugins/models/bunny.ts | 4 +-
.../Plugins/sheets/PluginInfoActionSheet.tsx | 2 +-
.../sheets/VdPluginInfoActionSheet.tsx | 291 +++++++++++-------
src/lib/ui/settings/patches/panel.tsx | 2 +-
src/lib/ui/settings/patches/shared.tsx | 49 +--
src/lib/ui/settings/patches/tabs.tsx | 4 +-
src/modules.d.ts | 2 +-
14 files changed, 225 insertions(+), 169 deletions(-)
diff --git a/scripts/build.mjs b/scripts/build.mjs
index 9dcdcdd..9c4f8b3 100644
--- a/scripts/build.mjs
+++ b/scripts/build.mjs
@@ -77,7 +77,7 @@ const config = {
constModules: {
globals: {
"bunny-build-info": {
- version: `"1.1.4-1"`,
+ version: `"1.1.4-2"`,
},
},
},
diff --git a/src/core/i18n/default.json b/src/core/i18n/default.json
index f13e3b1..665f451 100644
--- a/src/core/i18n/default.json
+++ b/src/core/i18n/default.json
@@ -6,8 +6,8 @@
"ARE_YOU_SURE_TO_DELETE_THEME": "Are you sure you wish to delete {name}?",
"ASSET_BROWSER": "Asset Browser",
"BRAND": "Brand",
- "PUPU": "ShiggyCord",
- "PUPU_URL": "ShiggyCord URL",
+ "SHIGGYCORD": "ShiggyCord",
+ "SHIGGYCORD_URL": "ShiggyCord URL",
"BROWSER": "Browser",
"BYTECODE": "Bytecode",
"CANCEL": "Cancel",
diff --git a/src/core/ui/settings/index.ts b/src/core/ui/settings/index.ts
index e7f38bc..783f665 100644
--- a/src/core/ui/settings/index.ts
+++ b/src/core/ui/settings/index.ts
@@ -1,4 +1,4 @@
-import PupuIcon from "@assets/icons/shiggy.png";
+import shiggycordIcon from "@assets/icons/shiggy.png";
import { Strings } from "@core/i18n";
import { useProxy } from "@core/vendetta/storage";
import { findAssetId } from "@lib/api/assets";
@@ -7,7 +7,7 @@ import { settings } from "@lib/api/settings";
import { registerSection } from "@ui/settings";
import { version } from "bunny-build-info";
-export { PupuIcon };
+export { shiggycordIcon };
export default function initSettings() {
registerSection({
@@ -15,8 +15,8 @@ export default function initSettings() {
items: [
{
key: "SHIGGYCORD",
- title: () => Strings.PUPU,
- icon: { uri: PupuIcon },
+ title: () => Strings.SHIGGYCORD,
+ icon: { uri: shiggycordIcon },
render: () => import("@core/ui/settings/pages/General"),
useTrailing: () => `(${version})`,
},
diff --git a/src/core/ui/settings/pages/Developer/index.tsx b/src/core/ui/settings/pages/Developer/index.tsx
index 7efd2be..ec5c26a 100644
--- a/src/core/ui/settings/pages/Developer/index.tsx
+++ b/src/core/ui/settings/pages/Developer/index.tsx
@@ -189,7 +189,7 @@ export default function Developer() {
(loaderConfig.customLoadUrl.url = v)
}
placeholder="http://localhost:4040/shiggycord.js"
- label={Strings.PUPU_URL}
+ label={Strings.SHIGGYCORD_URL}
/>
}
/>
@@ -204,7 +204,7 @@ export default function Developer() {
icon={}
trailing={TableRow.Arrow}
onPress={() =>
- navigation.push("PUPU_CUSTOM_PAGE", {
+ navigation.push("SHIGGYCORD_CUSTOM_PAGE", {
title: Strings.ASSET_BROWSER,
render: AssetBrowser,
})
@@ -231,7 +231,7 @@ export default function Developer() {
// @ts-expect-error
// Of course, to trigger an error, we need to do something incorrectly. The below will do!
{
- label: Strings.PUPU,
+ label: Strings.SHIGGYCORD,
onPress: () =>
navigation.push("SHIGGYCORD_CUSTOM_PAGE", {
render: () => ,
@@ -241,7 +241,7 @@ export default function Developer() {
label: "Discord",
isDestructive: true,
onPress: () =>
- navigation.push("PUPU_CUSTOM_PAGE", {
+ navigation.push("SHIGGYCORD_CUSTOM_PAGE", {
noErrorBoundary: true,
}),
},
@@ -259,7 +259,7 @@ export default function Developer() {
icon={}
onPress={() => {
openAlert(
- "pupu-clear-bundle-reload-confirmation",
+ "shiggycord-clear-bundle-reload-confirmation",
- {Strings.PUPU}
+ {Strings.SHIGGYCORD}
}
+ icon={}
trailing={}
/>
}
onPress={() =>
- navigation.push("PUPU_CUSTOM_PAGE", {
+ navigation.push("SHIGGYCORD_CUSTOM_PAGE", {
title: Strings.ABOUT,
render: () => ,
})
diff --git a/src/core/ui/settings/pages/Plugins/components/PluginCard.tsx b/src/core/ui/settings/pages/Plugins/components/PluginCard.tsx
index b091fe6..e631993 100644
--- a/src/core/ui/settings/pages/Plugins/components/PluginCard.tsx
+++ b/src/core/ui/settings/pages/Plugins/components/PluginCard.tsx
@@ -118,7 +118,7 @@ const Actions = () => {
icon={findAssetId("WrenchIcon")}
disabled={!plugin.getPluginSettingsComponent()}
onPress={() =>
- navigation.push("PUPU_CUSTOM_PAGE", {
+ navigation.push("SHIGGYCORD_CUSTOM_PAGE", {
title: plugin.name,
render: plugin.getPluginSettingsComponent(),
})
diff --git a/src/core/ui/settings/pages/Plugins/models/bunny.ts b/src/core/ui/settings/pages/Plugins/models/bunny.ts
index 2ef1c9c..674f993 100644
--- a/src/core/ui/settings/pages/Plugins/models/bunny.ts
+++ b/src/core/ui/settings/pages/Plugins/models/bunny.ts
@@ -1,4 +1,4 @@
-import { PupuIcon } from "@core/ui/settings";
+import { shiggycordIcon } from "@core/ui/settings";
import {
disablePlugin,
enablePlugin,
@@ -22,7 +22,7 @@ export default function unifyBunnyPlugin(
getBadges() {
return [
- { source: { uri: PupuIcon } },
+ { source: { uri: shiggycordIcon } },
// { source: findAssetId("CheckmarkLargeBoldIcon")! }
];
},
diff --git a/src/core/ui/settings/pages/Plugins/sheets/PluginInfoActionSheet.tsx b/src/core/ui/settings/pages/Plugins/sheets/PluginInfoActionSheet.tsx
index 27bc723..5445d81 100644
--- a/src/core/ui/settings/pages/Plugins/sheets/PluginInfoActionSheet.tsx
+++ b/src/core/ui/settings/pages/Plugins/sheets/PluginInfoActionSheet.tsx
@@ -196,7 +196,7 @@ export default function PluginInfoActionSheet({
disabled={!plugin.getPluginSettingsComponent()}
icon={findAssetId("WrenchIcon")}
onPress={() => {
- navigation.push("PUPU_CUSTOM_PAGE", {
+ navigation.push("SHIGGYCORD_CUSTOM_PAGE", {
title: plugin.name,
render: plugin.getPluginSettingsComponent(),
});
diff --git a/src/core/ui/settings/pages/Plugins/sheets/VdPluginInfoActionSheet.tsx b/src/core/ui/settings/pages/Plugins/sheets/VdPluginInfoActionSheet.tsx
index 73657cd..796aaa6 100644
--- a/src/core/ui/settings/pages/Plugins/sheets/VdPluginInfoActionSheet.tsx
+++ b/src/core/ui/settings/pages/Plugins/sheets/VdPluginInfoActionSheet.tsx
@@ -4,137 +4,190 @@ import { VdPluginManager } from "@core/vendetta/plugins";
import { purgeStorage } from "@core/vendetta/storage";
import { findAssetId } from "@lib/api/assets";
import { clipboard } from "@metro/common";
-import { ActionSheet, ActionSheetRow, Button, TableRow, Text } from "@metro/common/components";
+import {
+ ActionSheet,
+ ActionSheetRow,
+ Button,
+ TableRow,
+ Text,
+} from "@metro/common/components";
import { hideSheet } from "@ui/sheets";
import { showToast } from "@ui/toasts";
import { ScrollView, View } from "react-native";
import { PluginInfoActionSheetProps } from "./common";
-export default function PluginInfoActionSheet({ plugin, navigation }: PluginInfoActionSheetProps) {
- plugin.usePluginState();
+export default function PluginInfoActionSheet({
+ plugin,
+ navigation,
+}: PluginInfoActionSheetProps) {
+ plugin.usePluginState();
- const vdPlugin = VdPluginManager.plugins[plugin.id];
- const SettingsComponent = plugin.getPluginSettingsComponent();
+ const vdPlugin = VdPluginManager.plugins[plugin.id];
+ const SettingsComponent = plugin.getPluginSettingsComponent();
- return
-
-
-
- {plugin.name}
-
-
- {SettingsComponent &&
-
-
- }
- onPress={async () => {
- if (vdPlugin.enabled) VdPluginManager.stopPlugin(plugin.id, false);
+ return (
+
+
+
+ {plugin.name}
+
+ {SettingsComponent && (
+
+
+
+ }
+ onPress={async () => {
+ if (vdPlugin.enabled)
+ VdPluginManager.stopPlugin(plugin.id, false);
- try {
- await VdPluginManager.fetchPlugin(plugin.id);
- showToast(Strings.PLUGIN_REFETCH_SUCCESSFUL, findAssetId("toast_image_saved"));
- } catch {
- showToast(Strings.PLUGIN_REFETCH_FAILED, findAssetId("Small"));
- }
+ try {
+ await VdPluginManager.fetchPlugin(plugin.id);
+ showToast(
+ Strings.PLUGIN_REFETCH_SUCCESSFUL,
+ findAssetId("toast_image_saved"),
+ );
+ } catch {
+ showToast(Strings.PLUGIN_REFETCH_FAILED, findAssetId("Small"));
+ }
- if (vdPlugin.enabled) await VdPluginManager.startPlugin(plugin.id);
- hideSheet("PluginInfoActionSheet");
- }}
- />
- }
- onPress={() => {
- clipboard.setString(plugin.id);
- showToast.showCopyToClipboard();
- }}
- />
- }
- onPress={() => {
- vdPlugin.update = !vdPlugin.update;
- showToast(formatString("TOASTS_PLUGIN_UPDATE", {
- update: vdPlugin.update,
- name: plugin.name
- }), findAssetId("toast_image_saved"));
- }}
- />
- }
- variant="danger"
- onPress={() => showConfirmationAlert({
- title: Strings.HOLD_UP,
- content: formatString("ARE_YOU_SURE_TO_CLEAR_DATA", { name: plugin.name }),
- confirmText: Strings.CLEAR,
- cancelText: Strings.CANCEL,
- confirmColor: "red",
- onConfirm: async () => {
- if (vdPlugin.enabled) VdPluginManager.stopPlugin(plugin.id, false);
+ if (vdPlugin.enabled)
+ await VdPluginManager.startPlugin(plugin.id);
+ hideSheet("PluginInfoActionSheet");
+ }}
+ />
+ }
+ onPress={() => {
+ clipboard.setString(plugin.id);
+ showToast.showCopyToClipboard();
+ }}
+ />
+ }
+ onPress={() => {
+ vdPlugin.update = !vdPlugin.update;
+ showToast(
+ formatString("TOASTS_PLUGIN_UPDATE", {
+ update: vdPlugin.update,
+ name: plugin.name,
+ }),
+ findAssetId("toast_image_saved"),
+ );
+ }}
+ />
+
+ }
+ variant="danger"
+ onPress={() =>
+ showConfirmationAlert({
+ title: Strings.HOLD_UP,
+ content: formatString("ARE_YOU_SURE_TO_CLEAR_DATA", {
+ name: plugin.name,
+ }),
+ confirmText: Strings.CLEAR,
+ cancelText: Strings.CANCEL,
+ confirmColor: "red",
+ onConfirm: async () => {
+ if (vdPlugin.enabled)
+ VdPluginManager.stopPlugin(plugin.id, false);
- try {
- await VdPluginManager.fetchPlugin(plugin.id);
- showToast(Strings.PLUGIN_REFETCH_SUCCESSFUL, findAssetId("toast_image_saved"));
- } catch {
- showToast(Strings.PLUGIN_REFETCH_FAILED, findAssetId("Small"));
- }
+ try {
+ await VdPluginManager.fetchPlugin(plugin.id);
+ showToast(
+ Strings.PLUGIN_REFETCH_SUCCESSFUL,
+ findAssetId("toast_image_saved"),
+ );
+ } catch {
+ showToast(
+ Strings.PLUGIN_REFETCH_FAILED,
+ findAssetId("Small"),
+ );
+ }
- let message: any[];
- try {
- purgeStorage(plugin.id);
- message = ["CLEAR_DATA_SUCCESSFUL", "trash"];
- } catch {
- message = ["CLEAR_DATA_FAILED", "Small"];
- }
+ let message: any[];
+ try {
+ purgeStorage(plugin.id);
+ message = ["CLEAR_DATA_SUCCESSFUL", "trash"];
+ } catch {
+ message = ["CLEAR_DATA_FAILED", "Small"];
+ }
- showToast(
- formatString(message[0], { name: plugin.name }),
- findAssetId(message[1])
- );
+ showToast(
+ formatString(message[0], { name: plugin.name }),
+ findAssetId(message[1]),
+ );
- if (vdPlugin.enabled) await VdPluginManager.startPlugin(plugin.id);
- hideSheet("PluginInfoActionSheet");
- }
- })}
- />
- }
- variant="danger"
- onPress={() => showConfirmationAlert({
- title: Strings.HOLD_UP,
- content: formatString("ARE_YOU_SURE_TO_DELETE_PLUGIN", { name: plugin.name }),
- confirmText: Strings.DELETE,
- cancelText: Strings.CANCEL,
- confirmColor: "red",
- onConfirm: () => {
- try {
- VdPluginManager.removePlugin(plugin.id);
- } catch (e) {
- showToast(String(e), findAssetId("Small"));
- }
- hideSheet("PluginInfoActionSheet");
- }
- })}
- />
-
-
- ;
+ if (vdPlugin.enabled)
+ await VdPluginManager.startPlugin(plugin.id);
+ hideSheet("PluginInfoActionSheet");
+ },
+ })
+ }
+ />
+
+ }
+ variant="danger"
+ onPress={() =>
+ showConfirmationAlert({
+ title: Strings.HOLD_UP,
+ content: formatString("ARE_YOU_SURE_TO_DELETE_PLUGIN", {
+ name: plugin.name,
+ }),
+ confirmText: Strings.DELETE,
+ cancelText: Strings.CANCEL,
+ confirmColor: "red",
+ onConfirm: () => {
+ try {
+ VdPluginManager.removePlugin(plugin.id);
+ } catch (e) {
+ showToast(String(e), findAssetId("Small"));
+ }
+ hideSheet("PluginInfoActionSheet");
+ },
+ })
+ }
+ />
+
+
+
+ );
}
diff --git a/src/lib/ui/settings/patches/panel.tsx b/src/lib/ui/settings/patches/panel.tsx
index 5301389..a5cf9eb 100644
--- a/src/lib/ui/settings/patches/panel.tsx
+++ b/src/lib/ui/settings/patches/panel.tsx
@@ -64,7 +64,7 @@ export function patchPanelUI(unpatches: (() => void | boolean)[]) {
title: "ShiggyCord",
render: () => ,
},
- PUPU_CUSTOM_PAGE: {
+ SHIGGYCORD_CUSTOM_PAGE: {
title: "ShiggyCord",
render: () => ,
},
diff --git a/src/lib/ui/settings/patches/shared.tsx b/src/lib/ui/settings/patches/shared.tsx
index 20d72cf..cf0ba4c 100644
--- a/src/lib/ui/settings/patches/shared.tsx
+++ b/src/lib/ui/settings/patches/shared.tsx
@@ -6,37 +6,40 @@ import { RowConfig } from "@ui/settings";
const tabsNavigationRef = findByPropsLazy("getRootNavigationRef");
export const CustomPageRenderer = React.memo(() => {
- const navigation = NavigationNative.useNavigation();
- const route = NavigationNative.useRoute();
+ const navigation = NavigationNative.useNavigation();
+ const route = NavigationNative.useRoute();
- const { render: PageComponent, ...args } = route.params;
+ const { render: PageComponent, ...args } = route.params;
- React.useEffect(() => void navigation.setOptions({ ...args }), []);
+ React.useEffect(() => void navigation.setOptions({ ...args }), []);
- return ;
+ return (
+
+
+
+ );
});
export function wrapOnPress(
- onPress: (() => unknown) | undefined,
- navigation?: any,
- renderPromise?: RowConfig["render"],
- screenOptions?: string | Record,
- props?: any,
+ onPress: (() => unknown) | undefined,
+ navigation?: any,
+ renderPromise?: RowConfig["render"],
+ screenOptions?: string | Record,
+ props?: any,
) {
- return async () => {
- if (onPress) return void onPress();
+ return async () => {
+ if (onPress) return void onPress();
- const Component = await renderPromise!!().then(m => m.default);
+ const Component = await renderPromise!!().then((m) => m.default);
- if (typeof screenOptions === "string") {
- screenOptions = { title: screenOptions };
- }
+ if (typeof screenOptions === "string") {
+ screenOptions = { title: screenOptions };
+ }
- navigation ??= tabsNavigationRef.getRootNavigationRef();
- navigation.navigate("PUPU_CUSTOM_PAGE", {
- ...screenOptions,
- render: () =>
- });
- };
+ navigation ??= tabsNavigationRef.getRootNavigationRef();
+ navigation.navigate("SHIGGYCORD_CUSTOM_PAGE", {
+ ...screenOptions,
+ render: () => ,
+ });
+ };
}
-
diff --git a/src/lib/ui/settings/patches/tabs.tsx b/src/lib/ui/settings/patches/tabs.tsx
index 5b92a35..cde706c 100644
--- a/src/lib/ui/settings/patches/tabs.tsx
+++ b/src/lib/ui/settings/patches/tabs.tsx
@@ -53,11 +53,11 @@ export function patchTabsUI(unpatches: (() => void | boolean)[]) {
getComponent: () => CustomPageRenderer,
},
},
- PUPU_CUSTOM_PAGE: {
+ SHIGGYCORD_CUSTOM_PAGE: {
type: "route",
title: () => "ShiggyCord",
screen: {
- route: "PUPU_CUSTOM_PAGE",
+ route: "SHIGGYCORD_CUSTOM_PAGE",
getComponent: () => CustomPageRenderer,
},
},
diff --git a/src/modules.d.ts b/src/modules.d.ts
index f1ef044..c82fd21 100644
--- a/src/modules.d.ts
+++ b/src/modules.d.ts
@@ -1,5 +1,5 @@
declare module "bunny-build-info" {
- const version: "1.1.4-1";
+ const version: "1.1.4-2";
}
declare module "*.png" {