diff --git a/client/src/components/AdminIconButton.tsx b/client/src/components/AdminIconButton.tsx
deleted file mode 100644
index 85252fc..0000000
--- a/client/src/components/AdminIconButton.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-export const AdminIconButton = ({
- setShowSettings,
- showSettings,
-}: {
- setShowSettings: (value: boolean) => void;
- showSettings: boolean;
-}) => {
- return (
-
- );
-};
-
-export default AdminIconButton;
diff --git a/client/src/components/AdminView.tsx b/client/src/components/AdminView.tsx
deleted file mode 100644
index 7b2176f..0000000
--- a/client/src/components/AdminView.tsx
+++ /dev/null
@@ -1,62 +0,0 @@
-import { useContext, useState } from "react";
-
-// components
-import { ConfirmationModal } from "@/components";
-
-// context
-import { GlobalDispatchContext, GlobalStateContext } from "@/context/GlobalContext";
-
-// utils
-import { backendAPI, setErrorMessage } from "@/utils";
-
-export const AdminView = () => {
- const dispatch = useContext(GlobalDispatchContext);
- const { keyAssetId } = useContext(GlobalStateContext);
-
- const [showConfirmationModal, setShowConfirmationModal] = useState(false);
- const [areButtonsDisabled, setAreButtonsDisabled] = useState(false);
-
- function handleToggleShowConfirmationModal() {
- setShowConfirmationModal(!showConfirmationModal);
- }
-
- const handleRemoveDroppedAssets = async () => {
- setAreButtonsDisabled(true);
-
- backendAPI
- .post("/remove-dropped-assets", { keyAssetId })
- .catch((error) => setErrorMessage(dispatch, error))
- .finally(() => {
- setShowConfirmationModal(false);
- setAreButtonsDisabled(false);
- });
- };
-
- return (
-
-
Settings
- {keyAssetId ? (
-
- ) : (
-
Unable to find key asset with unique name "virtualPetKeyAsset".
- )}
-
- {showConfirmationModal && (
-
- )}
-
- );
-};
-
-export default AdminView;
diff --git a/client/src/components/PageContainer.tsx b/client/src/components/PageContainer.tsx
index 8616cda..e64380d 100644
--- a/client/src/components/PageContainer.tsx
+++ b/client/src/components/PageContainer.tsx
@@ -1,7 +1,7 @@
-import { ReactNode, useContext, useState } from "react";
+import { ReactNode, useContext } from "react";
// components
-import { AdminView, AdminIconButton, Loading } from "@/components";
+import { Loading } from "@/components";
// context
import { GlobalStateContext } from "@context/GlobalContext";
@@ -15,29 +15,19 @@ export const PageContainer = ({
isLoading: boolean;
headerText?: string;
}) => {
- const { error, isAdmin } = useContext(GlobalStateContext);
- const [showSettings, setShowSettings] = useState(false);
+ const { error } = useContext(GlobalStateContext);
if (isLoading) return ;
return (
- {isAdmin && (
-
setShowSettings(!showSettings)} showSettings={showSettings} />
- )}
{headerText && (
{headerText}
)}
- {showSettings ? (
-
- ) : (
- <>
- {children}
- {error && {error}
}
- >
- )}
+ {children}
+ {error && {error}
}
);
};
diff --git a/client/src/components/index.ts b/client/src/components/index.ts
index 3bf22b0..ec9d7f9 100644
--- a/client/src/components/index.ts
+++ b/client/src/components/index.ts
@@ -1,7 +1,5 @@
export * from "./ActionIcon.js";
export * from "./ActionIconsContainer.js";
-export * from "./AdminView.js";
-export * from "./AdminIconButton.js";
export * from "./ConfirmationModal.js";
export * from "./CreatePet.js";
export * from "./PetColors.js";
diff --git a/client/src/context/constants.ts b/client/src/context/constants.ts
index db6c0e4..5c5326c 100644
--- a/client/src/context/constants.ts
+++ b/client/src/context/constants.ts
@@ -2,7 +2,6 @@ import { defaultPetStatus } from "@/constants";
export const initialState = {
error: "",
- isAdmin: false,
isPetOwner: false,
petStatus: defaultPetStatus,
hasInteractiveParams: false,
diff --git a/client/src/context/reducer.ts b/client/src/context/reducer.ts
index b51a78b..e34d76b 100644
--- a/client/src/context/reducer.ts
+++ b/client/src/context/reducer.ts
@@ -6,7 +6,6 @@ import {
SET_HAS_SETUP_BACKEND,
SET_INTERACTIVE_PARAMS,
SET_KEY_ASSET_ID,
- SET_IS_ADMIN,
SET_SELECTED_PET,
} from "./types";
@@ -24,12 +23,6 @@ const globalReducer = (state: InitialStateType, action: ActionType) => {
...payload,
hasSetupBackend: true,
};
- case SET_IS_ADMIN:
- return {
- ...state,
- isAdmin: action.payload.isAdmin,
- error: "",
- };
case SET_GAME_STATE:
return {
...state,
diff --git a/client/src/context/types.ts b/client/src/context/types.ts
index 6e565e0..e7168bf 100644
--- a/client/src/context/types.ts
+++ b/client/src/context/types.ts
@@ -2,7 +2,6 @@ import { BadgesType, PetStatusType, VisitorInventoryType } from "../../../shared
export const SET_HAS_SETUP_BACKEND = "SET_HAS_SETUP_BACKEND";
export const SET_INTERACTIVE_PARAMS = "SET_INTERACTIVE_PARAMS";
-export const SET_IS_ADMIN = "SET_IS_ADMIN";
export const SET_GAME_STATE = "SET_GAME_STATE";
export const SET_ERROR = "SET_ERROR";
export const SET_KEY_ASSET_ID = "SET_KEY_ASSET_ID";
@@ -24,7 +23,6 @@ export type InteractiveParams = {
export interface InitialStateType {
keyAssetId?: string;
- isAdmin?: boolean;
isPetOwner?: boolean;
petStatus?: PetStatusType;
error?: string;
diff --git a/client/src/pages/Home.tsx b/client/src/pages/Home.tsx
index 84e7c60..b374420 100644
--- a/client/src/pages/Home.tsx
+++ b/client/src/pages/Home.tsx
@@ -9,7 +9,6 @@ import { GlobalDispatchContext, GlobalStateContext } from "@/context/GlobalConte
// utils
import { backendAPI, setErrorMessage, setGameState } from "@/utils";
-import { SET_IS_ADMIN } from "@/context/types";
const Home = ({ isSpawnedDroppedAsset }: { isSpawnedDroppedAsset: boolean }) => {
const dispatch = useContext(GlobalDispatchContext);
@@ -31,12 +30,6 @@ const Home = ({ isSpawnedDroppedAsset }: { isSpawnedDroppedAsset: boolean }) =>
response = await backendAPI.get("/pet");
}
setGameState(dispatch, response.data);
- dispatch!({
- type: SET_IS_ADMIN,
- payload: {
- isAdmin: response.data.isAdmin,
- },
- });
} catch (error) {
if (error instanceof Error) {
setErrorMessage(dispatch, error.message);
diff --git a/client/src/utils/setGameState.ts b/client/src/utils/setGameState.ts
index b871b58..fada3a6 100644
--- a/client/src/utils/setGameState.ts
+++ b/client/src/utils/setGameState.ts
@@ -4,7 +4,7 @@ import { PetStatusType } from "../../../shared/types.js";
export const setGameState = (
dispatch: Dispatch | null,
- gameState: { isPetOwner: boolean; petStatus: PetStatusType; isAdmin: boolean },
+ gameState: { isPetOwner: boolean; petStatus: PetStatusType },
) => {
if (!dispatch || !setGameState) return;
diff --git a/client/tsconfig.json b/client/tsconfig.json
index b48bb08..89c59f9 100644
--- a/client/tsconfig.json
+++ b/client/tsconfig.json
@@ -7,7 +7,7 @@
"skipLibCheck": true,
/* Bundler mode */
- "moduleResolution": "node",
+ "moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"allowSyntheticDefaultImports": true,
"resolveJsonModule": true,
@@ -21,14 +21,13 @@
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
- "baseUrl": ".", // Required for path mapping
"paths": {
- "@/*": ["src/*"],
- "@assets/*": ["src/assets/*"],
- "@components/*": ["src/components/*"],
- "@context/*": ["src/context/*"],
- "@pages/*": ["src/pages/*"],
- "@utils/*": ["src/utils/*"],
+ "@/*": ["./src/*"],
+ "@assets/*": ["./src/assets/*"],
+ "@components/*": ["./src/components/*"],
+ "@context/*": ["./src/context/*"],
+ "@pages/*": ["./src/pages/*"],
+ "@utils/*": ["./src/utils/*"],
"@shared/*": ["../shared/*"]
}
},
diff --git a/server/controllers/handleGetGameState.ts b/server/controllers/handleGetGameState.ts
index 5229988..1524e17 100644
--- a/server/controllers/handleGetGameState.ts
+++ b/server/controllers/handleGetGameState.ts
@@ -1,11 +1,5 @@
import { Request, Response } from "express";
-import {
- errorHandler,
- getCachedInventoryItems,
- getCredentials,
- getVisitorAndPetStatus,
- removeDroppedAssets,
-} from "../utils/index.js";
+import { errorHandler, getCachedInventoryItems, getCredentials, getVisitorAndPetStatus } from "../utils/index.js";
import { BadgesType } from "../../shared/types.js";
export const handleGetGameState = async (req: Request, res: Response) => {
@@ -34,8 +28,6 @@ export const handleGetGameState = async (req: Request, res: Response) => {
}
}
- await removeDroppedAssets(credentials);
-
return res.json({
isAdmin,
pets,
diff --git a/server/controllers/handleGetKeyAsset.ts b/server/controllers/handleGetKeyAsset.ts
deleted file mode 100644
index 95280d5..0000000
--- a/server/controllers/handleGetKeyAsset.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { Request, Response } from "express";
-import { errorHandler, getCredentials, World } from "../utils/index.js";
-
-export const handleGetKeyAsset = async (req: Request, res: Response): Promise | void> => {
- try {
- const credentials = getCredentials(req.query);
- const { urlSlug } = credentials;
-
- const world = World.create(urlSlug, { credentials });
- const droppedAssets = await world.fetchDroppedAssetsWithUniqueName({ uniqueName: "virtualPetKeyAsset" });
-
- if (droppedAssets.length === 0) throw "No key asset found";
-
- return res.json({ keyAssetId: droppedAssets[0].id });
- } catch (error) {
- return errorHandler({
- error,
- functionName: "handleGetKeyAsset",
- message: "Error getting key asset",
- req,
- res,
- });
- }
-};
diff --git a/server/controllers/handleGetPet.ts b/server/controllers/handleGetPet.ts
index 88f060f..7d9a532 100644
--- a/server/controllers/handleGetPet.ts
+++ b/server/controllers/handleGetPet.ts
@@ -5,7 +5,6 @@ import {
errorHandler,
getCredentials,
getVisitorAndPetStatus,
- removeDroppedAssets,
spawnPetNpc,
User,
} from "../utils/index.js";
@@ -67,8 +66,6 @@ export const handleGetPet = async (req: Request, res: Response): Promise | void> => {
- try {
- const credentials = getCredentials(req.query);
- const { urlSlug } = credentials;
- const { keyAssetId } = req.body;
- if (keyAssetId) credentials.assetId = keyAssetId;
-
- const world = World.create(urlSlug, { credentials });
-
- await world
- .updateDataObject({}, { analytics: [{ analyticName: `adminPickupAllPets`, urlSlug }] })
- .then()
- .catch(() => console.error("Error sending analytics for adminPickupAllPets"));
-
- await removeDroppedAssets(credentials);
-
- return res.json({ isPetInWorld: false });
- } catch (error) {
- return errorHandler({
- error,
- functionName: "handleRemoveAllPets",
- message: "Error removing dropped assets",
- req,
- res,
- });
- }
-};
diff --git a/server/controllers/handleTradePet.ts b/server/controllers/handleTradePet.ts
index b1f8703..36b8d35 100644
--- a/server/controllers/handleTradePet.ts
+++ b/server/controllers/handleTradePet.ts
@@ -14,7 +14,9 @@ export const handleTradePet = async (req: Request, res: Response): Promise {
});
});
-router.get("/key-asset", handleGetKeyAsset);
router.get("/game-state", handleGetGameState);
router.get("/pet", handleGetPet);
router.post("/create-pet", handleCreatePet);
@@ -43,6 +40,5 @@ router.post("/trade-pet", handleTradePet);
router.post("/spawn-pet", handleSpawnPet);
router.post("/pickup-pet", handlePickupPet);
router.post("/execute-action", handleExecuteAction);
-router.post("/remove-dropped-assets", handleRemoveAllPets);
export default router;
diff --git a/server/tsconfig.json b/server/tsconfig.json
index 62215b6..f266e9a 100644
--- a/server/tsconfig.json
+++ b/server/tsconfig.json
@@ -27,7 +27,7 @@
/* Modules */
"module": "ESNext" /* Specify what module code is generated. */,
// "rootDir": "./", /* Specify the root folder within your source files. */
- "moduleResolution": "Node" /* Specify how TypeScript looks up a file from a given module specifier. */,
+ "moduleResolution": "bundler" /* Specify how TypeScript looks up a file from a given module specifier. */,
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
@@ -56,6 +56,8 @@
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
"outDir": "./dist" /* Specify an output folder for all emitted files. */,
+ "rootDir": ".." /* Explicitly set the root directory to resolve common source directory error. */,
+
// "removeComments": true, /* Disable emitting comments. */
// "noEmit": true, /* Disable emitting files from a compilation. */
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
diff --git a/server/utils/index.ts b/server/utils/index.ts
index 2af9d32..0ad9c98 100644
--- a/server/utils/index.ts
+++ b/server/utils/index.ts
@@ -12,7 +12,6 @@ export * from "./getVisitorAndPetStatus.js";
export * from "./grantExpression.js";
export * from "./inventoryCache.js";
export * from "./performAction.js";
-export * from "./removeDroppedAssets.js";
export * from "./spawnPetNpc.js";
export * from "./standardizeError.js";
export * from "./topiaInit.js";
diff --git a/server/utils/removeDroppedAssets.ts b/server/utils/removeDroppedAssets.ts
deleted file mode 100644
index b1a23d2..0000000
--- a/server/utils/removeDroppedAssets.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { Credentials } from "../types/index.js";
-import { errorHandler } from "./errorHandler.js";
-import { World } from "./topiaInit.js";
-
-export const removeDroppedAssets = async (credentials: Credentials, uniqueName: string = `petSystem-`) => {
- try {
- const { urlSlug } = credentials;
-
- const world = await World.create(urlSlug, { credentials });
-
- const droppedAssets = await world.fetchDroppedAssetsWithUniqueName({
- uniqueName,
- isPartial: true,
- });
-
- if (Object.keys(droppedAssets).length > 0) {
- const droppedAssetIds: string[] = [];
- for (const index in droppedAssets) {
- if (droppedAssets[index].id) droppedAssetIds.push(droppedAssets[index].id);
- }
- await World.deleteDroppedAssets(urlSlug, droppedAssetIds, process.env.INTERACTIVE_SECRET!, credentials);
- }
- } catch (error) {
- return errorHandler({
- error,
- functionName: "removeDroppedAssets",
- message: `Error retrieving assets with unique name petSystem-${credentials.username}`,
- });
- }
-};
diff --git a/shared/tsconfig.json b/shared/tsconfig.json
index 1403392..e1b8b29 100644
--- a/shared/tsconfig.json
+++ b/shared/tsconfig.json
@@ -1,8 +1,8 @@
{
"compilerOptions": {
"target": "ESNext",
- "module": "ESNext",
- "moduleResolution": "node",
+ "module": "nodenext",
+ "moduleResolution": "nodenext",
"declaration": true,
"strict": true,
"skipLibCheck": true,