Files
supabase/apps/studio/stores/RootStore.ts
T
Ivan VasilovandJoshen Lim 693294ec85 chore: Migrate VaultStore (#20020)
* Move listEncryptedColumns method to a function.

* Remove encryptColumn method since it's unused.

* Add CRUD RQ queries/mutations for vault secrets.

* Use the new queries/mutations.

* Add RQ for secret/decrypted values of secrets.

* Add RQ queries/mutations for pg-sodium keys.

* Use the new hook for decrypted value.

* Use the new hooks for pg sodium keys.

* Remove unneeded code from the vault store.

* Delete VaultStore and all usages of it.

* Small style fix

* Fix invalidation for create, update, delete secrets

* Small UI fixes to EditSecretModal

* Fix invalidation for pg-sodium-keys rq

* Add default error handler for pg sodium keys rq

* Undo

* Add default error handler for vault secrets RQ

* Remove observer on vault pages

* Fix database wrappers with vault

* Add loading state for vault keys

* fix pg sodium keys invalidation

* Opt for immutable const declaration in SecretsManagement

* remove keyId and keyName context from ColumnEditor, no longer supports TLE

* Address PR comments

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2024-01-04 15:15:45 +07:00

51 lines
1.3 KiB
TypeScript

import { configure } from 'mobx'
import { Project } from 'data/projects/project-detail-query'
import UiStore, { IUiStore } from './UiStore'
import MetaStore, { IMetaStore } from './pgmeta/MetaStore'
// Temporary disable mobx warnings
// TODO: need to remove this after refactoring old stores.
configure({
enforceActions: 'never',
})
export interface IRootStore {
ui: IUiStore
meta: IMetaStore
selectedProjectRef?: string
setProject: (project: Project) => void
}
export class RootStore implements IRootStore {
ui: IUiStore
meta: IMetaStore
selectedProjectRef: string | undefined
constructor() {
this.ui = new UiStore(this)
this.meta = new MetaStore(this, { projectRef: '', connectionString: '' })
}
/**
* Set selected project reference
*
* This method will also trigger project detail loading when it's not available
*/
setProject(project: Project) {
if (this.selectedProjectRef === project.ref) return
// reset ui projectRef in case of switching projects
// this will show the loading screen instead of showing the previous project
this.ui.setProjectRef(undefined)
this.meta.setProjectDetails(project)
// ui set must come last
this.ui.setProjectRef(project.ref)
this.selectedProjectRef = project.ref
}
}