Skip to content

Commit

Permalink
add change network mobile solana and refactor base change network (#214)
Browse files Browse the repository at this point in the history
* add change network mobile solana and refactor base change network

* fix

* add tests
  • Loading branch information
LukassF authored Oct 4, 2024
1 parent bb684e1 commit 87d5823
Show file tree
Hide file tree
Showing 28 changed files with 288 additions and 92 deletions.
8 changes: 4 additions & 4 deletions sdk/apps/modal-example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
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": {
".": {
Expand Down Expand Up @@ -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
Expand Up @@ -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: {
Expand Down
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,
Expand Down Expand Up @@ -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)
})
Expand Down Expand Up @@ -162,7 +167,7 @@ export class ClientAptos extends EventEmitter<ClientAptosEvents> {
}
await this.baseClient.resolveChangeNetwork({
requestId,
newNetwork,
newNetwork: { ...newNetwork, id: newNetwork.chainId.toString() },
sessionId: sessionIdToUse
})
}
Expand Down
4 changes: 4 additions & 0 deletions sdk/packages/aptos/src/http-client.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Up @@ -77,7 +77,7 @@ export class HttpClientAptos {
}: ResolveChangeNetwork) => {
await this.baseClient.resolveChangeNetwork({
requestId,
newNetwork,
newNetwork: { ...newNetwork, id: newNetwork.chainId.toString() },
sessionId: sessionId ?? ''
})
}
Expand Down
12 changes: 9 additions & 3 deletions sdk/packages/aptos/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {
AccountAuthenticator,
AnyRawTransaction,
Deserializer,
Network,
PendingTransactionResponse,
RawTransaction,
Serializer
Expand All @@ -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
Expand Down Expand Up @@ -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
}
Expand Down
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": {
".": {
Expand Down
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'
Expand All @@ -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 {
Expand Down Expand Up @@ -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
Expand Down
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'

Expand Down Expand Up @@ -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,
Expand All @@ -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' }]
Expand Down
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'
Expand All @@ -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,
Expand All @@ -37,7 +42,7 @@ export interface SignMessagesEvent {
export interface ChangeNetworkEvent {
responseId: string
sessionId: string
newNetwork: AptosChangeNetworkInput
newNetwork: NetworkToChange
}
export interface CustomEvent {
responseId: string
Expand Down Expand Up @@ -301,7 +306,7 @@ export interface ResolveSignTransactions {
}
export interface ResolveChangeNetwork {
requestId: string
newNetwork: AptosChangeNetworkInput
newNetwork: NetworkToChange
sessionId: string
}

Expand Down
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',
Expand All @@ -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[]
Expand All @@ -22,7 +25,7 @@ export interface TransactionToSign {

export interface ChangeNetworkContent {
type: ContentType.ChangeNetwork
newNetwork: AptosChangeNetworkInput
newNetwork: NetworkToChange
}
export interface SignTransactionsContent {
type: ContentType.SignTransactions
Expand Down
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'
Expand Down Expand Up @@ -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)
Expand All @@ -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 {
Expand Down
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'
Expand All @@ -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,
Expand Down Expand Up @@ -233,7 +232,7 @@ export interface HttpResolveSignMessages {
}
export interface HttpResolveChangeNetwork {
requestId: string
newNetwork: AptosChangeNetworkInput
newNetwork: NetworkToChange
sessionId: string
clientId?: string
}
Expand Down
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',
Expand Down Expand Up @@ -26,7 +26,7 @@ export interface SignTransactionsResponseContent {
}
export interface ChangeNetworkResponseContent {
type: ResponseContentType.ChangedNetwork
newNetwork: AptosChangeNetworkInput
newNetwork: NetworkToChange
}
export interface RejectResponseContent {
type: ResponseContentType.Reject
Expand Down
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": {
Expand All @@ -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"
},
Expand Down
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": {
Expand All @@ -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"
Expand Down
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": {
Expand All @@ -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",
Expand Down
Loading

0 comments on commit 87d5823

Please sign in to comment.