From f134fe29eae74e89cb5f2435914a6dcf18b5bf3a Mon Sep 17 00:00:00 2001 From: Lina Date: Fri, 23 Jan 2026 14:24:24 -0800 Subject: [PATCH] fix keyAsset bug --- src/controllers/handleDropPiece.ts | 21 +++++++++---------- src/controllers/handlePlayerSelection.ts | 2 +- src/controllers/handleResetBoard.ts | 2 +- .../getDroppedAssetDataObject.ts | 8 +++---- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/controllers/handleDropPiece.ts b/src/controllers/handleDropPiece.ts index b4ade97..c83c133 100644 --- a/src/controllers/handleDropPiece.ts +++ b/src/controllers/handleDropPiece.ts @@ -2,7 +2,6 @@ import { Request, Response } from "express"; import { dropWebImageAsset, errorHandler, - getCredentials, getDroppedAssetDataObject, getGameStatus, lockDataObject, @@ -47,16 +46,16 @@ export const handleDropPiece = async (req: Request, res: Response) => { column === 0 ? 0 : column === 1 - ? 6 - : column === 2 - ? 12 - : column === 3 - ? 18 - : column === 4 - ? 24 - : column === 5 - ? 30 - : 36; + ? 6 + : column === 2 + ? 12 + : column === 3 + ? 18 + : column === 4 + ? 24 + : column === 5 + ? 30 + : 36; const claimedSpace = columnStart + columns[column].length; const updatedData = { diff --git a/src/controllers/handlePlayerSelection.ts b/src/controllers/handlePlayerSelection.ts index 1afaded..6ced770 100644 --- a/src/controllers/handlePlayerSelection.ts +++ b/src/controllers/handlePlayerSelection.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import { errorHandler, getDroppedAssetDataObject, getCredentials, lockDataObject, World } from "../utils/index.js"; +import { errorHandler, getDroppedAssetDataObject, lockDataObject, World } from "../utils/index.js"; import { GameDataType } from "../types/gameDataType.js"; import { DroppedAssetInterface, WorldActivityType } from "@rtsdk/topia"; diff --git a/src/controllers/handleResetBoard.ts b/src/controllers/handleResetBoard.ts index 1b11856..b58c6b1 100644 --- a/src/controllers/handleResetBoard.ts +++ b/src/controllers/handleResetBoard.ts @@ -19,7 +19,7 @@ export const handleResetBoard = async (req: Request, res: Response) => { const visitor: VisitorInterface = await Visitor.get(visitorId, urlSlug, { credentials }); const isAdmin = visitor.isAdmin; - const { keyAsset, wasDataObjectInitialized } = await getDroppedAssetDataObject(credentials, false); + const { keyAsset, wasDataObjectInitialized } = await getDroppedAssetDataObject(credentials, true); const { lastInteraction, player1, player2, resetCount } = keyAsset.dataObject as GameDataType; if (wasDataObjectInitialized) { diff --git a/src/utils/droppedAssets/getDroppedAssetDataObject.ts b/src/utils/droppedAssets/getDroppedAssetDataObject.ts index 8f42aca..280ac57 100644 --- a/src/utils/droppedAssets/getDroppedAssetDataObject.ts +++ b/src/utils/droppedAssets/getDroppedAssetDataObject.ts @@ -7,6 +7,8 @@ export const getDroppedAssetDataObject = async (credentials: Credentials, isKeyA let keyAsset, keyAssetId = assetId; + if (!sceneDropId) throw "sceneDropId is required."; + const world = World.create(urlSlug, { credentials }); await world.fetchDataObject(); const dataObject = world.dataObject as WorldDataObjectType; @@ -17,16 +19,14 @@ export const getDroppedAssetDataObject = async (credentials: Credentials, isKeyA keyAssetId = dataObject[sceneDropId].keyAssetId; } else { // find key asset by sceneDropId and unique name - keyAsset = await DroppedAsset.getWithUniqueName("reset", urlSlug, process.env.INTERACTIVE_SECRET!, credentials); + const droppedAssets = await world.fetchDroppedAssetsBySceneDropId({ sceneDropId, uniqueName: "reset" }); + keyAsset = droppedAssets[0]; if (!keyAsset) throw "No key asset with the unique name 'reset' found."; keyAssetId = keyAsset?.id; } } - if (!sceneDropId) sceneDropId = keyAssetId; - // store keyAssetId by sceneDropId in World data object so that it can be accessed by any clickable asset - // this supports a scene being dropped with the board already created instead of just the Reset button if (!dataObject || Object.keys(dataObject).length === 0) { await world.setDataObject({ [sceneDropId]: { keyAssetId } }); } else if (!dataObject[sceneDropId]) {