function updateAccountMetadata( cts: nkruntime.Context, logger: nkruntime.Logger, nk: nkruntime.Nakama, payload: string ) { try { const metadataToUpdate = JSON.parse(payload); const userId = cts.userId; logger.debug("metadata: ", metadataToUpdate); // nk.accountUpdateId( // userId, // undefined, // undefined, // undefined, // undefined, // undefined, // undefined, // metadataToUpdate // ); const user = nk.accountGetId(userId); const meta = user.user.metadata; Object.keys(metadataToUpdate).map((key) => { meta[key] = metadataToUpdate[key]; }); nk.multiUpdate( [ { userId: userId, metadata: meta, }, ], [], [], false ); const updatedUser = nk.usersGetId([userId]); return JSON.stringify({ userId: updatedUser[0].userId, meta: updatedUser[0].metadata, }); } catch (error) { logger.error("Failed to update account.", error); return JSON.stringify({ message: "Failed to update account.", error: "error", code: nkruntime.Codes.INTERNAL, }); } }