Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions apps/app/components/Swap/Atomic/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { NextRouter, useRouter } from "next/router";
import { useQueryState } from "@/context/query";
import useWallet from "@/hooks/useWallet";
import { SwapQuote } from "@/lib/trainApiClient";
import { dynamicWithRetries } from "@/lib/dynamicWithRetries";
import { useAtomicState } from "@/context/atomicContext";
import VaulDrawer from "../../Modal/vaulModal";
import { Widget } from "../../Widget/Index";
Expand All @@ -22,18 +21,6 @@ import { NetworkContractType } from "@/Models/Network";
import { HTLCStatus } from "@/Models/HTLCStatus";
import { usePulsatingCircles } from "@/stores/pulsatingCirclesStore";

const AtomicPage = dynamicWithRetries(
() => import("../AtomicChat") as unknown as Promise<{ default: React.ComponentType<any> }>,
<div className="w-full h-[450px]">
<div className="animate-pulse flex space-x-4">
<div className="flex-1 space-y-6 py-1">
<div className="h-32 bg-secondary-700 rounded-lg"></div>
<div className="h-40 bg-secondary-700 rounded-lg"></div>
<div className="h-12 bg-secondary-700 rounded-lg"></div>
</div>
</div>
</div>
)

export default function Form() {
const formikRef = useRef<FormikProps<SwapFormValues>>(null);
Expand Down
3 changes: 3 additions & 0 deletions apps/app/components/Swap/AtomicChat/Actions/UserActions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ export const UserCommitAction: FC<UserCommitActionProps> = ({ quote, type }) =>
if (!destination_asset) {
throw new Error("No destination asset")
}
if (!provider) {
throw new Error("No source_provider")
}
if (!atomicContract) {
throw new Error("No atomic contract")
}
Expand Down
4 changes: 2 additions & 2 deletions apps/app/context/atomicContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -175,13 +175,13 @@ export function AtomicProvider({ children }) {
const sourceClient = useMemo(() => {
if (!source_network) return undefined
try { return createHTLCClient(source_network, getEffectiveRpcUrls) }
catch { return undefined }
catch (e) { console.error('Error creating source HTLC client:', e); return undefined }
}, [source_network, getEffectiveRpcUrls])

const destinationClient = useMemo(() => {
if (!destination_network) return undefined
try { return createHTLCClient(destination_network, getEffectiveRpcUrls) }
catch { return undefined }
catch (e) { console.error('Error creating destination HTLC client:', e); return undefined }
}, [destination_network, getEffectiveRpcUrls])

const handleUserLockSuccess = useCallback((details: LockDetails) => {
Expand Down
61 changes: 38 additions & 23 deletions packages/sdk/src/htlc-clients/evm/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -128,10 +128,15 @@ export class EvmHTLCClient implements IHTLCClient {
simulationData.value = parsedAmount;
}

const { request } = await this.publicClient.simulateContract(simulationData);
const hash = await this.walletClient.writeContract(request as any);

return { hash, hashlock, nonce: timestamp };
try {
const { request } = await this.publicClient.simulateContract(simulationData);
const hash = await this.walletClient.writeContract(request as any);

return { hash, hashlock, nonce: timestamp };
} catch (error) {
console.error('Error in createHTLC:', error);
throw error;
}
}

async getUserLockDetails(params: LockParams): Promise<LockDetails | null> {
Expand Down Expand Up @@ -273,16 +278,21 @@ export class EvmHTLCClient implements IHTLCClient {
if (!this.walletClient) throw new Error('WalletClient required for refund');
const { id, contractAddress } = params;

const { request } = await this.publicClient.simulateContract({
account: this.walletClient.account?.address as `0x${string}`,
abi: HTLCAbi,
address: contractAddress as `0x${string}`,
functionName: 'refundUser',
args: [id],
chain: this.publicClient.chain,
});
try {
const { request } = await this.publicClient.simulateContract({
account: this.walletClient.account?.address as `0x${string}`,
abi: HTLCAbi,
address: contractAddress as `0x${string}`,
functionName: 'refundUser',
args: [id],
chain: this.publicClient.chain,
});

return await this.walletClient.writeContract(request as any);
return await this.walletClient.writeContract(request as any);
} catch (error) {
console.error('Error in refund:', error);
throw error;
}
}

async claim(params: ClaimParams): Promise<string> {
Expand All @@ -291,16 +301,21 @@ export class EvmHTLCClient implements IHTLCClient {

const account = (destinationAddress ?? this.walletClient.account?.address) as `0x${string}`;

const { request } = await this.publicClient.simulateContract({
account,
abi: HTLCAbi,
address: contractAddress as `0x${string}`,
functionName: 'redeemSolver',
args: [id, 1, BigInt(secret)],
chain: this.publicClient.chain,
});

return await this.walletClient.writeContract(request as any);
try {
const { request } = await this.publicClient.simulateContract({
account,
abi: HTLCAbi,
address: contractAddress as `0x${string}`,
functionName: 'redeemSolver',
args: [id, 1, BigInt(secret)],
chain: this.publicClient.chain,
});

return await this.walletClient.writeContract(request as any);
} catch (error) {
console.error('Error in claim:', error);
throw error;
}
}

async recoverSwap(txHash: `0x${string}`): Promise<RecoveredSwapData> {
Expand Down