@wallet-ui/react-native-web3js 2.2.0-canary-20251120223258 → 2.2.0-canary-20251206072155
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.browser.cjs +95 -82
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.mjs +95 -81
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.native.mjs +95 -81
- package/dist/index.native.mjs.map +1 -1
- package/dist/index.node.cjs +95 -82
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +95 -81
- package/dist/index.node.mjs.map +1 -1
- package/dist/types/get-account-from-authorized-account.d.ts +4 -0
- package/dist/types/get-account-from-authorized-account.d.ts.map +1 -0
- package/dist/types/get-authorization-from-authorization-result.d.ts +4 -0
- package/dist/types/get-authorization-from-authorization-result.d.ts.map +1 -0
- package/dist/types/get-public-key-from-address.d.ts +4 -0
- package/dist/types/get-public-key-from-address.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/mobile-wallet-provider.d.ts +18 -0
- package/dist/types/mobile-wallet-provider.d.ts.map +1 -0
- package/dist/types/use-authorization.d.ts +3 -9
- package/dist/types/use-authorization.d.ts.map +1 -1
- package/dist/types/use-fetch-authorization.d.ts +6 -0
- package/dist/types/use-fetch-authorization.d.ts.map +1 -0
- package/dist/types/use-invalidate-authorizations.d.ts +2 -0
- package/dist/types/use-invalidate-authorizations.d.ts.map +1 -0
- package/dist/types/use-mobile-wallet.d.ts +19 -6
- package/dist/types/use-mobile-wallet.d.ts.map +1 -1
- package/dist/types/use-persist-authorization.d.ts +6 -0
- package/dist/types/use-persist-authorization.d.ts.map +1 -0
- package/dist/types/use-query-config.d.ts +6 -0
- package/dist/types/use-query-config.d.ts.map +1 -0
- package/package.json +2 -2
- package/dist/types/mobile-wallet-adapter-provider.d.ts +0 -18
- package/dist/types/mobile-wallet-adapter-provider.d.ts.map +0 -1
- package/dist/types/use-mobile-wallet-adapter.d.ts +0 -19
- package/dist/types/use-mobile-wallet-adapter.d.ts.map +0 -1
package/dist/index.node.mjs
CHANGED
|
@@ -1,46 +1,59 @@
|
|
|
1
1
|
import { Connection, PublicKey } from '@solana/web3.js';
|
|
2
2
|
import React, { createContext, useMemo, useCallback, useContext } from 'react';
|
|
3
|
-
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
4
|
-
import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
|
|
5
3
|
import { toUint8Array } from 'js-base64';
|
|
6
4
|
export { fromUint8Array, toUint8Array } from 'js-base64';
|
|
5
|
+
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
6
|
+
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
7
7
|
import { transact } from '@solana-mobile/mobile-wallet-adapter-protocol-web3js';
|
|
8
8
|
export * from '@solana-mobile/mobile-wallet-adapter-protocol-web3js';
|
|
9
9
|
export * from '@wallet-ui/core';
|
|
10
10
|
|
|
11
|
-
// src/mobile-wallet-
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
);
|
|
15
|
-
function MobileWalletAdapterProvider({
|
|
11
|
+
// src/mobile-wallet-provider.tsx
|
|
12
|
+
var MobileWalletProviderContext = createContext({});
|
|
13
|
+
function MobileWalletProvider({
|
|
16
14
|
children,
|
|
17
|
-
|
|
15
|
+
chain,
|
|
16
|
+
commitmentOrConfig = { commitment: "confirmed" },
|
|
18
17
|
endpoint,
|
|
19
18
|
identity
|
|
20
19
|
}) {
|
|
21
|
-
const connection = useMemo(() => new Connection(endpoint,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
const connection = useMemo(() => new Connection(endpoint, commitmentOrConfig), [commitmentOrConfig, endpoint]);
|
|
21
|
+
return /* @__PURE__ */ React.createElement(
|
|
22
|
+
MobileWalletProviderContext.Provider,
|
|
23
|
+
{
|
|
24
|
+
value: useMemo(
|
|
25
|
+
() => ({
|
|
26
|
+
chain,
|
|
27
|
+
connection,
|
|
28
|
+
identity
|
|
29
|
+
}),
|
|
30
|
+
[connection, identity, chain]
|
|
31
|
+
)
|
|
32
|
+
},
|
|
33
|
+
children
|
|
34
|
+
);
|
|
28
35
|
}
|
|
29
36
|
function getPublicKeyFromAddress(address) {
|
|
30
37
|
const publicKeyByteArray = toUint8Array(address);
|
|
31
38
|
return new PublicKey(publicKeyByteArray);
|
|
32
39
|
}
|
|
40
|
+
|
|
41
|
+
// src/get-account-from-authorized-account.ts
|
|
42
|
+
function ellipsify(str = "", len = 4, delimiter = "..") {
|
|
43
|
+
const limit = len * 2 + delimiter.length;
|
|
44
|
+
return str.length > limit ? str.slice(0, len) + delimiter + str.slice(-len) : str;
|
|
45
|
+
}
|
|
33
46
|
function getAccountFromAuthorizedAccount(account) {
|
|
34
47
|
const publicKey = getPublicKeyFromAddress(account.address);
|
|
35
48
|
return {
|
|
36
49
|
address: account.address,
|
|
37
|
-
// TODO: Fix upstream?
|
|
38
|
-
displayAddress: account.display_address,
|
|
39
50
|
icon: account.icon,
|
|
40
51
|
label: account.label ?? ellipsify(publicKey.toString(), 8),
|
|
41
52
|
publicKey
|
|
42
53
|
};
|
|
43
54
|
}
|
|
55
|
+
|
|
56
|
+
// src/get-authorization-from-authorization-result.ts
|
|
44
57
|
function getAuthorizationFromAuthorizationResult(authorizationResult, previouslySelectedAccount) {
|
|
45
58
|
let selectedAccount;
|
|
46
59
|
if (
|
|
@@ -59,8 +72,14 @@ function getAuthorizationFromAuthorizationResult(authorizationResult, previously
|
|
|
59
72
|
selectedAccount
|
|
60
73
|
};
|
|
61
74
|
}
|
|
62
|
-
|
|
63
|
-
|
|
75
|
+
function useQueryConfig() {
|
|
76
|
+
const storageKey = "authorization-cache";
|
|
77
|
+
const queryClient = useQueryClient();
|
|
78
|
+
const queryKey = ["wallet-authorization"];
|
|
79
|
+
return { queryClient, queryKey, storageKey };
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// src/use-fetch-authorization.ts
|
|
64
83
|
function cacheReviver(key, value) {
|
|
65
84
|
if (key === "publicKey") {
|
|
66
85
|
return new PublicKey(value);
|
|
@@ -68,31 +87,36 @@ function cacheReviver(key, value) {
|
|
|
68
87
|
return value;
|
|
69
88
|
}
|
|
70
89
|
}
|
|
71
|
-
function usePersistAuthorization() {
|
|
72
|
-
const queryClient = useQueryClient();
|
|
73
|
-
return useMutation({
|
|
74
|
-
mutationFn: async (auth) => {
|
|
75
|
-
await AsyncStorage.setItem(AUTHORIZATION_STORAGE_KEY, JSON.stringify(auth));
|
|
76
|
-
},
|
|
77
|
-
onSuccess: async () => {
|
|
78
|
-
await queryClient.invalidateQueries({ queryKey });
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
90
|
function useFetchAuthorization() {
|
|
91
|
+
const { queryKey, storageKey } = useQueryConfig();
|
|
83
92
|
return useQuery({
|
|
84
93
|
queryFn: async () => {
|
|
85
|
-
const cacheFetchResult = await AsyncStorage.getItem(
|
|
94
|
+
const cacheFetchResult = await AsyncStorage.getItem(storageKey);
|
|
86
95
|
return cacheFetchResult ? JSON.parse(cacheFetchResult, cacheReviver) : null;
|
|
87
96
|
},
|
|
88
97
|
queryKey
|
|
89
98
|
});
|
|
90
99
|
}
|
|
100
|
+
|
|
101
|
+
// src/use-invalidate-authorizations.ts
|
|
91
102
|
function useInvalidateAuthorizations() {
|
|
92
|
-
const
|
|
93
|
-
return () =>
|
|
103
|
+
const { queryClient, queryKey } = useQueryConfig();
|
|
104
|
+
return () => queryClient.invalidateQueries({ queryKey });
|
|
105
|
+
}
|
|
106
|
+
function usePersistAuthorization() {
|
|
107
|
+
const { queryClient, queryKey, storageKey } = useQueryConfig();
|
|
108
|
+
return useMutation({
|
|
109
|
+
mutationFn: async (auth) => {
|
|
110
|
+
await AsyncStorage.setItem(storageKey, JSON.stringify(auth));
|
|
111
|
+
},
|
|
112
|
+
onSuccess: async () => {
|
|
113
|
+
await queryClient.invalidateQueries({ queryKey });
|
|
114
|
+
}
|
|
115
|
+
});
|
|
94
116
|
}
|
|
95
|
-
|
|
117
|
+
|
|
118
|
+
// src/use-authorization.ts
|
|
119
|
+
function useAuthorization({ chain, identity }) {
|
|
96
120
|
const fetchQuery = useFetchAuthorization();
|
|
97
121
|
const invalidateAuthorizations = useInvalidateAuthorizations();
|
|
98
122
|
const persistMutation = usePersistAuthorization();
|
|
@@ -111,24 +135,24 @@ function useAuthorization({ clusterId, identity }) {
|
|
|
111
135
|
async (wallet) => {
|
|
112
136
|
const authorizationResult = await wallet.authorize({
|
|
113
137
|
auth_token: fetchQuery.data?.authToken,
|
|
114
|
-
chain
|
|
138
|
+
chain,
|
|
115
139
|
identity
|
|
116
140
|
});
|
|
117
141
|
return (await handleAuthorizationResult(authorizationResult)).selectedAccount;
|
|
118
142
|
},
|
|
119
|
-
[fetchQuery.data?.authToken,
|
|
143
|
+
[fetchQuery.data?.authToken, chain, identity, handleAuthorizationResult]
|
|
120
144
|
);
|
|
121
145
|
const authorizeSessionWithSignIn = useCallback(
|
|
122
146
|
async (wallet, signInPayload) => {
|
|
123
147
|
const authorizationResult = await wallet.authorize({
|
|
124
148
|
auth_token: fetchQuery.data?.authToken,
|
|
125
|
-
chain
|
|
149
|
+
chain,
|
|
126
150
|
identity,
|
|
127
151
|
sign_in_payload: signInPayload
|
|
128
152
|
});
|
|
129
153
|
return (await handleAuthorizationResult(authorizationResult)).selectedAccount;
|
|
130
154
|
},
|
|
131
|
-
[fetchQuery.data?.authToken,
|
|
155
|
+
[fetchQuery.data?.authToken, chain, identity, handleAuthorizationResult]
|
|
132
156
|
);
|
|
133
157
|
const deauthorizeSession = useCallback(
|
|
134
158
|
async (wallet) => {
|
|
@@ -165,11 +189,9 @@ function useAuthorization({ clusterId, identity }) {
|
|
|
165
189
|
]
|
|
166
190
|
);
|
|
167
191
|
}
|
|
168
|
-
function useMobileWallet(
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
identity
|
|
172
|
-
});
|
|
192
|
+
function useMobileWallet() {
|
|
193
|
+
const ctx = useContext(MobileWalletProviderContext);
|
|
194
|
+
const { authorizeSessionWithSignIn, authorizeSession, deauthorizeSessions, selectedAccount, ...authorization } = useAuthorization(ctx);
|
|
173
195
|
const connect = useCallback(
|
|
174
196
|
async () => await transact(async (wallet) => await authorizeSession(wallet)),
|
|
175
197
|
[authorizeSession]
|
|
@@ -184,37 +206,34 @@ function useMobileWallet({ clusterId, identity }) {
|
|
|
184
206
|
async (signInPayload) => await transact(async (wallet) => await authorizeSessionWithSignIn(wallet, signInPayload)),
|
|
185
207
|
[authorizeSessionWithSignIn]
|
|
186
208
|
);
|
|
187
|
-
const disconnect = useCallback(async () =>
|
|
188
|
-
await deauthorizeSessions();
|
|
189
|
-
}, [deauthorizeSessions]);
|
|
209
|
+
const disconnect = useCallback(async () => await deauthorizeSessions(), [deauthorizeSessions]);
|
|
190
210
|
const signAndSendTransaction = useCallback(
|
|
191
|
-
async (transaction, minContextSlot) => {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
transactions: [transaction]
|
|
197
|
-
});
|
|
198
|
-
return signatures[0];
|
|
211
|
+
async (transaction, minContextSlot) => await transact(async (wallet) => {
|
|
212
|
+
await authorizeSession(wallet);
|
|
213
|
+
const signatures = await wallet.signAndSendTransactions({
|
|
214
|
+
minContextSlot,
|
|
215
|
+
transactions: [transaction]
|
|
199
216
|
});
|
|
200
|
-
|
|
217
|
+
return signatures[0];
|
|
218
|
+
}),
|
|
201
219
|
[authorizeSession]
|
|
202
220
|
);
|
|
203
221
|
const signMessage = useCallback(
|
|
204
|
-
async (message) => {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
payloads: [message]
|
|
210
|
-
});
|
|
211
|
-
return signedMessages[0];
|
|
222
|
+
async (message) => await transact(async (wallet) => {
|
|
223
|
+
const authResult = await authorizeSession(wallet);
|
|
224
|
+
const signedMessages = await wallet.signMessages({
|
|
225
|
+
addresses: [authResult.address],
|
|
226
|
+
payloads: [message]
|
|
212
227
|
});
|
|
213
|
-
|
|
228
|
+
return signedMessages[0];
|
|
229
|
+
}),
|
|
214
230
|
[authorizeSession]
|
|
215
231
|
);
|
|
216
232
|
return useMemo(
|
|
217
233
|
() => ({
|
|
234
|
+
...ctx,
|
|
235
|
+
...authorization,
|
|
236
|
+
account: selectedAccount,
|
|
218
237
|
connect,
|
|
219
238
|
connectAnd,
|
|
220
239
|
disconnect,
|
|
@@ -222,25 +241,20 @@ function useMobileWallet({ clusterId, identity }) {
|
|
|
222
241
|
signIn,
|
|
223
242
|
signMessage
|
|
224
243
|
}),
|
|
225
|
-
[
|
|
244
|
+
[
|
|
245
|
+
authorization,
|
|
246
|
+
connect,
|
|
247
|
+
connectAnd,
|
|
248
|
+
ctx,
|
|
249
|
+
disconnect,
|
|
250
|
+
selectedAccount,
|
|
251
|
+
signAndSendTransaction,
|
|
252
|
+
signIn,
|
|
253
|
+
signMessage
|
|
254
|
+
]
|
|
226
255
|
);
|
|
227
256
|
}
|
|
228
|
-
function useMobileWalletAdapter() {
|
|
229
|
-
const ctx = useContext(MobileWalletAdapterProviderContext);
|
|
230
|
-
const { connect, connectAnd, signAndSendTransaction, signMessage, signIn } = useMobileWallet(ctx);
|
|
231
|
-
const { selectedAccount, deauthorizeSessions } = useAuthorization(ctx);
|
|
232
|
-
return {
|
|
233
|
-
...ctx,
|
|
234
|
-
account: selectedAccount,
|
|
235
|
-
connect,
|
|
236
|
-
connectAnd,
|
|
237
|
-
disconnect: deauthorizeSessions,
|
|
238
|
-
signAndSendTransaction,
|
|
239
|
-
signIn,
|
|
240
|
-
signMessage
|
|
241
|
-
};
|
|
242
|
-
}
|
|
243
257
|
|
|
244
|
-
export {
|
|
258
|
+
export { MobileWalletProvider, MobileWalletProviderContext, useAuthorization, useMobileWallet };
|
|
245
259
|
//# sourceMappingURL=index.node.mjs.map
|
|
246
260
|
//# sourceMappingURL=index.node.mjs.map
|
package/dist/index.node.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/mobile-wallet-adapter-provider.tsx","../src/use-authorization.ts","../src/use-mobile-wallet.ts","../src/use-mobile-wallet-adapter.ts"],"names":["useMemo","useCallback"],"mappings":"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","file":"index.node.mjs","sourcesContent":["import { Connection } from '@solana/web3.js';\nimport { AppIdentity } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport { SolanaClusterId } from '@wallet-ui/core/src';\nimport React, { createContext, type ReactNode, useMemo } from 'react';\n\nexport interface MobileWalletAdapterProviderProps {\n children: ReactNode;\n clusterId: SolanaClusterId;\n endpoint: string;\n identity: AppIdentity;\n}\nexport interface MobileWalletAdapterProviderState {\n clusterId: SolanaClusterId;\n connection: Connection;\n identity: AppIdentity;\n}\n\nexport const MobileWalletAdapterProviderContext = createContext<MobileWalletAdapterProviderState>(\n {} as MobileWalletAdapterProviderState,\n);\nexport function MobileWalletAdapterProvider({\n children,\n clusterId,\n endpoint,\n identity,\n}: MobileWalletAdapterProviderProps) {\n const connection = useMemo(() => new Connection(endpoint, { commitment: 'confirmed' }), [endpoint]);\n const value = useMemo(() => ({ clusterId, connection, identity }), [connection, identity, clusterId]);\n\n return (\n <MobileWalletAdapterProviderContext.Provider value={value}>\n {children}\n </MobileWalletAdapterProviderContext.Provider>\n );\n}\n","import AsyncStorage from '@react-native-async-storage/async-storage';\nimport { PublicKey, PublicKeyInitData } from '@solana/web3.js';\nimport {\n Account as AuthorizedAccount,\n AppIdentity,\n AuthorizationResult,\n AuthorizeAPI,\n AuthToken,\n Base64EncodedAddress,\n DeauthorizeAPI,\n SignInPayload,\n} from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { WalletIcon } from '@wallet-standard/core';\nimport { SolanaClusterId } from '@wallet-ui/core';\nimport { toUint8Array } from 'js-base64';\nimport { useCallback, useMemo } from 'react';\n\nfunction ellipsify(str = '', len = 4, delimiter = '..') {\n const limit = len * 2 + delimiter.length;\n\n return str.length > limit ? str.slice(0, len) + delimiter + str.slice(-len) : str;\n}\n\nexport type Account = Readonly<{\n address: Base64EncodedAddress;\n displayAddress?: string;\n icon?: WalletIcon;\n label?: string;\n publicKey: PublicKey;\n}>;\n\nexport type WalletAuthorization = Readonly<{\n accounts: Account[];\n authToken: AuthToken;\n selectedAccount: Account;\n}>;\n\nfunction getPublicKeyFromAddress(address: Base64EncodedAddress): PublicKey {\n const publicKeyByteArray = toUint8Array(address);\n return new PublicKey(publicKeyByteArray);\n}\n\nfunction getAccountFromAuthorizedAccount(account: AuthorizedAccount): Account {\n const publicKey = getPublicKeyFromAddress(account.address);\n return {\n address: account.address,\n // TODO: Fix upstream?\n displayAddress: (account as unknown as { display_address: string }).display_address,\n icon: account.icon,\n label: account.label ?? ellipsify(publicKey.toString(), 8),\n publicKey,\n };\n}\n\nfunction getAuthorizationFromAuthorizationResult(\n authorizationResult: AuthorizationResult,\n previouslySelectedAccount?: Account,\n): WalletAuthorization {\n let selectedAccount: Account;\n if (\n // We have yet to select an account.\n previouslySelectedAccount == null ||\n // The previously selected account is no longer in the set of authorized addresses.\n !authorizationResult.accounts.some(({ address }) => address === previouslySelectedAccount.address)\n ) {\n const firstAccount = authorizationResult.accounts[0];\n selectedAccount = getAccountFromAuthorizedAccount(firstAccount);\n } else {\n selectedAccount = previouslySelectedAccount;\n }\n return {\n accounts: authorizationResult.accounts.map(getAccountFromAuthorizedAccount),\n authToken: authorizationResult.auth_token,\n selectedAccount,\n };\n}\n\nconst AUTHORIZATION_STORAGE_KEY = 'authorization-cache';\n\nconst queryKey = ['wallet-authorization'];\n\nfunction cacheReviver(key: string, value: unknown) {\n if (key === 'publicKey') {\n return new PublicKey(value as PublicKeyInitData); // the PublicKeyInitData should match the actual data structure stored in AsyncStorage\n } else {\n return value;\n }\n}\nfunction usePersistAuthorization() {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: async (auth: WalletAuthorization | null): Promise<void> => {\n await AsyncStorage.setItem(AUTHORIZATION_STORAGE_KEY, JSON.stringify(auth));\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries({ queryKey });\n },\n });\n}\n\nfunction useFetchAuthorization() {\n return useQuery({\n queryFn: async (): Promise<WalletAuthorization | null> => {\n const cacheFetchResult = await AsyncStorage.getItem(AUTHORIZATION_STORAGE_KEY);\n\n // Return prior authorization, if found.\n return cacheFetchResult ? JSON.parse(cacheFetchResult, cacheReviver) : null;\n },\n queryKey,\n });\n}\n\nfunction useInvalidateAuthorizations() {\n const client = useQueryClient();\n return () => client.invalidateQueries({ queryKey });\n}\n\nexport function useAuthorization({ clusterId, identity }: { clusterId: SolanaClusterId; identity: AppIdentity }) {\n const fetchQuery = useFetchAuthorization();\n const invalidateAuthorizations = useInvalidateAuthorizations();\n const persistMutation = usePersistAuthorization();\n\n const handleAuthorizationResult = useCallback(\n async (authorizationResult: AuthorizationResult): Promise<WalletAuthorization> => {\n const nextAuthorization = getAuthorizationFromAuthorizationResult(\n authorizationResult,\n fetchQuery.data?.selectedAccount,\n );\n await persistMutation.mutateAsync(nextAuthorization);\n return nextAuthorization;\n },\n [fetchQuery.data?.selectedAccount, persistMutation],\n );\n\n const authorizeSession = useCallback(\n async (wallet: AuthorizeAPI) => {\n const authorizationResult = await wallet.authorize({\n auth_token: fetchQuery.data?.authToken,\n chain: clusterId,\n identity,\n });\n return (await handleAuthorizationResult(authorizationResult)).selectedAccount;\n },\n [fetchQuery.data?.authToken, clusterId, identity, handleAuthorizationResult],\n );\n\n const authorizeSessionWithSignIn = useCallback(\n async (wallet: AuthorizeAPI, signInPayload: SignInPayload) => {\n const authorizationResult = await wallet.authorize({\n auth_token: fetchQuery.data?.authToken,\n chain: clusterId,\n identity,\n sign_in_payload: signInPayload,\n });\n return (await handleAuthorizationResult(authorizationResult)).selectedAccount;\n },\n [fetchQuery.data?.authToken, clusterId, identity, handleAuthorizationResult],\n );\n\n const deauthorizeSession = useCallback(\n async (wallet: DeauthorizeAPI) => {\n if (fetchQuery.data?.authToken == null) {\n return;\n }\n await wallet.deauthorize({ auth_token: fetchQuery.data.authToken });\n await persistMutation.mutateAsync(null);\n },\n [fetchQuery.data?.authToken, persistMutation],\n );\n\n const deauthorizeSessions = useCallback(async () => {\n await invalidateAuthorizations();\n await persistMutation.mutateAsync(null);\n }, [invalidateAuthorizations, persistMutation]);\n\n return useMemo(\n () => ({\n accounts: fetchQuery.data?.accounts ?? null,\n authorizeSession,\n authorizeSessionWithSignIn,\n deauthorizeSession,\n deauthorizeSessions,\n isLoading: fetchQuery.isLoading,\n selectedAccount: fetchQuery.data?.selectedAccount ?? null,\n }),\n [\n authorizeSession,\n authorizeSessionWithSignIn,\n deauthorizeSession,\n deauthorizeSessions,\n fetchQuery.data?.accounts,\n fetchQuery.data?.selectedAccount,\n fetchQuery.isLoading,\n ],\n );\n}\n","import { Transaction, TransactionSignature, VersionedTransaction } from '@solana/web3.js';\nimport { AppIdentity, AuthorizeAPI, SignInPayload } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport { transact } from '@solana-mobile/mobile-wallet-adapter-protocol-web3js';\nimport { SolanaClusterId } from '@wallet-ui/core';\nimport { useCallback, useMemo } from 'react';\n\nimport { Account, useAuthorization } from './use-authorization';\n\nexport function useMobileWallet({ clusterId, identity }: { clusterId: SolanaClusterId; identity: AppIdentity }) {\n const { authorizeSessionWithSignIn, authorizeSession, deauthorizeSessions } = useAuthorization({\n clusterId,\n identity,\n });\n\n const connect = useCallback(\n async (): Promise<Account> => await transact(async wallet => await authorizeSession(wallet)),\n [authorizeSession],\n );\n\n const connectAnd = useCallback(\n async (cb: (wallet: AuthorizeAPI) => Promise<Account | void>): Promise<Account | void> => {\n return await transact(async wallet => await cb(wallet));\n },\n [],\n );\n\n const signIn = useCallback(\n async (signInPayload: SignInPayload): Promise<Account> =>\n await transact(async wallet => await authorizeSessionWithSignIn(wallet, signInPayload)),\n [authorizeSessionWithSignIn],\n );\n\n const disconnect = useCallback(async (): Promise<void> => {\n await deauthorizeSessions();\n }, [deauthorizeSessions]);\n\n const signAndSendTransaction = useCallback(\n async (\n transaction: Transaction | VersionedTransaction,\n minContextSlot: number,\n ): Promise<TransactionSignature> => {\n return await transact(async wallet => {\n await authorizeSession(wallet);\n const signatures = await wallet.signAndSendTransactions({\n minContextSlot,\n transactions: [transaction],\n });\n return signatures[0];\n });\n },\n [authorizeSession],\n );\n\n const signMessage = useCallback(\n async (message: Uint8Array): Promise<Uint8Array> => {\n return await transact(async wallet => {\n const authResult = await authorizeSession(wallet);\n const signedMessages = await wallet.signMessages({\n addresses: [authResult.address],\n payloads: [message],\n });\n return signedMessages[0];\n });\n },\n [authorizeSession],\n );\n\n return useMemo(\n () => ({\n connect,\n connectAnd,\n disconnect,\n signAndSendTransaction,\n signIn,\n signMessage,\n }),\n [connect, connectAnd, disconnect, signAndSendTransaction, signIn, signMessage],\n );\n}\n","import { useContext } from 'react';\n\nimport { MobileWalletAdapterProviderContext } from './mobile-wallet-adapter-provider';\nimport { useAuthorization } from './use-authorization';\nimport { useMobileWallet } from './use-mobile-wallet';\n\nexport function useMobileWalletAdapter() {\n const ctx = useContext(MobileWalletAdapterProviderContext);\n const { connect, connectAnd, signAndSendTransaction, signMessage, signIn } = useMobileWallet(ctx);\n const { selectedAccount, deauthorizeSessions } = useAuthorization(ctx);\n\n return {\n ...ctx,\n account: selectedAccount,\n connect,\n connectAnd,\n disconnect: deauthorizeSessions,\n signAndSendTransaction,\n signIn,\n signMessage,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/mobile-wallet-provider.tsx","../src/get-public-key-from-address.ts","../src/get-account-from-authorized-account.ts","../src/get-authorization-from-authorization-result.ts","../src/use-query-config.ts","../src/use-fetch-authorization.ts","../src/use-invalidate-authorizations.ts","../src/use-persist-authorization.ts","../src/use-authorization.ts","../src/use-mobile-wallet.ts"],"names":["PublicKey","AsyncStorage","useMemo","useCallback"],"mappings":"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","file":"index.node.mjs","sourcesContent":["import { Commitment, Connection, ConnectionConfig } from '@solana/web3.js';\nimport { AppIdentity, Chain } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport React, { createContext, type ReactNode, useMemo } from 'react';\n\nexport interface MobileWalletProviderProps {\n chain: Chain;\n children: ReactNode;\n commitmentOrConfig?: Commitment | ConnectionConfig;\n endpoint: string;\n identity: AppIdentity;\n}\nexport interface MobileWalletProviderState {\n chain: Chain;\n connection: Connection;\n identity: AppIdentity;\n}\n\nexport const MobileWalletProviderContext = createContext<MobileWalletProviderState>({} as MobileWalletProviderState);\nexport function MobileWalletProvider({\n children,\n chain,\n commitmentOrConfig = { commitment: 'confirmed' },\n endpoint,\n identity,\n}: MobileWalletProviderProps) {\n const connection = useMemo(() => new Connection(endpoint, commitmentOrConfig), [commitmentOrConfig, endpoint]);\n\n return (\n <MobileWalletProviderContext.Provider\n value={useMemo(\n () => ({\n chain,\n connection,\n identity,\n }),\n [connection, identity, chain],\n )}\n >\n {children}\n </MobileWalletProviderContext.Provider>\n );\n}\n","import { PublicKey } from '@solana/web3.js';\nimport { Base64EncodedAddress } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport { toUint8Array } from 'js-base64';\n\nexport function getPublicKeyFromAddress(address: Base64EncodedAddress): PublicKey {\n const publicKeyByteArray = toUint8Array(address);\n\n return new PublicKey(publicKeyByteArray);\n}\n","import { Account as AuthorizedAccount } from '@solana-mobile/mobile-wallet-adapter-protocol';\n\nimport { getPublicKeyFromAddress } from './get-public-key-from-address';\nimport { Account } from './use-authorization';\n\nfunction ellipsify(str = '', len = 4, delimiter = '..') {\n const limit = len * 2 + delimiter.length;\n\n return str.length > limit ? str.slice(0, len) + delimiter + str.slice(-len) : str;\n}\n\nexport function getAccountFromAuthorizedAccount(account: AuthorizedAccount): Account {\n const publicKey = getPublicKeyFromAddress(account.address);\n\n return {\n address: account.address,\n icon: account.icon,\n label: account.label ?? ellipsify(publicKey.toString(), 8),\n publicKey,\n };\n}\n","import { AuthorizationResult } from '@solana-mobile/mobile-wallet-adapter-protocol';\n\nimport { getAccountFromAuthorizedAccount } from './get-account-from-authorized-account';\nimport { Account, WalletAuthorization } from './use-authorization';\n\nexport function getAuthorizationFromAuthorizationResult(\n authorizationResult: AuthorizationResult,\n previouslySelectedAccount?: Account,\n): WalletAuthorization {\n let selectedAccount: Account;\n if (\n // We have yet to select an account.\n previouslySelectedAccount == null ||\n // The previously selected account is no longer in the set of authorized addresses.\n !authorizationResult.accounts.some(({ address }) => address === previouslySelectedAccount.address)\n ) {\n const firstAccount = authorizationResult.accounts[0];\n selectedAccount = getAccountFromAuthorizedAccount(firstAccount);\n } else {\n selectedAccount = previouslySelectedAccount;\n }\n return {\n accounts: authorizationResult.accounts.map(getAccountFromAuthorizedAccount),\n authToken: authorizationResult.auth_token,\n selectedAccount,\n };\n}\n","import { useQueryClient } from '@tanstack/react-query';\n\nexport function useQueryConfig() {\n const storageKey = 'authorization-cache';\n const queryClient = useQueryClient();\n const queryKey = ['wallet-authorization'];\n\n return { queryClient, queryKey, storageKey };\n}\n","import AsyncStorage from '@react-native-async-storage/async-storage';\nimport { PublicKey, PublicKeyInitData } from '@solana/web3.js';\nimport { useQuery } from '@tanstack/react-query';\n\nimport { WalletAuthorization } from './use-authorization';\nimport { useQueryConfig } from './use-query-config';\n\nfunction cacheReviver(key: string, value: unknown) {\n if (key === 'publicKey') {\n return new PublicKey(value as PublicKeyInitData); // the PublicKeyInitData should match the actual data structure stored in AsyncStorage\n } else {\n return value;\n }\n}\n\nexport function useFetchAuthorization() {\n const { queryKey, storageKey } = useQueryConfig();\n return useQuery({\n queryFn: async (): Promise<WalletAuthorization | null> => {\n const cacheFetchResult = await AsyncStorage.getItem(storageKey);\n\n // Return prior authorization, if found.\n return cacheFetchResult ? JSON.parse(cacheFetchResult, cacheReviver) : null;\n },\n queryKey,\n });\n}\n","import { useQueryConfig } from './use-query-config';\n\nexport function useInvalidateAuthorizations() {\n const { queryClient, queryKey } = useQueryConfig();\n\n return () => queryClient.invalidateQueries({ queryKey });\n}\n","import AsyncStorage from '@react-native-async-storage/async-storage';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { WalletAuthorization } from './use-authorization';\nimport { useQueryConfig } from './use-query-config';\n\nexport function usePersistAuthorization() {\n const { queryClient, queryKey, storageKey } = useQueryConfig();\n return useMutation({\n mutationFn: async (auth: WalletAuthorization | null): Promise<void> => {\n await AsyncStorage.setItem(storageKey, JSON.stringify(auth));\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries({ queryKey });\n },\n });\n}\n","import { PublicKey } from '@solana/web3.js';\nimport {\n AppIdentity,\n AuthorizationResult,\n AuthorizeAPI,\n AuthToken,\n Base64EncodedAddress,\n Chain,\n DeauthorizeAPI,\n SignInPayload,\n} from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport { WalletIcon } from '@wallet-standard/core';\nimport { useCallback, useMemo } from 'react';\n\nimport { getAuthorizationFromAuthorizationResult } from './get-authorization-from-authorization-result';\nimport { useFetchAuthorization } from './use-fetch-authorization';\nimport { useInvalidateAuthorizations } from './use-invalidate-authorizations';\nimport { usePersistAuthorization } from './use-persist-authorization';\n\nexport type Account = Readonly<{\n address: Base64EncodedAddress;\n icon?: WalletIcon;\n label?: string;\n publicKey: PublicKey;\n}>;\n\nexport type WalletAuthorization = Readonly<{\n accounts: Account[];\n authToken: AuthToken;\n selectedAccount: Account;\n}>;\n\nexport function useAuthorization({ chain, identity }: { chain: Chain; identity: AppIdentity }) {\n const fetchQuery = useFetchAuthorization();\n const invalidateAuthorizations = useInvalidateAuthorizations();\n const persistMutation = usePersistAuthorization();\n\n const handleAuthorizationResult = useCallback(\n async (authorizationResult: AuthorizationResult): Promise<WalletAuthorization> => {\n const nextAuthorization = getAuthorizationFromAuthorizationResult(\n authorizationResult,\n fetchQuery.data?.selectedAccount,\n );\n await persistMutation.mutateAsync(nextAuthorization);\n return nextAuthorization;\n },\n [fetchQuery.data?.selectedAccount, persistMutation],\n );\n\n const authorizeSession = useCallback(\n async (wallet: AuthorizeAPI) => {\n const authorizationResult = await wallet.authorize({\n auth_token: fetchQuery.data?.authToken,\n chain,\n identity,\n });\n return (await handleAuthorizationResult(authorizationResult)).selectedAccount;\n },\n [fetchQuery.data?.authToken, chain, identity, handleAuthorizationResult],\n );\n\n const authorizeSessionWithSignIn = useCallback(\n async (wallet: AuthorizeAPI, signInPayload: SignInPayload) => {\n const authorizationResult = await wallet.authorize({\n auth_token: fetchQuery.data?.authToken,\n chain,\n identity,\n sign_in_payload: signInPayload,\n });\n return (await handleAuthorizationResult(authorizationResult)).selectedAccount;\n },\n [fetchQuery.data?.authToken, chain, identity, handleAuthorizationResult],\n );\n\n const deauthorizeSession = useCallback(\n async (wallet: DeauthorizeAPI) => {\n if (fetchQuery.data?.authToken == null) {\n return;\n }\n await wallet.deauthorize({ auth_token: fetchQuery.data.authToken });\n await persistMutation.mutateAsync(null);\n },\n [fetchQuery.data?.authToken, persistMutation],\n );\n\n const deauthorizeSessions = useCallback(async () => {\n await invalidateAuthorizations();\n await persistMutation.mutateAsync(null);\n }, [invalidateAuthorizations, persistMutation]);\n\n return useMemo(\n () => ({\n accounts: fetchQuery.data?.accounts ?? null,\n authorizeSession,\n authorizeSessionWithSignIn,\n deauthorizeSession,\n deauthorizeSessions,\n isLoading: fetchQuery.isLoading,\n selectedAccount: fetchQuery.data?.selectedAccount ?? null,\n }),\n [\n authorizeSession,\n authorizeSessionWithSignIn,\n deauthorizeSession,\n deauthorizeSessions,\n fetchQuery.data?.accounts,\n fetchQuery.data?.selectedAccount,\n fetchQuery.isLoading,\n ],\n );\n}\n","import { Transaction, TransactionSignature, VersionedTransaction } from '@solana/web3.js';\nimport { AuthorizeAPI, SignInPayload } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport { transact } from '@solana-mobile/mobile-wallet-adapter-protocol-web3js';\nimport { useCallback, useContext, useMemo } from 'react';\n\nimport { MobileWalletProviderContext } from './mobile-wallet-provider';\nimport { Account, useAuthorization } from './use-authorization';\n\nexport function useMobileWallet() {\n const ctx = useContext(MobileWalletProviderContext);\n const { authorizeSessionWithSignIn, authorizeSession, deauthorizeSessions, selectedAccount, ...authorization } =\n useAuthorization(ctx);\n\n const connect = useCallback(\n async (): Promise<Account> => await transact(async wallet => await authorizeSession(wallet)),\n [authorizeSession],\n );\n\n const connectAnd = useCallback(\n async (cb: (wallet: AuthorizeAPI) => Promise<Account | void>): Promise<Account | void> => {\n return await transact(async wallet => await cb(wallet));\n },\n [],\n );\n\n const signIn = useCallback(\n async (signInPayload: SignInPayload): Promise<Account> =>\n await transact(async wallet => await authorizeSessionWithSignIn(wallet, signInPayload)),\n [authorizeSessionWithSignIn],\n );\n\n const disconnect = useCallback(async (): Promise<void> => await deauthorizeSessions(), [deauthorizeSessions]);\n\n const signAndSendTransaction = useCallback(\n async (\n transaction: Transaction | VersionedTransaction,\n minContextSlot: number,\n ): Promise<TransactionSignature> =>\n await transact(async wallet => {\n await authorizeSession(wallet);\n const signatures = await wallet.signAndSendTransactions({\n minContextSlot,\n transactions: [transaction],\n });\n return signatures[0];\n }),\n [authorizeSession],\n );\n\n const signMessage = useCallback(\n async (message: Uint8Array): Promise<Uint8Array> =>\n await transact(async wallet => {\n const authResult = await authorizeSession(wallet);\n const signedMessages = await wallet.signMessages({\n addresses: [authResult.address],\n payloads: [message],\n });\n return signedMessages[0];\n }),\n [authorizeSession],\n );\n\n return useMemo(\n () => ({\n ...ctx,\n ...authorization,\n account: selectedAccount,\n connect,\n connectAnd,\n disconnect,\n signAndSendTransaction,\n signIn,\n signMessage,\n }),\n [\n authorization,\n connect,\n connectAnd,\n ctx,\n disconnect,\n selectedAccount,\n signAndSendTransaction,\n signIn,\n signMessage,\n ],\n );\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Account as AuthorizedAccount } from '@solana-mobile/mobile-wallet-adapter-protocol';
|
|
2
|
+
import { Account } from './use-authorization';
|
|
3
|
+
export declare function getAccountFromAuthorizedAccount(account: AuthorizedAccount): Account;
|
|
4
|
+
//# sourceMappingURL=get-account-from-authorized-account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-account-from-authorized-account.d.ts","sourceRoot":"","sources":["../../src/get-account-from-authorized-account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAG7F,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAQ9C,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CASnF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AuthorizationResult } from '@solana-mobile/mobile-wallet-adapter-protocol';
|
|
2
|
+
import { Account, WalletAuthorization } from './use-authorization';
|
|
3
|
+
export declare function getAuthorizationFromAuthorizationResult(authorizationResult: AuthorizationResult, previouslySelectedAccount?: Account): WalletAuthorization;
|
|
4
|
+
//# sourceMappingURL=get-authorization-from-authorization-result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-authorization-from-authorization-result.d.ts","sourceRoot":"","sources":["../../src/get-authorization-from-authorization-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAGpF,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,wBAAgB,uCAAuC,CACnD,mBAAmB,EAAE,mBAAmB,EACxC,yBAAyB,CAAC,EAAE,OAAO,GACpC,mBAAmB,CAkBrB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
import { Base64EncodedAddress } from '@solana-mobile/mobile-wallet-adapter-protocol';
|
|
3
|
+
export declare function getPublicKeyFromAddress(address: Base64EncodedAddress): PublicKey;
|
|
4
|
+
//# sourceMappingURL=get-public-key-from-address.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-public-key-from-address.d.ts","sourceRoot":"","sources":["../../src/get-public-key-from-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAGrF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAIhF"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export * from './mobile-wallet-
|
|
1
|
+
export * from './mobile-wallet-provider';
|
|
2
2
|
export * from './use-authorization';
|
|
3
3
|
export * from './use-mobile-wallet';
|
|
4
|
-
export * from './use-mobile-wallet-adapter';
|
|
5
4
|
export type { AppIdentity, SignInPayload } from '@solana-mobile/mobile-wallet-adapter-protocol';
|
|
6
5
|
export * from '@solana-mobile/mobile-wallet-adapter-protocol-web3js';
|
|
7
6
|
export * from '@wallet-ui/core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AAEpC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAChG,cAAc,sDAAsD,CAAC;AACrE,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Commitment, Connection, ConnectionConfig } from '@solana/web3.js';
|
|
2
|
+
import { AppIdentity, Chain } from '@solana-mobile/mobile-wallet-adapter-protocol';
|
|
3
|
+
import React, { type ReactNode } from 'react';
|
|
4
|
+
export interface MobileWalletProviderProps {
|
|
5
|
+
chain: Chain;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
commitmentOrConfig?: Commitment | ConnectionConfig;
|
|
8
|
+
endpoint: string;
|
|
9
|
+
identity: AppIdentity;
|
|
10
|
+
}
|
|
11
|
+
export interface MobileWalletProviderState {
|
|
12
|
+
chain: Chain;
|
|
13
|
+
connection: Connection;
|
|
14
|
+
identity: AppIdentity;
|
|
15
|
+
}
|
|
16
|
+
export declare const MobileWalletProviderContext: React.Context<MobileWalletProviderState>;
|
|
17
|
+
export declare function MobileWalletProvider({ children, chain, commitmentOrConfig, endpoint, identity, }: MobileWalletProviderProps): React.JSX.Element;
|
|
18
|
+
//# sourceMappingURL=mobile-wallet-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-wallet-provider.d.ts","sourceRoot":"","sources":["../../src/mobile-wallet-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,KAAK,EAAE,EAAiB,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAEtE,MAAM,WAAW,yBAAyB;IACtC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,kBAAkB,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,WAAW,CAAC;CACzB;AACD,MAAM,WAAW,yBAAyB;IACtC,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,WAAW,CAAC;CACzB;AAED,eAAO,MAAM,2BAA2B,0CAA4E,CAAC;AACrH,wBAAgB,oBAAoB,CAAC,EACjC,QAAQ,EACR,KAAK,EACL,kBAAgD,EAChD,QAAQ,EACR,QAAQ,GACX,EAAE,yBAAyB,qBAiB3B"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { PublicKey } from '@solana/web3.js';
|
|
2
|
-
import { AppIdentity, AuthorizeAPI, AuthToken, Base64EncodedAddress, DeauthorizeAPI, SignInPayload } from '@solana-mobile/mobile-wallet-adapter-protocol';
|
|
2
|
+
import { AppIdentity, AuthorizeAPI, AuthToken, Base64EncodedAddress, Chain, DeauthorizeAPI, SignInPayload } from '@solana-mobile/mobile-wallet-adapter-protocol';
|
|
3
3
|
import { WalletIcon } from '@wallet-standard/core';
|
|
4
|
-
import { SolanaClusterId } from '@wallet-ui/core';
|
|
5
4
|
export type Account = Readonly<{
|
|
6
5
|
address: Base64EncodedAddress;
|
|
7
|
-
displayAddress?: string;
|
|
8
6
|
icon?: WalletIcon;
|
|
9
7
|
label?: string;
|
|
10
8
|
publicKey: PublicKey;
|
|
@@ -14,27 +12,24 @@ export type WalletAuthorization = Readonly<{
|
|
|
14
12
|
authToken: AuthToken;
|
|
15
13
|
selectedAccount: Account;
|
|
16
14
|
}>;
|
|
17
|
-
export declare function useAuthorization({
|
|
18
|
-
|
|
15
|
+
export declare function useAuthorization({ chain, identity }: {
|
|
16
|
+
chain: Chain;
|
|
19
17
|
identity: AppIdentity;
|
|
20
18
|
}): {
|
|
21
19
|
accounts: Readonly<{
|
|
22
20
|
address: Base64EncodedAddress;
|
|
23
|
-
displayAddress?: string;
|
|
24
21
|
icon?: WalletIcon;
|
|
25
22
|
label?: string;
|
|
26
23
|
publicKey: PublicKey;
|
|
27
24
|
}>[] | null;
|
|
28
25
|
authorizeSession: (wallet: AuthorizeAPI) => Promise<Readonly<{
|
|
29
26
|
address: Base64EncodedAddress;
|
|
30
|
-
displayAddress?: string;
|
|
31
27
|
icon?: WalletIcon;
|
|
32
28
|
label?: string;
|
|
33
29
|
publicKey: PublicKey;
|
|
34
30
|
}>>;
|
|
35
31
|
authorizeSessionWithSignIn: (wallet: AuthorizeAPI, signInPayload: SignInPayload) => Promise<Readonly<{
|
|
36
32
|
address: Base64EncodedAddress;
|
|
37
|
-
displayAddress?: string;
|
|
38
33
|
icon?: WalletIcon;
|
|
39
34
|
label?: string;
|
|
40
35
|
publicKey: PublicKey;
|
|
@@ -44,7 +39,6 @@ export declare function useAuthorization({ clusterId, identity }: {
|
|
|
44
39
|
isLoading: boolean;
|
|
45
40
|
selectedAccount: Readonly<{
|
|
46
41
|
address: Base64EncodedAddress;
|
|
47
|
-
displayAddress?: string;
|
|
48
42
|
icon?: WalletIcon;
|
|
49
43
|
label?: string;
|
|
50
44
|
publicKey: PublicKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-authorization.d.ts","sourceRoot":"","sources":["../../src/use-authorization.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-authorization.d.ts","sourceRoot":"","sources":["../../src/use-authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACH,WAAW,EAEX,YAAY,EACZ,SAAS,EACT,oBAAoB,EACpB,KAAK,EACL,cAAc,EACd,aAAa,EAChB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAQnD,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC;IAC3B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACvC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;CAC5B,CAAC,CAAC;AAEH,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE;;iBAZhF,oBAAoB;eACtB,UAAU;gBACT,MAAM;mBACH,SAAS;;+BA2BD,YAAY;iBA9BtB,oBAAoB;eACtB,UAAU;gBACT,MAAM;mBACH,SAAS;;yCAuCD,YAAY,iBAAiB,aAAa;iBA1CpD,oBAAoB;eACtB,UAAU;gBACT,MAAM;mBACH,SAAS;;iCAoDD,cAAc;;;;iBAvDxB,oBAAoB;eACtB,UAAU;gBACT,MAAM;mBACH,SAAS;;EAuFvB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function useFetchAuthorization(): import("@tanstack/react-query").UseQueryResult<Readonly<{
|
|
2
|
+
accounts: import("./use-authorization").Account[];
|
|
3
|
+
authToken: import("@solana-mobile/mobile-wallet-adapter-protocol").AuthToken;
|
|
4
|
+
selectedAccount: import("./use-authorization").Account;
|
|
5
|
+
}> | null, Error>;
|
|
6
|
+
//# sourceMappingURL=use-fetch-authorization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-fetch-authorization.d.ts","sourceRoot":"","sources":["../../src/use-fetch-authorization.ts"],"names":[],"mappings":"AAeA,wBAAgB,qBAAqB;;;;kBAWpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-invalidate-authorizations.d.ts","sourceRoot":"","sources":["../../src/use-invalidate-authorizations.ts"],"names":[],"mappings":"AAEA,wBAAgB,2BAA2B,wBAI1C"}
|
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
import { Transaction, TransactionSignature, VersionedTransaction } from '@solana/web3.js';
|
|
2
|
-
import {
|
|
3
|
-
import { SolanaClusterId } from '@wallet-ui/core';
|
|
2
|
+
import { AuthorizeAPI, SignInPayload } from '@solana-mobile/mobile-wallet-adapter-protocol';
|
|
4
3
|
import { Account } from './use-authorization';
|
|
5
|
-
export declare function useMobileWallet(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
export declare function useMobileWallet(): {
|
|
5
|
+
account: Readonly<{
|
|
6
|
+
address: import("@solana-mobile/mobile-wallet-adapter-protocol").Base64EncodedAddress;
|
|
7
|
+
icon?: import("@wallet-standard/core").WalletIcon;
|
|
8
|
+
label?: string;
|
|
9
|
+
publicKey: import("@solana/web3.js").PublicKey;
|
|
10
|
+
}> | null;
|
|
9
11
|
connect: () => Promise<Account>;
|
|
10
12
|
connectAnd: (cb: (wallet: AuthorizeAPI) => Promise<Account | void>) => Promise<Account | void>;
|
|
11
13
|
disconnect: () => Promise<void>;
|
|
12
14
|
signAndSendTransaction: (transaction: Transaction | VersionedTransaction, minContextSlot: number) => Promise<TransactionSignature>;
|
|
13
15
|
signIn: (signInPayload: SignInPayload) => Promise<Account>;
|
|
14
16
|
signMessage: (message: Uint8Array) => Promise<Uint8Array>;
|
|
17
|
+
accounts: Readonly<{
|
|
18
|
+
address: import("@solana-mobile/mobile-wallet-adapter-protocol").Base64EncodedAddress;
|
|
19
|
+
icon?: import("@wallet-standard/core").WalletIcon;
|
|
20
|
+
label?: string;
|
|
21
|
+
publicKey: import("@solana/web3.js").PublicKey;
|
|
22
|
+
}>[] | null;
|
|
23
|
+
deauthorizeSession: (wallet: import("@solana-mobile/mobile-wallet-adapter-protocol").DeauthorizeAPI) => Promise<void>;
|
|
24
|
+
isLoading: boolean;
|
|
25
|
+
chain: import("@solana-mobile/mobile-wallet-adapter-protocol").Chain;
|
|
26
|
+
connection: import("@solana/web3.js").Connection;
|
|
27
|
+
identity: import("@solana-mobile/mobile-wallet-adapter-protocol").AppIdentity;
|
|
15
28
|
};
|
|
16
29
|
//# sourceMappingURL=use-mobile-wallet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-mobile-wallet.d.ts","sourceRoot":"","sources":["../../src/use-mobile-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"use-mobile-wallet.d.ts","sourceRoot":"","sources":["../../src/use-mobile-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAK5F,OAAO,EAAE,OAAO,EAAoB,MAAM,qBAAqB,CAAC;AAEhE,wBAAgB,eAAe;;;;;;;mBAMb,OAAO,CAAC,OAAO,CAAC;qBAKf,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;sBAYjD,OAAO,CAAC,IAAI,CAAC;0CAIjC,WAAW,GAAG,oBAAoB,kBAC/B,MAAM,KACvB,OAAO,CAAC,oBAAoB,CAAC;4BAXV,aAAa,KAAG,OAAO,CAAC,OAAO,CAAC;2BAwBtC,UAAU,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;;;;EAoCvD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function usePersistAuthorization(): import("@tanstack/react-query").UseMutationResult<void, Error, Readonly<{
|
|
2
|
+
accounts: import("./use-authorization").Account[];
|
|
3
|
+
authToken: import("@solana-mobile/mobile-wallet-adapter-protocol").AuthToken;
|
|
4
|
+
selectedAccount: import("./use-authorization").Account;
|
|
5
|
+
}> | null, unknown>;
|
|
6
|
+
//# sourceMappingURL=use-persist-authorization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-persist-authorization.d.ts","sourceRoot":"","sources":["../../src/use-persist-authorization.ts"],"names":[],"mappings":"AAMA,wBAAgB,uBAAuB;;;;oBAUtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-query-config.d.ts","sourceRoot":"","sources":["../../src/use-query-config.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc;;;;EAM7B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wallet-ui/react-native-web3js",
|
|
3
|
-
"version": "2.2.0-canary-
|
|
3
|
+
"version": "2.2.0-canary-20251206072155",
|
|
4
4
|
"description": "React components for Wallet UI",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"@wallet-standard/core": "1.1.1",
|
|
68
68
|
"@wallet-standard/react": "1.0.1",
|
|
69
69
|
"js-base64": "^3.7.8",
|
|
70
|
-
"@wallet-ui/core": "2.2.0-canary-
|
|
70
|
+
"@wallet-ui/core": "2.2.0-canary-20251206072155"
|
|
71
71
|
},
|
|
72
72
|
"peerDependencies": {
|
|
73
73
|
"@solana/signers": "2.3.0",
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Connection } from '@solana/web3.js';
|
|
2
|
-
import { AppIdentity } from '@solana-mobile/mobile-wallet-adapter-protocol';
|
|
3
|
-
import { SolanaClusterId } from '@wallet-ui/core/src';
|
|
4
|
-
import React, { type ReactNode } from 'react';
|
|
5
|
-
export interface MobileWalletAdapterProviderProps {
|
|
6
|
-
children: ReactNode;
|
|
7
|
-
clusterId: SolanaClusterId;
|
|
8
|
-
endpoint: string;
|
|
9
|
-
identity: AppIdentity;
|
|
10
|
-
}
|
|
11
|
-
export interface MobileWalletAdapterProviderState {
|
|
12
|
-
clusterId: SolanaClusterId;
|
|
13
|
-
connection: Connection;
|
|
14
|
-
identity: AppIdentity;
|
|
15
|
-
}
|
|
16
|
-
export declare const MobileWalletAdapterProviderContext: React.Context<MobileWalletAdapterProviderState>;
|
|
17
|
-
export declare function MobileWalletAdapterProvider({ children, clusterId, endpoint, identity, }: MobileWalletAdapterProviderProps): React.JSX.Element;
|
|
18
|
-
//# sourceMappingURL=mobile-wallet-adapter-provider.d.ts.map
|