Skip to content

Commit dc46a1c

Browse files
committed
Merge remote-tracking branch 'origin/master' into release/v2.1
2 parents e9dc1b3 + 05fa0f6 commit dc46a1c

18 files changed

+390
-42
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
99
### Added
1010

1111
- A panel that shows a list of all known smart contracts, allowing quick access to contract metadata
12+
- A panel that shows a list of all known wallets, allowing quick access to balance information
1213

1314
### Changed
1415

package.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"onCommand:neo3-visual-devtracker.neo.walletCreate",
4343
"onCommand:neo3-visual-devtracker.tracker.openContract",
4444
"onCommand:neo3-visual-devtracker.tracker.openTracker",
45+
"onCommand:neo3-visual-devtracker.tracker.openWallet",
4546
"onCustomEditor:neo3-visual-devtracker.express.neo-invoke-json",
4647
"onView:neo3-visual-devtracker.views.blockchains",
4748
"onView:neo3-visual-devtracker.views.quickStart",
@@ -168,6 +169,11 @@
168169
"dark": "resources/dark/open.svg"
169170
}
170171
},
172+
{
173+
"command": "neo3-visual-devtracker.tracker.openWallet",
174+
"title": "Show wallet",
175+
"category": "Neo N3 Visual DevTracker"
176+
},
171177
{
172178
"command": "neo3-visual-devtracker.connect",
173179
"title": "Connect to a Neo N3 blockchain",
@@ -278,7 +284,7 @@
278284
},
279285
{
280286
"command": "neo3-visual-devtracker.neo.walletCreate",
281-
"when": "view == neo3-visual-devtracker.views.blockchains"
287+
"when": "view == neo3-visual-devtracker.views.wallets"
282288
}
283289
]
284290
},
@@ -288,6 +294,10 @@
288294
"id": "neo3-visual-devtracker.views.blockchains",
289295
"name": "Blockchains"
290296
},
297+
{
298+
"id": "neo3-visual-devtracker.views.wallets",
299+
"name": "Wallets"
300+
},
291301
{
292302
"id": "neo3-visual-devtracker.views.contracts",
293303
"name": "Smart contracts"

src/extension/autoComplete.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -180,11 +180,14 @@ export default class AutoComplete {
180180

181181
const wallets = [...this.walletDetector.wallets];
182182
for (const wallet of wallets) {
183-
for (const address of wallet.accounts.map((_) => _.address)) {
184-
newData.addressNames[address] = newData.addressNames[address] || [];
185-
newData.addressNames[address].push(wallet.path);
186-
newData.addressNames[address] = dedupeAndSort(
187-
newData.addressNames[address]
183+
for (const account of wallet.accounts) {
184+
newData.addressNames[account.address] =
185+
newData.addressNames[account.address] || [];
186+
newData.addressNames[account.address].push(
187+
account.label || wallet.path
188+
);
189+
newData.addressNames[account.address] = dedupeAndSort(
190+
newData.addressNames[account.address]
188191
);
189192
}
190193
}

src/extension/commandArguments.ts renamed to src/extension/commands/commandArguments.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import BlockchainIdentifier from "./blockchainIdentifier";
1+
import BlockchainIdentifier from "../blockchainIdentifier";
22

33
//
44
// Represents all possible arguments to any command explosed by
@@ -16,6 +16,7 @@ import BlockchainIdentifier from "./blockchainIdentifier";
1616
// );
1717
//
1818
type CommandArguments = {
19+
address?: string;
1920
amount?: number;
2021
asset?: string;
2122
blockchainIdentifier?: BlockchainIdentifier;
@@ -28,6 +29,9 @@ type CommandArguments = {
2829

2930
async function sanitizeCommandArguments(input: any): Promise<CommandArguments> {
3031
return {
32+
address: input.address
33+
? `${input.address}`.replace(/[^a-z0-9]/gi, "")
34+
: undefined,
3135
amount: parseFloat(input.amount) || undefined,
3236
asset: input.asset
3337
? `${input.asset}`.replace(/[^a-z0-9]/gi, "")

src/extension/commands/neoCommands.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import * as vscode from "vscode";
66

77
import ActiveConnection from "../activeConnection";
88
import BlockchainsTreeDataProvider from "../vscodeProviders/blockchainsTreeDataProvider";
9-
import { CommandArguments } from "../commandArguments";
9+
import { CommandArguments } from "./commandArguments";
1010
import ContractDetector from "../fileDetectors/contractDetector";
1111
import IoHelpers from "../util/ioHelpers";
1212
import JSONC from "../util/JSONC";

src/extension/commands/neoExpressCommands.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import BlockchainIdentifier from "../blockchainIdentifier";
66
import BlockchainMonitorPool from "../blockchainMonitor/blockchainMonitorPool";
77
import BlockchainsTreeDataProvider from "../vscodeProviders/blockchainsTreeDataProvider";
88
import CheckpointDetector from "../fileDetectors/checkpointDetector";
9-
import { CommandArguments } from "../commandArguments";
9+
import { CommandArguments } from "./commandArguments";
1010
import ContractDetector from "../fileDetectors/contractDetector";
1111
import IoHelpers from "../util/ioHelpers";
1212
import NeoExpress from "../neoExpress/neoExpress";

src/extension/commands/trackerCommands.ts

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
11
import * as vscode from "vscode";
22

3+
import ActiveConnection from "../activeConnection";
34
import AutoComplete from "../autoComplete";
45
import BlockchainMonitorPool from "../blockchainMonitor/blockchainMonitorPool";
56
import BlockchainsTreeDataProvider from "../vscodeProviders/blockchainsTreeDataProvider";
6-
import { CommandArguments } from "../commandArguments";
7+
import { CommandArguments } from "./commandArguments";
78
import ContractPanelController from "../panelControllers/contractPanelController";
89
import IoHelpers from "../util/ioHelpers";
910
import TrackerPanelController from "../panelControllers/trackerPanelController";
11+
import WalletPanelController from "../panelControllers/walletPanelController";
1012

1113
export default class TrackerCommands {
1214
static async openContract(
1315
context: vscode.ExtensionContext,
1416
autoComplete: AutoComplete,
1517
commandArguments: CommandArguments
1618
) {
17-
const autoCompleteData = autoComplete.data;
1819
let hash = commandArguments.hash;
1920
if (!hash) {
21+
const autoCompleteData = autoComplete.data;
2022
if (!!Object.keys(autoCompleteData.contractNames).length) {
2123
const selection = await IoHelpers.multipleChoice(
2224
"Select a contract",
@@ -61,4 +63,39 @@ export default class TrackerCommands {
6163
);
6264
}
6365
}
66+
67+
static async openWallet(
68+
context: vscode.ExtensionContext,
69+
autoComplete: AutoComplete,
70+
commandArguments: CommandArguments,
71+
activeConnection: ActiveConnection
72+
) {
73+
let address = commandArguments.address;
74+
if (!address) {
75+
const autoCompleteData = autoComplete.data;
76+
if (!!Object.keys(autoCompleteData.addressNames).length) {
77+
const selection = await IoHelpers.multipleChoice(
78+
"Select a wallet",
79+
...Object.keys(autoCompleteData.addressNames).map(
80+
(_) => `${_} - ${autoCompleteData.addressNames[_].join(", ")}`
81+
)
82+
);
83+
if (selection) {
84+
address = selection.split(" ")[0];
85+
}
86+
} else {
87+
vscode.window.showInformationMessage(
88+
"No wallets found in current workspace"
89+
);
90+
}
91+
}
92+
if (address) {
93+
new WalletPanelController(
94+
context,
95+
address,
96+
autoComplete,
97+
activeConnection
98+
);
99+
}
100+
}
64101
}

src/extension/index.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ import BlockchainIdentifier from "./blockchainIdentifier";
66
import BlockchainMonitorPool from "./blockchainMonitor/blockchainMonitorPool";
77
import BlockchainsTreeDataProvider from "./vscodeProviders/blockchainsTreeDataProvider";
88
import CheckpointDetector from "./fileDetectors/checkpointDetector";
9-
import { CommandArguments, sanitizeCommandArguments } from "./commandArguments";
9+
import {
10+
CommandArguments,
11+
sanitizeCommandArguments,
12+
} from "./commands/commandArguments";
1013
import ContractDetector from "./fileDetectors/contractDetector";
1114
import ContractsTreeDataProvider from "./vscodeProviders/contractsTreeDataProvider";
1215
import Log from "../shared/log";
@@ -21,6 +24,7 @@ import ServerListDetector from "./fileDetectors/serverListDetector";
2124
import Templates from "./templates/templates";
2225
import TrackerCommands from "./commands/trackerCommands";
2326
import WalletDetector from "./fileDetectors/walletDetector";
27+
import WalletsTreeDataProvider from "./vscodeProviders/walletsTreeDataProvider";
2428

2529
const LOG_PREFIX = "index";
2630

@@ -65,6 +69,11 @@ export async function activate(context: vscode.ExtensionContext) {
6569
blockchainsTreeDataProvider,
6670
blockchainMonitorPool
6771
);
72+
const walletsTreeDataProvider = new WalletsTreeDataProvider(
73+
context.extensionPath,
74+
activeConnection,
75+
walletDetector
76+
);
6877
const contractDetector = new ContractDetector(activeConnection);
6978
const neoExpressInstanceManager = new NeoExpressInstanceManager(
7079
neoExpress,
@@ -113,6 +122,13 @@ export async function activate(context: vscode.ExtensionContext) {
113122
)
114123
);
115124

125+
context.subscriptions.push(
126+
vscode.window.registerTreeDataProvider(
127+
"neo3-visual-devtracker.views.wallets",
128+
walletsTreeDataProvider
129+
)
130+
);
131+
116132
context.subscriptions.push(
117133
vscode.window.registerCustomEditorProvider(
118134
"neo3-visual-devtracker.neo.neo-invoke-json",
@@ -331,6 +347,18 @@ export async function activate(context: vscode.ExtensionContext) {
331347
(commandArguments) =>
332348
TrackerCommands.openContract(context, autoComplete, commandArguments)
333349
);
350+
351+
registerCommand(
352+
context,
353+
"neo3-visual-devtracker.tracker.openWallet",
354+
(commandArguments) =>
355+
TrackerCommands.openWallet(
356+
context,
357+
autoComplete,
358+
commandArguments,
359+
activeConnection
360+
)
361+
);
334362
}
335363

336364
export function deactivate() {

src/extension/neoExpress/neoExpressInstanceManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as vscode from "vscode";
33
import ActiveConnection from "../activeConnection";
44
import BlockchainIdentifier from "../blockchainIdentifier";
55
import BlockchainsTreeDataProvider from "../vscodeProviders/blockchainsTreeDataProvider";
6-
import { CommandArguments } from "../commandArguments";
6+
import { CommandArguments } from "../commands/commandArguments";
77
import Log from "../../shared/log";
88
import NeoExpress from "./neoExpress";
99
import IoHelpers from "../util/ioHelpers";

src/extension/panelControllers/contractPanelController.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default class ContractPanelController extends PanelControllerBase<
2929
);
3030
autoComplete.onChange((autoCompleteData) => {
3131
const name = autoCompleteData.contractNames[contractHash] || contractHash;
32-
this.updateViewState({ panelTitle: name, ...autoCompleteData });
32+
this.updateViewState({ panelTitle: name, autoCompleteData });
3333
});
3434
}
3535

0 commit comments

Comments
 (0)