From bc8ef9120a2b76095f53cb52f3417ccab5031ffa Mon Sep 17 00:00:00 2001 From: JohnDoe6345789 Date: Fri, 26 Dec 2025 01:11:17 +0000 Subject: [PATCH] code: nextjs,frontends,transfer (4 files) --- .../nextjs/src/components/LuaBlocksEditor.tsx | 23 +++++++++++-------- .../create-power-transfer-request.ts | 17 ++++++++++++++ .../fetch-power-transfer-requests.ts | 7 ++++++ .../packages/package-glue/default-packages.ts | 2 +- 4 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 frontends/nextjs/src/lib/api/power-transfers/create-power-transfer-request.ts create mode 100644 frontends/nextjs/src/lib/api/power-transfers/fetch-power-transfer-requests.ts diff --git a/frontends/nextjs/src/components/LuaBlocksEditor.tsx b/frontends/nextjs/src/components/LuaBlocksEditor.tsx index d2f61b728..a08fda6e5 100644 --- a/frontends/nextjs/src/components/LuaBlocksEditor.tsx +++ b/frontends/nextjs/src/components/LuaBlocksEditor.tsx @@ -1,4 +1,4 @@ -import { useEffect, useMemo, useState } from 'react' +import { useEffect, useMemo, useState, type MouseEvent } from 'react' import { Box, Button, @@ -591,20 +591,26 @@ export function LuaBlocksEditor({ scripts, onScriptsChange }: LuaBlocksEditorPro } const handleRequestAddBlock = ( - event: React.MouseEvent, + event: MouseEvent, target: { parentId: string | null; slot: BlockSlot } ) => { setMenuAnchor(event.currentTarget) setMenuTarget(target) } - const handleAddBlock = (type: LuaBlockType) => { - if (!selectedScriptId || !menuTarget) return + const handleAddBlock = (type: LuaBlockType, target?: { parentId: string | null; slot: BlockSlot }) => { + const resolvedTarget = target ?? menuTarget + if (!selectedScriptId || !resolvedTarget) return const newBlock = createBlock(type) setBlocksByScript((prev) => ({ ...prev, - [selectedScriptId]: addBlockToTree(prev[selectedScriptId] || [], menuTarget.parentId, menuTarget.slot, newBlock), + [selectedScriptId]: addBlockToTree( + prev[selectedScriptId] || [], + resolvedTarget.parentId, + resolvedTarget.slot, + newBlock + ), })) setMenuAnchor(null) @@ -884,9 +890,7 @@ export function LuaBlocksEditor({ scripts, onScriptsChange }: LuaBlocksEditorPro key={block.type} className={styles.libraryBlock} data-category={block.category} - onClick={(event) => - handleRequestAddBlock(event, { parentId: null, slot: 'root' }) - } + onClick={() => handleAddBlock(block.type, { parentId: null, slot: 'root' })} > @@ -898,8 +902,7 @@ export function LuaBlocksEditor({ scripts, onScriptsChange }: LuaBlocksEditorPro variant="outlined" onClick={(event) => { event.stopPropagation() - handleRequestAddBlock(event, { parentId: null, slot: 'root' }) - handleAddBlock(block.type) + handleAddBlock(block.type, { parentId: null, slot: 'root' }) }} > Add diff --git a/frontends/nextjs/src/lib/api/power-transfers/create-power-transfer-request.ts b/frontends/nextjs/src/lib/api/power-transfers/create-power-transfer-request.ts new file mode 100644 index 000000000..7afd1ee46 --- /dev/null +++ b/frontends/nextjs/src/lib/api/power-transfers/create-power-transfer-request.ts @@ -0,0 +1,17 @@ +import type { PowerTransferRequest } from '@/lib/level-types' +import { requestJson } from '@/lib/api/request-json' + +interface CreatePowerTransferRequestPayload { + fromUserId: string + toUserId: string +} + +export async function createPowerTransferRequest( + payload: CreatePowerTransferRequestPayload +): Promise { + const response = await requestJson<{ request: PowerTransferRequest }>('/api/power-transfers', { + method: 'POST', + body: JSON.stringify(payload), + }) + return response.request +} diff --git a/frontends/nextjs/src/lib/api/power-transfers/fetch-power-transfer-requests.ts b/frontends/nextjs/src/lib/api/power-transfers/fetch-power-transfer-requests.ts new file mode 100644 index 000000000..7f50de318 --- /dev/null +++ b/frontends/nextjs/src/lib/api/power-transfers/fetch-power-transfer-requests.ts @@ -0,0 +1,7 @@ +import type { PowerTransferRequest } from '@/lib/level-types' +import { requestJson } from '@/lib/api/request-json' + +export async function fetchPowerTransferRequests(): Promise { + const payload = await requestJson<{ requests: PowerTransferRequest[] }>('/api/power-transfers') + return payload.requests +} diff --git a/frontends/nextjs/src/lib/packages/package-glue/default-packages.ts b/frontends/nextjs/src/lib/packages/package-glue/default-packages.ts index 049624c3f..524d0ce20 100644 --- a/frontends/nextjs/src/lib/packages/package-glue/default-packages.ts +++ b/frontends/nextjs/src/lib/packages/package-glue/default-packages.ts @@ -1,6 +1,6 @@ import type { PackageDefinition } from './types' -type PackageSeedConfig = { +export type PackageSeedConfig = { metadata: Omit components: any[] examples: any