@airgap/beacon-dapp
Advanced tools
Comparing version 2.5.0-beta.4 to 3.0.0-beta.0
@@ -68,4 +68,4 @@ "use strict"; | ||
_a[beacon_types_1.NetworkType.HANGZHOUNET] = 'https://hangzhounet.tezblock.io', | ||
_a[beacon_types_1.NetworkType.IDIAZABALNET] = 'https://idiazabalnet.tezblock.io', | ||
_a[beacon_types_1.NetworkType.CUSTOM] = 'https://granadanet.tezblock.io', | ||
_a[beacon_types_1.NetworkType.ITHACANET] = 'https://ithacanet.tezblock.io', | ||
_a[beacon_types_1.NetworkType.CUSTOM] = 'https://ithacanet.tezblock.io', | ||
_a); } | ||
@@ -72,0 +72,0 @@ var _this = _super.call(this, rpcUrls) || this; |
@@ -21,3 +21,3 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
import { PostMessageTransport } from '@airgap/beacon-transport-postmessage'; | ||
import { getColorMode, setColorMode } from '@airgap/beacon-ui'; | ||
import { getColorMode, setColorMode, setDesktopList, setExtensionList, setWebList, setiOSList, getDesktopList, getExtensionList, getWebList, getiOSList } from '@airgap/beacon-ui'; | ||
const logger = new Logger('DAppClient'); | ||
@@ -75,53 +75,107 @@ /** | ||
logger.log('handleResponse', 'Received message', message, connectionInfo); | ||
if ((openRequest && message.type === BeaconMessageType.Acknowledge) || | ||
message.message.type === BeaconMessageType.Acknowledge // TODO: TYPE | ||
) { | ||
logger.log(`acknowledge message received for ${message.id}`); | ||
console.timeLog(message.id, 'acknowledge'); | ||
this.events | ||
.emit(BeaconEvent.ACKNOWLEDGE_RECEIVED, { | ||
message: (_e = message.message) !== null && _e !== void 0 ? _e : message, | ||
extraInfo: {}, | ||
walletInfo: yield this.getWalletInfo() | ||
}) | ||
.catch(console.error); | ||
} | ||
else if (openRequest) { | ||
if (message.type === BeaconMessageType.PermissionResponse && message.appMetadata) { | ||
yield this.appMetadataManager.addAppMetadata(message.appMetadata); | ||
if (message.version === '3') { | ||
const typedMessage = message; | ||
if (openRequest && typedMessage.message.type === BeaconMessageType.Acknowledge) { | ||
logger.log(`acknowledge message received for ${message.id}`); | ||
console.timeLog(message.id, 'acknowledge'); | ||
this.events | ||
.emit(BeaconEvent.ACKNOWLEDGE_RECEIVED, { | ||
message: typedMessage.message, | ||
extraInfo: {}, | ||
walletInfo: yield this.getWalletInfo() | ||
}) | ||
.catch(console.error); | ||
} | ||
console.timeLog(message.id, 'response'); | ||
console.timeEnd(message.id); | ||
if (message.type === BeaconMessageType.Error || message.errorType) { | ||
// TODO: Remove "any" once we remove support for v1 wallets | ||
openRequest.reject(message); | ||
else if (openRequest) { | ||
const appMetadata = typedMessage.message /* Why is this unkown cast needed? */.blockchainData.appMetadata; | ||
if (typedMessage.message.type === BeaconMessageType.PermissionResponse && appMetadata) { | ||
yield this.appMetadataManager.addAppMetadata(appMetadata); | ||
} | ||
console.timeLog(typedMessage.id, 'response'); | ||
console.timeEnd(typedMessage.id); | ||
if (typedMessage.message.type === BeaconMessageType.Error) { | ||
openRequest.reject(typedMessage.message); | ||
} | ||
else { | ||
openRequest.resolve({ message, connectionInfo }); | ||
} | ||
this.openRequests.delete(typedMessage.id); | ||
} | ||
else { | ||
openRequest.resolve({ message, connectionInfo }); | ||
if (typedMessage.message.type === BeaconMessageType.Disconnect) { | ||
const relevantTransport = connectionInfo.origin === Origin.P2P | ||
? this.p2pTransport | ||
: (_e = this.postMessageTransport) !== null && _e !== void 0 ? _e : (yield this.transport); | ||
if (relevantTransport) { | ||
// TODO: Handle removing it from the right transport (if it was received from the non-active transport) | ||
const peers = yield relevantTransport.getPeers(); | ||
const peer = peers.find((peerEl) => peerEl.senderId === message.senderId); | ||
if (peer) { | ||
yield relevantTransport.removePeer(peer); | ||
yield this.removeAccountsForPeers([peer]); | ||
yield this.events.emit(BeaconEvent.CHANNEL_CLOSED); | ||
} | ||
else { | ||
logger.error('handleDisconnect', 'cannot find peer for sender ID', message.senderId); | ||
} | ||
} | ||
} | ||
else { | ||
logger.error('handleResponse', 'no request found for id ', message.id); | ||
} | ||
} | ||
this.openRequests.delete(message.id); | ||
} | ||
else { | ||
if (message.type === BeaconMessageType.Disconnect || | ||
message.message.type === BeaconMessageType.Disconnect // TODO: TYPE | ||
) { | ||
const relevantTransport = connectionInfo.origin === Origin.P2P | ||
? this.p2pTransport | ||
: (_f = this.postMessageTransport) !== null && _f !== void 0 ? _f : (yield this.transport); | ||
if (relevantTransport) { | ||
// TODO: Handle removing it from the right transport (if it was received from the non-active transport) | ||
const peers = yield relevantTransport.getPeers(); | ||
const peer = peers.find((peerEl) => peerEl.senderId === message.senderId); | ||
if (peer) { | ||
yield relevantTransport.removePeer(peer); | ||
yield this.removeAccountsForPeers([peer]); | ||
yield this.events.emit(BeaconEvent.CHANNEL_CLOSED); | ||
} | ||
else { | ||
logger.error('handleDisconnect', 'cannot find peer for sender ID', message.senderId); | ||
} | ||
const typedMessage = message; | ||
if (openRequest && typedMessage.type === BeaconMessageType.Acknowledge) { | ||
logger.log(`acknowledge message received for ${message.id}`); | ||
console.timeLog(message.id, 'acknowledge'); | ||
this.events | ||
.emit(BeaconEvent.ACKNOWLEDGE_RECEIVED, { | ||
message: typedMessage, | ||
extraInfo: {}, | ||
walletInfo: yield this.getWalletInfo() | ||
}) | ||
.catch(console.error); | ||
} | ||
else if (openRequest) { | ||
if (typedMessage.type === BeaconMessageType.PermissionResponse && | ||
typedMessage.appMetadata) { | ||
yield this.appMetadataManager.addAppMetadata(typedMessage.appMetadata); | ||
} | ||
console.timeLog(typedMessage.id, 'response'); | ||
console.timeEnd(typedMessage.id); | ||
if (typedMessage.type === BeaconMessageType.Error || message.errorType) { | ||
// TODO: Remove "any" once we remove support for v1 wallets | ||
openRequest.reject(typedMessage); | ||
} | ||
else { | ||
openRequest.resolve({ message, connectionInfo }); | ||
} | ||
this.openRequests.delete(typedMessage.id); | ||
} | ||
else { | ||
logger.error('handleResponse', 'no request found for id ', message.id); | ||
if (typedMessage.type === BeaconMessageType.Disconnect || | ||
message.typedMessage.type === BeaconMessageType.Disconnect // TODO: TYPE | ||
) { | ||
const relevantTransport = connectionInfo.origin === Origin.P2P | ||
? this.p2pTransport | ||
: (_f = this.postMessageTransport) !== null && _f !== void 0 ? _f : (yield this.transport); | ||
if (relevantTransport) { | ||
// TODO: Handle removing it from the right transport (if it was received from the non-active transport) | ||
const peers = yield relevantTransport.getPeers(); | ||
const peer = peers.find((peerEl) => peerEl.senderId === message.senderId); | ||
if (peer) { | ||
yield relevantTransport.removePeer(peer); | ||
yield this.removeAccountsForPeers([peer]); | ||
yield this.events.emit(BeaconEvent.CHANNEL_CLOSED); | ||
} | ||
else { | ||
logger.error('handleDisconnect', 'cannot find peer for sender ID', message.senderId); | ||
} | ||
} | ||
} | ||
else { | ||
logger.error('handleResponse', 'no request found for id ', message.id); | ||
} | ||
} | ||
@@ -439,2 +493,8 @@ } | ||
this.blockchains.set(chain.identifier, chain); | ||
chain.getWalletLists().then((walletLists) => { | ||
setDesktopList(walletLists.desktopList); | ||
setExtensionList(walletLists.extensionList); | ||
setWebList(walletLists.webList); | ||
setiOSList(walletLists.iOSList); | ||
}); | ||
} | ||
@@ -876,2 +936,3 @@ removeBlockchain(chainIdentifier) { | ||
getWalletInfo(peer, account) { | ||
var _a, _b; | ||
return __awaiter(this, void 0, void 0, function* () { | ||
@@ -891,40 +952,42 @@ const selectedAccount = account ? account : yield this.getActiveAccount(); | ||
} | ||
// const lowerCaseCompare = (str1?: string, str2?: string): boolean => { | ||
// if (str1 && str2) { | ||
// return str1.toLowerCase() === str2.toLowerCase() | ||
// } | ||
// return false | ||
// } | ||
// let selectedApp: WebApp | App | DesktopApp | ExtensionApp | undefined | ||
// let type: 'extension' | 'mobile' | 'web' | 'desktop' | undefined | ||
// // TODO: Remove once all wallets send the icon? | ||
// if (iOSList.find((app) => lowerCaseCompare(app.name, walletInfo?.name))) { | ||
// selectedApp = iOSList.find((app) => lowerCaseCompare(app.name, walletInfo?.name)) | ||
// type = 'mobile' | ||
// } else if (webList.find((app) => lowerCaseCompare(app.name, walletInfo?.name))) { | ||
// selectedApp = webList.find((app) => lowerCaseCompare(app.name, walletInfo?.name)) | ||
// type = 'web' | ||
// } else if (desktopList.find((app) => lowerCaseCompare(app.name, walletInfo?.name))) { | ||
// selectedApp = desktopList.find((app) => lowerCaseCompare(app.name, walletInfo?.name)) | ||
// type = 'desktop' | ||
// } else if (extensionList.find((app) => lowerCaseCompare(app.name, walletInfo?.name))) { | ||
// selectedApp = extensionList.find((app) => lowerCaseCompare(app.name, walletInfo?.name)) | ||
// type = 'extension' | ||
// } | ||
// if (selectedApp) { | ||
// let deeplink: string | undefined | ||
// if (selectedApp.hasOwnProperty('links')) { | ||
// deeplink = (selectedApp as WebApp).links[ | ||
// selectedAccount?.network.type ?? this.preferredNetwork | ||
// ] | ||
// } else if (selectedApp.hasOwnProperty('deepLink')) { | ||
// deeplink = (selectedApp as App).deepLink | ||
// } | ||
// return { | ||
// name: walletInfo.name, | ||
// icon: walletInfo.icon ?? selectedApp.logo, | ||
// deeplink, | ||
// type | ||
// } | ||
// } | ||
const lowerCaseCompare = (str1, str2) => { | ||
if (str1 && str2) { | ||
return str1.toLowerCase() === str2.toLowerCase(); | ||
} | ||
return false; | ||
}; | ||
let selectedApp; | ||
let type; | ||
// TODO: Remove once all wallets send the icon? | ||
if (getiOSList().find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name))) { | ||
selectedApp = getiOSList().find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name)); | ||
type = 'mobile'; | ||
} | ||
else if (getWebList().find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name))) { | ||
selectedApp = getWebList().find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name)); | ||
type = 'web'; | ||
} | ||
else if (getDesktopList().find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name))) { | ||
selectedApp = getDesktopList().find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name)); | ||
type = 'desktop'; | ||
} | ||
else if (getExtensionList().find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name))) { | ||
selectedApp = getExtensionList().find((app) => lowerCaseCompare(app.name, walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name)); | ||
type = 'extension'; | ||
} | ||
if (selectedApp) { | ||
let deeplink; | ||
if (selectedApp.hasOwnProperty('links')) { | ||
deeplink = selectedApp.links[(_a = selectedAccount === null || selectedAccount === void 0 ? void 0 : selectedAccount.network.type) !== null && _a !== void 0 ? _a : this.preferredNetwork]; | ||
} | ||
else if (selectedApp.hasOwnProperty('deepLink')) { | ||
deeplink = selectedApp.deepLink; | ||
} | ||
return { | ||
name: walletInfo.name, | ||
icon: (_b = walletInfo.icon) !== null && _b !== void 0 ? _b : selectedApp.logo, | ||
deeplink, | ||
type | ||
}; | ||
} | ||
return walletInfo; | ||
@@ -931,0 +994,0 @@ }); |
@@ -20,4 +20,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
[NetworkType.HANGZHOUNET]: 'https://hangzhounet.tezblock.io', | ||
[NetworkType.IDIAZABALNET]: 'https://idiazabalnet.tezblock.io', | ||
[NetworkType.CUSTOM]: 'https://granadanet.tezblock.io' | ||
[NetworkType.ITHACANET]: 'https://ithacanet.tezblock.io', | ||
[NetworkType.CUSTOM]: 'https://ithacanet.tezblock.io' | ||
}) { | ||
@@ -24,0 +24,0 @@ super(rpcUrls); |
{ | ||
"name": "@airgap/beacon-dapp", | ||
"version": "2.5.0-beta.4", | ||
"version": "3.0.0-beta.0", | ||
"description": "> TODO: description", | ||
@@ -38,9 +38,9 @@ "author": "Andreas Gassmann <a.gassmann@papers.ch>", | ||
"dependencies": { | ||
"@airgap/beacon-core": "^2.5.0-beta.4", | ||
"@airgap/beacon-transport-matrix": "^2.5.0-beta.4", | ||
"@airgap/beacon-transport-postmessage": "^2.5.0-beta.4", | ||
"@airgap/beacon-ui": "^2.5.0-beta.4", | ||
"@airgap/beacon-core": "^3.0.0-beta.0", | ||
"@airgap/beacon-transport-matrix": "^3.0.0-beta.0", | ||
"@airgap/beacon-transport-postmessage": "^3.0.0-beta.0", | ||
"@airgap/beacon-ui": "^3.0.0-beta.0", | ||
"qrcode-generator": "1.4.4" | ||
}, | ||
"gitHead": "90acde43c43ea6bab8ea06ff7b282124b35585c9" | ||
"gitHead": "ffcd36eac1b9d227c31820d2d1ebdc53eedcee9e" | ||
} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
2032397
12401
+ Added@airgap/beacon-core@3.3.4(transitive)
+ Added@airgap/beacon-transport-matrix@3.3.4(transitive)
+ Added@airgap/beacon-transport-postmessage@3.3.4(transitive)
+ Added@airgap/beacon-types@3.3.4(transitive)
+ Added@airgap/beacon-ui@3.3.4(transitive)
+ Added@airgap/beacon-utils@3.3.4(transitive)
+ Added@stablelib/binary@1.0.1(transitive)
+ Added@stablelib/blake2b@1.0.1(transitive)
+ Added@stablelib/bytes@1.0.1(transitive)
+ Added@stablelib/constant-time@1.0.1(transitive)
+ Added@stablelib/ed25519@1.0.3(transitive)
+ Added@stablelib/hash@1.0.1(transitive)
+ Added@stablelib/int@1.0.1(transitive)
+ Added@stablelib/keyagreement@1.0.1(transitive)
+ Added@stablelib/nacl@1.0.4(transitive)
+ Added@stablelib/poly1305@1.0.1(transitive)
+ Added@stablelib/random@1.0.2(transitive)
+ Added@stablelib/salsa20@1.0.2(transitive)
+ Added@stablelib/sha512@1.0.1(transitive)
+ Added@stablelib/utf8@1.0.2(transitive)
+ Added@stablelib/wipe@1.0.1(transitive)
+ Added@stablelib/x25519@1.0.3(transitive)
+ Added@stablelib/x25519-session@1.0.4(transitive)
+ Added@stablelib/xsalsa20@1.0.2(transitive)
- Removed@airgap/beacon-core@2.5.0-beta.4(transitive)
- Removed@airgap/beacon-transport-matrix@2.5.0-beta.4(transitive)
- Removed@airgap/beacon-transport-postmessage@2.5.0-beta.4(transitive)
- Removed@airgap/beacon-types@2.5.0-beta.4(transitive)
- Removed@airgap/beacon-ui@2.5.0-beta.4(transitive)
- Removed@airgap/beacon-utils@2.5.0-beta.4(transitive)
- Removed@types/libsodium-wrappers@0.7.9(transitive)
- Removedlibsodium@0.7.15(transitive)
- Removedlibsodium-wrappers@0.7.9(transitive)