From c7333a3a65d297ef36eb9f08acb09716e3ef32c8 Mon Sep 17 00:00:00 2001 From: Grzegorz Godlewski Date: Thu, 16 Jan 2025 16:19:16 +0100 Subject: [PATCH] Add google watch disabling --- .github/workflows/pull-request.yml | 3 ++- package-lock.json | 4 ++-- src/cli/wikigdrive-server.ts | 13 ++++++++----- src/containers/server/SocketManager.ts | 16 +++++++++------- src/model/CliParams.ts | 1 + 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 12de2678..5daea8ff 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -95,7 +95,8 @@ jobs: --service_account /service_account.json \ --share_email mie-docs-wikigdrive@wikigdrive.iam.gserviceaccount.com \ --workdir /data \ - server 3000 + server 3000 \ + --disable_google_watch remove: if: github.event.pull_request.head.ref != 'develop' && !contains( github.event.pull_request.labels.*.name, 'deploy-pr') diff --git a/package-lock.json b/package-lock.json index f2796a0b..3a78d6be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mieweb/wikigdrive", - "version": "2.12.1", + "version": "2.14.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mieweb/wikigdrive", - "version": "2.12.1", + "version": "2.14.1", "license": "ISC", "workspaces": [ "apps/ui", diff --git a/src/cli/wikigdrive-server.ts b/src/cli/wikigdrive-server.ts index 2289f629..196df3de 100644 --- a/src/cli/wikigdrive-server.ts +++ b/src/cli/wikigdrive-server.ts @@ -91,10 +91,12 @@ export class MainService { process.exit(1); } - const changesContainer = new WatchChangesContainer({ name: 'watch_changes', share_email: this.params.share_email }); - await changesContainer.mount(await this.mainFileService); - await this.containerEngine.registerContainer(changesContainer); - await changesContainer.run(); + if (!this.params.disable_google_watch) { + const changesContainer = new WatchChangesContainer({ name: 'watch_changes', share_email: this.params.share_email }); + await changesContainer.mount(await this.mainFileService); + await this.containerEngine.registerContainer(changesContainer); + await changesContainer.run(); + } const port = parseInt(this.params.args[1]) || 3000; const serverContainer = new ServerContainer({ name: 'server', share_email: this.params.share_email }, port); @@ -159,7 +161,8 @@ async function main() { service_account: argv['service_account'] || null, share_email: argv['share_email'] || process.env.SHARE_EMAIL || null, - server_port: +argv['server_port'] + server_port: +argv['server_port'], + disable_google_watch: !!argv['disable_google_watch'] }; const mainService = new MainService(params); diff --git a/src/containers/server/SocketManager.ts b/src/containers/server/SocketManager.ts index db91afcf..c490878c 100644 --- a/src/containers/server/SocketManager.ts +++ b/src/containers/server/SocketManager.ts @@ -47,13 +47,15 @@ export class SocketManager { })); - const watchChangesContainer = this.engine.getContainer('watch_changes'); - const changes = await watchChangesContainer.getChanges(driveId); - const filteredChanges = await this.getFilteredChanges(driveId, changes); - ws.send(JSON.stringify({ - cmd: 'changes:changed', - payload: filteredChanges - })); + if (this.engine.hasContainer('watch_changes')) { + const watchChangesContainer = this.engine.getContainer('watch_changes'); + const changes = await watchChangesContainer.getChanges(driveId); + const filteredChanges = await this.getFilteredChanges(driveId, changes); + ws.send(JSON.stringify({ + cmd: 'changes:changed', + payload: filteredChanges + })); + } ws.on('close', () => { this.socketsMap[driveId].delete(ws); diff --git a/src/model/CliParams.ts b/src/model/CliParams.ts index 483d3230..7aa7375d 100644 --- a/src/model/CliParams.ts +++ b/src/model/CliParams.ts @@ -8,4 +8,5 @@ export interface CliParams { service_account?: string; server_port?: number; share_email?: string; + disable_google_watch: boolean; }