Add "Open collection in browser" command
This commit is contained in:
parent
2e77f93759
commit
095483ef9d
5 changed files with 4359 additions and 14 deletions
4345
package-lock.json
generated
4345
package-lock.json
generated
File diff suppressed because it is too large
Load diff
11
package.json
11
package.json
|
@ -335,6 +335,12 @@
|
||||||
"icon": "$(link-external)",
|
"icon": "$(link-external)",
|
||||||
"category": "Appwrite"
|
"category": "Appwrite"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"command": "vscode-appwrite.openCollectionInBrowser",
|
||||||
|
"title": "Open collection in browser",
|
||||||
|
"icon": "$(link-external)",
|
||||||
|
"category": "Appwrite"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"command": "vscode-appwrite.viewMore",
|
"command": "vscode-appwrite.viewMore",
|
||||||
"title": "View more",
|
"title": "View more",
|
||||||
|
@ -488,6 +494,11 @@
|
||||||
"command": "vscode-appwrite.viewCollectionAsJson",
|
"command": "vscode-appwrite.viewCollectionAsJson",
|
||||||
"when": "viewItem == collection"
|
"when": "viewItem == collection"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"command": "vscode-appwrite.openCollectionInBrowser",
|
||||||
|
"when": "viewItem == collection",
|
||||||
|
"group": "inline"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"command": "vscode-appwrite.deleteCollection",
|
"command": "vscode-appwrite.deleteCollection",
|
||||||
"when": "viewItem == collection"
|
"when": "viewItem == collection"
|
||||||
|
|
6
src/commands/database/openCollectionInBrowser.ts
Normal file
6
src/commands/database/openCollectionInBrowser.ts
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
import { CollectionTreeItem } from '../../tree/database/CollectionTreeItem';
|
||||||
|
import { openUrl } from '../../utils/openUrl';
|
||||||
|
|
||||||
|
export async function openCollectionInBrowser(treeItem: CollectionTreeItem): Promise<void> {
|
||||||
|
openUrl(treeItem.getUrl());
|
||||||
|
}
|
|
@ -43,6 +43,7 @@ import { openFunctionSettingsInBrowser } from './functions/openFunctionSettingsI
|
||||||
import { openFunctionTagsInBrowser } from './functions/openFunctionTagsInBrowser';
|
import { openFunctionTagsInBrowser } from './functions/openFunctionTagsInBrowser';
|
||||||
|
|
||||||
import { viewMore } from './common/viewMore';
|
import { viewMore } from './common/viewMore';
|
||||||
|
import { openCollectionInBrowser } from './database/openCollectionInBrowser';
|
||||||
|
|
||||||
class CommandRegistrar {
|
class CommandRegistrar {
|
||||||
constructor(private readonly context: ExtensionContext) {}
|
constructor(private readonly context: ExtensionContext) {}
|
||||||
|
@ -106,6 +107,7 @@ export function registerCommands(context: ExtensionContext): void {
|
||||||
registerCommand("createPermission", createPermission, "database");
|
registerCommand("createPermission", createPermission, "database");
|
||||||
registerCommand("deletePermission", deletePermission, "database");
|
registerCommand("deletePermission", deletePermission, "database");
|
||||||
registerCommand("editPermission", editPermission, "database");
|
registerCommand("editPermission", editPermission, "database");
|
||||||
|
registerCommand("openCollectionInBrowser", openCollectionInBrowser);
|
||||||
|
|
||||||
/** Health **/
|
/** Health **/
|
||||||
registerCommand("refreshHealth", undefined, "health");
|
registerCommand("refreshHealth", undefined, "health");
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { ThemeIcon, TreeItem, TreeItemCollapsibleState } from "vscode";
|
import { ThemeIcon, TreeItem, TreeItemCollapsibleState } from "vscode";
|
||||||
import { Collection } from "../../appwrite";
|
import { Collection } from "../../appwrite";
|
||||||
import { databaseClient } from "../../client";
|
import { clientConfig, databaseClient } from "../../client";
|
||||||
|
import { getConsoleUrlFromEndpoint } from '../../commands/users/openUserInConsole';
|
||||||
import { AppwriteTreeItemBase } from "../../ui/AppwriteTreeItemBase";
|
import { AppwriteTreeItemBase } from "../../ui/AppwriteTreeItemBase";
|
||||||
import { DatabaseTreeItemProvider } from "./DatabaseTreeItemProvider";
|
import { DatabaseTreeItemProvider } from "./DatabaseTreeItemProvider";
|
||||||
import { DocumentsTreeItem } from "./DocumentsTreeItem";
|
import { DocumentsTreeItem } from "./DocumentsTreeItem";
|
||||||
|
@ -12,6 +13,12 @@ export class CollectionTreeItem extends AppwriteTreeItemBase {
|
||||||
super(undefined, collection.name);
|
super(undefined, collection.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://console.streamlux.com/console/database/collection?id=607cb2d6a21a8&project=605ce39a30c01
|
||||||
|
public getUrl(): string {
|
||||||
|
const consoleUrl = getConsoleUrlFromEndpoint(clientConfig.endpoint);
|
||||||
|
return `${consoleUrl}/database/collection?id=${this.collection.$id}&project=${clientConfig.projectId}`;
|
||||||
|
}
|
||||||
|
|
||||||
public async getChildren(): Promise<TreeItem[]> {
|
public async getChildren(): Promise<TreeItem[]> {
|
||||||
return [new RulesTreeItem(this), new PermissionsTreeItem(this), new DocumentsTreeItem(this)];
|
return [new RulesTreeItem(this), new PermissionsTreeItem(this), new DocumentsTreeItem(this)];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue