Skip to content

Commit 4f6f1a8

Browse files
committed
feat: copy id or document to clipboard
1 parent 6357efa commit 4f6f1a8

File tree

3 files changed

+52
-0
lines changed

3 files changed

+52
-0
lines changed

package.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,14 @@
314314
"dark": "images/dark/search-regular.svg"
315315
}
316316
},
317+
{
318+
"command": "mdb.copyDocumentIdFromTree",
319+
"title": "Copy Document ID"
320+
},
321+
{
322+
"command": "mdb.copyDocumentFromTree",
323+
"title": "Copy Document"
324+
},
317325
{
318326
"command": "mdb.openPlaygroundFromTreeItem",
319327
"title": "Open Playground"
@@ -559,6 +567,16 @@
559567
"when": "view == mongoDBConnectionExplorer && viewItem == documentListTreeItem",
560568
"group": "2@1"
561569
},
570+
{
571+
"command": "mdb.copyDocumentIdFromTree",
572+
"when": "view == mongoDBConnectionExplorer && viewItem == documentTreeItem",
573+
"group": "1@1"
574+
},
575+
{
576+
"command": "mdb.copyDocumentFromTree",
577+
"when": "view == mongoDBConnectionExplorer && viewItem == documentTreeItem",
578+
"group": "1@2"
579+
},
562580
{
563581
"command": "mdb.refreshSchema",
564582
"when": "view == mongoDBConnectionExplorer && viewItem == schemaTreeItem"

src/commands/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ enum EXTENSION_COMMANDS {
4545
MDB_RENAME_CONNECTION = 'mdb.renameConnection',
4646
MDB_ADD_DATABASE = 'mdb.addDatabase',
4747
MDB_SEARCH_FOR_DOCUMENTS = 'mdb.searchForDocuments',
48+
MDB_COPY_DOCUMENT_ID_FROM_TREE = 'mdb.copyDocumentIdFromTree',
49+
MDB_COPY_DOCUMENT_FROM_TREE = 'mdb.copyDocumentFromTree',
4850
MDB_COPY_DATABASE_NAME = 'mdb.copyDatabaseName',
4951
MDB_DROP_DATABASE = 'mdb.dropDatabase',
5052
MDB_REFRESH_DATABASE = 'mdb.refreshDatabase',

src/mdbExtensionController.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,38 @@ export default class MDBExtensionController implements vscode.Disposable {
487487
return Promise.resolve(true);
488488
}
489489
);
490+
this.registerCommand(
491+
EXTENSION_COMMANDS.MDB_COPY_DOCUMENT_ID_FROM_TREE,
492+
async (element: DocumentTreeItem): Promise<boolean> => {
493+
const { documentId } = element;
494+
495+
if (!documentId) {
496+
void vscode.window.showWarningMessage('Can\'t copy ID from document that has no ID.');
497+
return false;
498+
}
499+
500+
let body = JSON.stringify(documentId);
501+
502+
if (body.startsWith('"')) {
503+
body = body.slice(1, body.length - 1);
504+
}
505+
506+
await vscode.env.clipboard.writeText(body);
507+
return true;
508+
}
509+
);
510+
this.registerCommand(
511+
EXTENSION_COMMANDS.MDB_COPY_DOCUMENT_FROM_TREE,
512+
async (element: DocumentTreeItem): Promise<boolean> => {
513+
const { document } = element;
514+
const tabSize = vscode.workspace
515+
.getConfiguration('editor')
516+
.get('tabSize', 2);
517+
const body = JSON.stringify(document, undefined, tabSize);
518+
await vscode.env.clipboard.writeText(body);
519+
return true;
520+
}
521+
);
490522
this.registerCommand(
491523
EXTENSION_COMMANDS.MDB_REFRESH_SCHEMA,
492524
(schemaTreeItem: SchemaTreeItem): Promise<boolean> => {

0 commit comments

Comments
 (0)