1 import * as vscode from 'vscode';
2 import { log } from "./util";
4 export class PersistentState {
5 constructor(private readonly ctx: vscode.ExtensionContext) {
8 readonly installedNightlyExtensionReleaseDate = new DateStorage(
9 "installed-nightly-extension-release-date",
12 readonly serverReleaseDate = new DateStorage("server-release-date", this.ctx.globalState);
13 readonly serverReleaseTag = new Storage<null | string>("server-release-tag", this.ctx.globalState, null);
17 export class Storage<T> {
19 private readonly key: string,
20 private readonly storage: vscode.Memento,
21 private readonly defaultVal: T
25 const val = this.storage.get(this.key, this.defaultVal);
26 log.debug(this.key, "==", val);
30 log.debug(this.key, "=", val);
31 await this.storage.update(this.key, val);
34 export class DateStorage {
35 inner: Storage<null | string>;
37 constructor(key: string, storage: vscode.Memento) {
38 this.inner = new Storage(key, storage, null);
42 const dateStr = this.inner.get();
43 return dateStr ? new Date(dateStr) : null;
46 async set(date: null | Date) {
47 await this.inner.set(date ? date.toString() : null);