From d2bbf76d908f1785aea750842faaf4cdcbdc3208 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 4 Apr 2025 16:58:40 +0300 Subject: [PATCH] feat: add blockOp --- packages/cwait/src/onchain/ops/block.ts | 28 +++++++++++++++++++++---- packages/cwait/src/onchain/ops/store.ts | 1 - 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/packages/cwait/src/onchain/ops/block.ts b/packages/cwait/src/onchain/ops/block.ts index 3a80955..330af13 100644 --- a/packages/cwait/src/onchain/ops/block.ts +++ b/packages/cwait/src/onchain/ops/block.ts @@ -1,5 +1,25 @@ -export const blockOp = () => { - return new Promise((resolve) => { - resolve(); +import { BlockFilter, constructBlock, extractBlock, isResolvedBlock } from '@coinweb/contract-kit'; + +import { pushAwaitedOp } from './awaited'; +import { shiftResolvedOp } from './resolved'; + +export const blockOp = (filters: BlockFilter[]) => + new Promise<[BlockFilter, boolean][] | null>((resolve, reject) => { + try { + const { op, isOp } = shiftResolvedOp(); + + if (!isOp) { + pushAwaitedOp(constructBlock(filters)); + } else { + if (op && !isResolvedBlock(op)) { + throw new Error('Block operation not found'); + } + + const result = op && extractBlock(op); + + resolve(result); + } + } catch (error) { + reject(error); + } }); -}; diff --git a/packages/cwait/src/onchain/ops/store.ts b/packages/cwait/src/onchain/ops/store.ts index 5abb26d..f42ce34 100644 --- a/packages/cwait/src/onchain/ops/store.ts +++ b/packages/cwait/src/onchain/ops/store.ts @@ -11,7 +11,6 @@ export const storeOp = (claim: Claim) => if (!isOp) { pushAwaitedOp(constructStore(claim)); - // abort(); } else { if (op && !isResolvedStore(op)) { throw new Error('Store operation not found');