- Introduced a new button to sign transactions, allowing users to generate a signature for a predefined raw transaction. - Updated state management to handle the transaction signature and display it in the UI. - Enhanced connection logic to ensure the user's address is retrieved before signing. - Modified the WalletStore to improve transaction status handling during updates.
23 lines
870 B
TypeScript
23 lines
870 B
TypeScript
import { decodeResult } from "./encryption";
|
|
import type { ConnectResult, SignTransactionResult, WebApp } from "./types";
|
|
|
|
export const parseWalletsFromStartParam = (webApp: WebApp): ConnectResult['wallets'] | null => {
|
|
const startParam = webApp.initDataUnsafe?.start_param;
|
|
if (!startParam) return null;
|
|
|
|
const result = decodeResult(startParam);
|
|
return 'wallets' in result ? result.wallets : null;
|
|
};
|
|
|
|
export const parseSignedTxFromStartParam = (webApp: WebApp): SignTransactionResult | null => {
|
|
const startParam = webApp.initDataUnsafe?.start_param;
|
|
if (!startParam) return null;
|
|
|
|
const result = decodeResult(startParam);
|
|
if ('id' in result) {
|
|
result.id = Number(result.id);
|
|
}
|
|
return 'signedTx' in result ? result : null;
|
|
};
|
|
|
|
export const generateRequestId = (): number => Math.floor(Math.random() * 90000) + 10000; |