Move databases to zustand (#898)

This commit is contained in:
victor-meng
2021-06-18 11:25:08 -07:00
committed by GitHub
parent c9fa44f6f4
commit 96e6bba38b
33 changed files with 310 additions and 446 deletions

View File

@@ -33,6 +33,7 @@ import MongoShellTab from "../Tabs/MongoShellTab";
import { NewQueryTab } from "../Tabs/QueryTab/QueryTab";
import QueryTablesTab from "../Tabs/QueryTablesTab";
import { CollectionSettingsTabV2 } from "../Tabs/SettingsTabV2";
import { useDatabases } from "../useDatabases";
import ConflictId from "./ConflictId";
import DocumentId from "./DocumentId";
import StoredProcedure from "./StoredProcedure";
@@ -1153,7 +1154,7 @@ export default class Collection implements ViewModels.Collection {
}
public getDatabase(): ViewModels.Database {
return this.container.findDatabaseWithId(this.databaseId);
return useDatabases.getState().findDatabaseWithId(this.databaseId);
}
public async loadOffer(): Promise<void> {

View File

@@ -9,6 +9,7 @@ import Explorer from "../Explorer";
import DocumentsTab from "../Tabs/DocumentsTab";
import { NewQueryTab } from "../Tabs/QueryTab/QueryTab";
import TabsBase from "../Tabs/TabsBase";
import { useDatabases } from "../useDatabases";
import DocumentId from "./DocumentId";
export default class ResourceTokenCollection implements ViewModels.CollectionBase {
@@ -151,6 +152,6 @@ export default class ResourceTokenCollection implements ViewModels.CollectionBas
}
public getDatabase(): ViewModels.Database {
return this.container.findDatabaseWithId(this.databaseId);
return useDatabases.getState().findDatabaseWithId(this.databaseId);
}
}

View File

@@ -33,6 +33,7 @@ import { mostRecentActivity } from "../MostRecentActivity/MostRecentActivity";
import { NotebookContentItem, NotebookContentItemType } from "../Notebook/NotebookContentItem";
import { NotebookUtil } from "../Notebook/NotebookUtil";
import TabsBase from "../Tabs/TabsBase";
import { useDatabases } from "../useDatabases";
import StoredProcedure from "./StoredProcedure";
import Trigger from "./Trigger";
import UserDefinedFunction from "./UserDefinedFunction";
@@ -66,15 +67,18 @@ export class ResourceTreeAdapter implements ReactAdapter {
this.koSubsCollectionIdMap = new ArrayHashMap();
this.databaseCollectionIdMap = new ArrayHashMap();
this.container.databases.subscribe((databases: ViewModels.Database[]) => {
// Clean up old databases
this.cleanupDatabasesKoSubs();
useDatabases.subscribe(
(databases: ViewModels.Database[]) => {
// Clean up old databases
this.cleanupDatabasesKoSubs();
databases.forEach((database: ViewModels.Database) => this.watchDatabase(database));
this.triggerRender();
});
databases.forEach((database: ViewModels.Database) => this.watchDatabase(database));
this.triggerRender();
},
(state) => state.databases
);
this.container.databases().forEach((database: ViewModels.Database) => this.watchDatabase(database));
useDatabases.getState().databases.forEach((database: ViewModels.Database) => this.watchDatabase(database));
this.triggerRender();
}
@@ -192,7 +196,7 @@ export class ResourceTreeAdapter implements ReactAdapter {
}
private buildDataTree(): TreeNode {
const databaseTreeNodes: TreeNode[] = this.container.databases().map((database: ViewModels.Database) => {
const databaseTreeNodes: TreeNode[] = useDatabases.getState().databases.map((database: ViewModels.Database) => {
const databaseNode: TreeNode = {
label: database.id(),
iconSrc: CosmosDBIcon,
@@ -882,7 +886,7 @@ export class ResourceTreeAdapter implements ReactAdapter {
this.addKoSubToCollectionId(
databaseId,
collection.id(),
collection.storedProcedures.subscribe(() => {
collection.storedProcedures?.subscribe(() => {
this.triggerRender();
})
);
@@ -890,7 +894,7 @@ export class ResourceTreeAdapter implements ReactAdapter {
this.addKoSubToCollectionId(
databaseId,
collection.id(),
collection.isCollectionExpanded.subscribe(() => {
collection.isCollectionExpanded?.subscribe(() => {
this.triggerRender();
})
);
@@ -898,7 +902,7 @@ export class ResourceTreeAdapter implements ReactAdapter {
this.addKoSubToCollectionId(
databaseId,
collection.id(),
collection.isStoredProceduresExpanded.subscribe(() => {
collection.isStoredProceduresExpanded?.subscribe(() => {
this.triggerRender();
})
);