From df249679d03b87a823edc654d001032e90260030 Mon Sep 17 00:00:00 2001 From: Michal Szczepanski Date: Thu, 21 Sep 2023 00:46:17 +0200 Subject: [PATCH] feat: add pako to compress segments --- package-lock.json | 25 ++++++++ package.json | 2 + src/common/fn/fn-byte-convert.ts | 9 +++ src/common/model/bus.model.ts | 2 +- src/common/model/shared/token.dto.ts | 1 + .../sync-server.model.ts} | 16 ++--- .../account/account-details.component.tsx | 61 ++++++++++++++----- .../components/account/login.component.tsx | 2 +- .../components/tabs/logs-tab.component.tsx | 10 --- src/default-popup/store/popup-token.store.ts | 1 - src/manifest.ch.json | 2 +- src/manifest.ff.json | 2 +- src/manifest.json | 2 +- .../store/segment/api-segment-add.command.ts | 13 ++-- .../segment/api-segment-quota-get.command.ts | 38 ++++++++++++ ...mmand.ts => popup-server-quota.command.ts} | 14 ++--- .../progress/sync-reset-progress.command.ts | 2 +- .../command/sync/sync-index.command.ts | 3 + .../command/sync/sync-tx.helper.ts | 21 ++++++- src/service-worker/command/sync/sync.model.ts | 4 +- src/service-worker/service-worker.ts | 6 +- 21 files changed, 173 insertions(+), 63 deletions(-) create mode 100644 src/common/fn/fn-byte-convert.ts rename src/common/{command/sync/sync-clear-server.command.ts => model/sync-server.model.ts} (60%) create mode 100644 src/service-worker/command/api/store/segment/api-segment-quota-get.command.ts rename src/service-worker/command/popup/{popup-take-screenshot.command.ts => popup-server-quota.command.ts} (60%) diff --git a/package-lock.json b/package-lock.json index c99de24..a41ba98 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,7 @@ "marked": "^4.2.5", "nanoid": "^4.0.0", "openpgp": "^5.9.0", + "pako": "^2.1.0", "parse5": "^7.1.2", "pdfjs-dist": "^3.10.111", "prosemirror-commands": "^1.3.1", @@ -54,6 +55,7 @@ "@types/firefox-webext-browser": "^111.0.1", "@types/marked": "^4.0.8", "@types/node": "^18.16.18", + "@types/pako": "^2.0.0", "@types/react": "^18.0.15", "@types/react-dom": "^18.0.6", "@types/remove-markdown": "^0.3.1", @@ -74,6 +76,7 @@ } }, "../browser-api": { + "name": "@pinmenote/browser-api", "version": "0.0.5", "license": "MIT", "devDependencies": { @@ -17207,6 +17210,12 @@ "integrity": "sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==", "dev": true }, + "node_modules/@types/pako": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.0.tgz", + "integrity": "sha512-10+iaz93qR5WYxTo+PMifD5TSxiOtdRaxBf7INGGXMQgTCu8Z/7GYWYFUOS3q/G0nE5boj1r4FEB+WSy7s5gbA==", + "dev": true + }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -20670,6 +20679,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, "node_modules/parcel": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.8.2.tgz", @@ -33142,6 +33156,12 @@ "integrity": "sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==", "dev": true }, + "@types/pako": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.0.tgz", + "integrity": "sha512-10+iaz93qR5WYxTo+PMifD5TSxiOtdRaxBf7INGGXMQgTCu8Z/7GYWYFUOS3q/G0nE5boj1r4FEB+WSy7s5gbA==", + "dev": true + }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -35585,6 +35605,11 @@ "p-limit": "^3.0.2" } }, + "pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, "parcel": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.8.2.tgz", diff --git a/package.json b/package.json index 797cdd7..33780e9 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "@types/firefox-webext-browser": "^111.0.1", "@types/marked": "^4.0.8", "@types/node": "^18.16.18", + "@types/pako": "^2.0.0", "@types/react": "^18.0.15", "@types/react-dom": "^18.0.6", "@types/remove-markdown": "^0.3.1", @@ -76,6 +77,7 @@ "marked": "^4.2.5", "nanoid": "^4.0.0", "openpgp": "^5.9.0", + "pako": "^2.1.0", "parse5": "^7.1.2", "pdfjs-dist": "^3.10.111", "prosemirror-commands": "^1.3.1", diff --git a/src/common/fn/fn-byte-convert.ts b/src/common/fn/fn-byte-convert.ts new file mode 100644 index 0000000..f96ec7d --- /dev/null +++ b/src/common/fn/fn-byte-convert.ts @@ -0,0 +1,9 @@ +export const fnByteToMb = (value?: number): number => { + if (!value) return 0; + return Math.floor(value / 10_000) / 100; +}; + +export const fnByteToGb = (value?: number): number => { + if (!value) return 0; + return Math.floor(value / 10_000_000) / 100; +}; diff --git a/src/common/model/bus.model.ts b/src/common/model/bus.model.ts index 3ae652e..0fef7c1 100644 --- a/src/common/model/bus.model.ts +++ b/src/common/model/bus.model.ts @@ -44,7 +44,7 @@ export enum BusMessageType { POPUP_PAGE_ELEMENT_SNAPSHOT_ADD = 'popup.page.element.snapshot.add', POPUP_PIN_START = 'popup.pin.start', POPUP_PAGE_ALTER_START = 'popup.page.alter.start', - POPUP_TAKE_SCREENSHOT = 'popup.take.screenshot', + POPUP_SERVER_QUOTA = 'popup.server.quota', // Content script CONTENT_DOWNLOAD_DATA = 'content.download', CONTENT_INVALIDATE = 'content.invalidate', diff --git a/src/common/model/shared/token.dto.ts b/src/common/model/shared/token.dto.ts index 5064421..c428921 100644 --- a/src/common/model/shared/token.dto.ts +++ b/src/common/model/shared/token.dto.ts @@ -22,6 +22,7 @@ export enum TokenTypeDto { export interface RefreshTokenDto { token: string; iat: number; + syncToken: string; } export interface AccessTokenDto { diff --git a/src/common/command/sync/sync-clear-server.command.ts b/src/common/model/sync-server.model.ts similarity index 60% rename from src/common/command/sync/sync-clear-server.command.ts rename to src/common/model/sync-server.model.ts index 59e525f..c943c8d 100644 --- a/src/common/command/sync/sync-clear-server.command.ts +++ b/src/common/model/sync-server.model.ts @@ -14,15 +14,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -import { BrowserStorage } from '@pinmenote/browser-api'; -import { ICommand } from '../../model/shared/common.dto'; -import { LogManager } from '../../popup/log.manager'; -import { ObjectStoreKeys } from '../../keys/object.store.keys'; - -export class SyncClearServerCommand implements ICommand> { - async execute(): Promise { - // clear progress - await BrowserStorage.remove(ObjectStoreKeys.SYNC_PROGRESS); - LogManager.log(`SyncClearServerCommand->complete !!!`); - } +export interface ServerQuotaResponse { + used: number; + available: number; + files: number; + documents: number; } diff --git a/src/default-popup/components/account/account-details.component.tsx b/src/default-popup/components/account/account-details.component.tsx index 5871d29..f81cd42 100644 --- a/src/default-popup/components/account/account-details.component.tsx +++ b/src/default-popup/components/account/account-details.component.tsx @@ -28,6 +28,8 @@ import { TokenDataDto } from '../../../common/model/shared/token.dto'; import { TokenStorageRemoveCommand } from '../../../common/command/server/token/token-storage-remove.command'; import Typography from '@mui/material/Typography'; import jwtDecode from 'jwt-decode'; +import { ServerQuotaResponse } from '../../../common/model/sync-server.model'; +import { fnByteToGb } from '../../../common/fn/fn-byte-convert'; interface Props { logoutSuccess: () => void; @@ -35,22 +37,37 @@ interface Props { export const AccountDetailsComponent: FunctionComponent = ({ logoutSuccess }) => { const [tokenData, setTokenData] = useState(); + const [serverQuota, setServerQuota] = useState(); const [responseError, setResponseError] = useState(undefined); useEffect(() => { LogManager.log(`AccountDetailsComponent init`); + + const dispatcher = TinyDispatcher.getInstance(); + if (PopupTokenStore.token) { setTokenData(jwtDecode(PopupTokenStore.token.access_token)); + dispatcher.addListener(BusMessageType.POPUP_SERVER_QUOTA, (event, key, value) => { + LogManager.log(`${event} - ${JSON.stringify(value)}`); + dispatcher.removeListener(event, key); + setServerQuota(value); + }); + BrowserApi.sendRuntimeMessage({ type: BusMessageType.POPUP_SERVER_QUOTA }) + .then(() => { + /* */ + }) + .catch(() => { + /* */ + }); } - const loginSuccessKey = TinyDispatcher.getInstance().addListener( - BusMessageType.POPUP_LOGIN_SUCCESS, - async (event, key) => { - TinyDispatcher.getInstance().removeListener(event, key); - await PopupTokenStore.init(); - if (PopupTokenStore.token) setTokenData(jwtDecode(PopupTokenStore.token.access_token)); - } - ); - const logoutKey = TinyDispatcher.getInstance().addListener>( + + const loginSuccessKey = dispatcher.addListener(BusMessageType.POPUP_LOGIN_SUCCESS, async (event, key) => { + dispatcher.removeListener(event, key); + await PopupTokenStore.init(); + if (PopupTokenStore.token) setTokenData(jwtDecode(PopupTokenStore.token.access_token)); + }); + + const logoutKey = dispatcher.addListener>( BusMessageType.POPUP_LOGOUT, async (event, key, value) => { LogManager.log('POPUP_LOGOUT_RESPONSE'); @@ -63,8 +80,8 @@ export const AccountDetailsComponent: FunctionComponent = ({ logoutSucces } ); return () => { - TinyDispatcher.getInstance().removeListener(BusMessageType.POPUP_LOGIN_SUCCESS, loginSuccessKey); - TinyDispatcher.getInstance().removeListener(BusMessageType.POPUP_LOGOUT, logoutKey); + dispatcher.removeListener(BusMessageType.POPUP_LOGIN_SUCCESS, loginSuccessKey); + dispatcher.removeListener(BusMessageType.POPUP_LOGOUT, logoutKey); }; }, []); @@ -77,9 +94,25 @@ export const AccountDetailsComponent: FunctionComponent = ({ logoutSucces return (
- - Welcome {tokenData?.data.username} - +
+
+ + Welcome {tokenData?.data.username} + +
+
+ + Account statistics{' '} + + + {fnByteToGb(serverQuota?.used)} GB of {fnByteToGb(serverQuota?.available)} GB disk space used + + + {serverQuota?.files} files and {serverQuota?.documents} documents archived + +
+
+
diff --git a/src/default-popup/components/account/login.component.tsx b/src/default-popup/components/account/login.component.tsx index 37f8a8d..c894522 100644 --- a/src/default-popup/components/account/login.component.tsx +++ b/src/default-popup/components/account/login.component.tsx @@ -105,7 +105,7 @@ export const LoginComponent: FunctionComponent = ({ loginSuccess }) => {
- Buy Premium Account + Subscribe to Premium Account for 10$ / year
diff --git a/src/default-popup/components/tabs/logs-tab.component.tsx b/src/default-popup/components/tabs/logs-tab.component.tsx index 74303d2..139c050 100644 --- a/src/default-popup/components/tabs/logs-tab.component.tsx +++ b/src/default-popup/components/tabs/logs-tab.component.tsx @@ -19,7 +19,6 @@ import { BrowserApi } from '@pinmenote/browser-api'; import { BusMessageType } from '../../../common/model/bus.model'; import Button from '@mui/material/Button'; import { LogManager } from '../../../common/popup/log.manager'; -import { SyncClearServerCommand } from '../../../common/command/sync/sync-clear-server.command'; import { TinyDispatcher } from '@pinmenote/tiny-dispatcher'; import Typography from '@mui/material/Typography'; @@ -46,10 +45,6 @@ export const LogsTabComponent: FunctionComponent = () => { const handleClearLogs = () => { LogManager.clear(); }; - - const handleClearServer = async () => { - await new SyncClearServerCommand().execute(); - }; return (
Debug @@ -63,11 +58,6 @@ export const LogsTabComponent: FunctionComponent = () => { Clear logs
-
- -
Logs reverse diff --git a/src/default-popup/store/popup-token.store.ts b/src/default-popup/store/popup-token.store.ts index 43a3700..33dea06 100644 --- a/src/default-popup/store/popup-token.store.ts +++ b/src/default-popup/store/popup-token.store.ts @@ -23,7 +23,6 @@ export class PopupTokenStore { static init = async () => { this.tokenValue = await new TokenStorageGetCommand().execute(); - LogManager.log(`PopupTokenStore->init ${JSON.stringify(this.tokenValue)}`); }; static get token(): AccessTokenDto | undefined { diff --git a/src/manifest.ch.json b/src/manifest.ch.json index 5137f4b..1df50f7 100644 --- a/src/manifest.ch.json +++ b/src/manifest.ch.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "pinmenote", "short_name": "pinmenote", - "description": "Pin note on website, modify, draw, comment and archive content.", + "description": "Pin note, modify, draw, comment and archive websites.", "version": "0.0.1", "icons": { "16": "assets/icon/16.png", diff --git a/src/manifest.ff.json b/src/manifest.ff.json index 9c8e1d6..6edf528 100644 --- a/src/manifest.ff.json +++ b/src/manifest.ff.json @@ -7,7 +7,7 @@ }, "name": "pinmenote", "short_name": "pinmenote", - "description": "Pin note on website, modify, draw, comment and archive content.", + "description": "Pin note, modify, draw, comment and archive websites.", "homepage_url": "https://pinmenote.com", "version": "0.0.1", "icons": { diff --git a/src/manifest.json b/src/manifest.json index a69f638..b0177df 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "pinmenote-dev", "short_name": "pinmenote-dev", - "description": "Pin note on website, modify, draw, comment and archive content.", + "description": "Pin note, modify, draw, comment and archive websites.", "version": "0.0.1", "icons": { "16": "assets/icon/16.png", diff --git a/src/service-worker/command/api/store/segment/api-segment-add.command.ts b/src/service-worker/command/api/store/segment/api-segment-add.command.ts index 17d064c..dbba0a1 100644 --- a/src/service-worker/command/api/store/segment/api-segment-add.command.ts +++ b/src/service-worker/command/api/store/segment/api-segment-add.command.ts @@ -19,7 +19,7 @@ import { BeginTxResponse } from '../api-store.model'; import { FetchService } from '@pinmenote/fetch-service'; import { ICommand } from '../../../../../common/model/shared/common.dto'; import { SyncHashType } from '../../../sync/sync.model'; -import { fnConsoleLog } from '../../../../../common/fn/fn-console'; +import { deflate } from 'pako'; export interface FileDataDto { parent?: string; @@ -57,9 +57,14 @@ export class ApiSegmentAddCommand extends ApiCallBase implements ICommand { const formData = new FormData(); - let fileData = this.file; - if (!(this.file instanceof Blob)) fileData = new Blob([this.file], { type: 'application/json' }); - formData.append('file', fileData); + if (this.file instanceof Blob) { + formData.append('file', this.file); + } else { + const fileData = deflate(this.file); + formData.append('file', new Blob([fileData], { type: 'application/zip' })); + console.log(`compression ${Math.round((fileData.length / this.file.length) * 100)}%`); + } + if (this.data.parent) formData.append('parent', this.data.parent); formData.append('key', this.data.key); formData.append('hash', this.data.hash); diff --git a/src/service-worker/command/api/store/segment/api-segment-quota-get.command.ts b/src/service-worker/command/api/store/segment/api-segment-quota-get.command.ts new file mode 100644 index 0000000..7ef097f --- /dev/null +++ b/src/service-worker/command/api/store/segment/api-segment-quota-get.command.ts @@ -0,0 +1,38 @@ +/* + * This file is part of the pinmenote-extension distribution (https://github.com/pinmenote/pinmenote-extension). + * Copyright (c) 2023 Michal Szczepanski. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +import { ApiCallBase } from '../../api-call.base'; +import { FetchService } from '@pinmenote/fetch-service'; +import { ICommand } from '../../../../../common/model/shared/common.dto'; +import { ServerQuotaResponse } from '../../../../../common/model/sync-server.model'; + +export class ApiSegmentQuotaGetCommand extends ApiCallBase implements ICommand> { + constructor() { + super(); + } + async execute(): Promise { + await this.initTokenData(); + const resp = await FetchService.fetch( + `${this.storeUrl!}/api/v1/segment/quota`, + { + type: 'JSON', + headers: this.getAuthHeaders(true) + }, + this.refreshParams() + ); + return resp.data; + } +} diff --git a/src/service-worker/command/popup/popup-take-screenshot.command.ts b/src/service-worker/command/popup/popup-server-quota.command.ts similarity index 60% rename from src/service-worker/command/popup/popup-take-screenshot.command.ts rename to src/service-worker/command/popup/popup-server-quota.command.ts index f29129b..bcec9ea 100644 --- a/src/service-worker/command/popup/popup-take-screenshot.command.ts +++ b/src/service-worker/command/popup/popup-server-quota.command.ts @@ -14,20 +14,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ +import { ApiSegmentQuotaGetCommand, ServerQuotaResponse } from '../api/store/segment/api-segment-quota-get.command'; import { BrowserApi } from '@pinmenote/browser-api'; -import { BrowserStorage } from '@pinmenote/browser-api'; import { BusMessageType } from '../../../common/model/bus.model'; import { ICommand } from '../../../common/model/shared/common.dto'; -import { ObjectStoreKeys } from '../../../common/keys/object.store.keys'; -import { SettingsConfig } from '../../../common/environment'; -export class PopupTakeScreenshotCommand implements ICommand> { +export class PopupServerQuotaCommand implements ICommand> { async execute(): Promise { - const settings = await BrowserStorage.get(ObjectStoreKeys.CONTENT_SETTINGS_KEY); - const data = await BrowserApi.tabs.captureVisibleTab({ - format: settings.screenshotFormat, - quality: settings.screenshotQuality - }); - await BrowserApi.sendRuntimeMessage({ type: BusMessageType.POPUP_TAKE_SCREENSHOT, data }); + const data = await new ApiSegmentQuotaGetCommand().execute(); + await BrowserApi.sendRuntimeMessage({ type: BusMessageType.POPUP_SERVER_QUOTA, data }); } } diff --git a/src/service-worker/command/sync/progress/sync-reset-progress.command.ts b/src/service-worker/command/sync/progress/sync-reset-progress.command.ts index 82ec521..26881b9 100644 --- a/src/service-worker/command/sync/progress/sync-reset-progress.command.ts +++ b/src/service-worker/command/sync/progress/sync-reset-progress.command.ts @@ -37,8 +37,8 @@ export class SyncResetProgressCommand implements ICommand> { async resetObjects(): Promise { let listId = await BrowserStorage.get(ObjectStoreKeys.OBJECT_LIST_ID); - const a = Date.now(); console.log('SyncResetProgressCommand->start !!!!', listId); + const a = Date.now(); const toSortSet: Set = new Set(); diff --git a/src/service-worker/command/sync/sync-index.command.ts b/src/service-worker/command/sync/sync-index.command.ts index 1fa46d2..c92601b 100644 --- a/src/service-worker/command/sync/sync-index.command.ts +++ b/src/service-worker/command/sync/sync-index.command.ts @@ -52,6 +52,9 @@ export class SyncIndexCommand implements ICommand> { return SyncObjectStatus.OBJECT_NOT_EXISTS; } let status = SyncObjectStatus.OK; + // Skip for now for those with index + if (obj.server?.id) return status; + switch (obj.type) { case ObjTypeDto.PageSnapshot: case ObjTypeDto.PageElementSnapshot: { diff --git a/src/service-worker/command/sync/sync-tx.helper.ts b/src/service-worker/command/sync/sync-tx.helper.ts index 880fdc5..a0d7e8e 100644 --- a/src/service-worker/command/sync/sync-tx.helper.ts +++ b/src/service-worker/command/sync/sync-tx.helper.ts @@ -22,14 +22,31 @@ import { ObjDateIndex } from '../../../common/command/obj/index/obj-update-index import { ObjectStoreKeys } from '../../../common/keys/object.store.keys'; import { TokenStorageGetCommand } from '../../../common/command/server/token/token-storage-get.command'; import { fnConsoleLog } from '../../../common/fn/fn-console'; +import jwtDecode from 'jwt-decode'; +import { TokenDataDto } from '../../../common/model/shared/token.dto'; export class SyncTxHelper { static async begin(): Promise { const tx = await BrowserStorage.get(ObjectStoreKeys.SYNC_TX); if (tx) return tx; const txResponse = await new ApiStoreBeginCommand().execute(); - fnConsoleLog('locked', txResponse?.locked); - if (txResponse?.locked) return undefined; + if (txResponse?.locked) { + const token = await new TokenStorageGetCommand().execute(); + if (!token) return undefined; + const tokenData = jwtDecode(token.access_token); + fnConsoleLog( + 'locked', + txResponse?.locked, + txResponse, + tokenData, + tokenData.refresh_token.syncToken === txResponse.lockedBy + ); + if (tokenData.refresh_token.syncToken === txResponse.lockedBy) { + await BrowserStorage.set(ObjectStoreKeys.SYNC_TX, txResponse); + return txResponse; + } + return undefined; + } await BrowserStorage.set(ObjectStoreKeys.SYNC_TX, txResponse); return txResponse; } diff --git a/src/service-worker/command/sync/sync.model.ts b/src/service-worker/command/sync/sync.model.ts index 07515dc..b45a0e9 100644 --- a/src/service-worker/command/sync/sync.model.ts +++ b/src/service-worker/command/sync/sync.model.ts @@ -21,8 +21,8 @@ export interface SyncProgress { } export enum SyncObjectStatus { - TX_LOCKED, - SERVER_ERROR = -3, + TX_LOCKED = -4, + SERVER_ERROR, INDEX_NOT_EXISTS, OBJECT_NOT_EXISTS, OK, diff --git a/src/service-worker/service-worker.ts b/src/service-worker/service-worker.ts index 624bd9d..c2b9be5 100644 --- a/src/service-worker/service-worker.ts +++ b/src/service-worker/service-worker.ts @@ -30,7 +30,7 @@ import { PopupBugReportCommand } from './command/popup/popup-bug-report.command' import { PopupLoginCommand } from './command/popup/popup-login.command'; import { PopupLoginSuccessCommand } from './command/popup/popup-login-success.command'; import { PopupLogoutCommand } from './command/popup/popup-logout.command'; -import { PopupTakeScreenshotCommand } from './command/popup/popup-take-screenshot.command'; +import { PopupServerQuotaCommand } from './command/popup/popup-server-quota.command'; import { PopupVerify2faCommand } from './command/popup/popup-verify-2fa.command'; import { ScriptService } from './service/script.service'; import { SwInitSettingsCommand } from './command/sw/sw-init-settings.command'; @@ -90,8 +90,8 @@ const handleMessage = async ( case BusMessageType.POPUP_LOGOUT: await new PopupLogoutCommand().execute(); break; - case BusMessageType.POPUP_TAKE_SCREENSHOT: - await new PopupTakeScreenshotCommand().execute(); + case BusMessageType.POPUP_SERVER_QUOTA: + await new PopupServerQuotaCommand().execute(); break; case BusMessageType.IFRAME_INDEX: case BusMessageType.IFRAME_INDEX_REGISTER: