Skip to content
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
3 changes: 2 additions & 1 deletion packages/starter/react-ui-starter/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
import { ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react';
import { WalletModalProvider, WalletMultiButton } from '@solana/wallet-adapter-react-ui';
import { UnsafeBurnerWalletAdapter } from '@solana/wallet-adapter-wallets';
import { UnsafeBurnerWalletAdapter, TorusWalletAdapter } from '@solana/wallet-adapter-wallets';
import { clusterApiUrl } from '@solana/web3.js';
import type { FC, ReactNode } from 'react';
import React, { useMemo } from 'react';
Expand Down Expand Up @@ -36,6 +36,7 @@ const Context: FC<{ children: ReactNode }> = ({ children }) => {
* in the npm package `@solana/wallet-adapter-wallets`.
*/
new UnsafeBurnerWalletAdapter(),
new TorusWalletAdapter({}),
],
// eslint-disable-next-line react-hooks/exhaustive-deps
[network]
Expand Down
3 changes: 2 additions & 1 deletion packages/starter/react-ui-starter/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"strict": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"isolatedModules": true
"isolatedModules": true,
"skipLibCheck": true
}
}
12 changes: 3 additions & 9 deletions packages/wallets/torus/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,8 @@
},
"dependencies": {
"@solana/wallet-adapter-base": "workspace:^",
"@toruslabs/solana-embed": "^2.1.0",
"assert": "^2.1.0",
"crypto-browserify": "^3.12.1",
"process": "^0.11.10",
"stream-browserify": "^3.0.0"
"@toruslabs/solana-embed": "^3.0.1",
"process": "^0.11.10"
},
"devDependencies": {
"@solana/web3.js": "^1.98.2",
Expand All @@ -49,10 +46,7 @@
},
"overrides": {
"@toruslabs/solana-embed": {
"assert": "npm:assert@^2.1.0",
"crypto": "npm:crypto-browserify@^3.12.1",
"process": "npm:process@^0.11.10",
"stream": "npm:stream-browserify@^3.0.0"
"process": "npm:process@^0.11.10"
}
}
}
50 changes: 36 additions & 14 deletions packages/wallets/torus/src/adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,15 @@ import {
} from '@solana/wallet-adapter-base';
import type { Connection, Transaction, TransactionSignature } from '@solana/web3.js';
import { PublicKey } from '@solana/web3.js';
import type { default as Torus, TorusParams } from '@toruslabs/solana-embed';
import type { default as Torus } from '@toruslabs/solana-embed';
import bs58 from 'bs58';

export type CtorArgs = ConstructorParameters<typeof Torus>[0];
export type WsEmbedParams = Parameters<Torus['init']>[0];

export interface TorusWalletAdapterConfig {
params?: TorusParams;
ctorArgs?: CtorArgs;
params?: WsEmbedParams;
}

interface TorusWindow extends Window {
Expand All @@ -33,28 +38,28 @@ export const TorusWalletName = 'Torus' as WalletName<'Torus'>;

export class TorusWalletAdapter extends BaseMessageSignerWalletAdapter {
name = TorusWalletName;
url = 'https://tor.us';
url = 'https://wallet.web3auth.io';
icon =
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzMiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMyAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYuNSIgY3k9IjE2IiByPSIxNiIgZmlsbD0iIzAzNjRGRiIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjIxODYgOS40OTIxOUMxMC40NTM5IDkuNDkyMTkgOS44MzM5OCAxMC4xMTIxIDkuODMzOTggMTAuODc2OFYxMi40ODk4QzkuODMzOTggMTMuMjU0NSAxMC40NTM5IDEzLjg3NDQgMTEuMjE4NiAxMy44NzQ0SDEzLjY2ODRWMjIuODk3NkMxMy42Njg0IDIzLjY2MjMgMTQuMjg4MyAyNC4yODIyIDE1LjA1MyAyNC4yODIySDE2LjY2NkMxNy40MzA3IDI0LjI4MjIgMTguMDUwNiAyMy42NjIzIDE4LjA1MDYgMjIuODk3NlYxMi41MDE1QzE4LjA1MDYgMTIuNDk3NiAxOC4wNTA2IDEyLjQ5MzcgMTguMDUwNiAxMi40ODk4VjEwLjg3NjhDMTguMDUwNiAxMC4xMTIxIDE3LjQzMDcgOS40OTIxOSAxNi42NjYgOS40OTIxOUgxNS4wNTNIMTEuMjE4NloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yMS4zMzc2IDEzLjg3NDRDMjIuNTQ3NyAxMy44NzQ0IDIzLjUyODcgMTIuODkzNCAyMy41Mjg3IDExLjY4MzNDMjMuNTI4NyAxMC40NzMyIDIyLjU0NzcgOS40OTIxOSAyMS4zMzc2IDkuNDkyMTlDMjAuMTI3NSA5LjQ5MjE5IDE5LjE0NjUgMTAuNDczMiAxOS4xNDY1IDExLjY4MzNDMTkuMTQ2NSAxMi44OTM0IDIwLjEyNzUgMTMuODc0NCAyMS4zMzc2IDEzLjg3NDRaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K';
readonly supportedTransactionVersions = null;

private _connecting: boolean;
private _wallet: Torus | null;
private _publicKey: PublicKey | null;
private _params: TorusParams;
private _ctorArgs: CtorArgs;
private _params: WsEmbedParams;
private _readyState: WalletReadyState =
typeof window === 'undefined' || typeof document === 'undefined'
? WalletReadyState.Unsupported
: WalletReadyState.Loadable;

constructor(
{ params = { showTorusButton: false } }: TorusWalletAdapterConfig = { params: { showTorusButton: false } }
) {
constructor({ params, ctorArgs }: TorusWalletAdapterConfig) {
super();
this._connecting = false;
this._wallet = null;
this._publicKey = null;
this._params = params;
this._params = params || {};
this._ctorArgs = ctorArgs || {};
}

get publicKey() {
Expand Down Expand Up @@ -89,7 +94,7 @@ export class TorusWalletAdapter extends BaseMessageSignerWalletAdapter {

let wallet: Torus;
try {
wallet = window.torus || new TorusClass();
wallet = new TorusClass(this._ctorArgs);
} catch (error: any) {
throw new WalletConfigError(error?.message, error);
}
Expand Down Expand Up @@ -163,8 +168,11 @@ export class TorusWalletAdapter extends BaseMessageSignerWalletAdapter {

sendOptions.preflightCommitment = sendOptions.preflightCommitment || connection.commitment;

const { signature } = await wallet.signAndSendTransaction(transaction, sendOptions);
return signature;
const signature = await wallet.provider.request<{ message: string }, TransactionSignature>({
method: 'solana_sendTransaction',
params: { message: Buffer.from(transaction.serialize()).toString('base64') },
});
return signature as TransactionSignature;
} catch (error: any) {
if (error instanceof WalletError) throw error;
throw new WalletSendTransactionError(error?.message, error);
Expand All @@ -181,7 +189,11 @@ export class TorusWalletAdapter extends BaseMessageSignerWalletAdapter {
if (!wallet) throw new WalletNotConnectedError();

try {
return ((await wallet.signTransaction(transaction)) as T) || transaction;
const signedTransaction = await wallet.provider.request<{ message: string }, T>({
method: 'solana_signTransaction',
params: { message: Buffer.from(transaction.serialize()).toString('base64') },
});
return (signedTransaction as T) || transaction;
} catch (error: any) {
throw new WalletSignTransactionError(error?.message, error);
}
Expand All @@ -197,7 +209,13 @@ export class TorusWalletAdapter extends BaseMessageSignerWalletAdapter {
if (!wallet) throw new WalletNotConnectedError();

try {
return ((await wallet.signAllTransactions(transactions)) as T[]) || transactions;
const signedTransactions = await wallet.provider.request<{ message: string[] }, T[]>({
method: 'solana_signAllTransactions',
params: {
message: transactions.map((t) => Buffer.from(t.serialize()).toString('base64')),
},
});
return (signedTransactions as T[]) || transactions;
} catch (error: any) {
throw new WalletSignTransactionError(error?.message, error);
}
Expand All @@ -213,7 +231,11 @@ export class TorusWalletAdapter extends BaseMessageSignerWalletAdapter {
if (!wallet) throw new WalletNotConnectedError();

try {
return await wallet.signMessage(message);
const signature = await wallet.provider.request<{ message: string }, string>({
method: 'solana_signMessage',
params: { message: bs58.encode(message) },
});
return bs58.decode(signature as string);
} catch (error: any) {
throw new WalletSignMessageError(error?.message, error);
}
Expand Down
Loading