iterative/vscode-dvc

View on GitHub
extension/src/persistence/model.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import { Memento } from 'vscode'
import { PersistenceKey } from './constants'
import { DeferredDisposable } from '../class/deferred'

export class ModelWithPersistence extends DeferredDisposable {
  protected readonly dvcRoot: string
  private readonly workspaceState: Memento

  constructor(dvcRoot: string, workspaceState: Memento) {
    super()

    this.dvcRoot = dvcRoot
    this.workspaceState = workspaceState
  }

  protected persist(key: PersistenceKey, value: unknown) {
    void this.workspaceState.update(key + this.dvcRoot, value)
  }

  protected revive<T>(key: PersistenceKey, defaultValue: T) {
    return this.workspaceState.get<T>(key + this.dvcRoot, defaultValue)
  }
}