Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add change network mobile solana and refactor base change network #214

Merged
merged 3 commits into from
Oct 4, 2024
Merged
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
8 changes: 4 additions & 4 deletions sdk/apps/modal-example/package.json
Original file line number Diff line number Diff line change
@@ -20,12 +20,12 @@
"@aptos-labs/wallet-standard": "^0.0.11",
"@mysten/sui": "1.4.0",
"@nightlylabs/nightly-connect-polkadot": "0.0.16",
"@nightlylabs/nightly-connect-solana": "0.0.29",
"@nightlylabs/nightly-connect-solana": "0.0.3",
"@nightlylabs/nightly-connect-sui": "0.1.0",
"@nightlylabs/wallet-selector-aptos": "0.1.11",
"@nightlylabs/wallet-selector-base": "^0.4.2",
"@nightlylabs/wallet-selector-aptos": "^0.1.12",
"@nightlylabs/wallet-selector-base": "^0.4.3",
"@nightlylabs/wallet-selector-polkadot": "0.2.7",
"@nightlylabs/wallet-selector-solana": "0.3.7",
"@nightlylabs/wallet-selector-solana": "0.3.8",
"@nightlylabs/wallet-selector-sui": "0.4.0",
"@polkadot/api": "^10.10.1",
"@polkadot/extension-inject": "^0.46.5",
4 changes: 2 additions & 2 deletions sdk/packages/aptos/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@nightlylabs/nightly-connect-aptos",
"version": "0.0.4",
"version": "0.0.5",
"type": "module",
"exports": {
".": {
@@ -45,7 +45,7 @@
"dependencies": {
"@aptos-labs/ts-sdk": "^1.9.1",
"@aptos-labs/wallet-standard": "^0.0.11",
"@nightlylabs/nightly-connect-base": "^0.0.29",
"@nightlylabs/nightly-connect-base": "^0.0.3",
"eventemitter3": "^5.0.1"
}
}
5 changes: 4 additions & 1 deletion sdk/packages/aptos/src/app.ts
Original file line number Diff line number Diff line change
@@ -153,7 +153,10 @@ export class AppAptos extends EventEmitter<AptosAppEvents> {
}

changeNetwork: AptosChangeNetworkMethod = async (input) => {
const changedNetworkSuccess = await this.base.changeNetwork(input)
const changedNetworkSuccess = await this.base.changeNetwork({
...input,
id: input.chainId.toString()
})
return {
status: UserResponseStatus.APPROVED,
args: {
11 changes: 8 additions & 3 deletions sdk/packages/aptos/src/client.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { AnyRawTransaction } from '@aptos-labs/ts-sdk'
import { AnyRawTransaction, Network } from '@aptos-labs/ts-sdk'
import {
AccountInfo,
AptosChangeNetworkInput,
@@ -90,10 +90,15 @@ export class ClientAptos extends EventEmitter<ClientAptosEvents> {
this.emit('signMessage', event)
})
baseClient.on('changeNetwork', (e) => {
const newNetwork: AptosChangeNetworkInput = {
name: e.newNetwork.name! as Network,
url: e.newNetwork.url,
chainId: +e.newNetwork.id
}
const event: ChangeNetworkEvent = {
sessionId: e.sessionId,
requestId: e.responseId,
newNetwork: e.newNetwork
newNetwork: newNetwork
}
this.emit('changeNetwork', event)
})
@@ -162,7 +167,7 @@ export class ClientAptos extends EventEmitter<ClientAptosEvents> {
}
await this.baseClient.resolveChangeNetwork({
requestId,
newNetwork,
newNetwork: { ...newNetwork, id: newNetwork.chainId.toString() },
sessionId: sessionIdToUse
})
}
4 changes: 4 additions & 0 deletions sdk/packages/aptos/src/http-client.test.ts
Original file line number Diff line number Diff line change
@@ -214,5 +214,9 @@ describe('Aptos http-client tests', () => {
sessionId: app.sessionId,
newNetwork: payload
})

await smartDelay()
const isSuccess = (await _changedNetwork).status === UserResponseStatus.APPROVED
assert(isSuccess)
})
})
2 changes: 1 addition & 1 deletion sdk/packages/aptos/src/http-client.ts
Original file line number Diff line number Diff line change
@@ -77,7 +77,7 @@ export class HttpClientAptos {
}: ResolveChangeNetwork) => {
await this.baseClient.resolveChangeNetwork({
requestId,
newNetwork,
newNetwork: { ...newNetwork, id: newNetwork.chainId.toString() },
sessionId: sessionId ?? ''
})
}
12 changes: 9 additions & 3 deletions sdk/packages/aptos/src/utils.ts
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@ import {
AccountAuthenticator,
AnyRawTransaction,
Deserializer,
Network,
PendingTransactionResponse,
RawTransaction,
Serializer
@@ -11,6 +12,7 @@ import { AccountInfo, NetworkInfo } from '@aptos-labs/wallet-standard'
import { ContentType, RequestContent } from '@nightlylabs/nightly-connect-base'
import {
AptosRequest,
ChangeNetworkAptosRequest,
CustomAptosRequest,
SignMessagesAptosRequest,
SignTransactionsAptosRequest
@@ -199,9 +201,13 @@ export const parseRequest = (request: RequestContent, sessionId: string): AptosR
return customRequest
}
case ContentType.ChangeNetwork: {
const changeNetworkRequest: CustomAptosRequest = {
type: ContentType.Custom,
content: JSON.stringify(request.content),
const changeNetworkRequest: ChangeNetworkAptosRequest = {
type: ContentType.ChangeNetwork,
newNetwork: {
chainId: +request.content.newNetwork.id,
name: request.content.newNetwork.name as Network,
url: request.content.newNetwork.url
},
requestId: request.requestId,
sessionId: sessionId
}
2 changes: 1 addition & 1 deletion sdk/packages/base/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@nightlylabs/nightly-connect-base",
"version": "0.0.29",
"version": "0.0.3",
"type": "module",
"exports": {
".": {
11 changes: 8 additions & 3 deletions sdk/packages/base/src/app.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { AptosChangeNetworkInput } from '@aptos-labs/wallet-standard'
import { EventEmitter } from 'eventemitter3'
import WebSocket from 'isomorphic-ws'
import { AppToServer } from '../../../bindings/AppToServer'
@@ -9,7 +8,13 @@ import { ServerToApp } from '../../../bindings/ServerToApp'
import { UserConnectedEvent } from '../../../bindings/UserConnectedEvent'
import { UserDisconnectedEvent } from '../../../bindings/UserDisconnectedEvent'
import { WalletMetadata } from '../../../bindings/WalletMetadata'
import { ContentType, MessageToSign, RequestInternal, TransactionToSign } from './content'
import {
ContentType,
MessageToSign,
NetworkToChange,
RequestInternal,
TransactionToSign
} from './content'
import { triggerDeeplink } from './deeplinks'
import { AppBaseInitialize } from './initializeTypes'
import {
@@ -228,7 +233,7 @@ export class BaseApp extends EventEmitter<BaseEvents> {
return response.messages
}

changeNetwork = async (newNetwork: AptosChangeNetworkInput) => {
changeNetwork = async (newNetwork: NetworkToChange) => {
const response = (await this.sendRequest({
type: ContentType.ChangeNetwork,
newNetwork: newNetwork
11 changes: 5 additions & 6 deletions sdk/packages/base/src/client.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { Network } from '@aptos-labs/ts-sdk'
import { AptosChangeNetworkInput } from '@aptos-labs/wallet-standard'
import { assert, beforeAll, beforeEach, describe, expect, test, vi } from 'vitest'
import { smartDelay } from '../../../commonTestUtils'
import { BaseApp } from './app'
import { BaseClient, Connect } from './client'
import { ContentType, MessageToSign, TransactionToSign } from './content'
import { ContentType, MessageToSign, NetworkToChange, TransactionToSign } from './content'
import { SignedMessage, SignedTransaction } from './responseContent'
import { testAppBaseInitialize, testClientBaseInitialize } from './testUtils'

@@ -81,12 +80,12 @@ describe('Base Client tests', () => {
assert(signed.length === 2)
})
test('#on("changeNetwork")', async () => {
const randomNewNetwork: AptosChangeNetworkInput = {
const randomNewNetwork: NetworkToChange = {
name: Network.MAINNET,
chainId: 27
id: '27'
}
client.on('changeNetwork', async (e) => {
assert(e.newNetwork.chainId === 27)
assert(+e.newNetwork.id === 27)
// resolve
await client.resolveChangeNetwork({
sessionId: e.sessionId,
@@ -97,7 +96,7 @@ describe('Base Client tests', () => {
await smartDelay()
const newNetwork = await baseApp.changeNetwork(randomNewNetwork)

assert(newNetwork.newNetwork.chainId === 27)
assert(+newNetwork.newNetwork.id === 27)
})
test('#getPendingRequests', async () => {
const randomSignMessage: MessageToSign[] = [{ message: '1' }, { message: '13' }]
13 changes: 9 additions & 4 deletions sdk/packages/base/src/client.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// import LocalStorage from 'isomorphic-localstorage'
import { AptosChangeNetworkInput } from '@aptos-labs/wallet-standard'
import { EventEmitter } from 'eventemitter3'
import WebSocket from 'isomorphic-ws'
import { AppDisconnectedEvent } from '../../../bindings/AppDisconnectedEvent'
@@ -14,7 +13,13 @@ import { GetPendingRequestsResponse } from '../../../bindings/GetPendingRequests
import { GetSessionsRequest } from '../../../bindings/GetSessionsRequest'
import { GetSessionsResponse } from '../../../bindings/GetSessionsResponse'
import { ServerToClient } from '../../../bindings/ServerToClient'
import { MessageToSign, RequestContent, RequestInternal, TransactionToSign } from './content'
import {
MessageToSign,
NetworkToChange,
RequestContent,
RequestInternal,
TransactionToSign
} from './content'
import { ClientBaseInitialize } from './initializeTypes'
import {
ResponseContent,
@@ -37,7 +42,7 @@ export interface SignMessagesEvent {
export interface ChangeNetworkEvent {
responseId: string
sessionId: string
newNetwork: AptosChangeNetworkInput
newNetwork: NetworkToChange
}
export interface CustomEvent {
responseId: string
@@ -301,7 +306,7 @@ export interface ResolveSignTransactions {
}
export interface ResolveChangeNetwork {
requestId: string
newNetwork: AptosChangeNetworkInput
newNetwork: NetworkToChange
sessionId: string
}

9 changes: 6 additions & 3 deletions sdk/packages/base/src/content.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import { AptosChangeNetworkInput } from '@aptos-labs/wallet-standard'

export enum ContentType {
SignMessages = 'SignMessages',
SignTransactions = 'SignTransactions',
@@ -11,6 +9,11 @@ export interface MessageToSign {
message: string
metadata?: string
}
export interface NetworkToChange {
name?: string
id: string
url?: string
}
export interface SignMessagesContent {
type: ContentType.SignMessages
messages: MessageToSign[]
@@ -22,7 +25,7 @@ export interface TransactionToSign {

export interface ChangeNetworkContent {
type: ContentType.ChangeNetwork
newNetwork: AptosChangeNetworkInput
newNetwork: NetworkToChange
}
export interface SignTransactionsContent {
type: ContentType.SignTransactions
9 changes: 4 additions & 5 deletions sdk/packages/base/src/http-client.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { Network } from '@aptos-labs/ts-sdk'
import { AptosChangeNetworkInput } from '@aptos-labs/wallet-standard'
import { assert, beforeAll, beforeEach, describe, expect, test, vi } from 'vitest'
import { smartDelay, TEST_RELAY_ENDPOINT } from '../../../commonTestUtils'
import { BaseApp } from './app'
import { Connect } from './client'
import { MessageToSign, TransactionToSign } from './content'
import { MessageToSign, NetworkToChange, TransactionToSign } from './content'
import { HttpBaseClient } from './http-client'
import { SignedMessage, SignedTransaction } from './responseContent'
import { testAppBaseInitialize } from './testUtils'
@@ -94,9 +93,9 @@ describe('Http Base Client tests', () => {
assert(signed.length === 2)
})
test('#resolveChangeNetwork()', async () => {
const randomNewNetwork: AptosChangeNetworkInput = {
const randomNewNetwork: NetworkToChange = {
name: Network.MAINNET,
chainId: 27
id: '27'
}
// send change network
const newNetworkResponse = baseApp.changeNetwork(randomNewNetwork)
@@ -111,7 +110,7 @@ describe('Http Base Client tests', () => {

await smartDelay()
const newNetwork = await newNetworkResponse
assert(newNetwork.newNetwork.chainId === 27)
assert(+newNetwork.newNetwork.id === 27)
})
test('#reject()', async () => {
try {
5 changes: 2 additions & 3 deletions sdk/packages/base/src/http-client.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// import LocalStorage from 'isomorphic-localstorage'
import { AptosChangeNetworkInput } from '@aptos-labs/wallet-standard'
import { fetch } from 'cross-fetch'
import { HttpConnectSessionRequest } from '../../../bindings/HttpConnectSessionRequest'
import { HttpConnectSessionResponse } from '../../../bindings/HttpConnectSessionResponse'
@@ -16,7 +15,7 @@ import { HttpGetSessionsRequest } from '../../../bindings/HttpGetSessionsRequest
import { HttpGetSessionsResponse } from '../../../bindings/HttpGetSessionsResponse'
import { HttpResolveRequestRequest } from '../../../bindings/HttpResolveRequestRequest'
import { HttpResolveRequestResponse } from '../../../bindings/HttpResolveRequestResponse'
import { RequestContent } from './content'
import { NetworkToChange, RequestContent } from './content'
import {
CustomResponseContent,
RejectResponseContent,
@@ -233,7 +232,7 @@ export interface HttpResolveSignMessages {
}
export interface HttpResolveChangeNetwork {
requestId: string
newNetwork: AptosChangeNetworkInput
newNetwork: NetworkToChange
sessionId: string
clientId?: string
}
4 changes: 2 additions & 2 deletions sdk/packages/base/src/responseContent.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { AptosChangeNetworkInput } from '@aptos-labs/wallet-standard'
import { NetworkToChange } from './content'

export enum ResponseContentType {
SignMessages = 'SignMessagesResponse',
@@ -26,7 +26,7 @@ export interface SignTransactionsResponseContent {
}
export interface ChangeNetworkResponseContent {
type: ResponseContentType.ChangedNetwork
newNetwork: AptosChangeNetworkInput
newNetwork: NetworkToChange
}
export interface RejectResponseContent {
type: ResponseContentType.Reject
8 changes: 4 additions & 4 deletions sdk/packages/selector-aptos/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@nightlylabs/wallet-selector-aptos",
"version": "0.1.11",
"version": "0.1.12",
"description": "",
"type": "module",
"exports": {
@@ -26,9 +26,9 @@
"dependencies": {
"@aptos-labs/ts-sdk": "^1.9.1",
"@aptos-labs/wallet-standard": "^0.0.11",
"@nightlylabs/nightly-connect-aptos": "0.0.4",
"@nightlylabs/wallet-selector-base": "0.4.2",
"@nightlylabs/nightly-connect-base": "^0.0.29",
"@nightlylabs/nightly-connect-aptos": "0.0.5",
"@nightlylabs/wallet-selector-base": "0.4.3",
"@nightlylabs/nightly-connect-base": "^0.0.3",
"@wallet-standard/core": "^1.0.3",
"eventemitter3": "^5.0.1"
},
4 changes: 2 additions & 2 deletions sdk/packages/selector-base/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@nightlylabs/wallet-selector-base",
"version": "0.4.2",
"version": "0.4.3",
"description": "",
"type": "module",
"exports": {
@@ -24,7 +24,7 @@
"author": "",
"license": "ISC",
"dependencies": {
"@nightlylabs/nightly-connect-base": "0.0.29",
"@nightlylabs/nightly-connect-base": "^0.0.3",
"@nightlylabs/wallet-selector-modal": "0.2.1",
"@wallet-standard/core": "^1.0.3",
"isomorphic-localstorage": "^1.0.2"
6 changes: 3 additions & 3 deletions sdk/packages/selector-solana/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@nightlylabs/wallet-selector-solana",
"version": "0.3.7",
"version": "0.3.8",
"description": "",
"type": "module",
"exports": {
@@ -24,8 +24,8 @@
"author": "",
"license": "ISC",
"dependencies": {
"@nightlylabs/nightly-connect-solana": "^0.0.29",
"@nightlylabs/wallet-selector-base": "^0.4.1",
"@nightlylabs/nightly-connect-solana": "^0.0.3",
"@nightlylabs/wallet-selector-base": "^0.4.3",
"@solana/wallet-adapter-base": "^0.9.22",
"@solana/wallet-standard": "^1.0.2",
"@solana/web3.js": "^1.77.2",
Loading