diff --git a/app/server/lib/DocStorageManager.ts b/app/server/lib/DocStorageManager.ts index 8879db42..7ec65de4 100644 --- a/app/server/lib/DocStorageManager.ts +++ b/app/server/lib/DocStorageManager.ts @@ -11,7 +11,7 @@ import * as gutil from 'app/common/gutil'; import {Comm} from 'app/server/lib/Comm'; import * as docUtils from 'app/server/lib/docUtils'; import {GristServer} from 'app/server/lib/GristServer'; -import {IDocStorageManager, SnapshotProgress} from 'app/server/lib/IDocStorageManager'; +import {EmptySnapshotProgress, IDocStorageManager, SnapshotProgress} from 'app/server/lib/IDocStorageManager'; import {IShell} from 'app/server/lib/IShell'; import log from 'app/server/lib/log'; import uuidv4 from "uuid/v4"; @@ -258,14 +258,7 @@ export class DocStorageManager implements IDocStorageManager { } public getSnapshotProgress(): SnapshotProgress { - return { - pushes: 0, - skippedPushes: 0, - errors: 0, - changes: 0, - windowsStarted: 0, - windowsDone: 0, - }; + return new EmptySnapshotProgress(); } public async replace(docName: string, options: any): Promise { diff --git a/app/server/lib/HostedStorageManager.ts b/app/server/lib/HostedStorageManager.ts index fa73beb6..88e5317f 100644 --- a/app/server/lib/HostedStorageManager.ts +++ b/app/server/lib/HostedStorageManager.ts @@ -15,7 +15,7 @@ import {IDocWorkerMap} from 'app/server/lib/DocWorkerMap'; import {ChecksummedExternalStorage, DELETED_TOKEN, ExternalStorage, Unchanged} from 'app/server/lib/ExternalStorage'; import {HostedMetadataManager} from 'app/server/lib/HostedMetadataManager'; import {ICreate} from 'app/server/lib/ICreate'; -import {IDocStorageManager, SnapshotProgress} from 'app/server/lib/IDocStorageManager'; +import {EmptySnapshotProgress, IDocStorageManager, SnapshotProgress} from 'app/server/lib/IDocStorageManager'; import {LogMethods} from "app/server/lib/LogMethods"; import {fromCallback} from 'app/server/lib/serverUtils'; import * as fse from 'fs-extra'; @@ -232,14 +232,7 @@ export class HostedStorageManager implements IDocStorageManager { public getSnapshotProgress(docName: string): SnapshotProgress { let snapshotProgress = this._snapshotProgress.get(docName); if (!snapshotProgress) { - snapshotProgress = { - pushes: 0, - skippedPushes: 0, - errors: 0, - changes: 0, - windowsStarted: 0, - windowsDone: 0, - }; + snapshotProgress = new EmptySnapshotProgress(); this._snapshotProgress.set(docName, snapshotProgress); } return snapshotProgress; diff --git a/app/server/lib/IDocStorageManager.ts b/app/server/lib/IDocStorageManager.ts index 6bde92cb..40a1a951 100644 --- a/app/server/lib/IDocStorageManager.ts +++ b/app/server/lib/IDocStorageManager.ts @@ -68,7 +68,7 @@ export class TrivialDocStorageManager implements IDocStorageManager { public async flushDoc() {} public async getSnapshots(): Promise { throw new Error('no'); } public async removeSnapshots(): Promise { throw new Error('no'); } - public getSnapshotProgress(): SnapshotProgress { throw new Error('no'); } + public getSnapshotProgress(): SnapshotProgress { return new EmptySnapshotProgress(); } public async replace(): Promise { throw new Error('no'); } } @@ -116,3 +116,12 @@ export interface SnapshotProgress { /** Number of times a save window was completed. */ windowsDone: number; } + +export class EmptySnapshotProgress implements SnapshotProgress { + public pushes: number = 0; + public skippedPushes: number = 0; + public errors: number = 0; + public changes: number = 0; + public windowsStarted: number = 0; + public windowsDone: number = 0; +}