Skip to content
This repository was archived by the owner on Nov 15, 2024. It is now read-only.
Open
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
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
"@heroicons/react": "^2.0.11",
"@raydium-io/raydium-sdk": "1.1.0-beta.35",
"@sentry/nextjs": "^7.12.1",
"@solana/wallet-adapter-base": "^0.9.18",
"@snowflake-so/wallet-adapter-snowflake": "^1.0.15",
"@solana/wallet-adapter-base": "^0.9.16",
"@solana/wallet-adapter-react": "0.15.8",
"@solana/wallet-adapter-wallets": "^0.19.5",
"@solana/web3.js": "^1.61.0",
Expand Down Expand Up @@ -82,4 +83,4 @@
"ts-node": "^10.9.1",
"typescript": "^4.8.3"
}
}
}
3 changes: 3 additions & 0 deletions src/application/liquidity/txAddLiquidity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ export default function txAddLiquidity({ ammId: targetAmmId }: { ammId?: PublicK
amountInB: deUITokenAmount(coin2TokenAmount),
fixedSide: focusSide === 'coin1' ? 'a' : 'b'
})

transactionCollector.addSigners(signers);

transactionCollector.add(await loadTransaction({ transaction: transaction, signers: signers }), {
txHistoryInfo: {
title: 'Add Liquidity',
Expand Down
3 changes: 3 additions & 0 deletions src/application/liquidity/txRemoveLiquidity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ export default function txRemoveLiquidity({ ammId: targetAmmId }: { ammId?: Publ
userKeys: { owner, tokenAccounts: tokenAccountRawInfos },
amountIn: removeTokenAmount
})

transactionCollector.addSigners(signers);

transactionCollector.add(await loadTransaction({ transaction: transaction, signers: signers }), {
txHistoryInfo: {
title: 'Remove liquidity',
Expand Down
27 changes: 22 additions & 5 deletions src/application/txTools/handleTx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
Keypair,
PublicKey,
SignatureResult,
Signer,
Transaction,
TransactionError
} from '@solana/web3.js'
Expand All @@ -26,6 +27,7 @@ import useWallet, { WalletStore } from '../wallet/useWallet'
import { TxNotificationItemInfo } from '@/components/NotificationItem/type'
import { MayPromise } from '@/types/constants'
import { attachRecentBlockhash } from './attachRecentBlockhash'
import { SnowflakeSafeWalletAdapter } from '@snowflake-so/wallet-adapter-snowflake'
import { sendTransactionCore } from './sendTransactionCore'
import subscribeTx from './subscribeTx'

Expand Down Expand Up @@ -164,6 +166,7 @@ export type TransactionQueue = ([transaction: Transaction, singleTxOptions?: Sin
export type TransactionCollector = {
add(transaction: Transaction, options?: SingleTxOption): void
addQueue(transactionQueue: TransactionQueue, multiTxOptions?: MultiTxsOption): void
addSigners(signers: Signer[]) : void
}

// TODO: should also export addTxSuccessListener() and addTxErrorListener() and addTxFinallyListener()
Expand Down Expand Up @@ -216,11 +219,11 @@ export function createTxHandler<Arg extends Record<string, any>>(
export default async function txHandler(txAction: TxFn, options?: HandleFnOptions): Promise<TxResponseInfos> {
const {
transactionCollector,
collected: { innerTransactions, singleTxOptions, multiTxOption }
collected: { innerTransactions, singleTxOptions, multiTxOption, innerSigners }
} = collectTxOptions(options)
useAppSettings.setState({ isApprovePanelShown: true })
try {
const { signAllTransactions, owner } = useWallet.getState()
const { signAllTransactions, owner, adapter } = useWallet.getState()
const connection = useConnection.getState().connection
assert(connection, 'no rpc connection')
if (options?.forceKeyPairs?.ownerKeypair) {
Expand All @@ -239,6 +242,14 @@ export default async function txHandler(txAction: TxFn, options?: HandleFnOption
baseUtils: { connection, owner, tokenAccounts, allTokenAccounts }
})
}

// eslint-disable-next-line no-console
const _snowflakeAdapter = adapter as SnowflakeSafeWalletAdapter;
if (singleTxOptions[0].txHistoryInfo?.description && _snowflakeAdapter.isSnowflakeSafe){
_snowflakeAdapter.setProposalName(singleTxOptions[0].txHistoryInfo.description)
_snowflakeAdapter.setSigners(innerSigners);
}

// eslint-disable-next-line no-console
console.info('tx transactions: ', toHumanReadable(innerTransactions))

Expand Down Expand Up @@ -289,6 +300,8 @@ function collectTxOptions(
const singleTxOptions = [] as SingleTxOption[]
const multiTxOption = {} as MultiTxsOption
const innerTransactions = [] as Transaction[]
const innerSigners = [] as Signer[]

const { additionalSingleOptionCallback, additionalMultiOptionCallback } = additionOptions ?? {}
const add: TransactionCollector['add'] = (transaction, options) => {
innerTransactions.push(transaction)
Expand All @@ -301,8 +314,12 @@ function collectTxOptions(
})
Object.assign(multiTxOption, mergeObject(options ?? {}, additionalMultiOptionCallback))
}
const transactionCollector: TransactionCollector = { add, addQueue }
return { transactionCollector, collected: { innerTransactions, singleTxOptions, multiTxOption } }
const addSigners: TransactionCollector['addSigners'] = (signers) => {
innerSigners.push(...signers);
}

const transactionCollector: TransactionCollector = { add, addQueue, addSigners }
return { transactionCollector, collected: { innerTransactions, singleTxOptions, multiTxOption, innerSigners } }
}

export function serialize(transaction: Transaction, cache = true) {
Expand Down Expand Up @@ -494,7 +511,7 @@ function composeWithDifferentSendMode({
} else {
const queued = transactions.reduceRight(
({ fn, method }, tx, idx) => {
const singleOption = singleOptions[idx]
const singleOption = singleOptions[idx] || singleOptions[0];
return {
fn: () =>
handleSingleTxOptions({
Expand Down
4 changes: 3 additions & 1 deletion src/components/SolanaWallets/SolanaWallets.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { clusterApiUrl } from '@solana/web3.js'

import useAppSettings from '@/application/common/useAppSettings'
import useConnection from '@/application/connection/useConnection'
import { SnowflakeSafeWalletAdapter } from '@snowflake-so/wallet-adapter-snowflake'

/** include: SolanaWalletConnectionProvider SolanaWalletAdaptorsProvider SolanaWalletModalProvider */
export function SolanaWalletProviders({ children }: { children?: ReactNode }) {
Expand Down Expand Up @@ -58,7 +59,8 @@ export function SolanaWalletProviders({ children }: { children?: ReactNode }) {
}
}
}),
new BraveWalletAdapter()
new BraveWalletAdapter(),
new SnowflakeSafeWalletAdapter()
],
[endpoint]
)
Expand Down
Loading