From cdf5b5893500907796f28a90673d29a8341c94eb Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 3 Apr 2025 19:29:50 +0300 Subject: [PATCH] fix: fix executor --- packages/contract.cm/src/onchain/addWord.ts | 14 +++++-- packages/cwait/src/onchain/executor.ts | 41 ++++++++++++--------- packages/cwait/src/onchain/ops/index.ts | 3 ++ 3 files changed, 37 insertions(+), 21 deletions(-) diff --git a/packages/contract.cm/src/onchain/addWord.ts b/packages/contract.cm/src/onchain/addWord.ts index ed5173a..b596714 100644 --- a/packages/contract.cm/src/onchain/addWord.ts +++ b/packages/contract.cm/src/onchain/addWord.ts @@ -1,7 +1,8 @@ import { constructClaim } from '@coinweb/contract-kit'; -import { storeOp } from 'cwait'; +import { readOp, storeOp } from 'cwait'; -import { AddWordArgs, createWordKey } from '../offchain/shared'; +import { TypedClaim } from '../../../lib/dist/shared/types'; +import { AddWordArgs, createWordKey, WordClaimBody } from '../offchain/shared'; function hashCode(str: string): string { let hash = 0; @@ -17,5 +18,12 @@ function hashCode(str: string): string { export const addWord = async (...[word]: AddWordArgs) => { const id = hashCode(word); - storeOp(constructClaim(createWordKey(id), { word }, '0x0')); + await storeOp(constructClaim(createWordKey(id), { word }, '0x0')); + + const wordClaim = await readOp>(createWordKey(id)); + + const newWord = (wordClaim?.body.word ?? '') + '!!!'; + const newId = hashCode(newWord); + + storeOp(constructClaim(createWordKey(newId), { word: newWord }, '0x0')); }; diff --git a/packages/cwait/src/onchain/executor.ts b/packages/cwait/src/onchain/executor.ts index fca42c3..dbc8e9d 100644 --- a/packages/cwait/src/onchain/executor.ts +++ b/packages/cwait/src/onchain/executor.ts @@ -19,14 +19,15 @@ const handleState = () => { const ctx = getRawContext(); const resolvedOps = extractContractArgs(ctx.tx); - const currentArgs = getMethodArguments(ctx) as [unknown, unknown[], ResolvedOperation[]]; + const methodArgs = getMethodArguments(ctx) as [unknown, unknown[], ResolvedOperation[]]; - const initialArgs = currentArgs[1]; - const allResolvedOps = [...currentArgs[2], ...resolvedOps]; + const initialArgs = methodArgs[1] ?? []; + const previousOps = methodArgs[2] ?? []; + const allResolvedOps = [...previousOps, ...resolvedOps]; pushResolvedOp(allResolvedOps); - return { args: initialArgs, methodName: currentArgs[0] as string, ops: allResolvedOps }; + return { args: initialArgs, methodName: methodArgs[0] as string, ops: allResolvedOps }; }; export const executor = @@ -56,22 +57,26 @@ export const executor = const txFee = 700n + BigInt(awaitedOps.length) * 100n; return [ - constructContinueTx(ctx, awaitedOps, [ - { - callInfo: { - ref: constructContractRef(context.issuer, []), - methodInfo: { - methodName, - methodArgs: [args, ops], + constructContinueTx( + ctx, + [], + [ + { + callInfo: { + ref: constructContractRef(context.issuer, []), + methodInfo: { + methodName, + methodArgs: [args, ops], + }, + contractInfo: { + providedCweb: availableCweb - txFee, + authenticated: authInfo, + }, + contractArgs: awaitedOps, }, - contractInfo: { - providedCweb: availableCweb - txFee, - authenticated: authInfo, - }, - contractArgs: [], }, - }, - ]), + ] + ), ]; }; diff --git a/packages/cwait/src/onchain/ops/index.ts b/packages/cwait/src/onchain/ops/index.ts index ffdadda..3c9ab12 100644 --- a/packages/cwait/src/onchain/ops/index.ts +++ b/packages/cwait/src/onchain/ops/index.ts @@ -1,3 +1,6 @@ +export * from './awaited'; export * from './block'; +export * from './read'; +export * from './resolved'; export * from './store'; export * from './take';