Skip to content

Commit

Permalink
fix: add correct tip
Browse files Browse the repository at this point in the history
  • Loading branch information
VanessaPC committed May 8, 2024
1 parent b75bd28 commit 335d1e0
Showing 1 changed file with 33 additions and 40 deletions.
73 changes: 33 additions & 40 deletions src/features/buildTxWithValidityInterval.ts
Original file line number Diff line number Diff line change
@@ -1,51 +1,44 @@
import { EMPTY, catchError, take, tap } from "rxjs";
import { firstValueFrom } from "rxjs";
import { Cardano } from "@cardano-sdk/core";
import { logger } from "@cardano-sdk/util-dev";
import type { ObservableWallet } from "@cardano-sdk/wallet";

import { inspectAndSignTx } from "../utils";

export const buildTxWithValidityInterval = ({
export const buildTxWithValidityInterval = async ({
connectedWallet,
expired,
}: {
connectedWallet: ObservableWallet;
expired: boolean;
}): Promise<{ hash: string; txId: string }> =>
new Promise((resolve, reject) => {
connectedWallet.tip$
.pipe(
take(1),
tap(async (tip) => {
const expiredValidityInterval: Cardano.ValidityInterval = {
invalidHereafter: Cardano.Slot(tip.blockNo),
};
const noLimitValidityInterval: Cardano.ValidityInterval = {
invalidHereafter: undefined,
};

const builder = connectedWallet.createTxBuilder();
const builtTx = builder.addOutput(
await builder.buildOutput().handle("rhys").coin(10_000_000n).build()
);
const expiredValidityIntervalTx = builtTx
.setValidityInterval(
expired ? expiredValidityInterval : noLimitValidityInterval
)
.build();

const { hash, txId } = await inspectAndSignTx({
builtTx: expiredValidityIntervalTx,
connectedWallet,
});

resolve({ hash, txId });
}),
catchError((error) => {
logger.error("Failed to build tx", error);
reject(new Error("Failed to build transaction"));
return EMPTY;
})
)
.subscribe();
}): Promise<{ hash: string; txId: string } | null> => {
if (!connectedWallet) {
return null;
}

const tip = await firstValueFrom(connectedWallet.tip$);

const expiredValidityInterval: Cardano.ValidityInterval = {
invalidHereafter: Cardano.Slot(tip.blockNo),
};

const noLimitValidityInterval: Cardano.ValidityInterval = {
invalidHereafter: undefined,
};

const builder = connectedWallet.createTxBuilder();
const builtTx = builder.addOutput(
await builder.buildOutput().handle("rhys").coin(10_000_000n).build()
);
const expiredValidityIntervalTx = builtTx
.setValidityInterval(
expired ? expiredValidityInterval : noLimitValidityInterval
)
.build();

const { hash, txId } = await inspectAndSignTx({
builtTx: expiredValidityIntervalTx,
connectedWallet,
});

return { hash, txId };
};

0 comments on commit 335d1e0

Please sign in to comment.