From cc3d76d72ee7a2cb361d7b9f4ab634934958294e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Kurczewski?= Date: Thu, 14 Mar 2024 14:36:41 +0100 Subject: [PATCH] [CP-2490] Backup (#1742) --- .stylelintrc.js | 3 +- apps/mudita-center/src/main.ts | 5 + demo-data/kompakt-img.ts | 2 +- libs/core/__deprecated__/main/main.ts | 593 ------------------ .../components/rest/header/header.test.tsx | 4 + .../components/rest/menu/menu.test.tsx | 4 + .../renderer/locales/default/en-US.json | 29 +- .../__deprecated__/renderer/store/reducers.ts | 2 + .../app-update-step-modal.component.test.tsx | 4 + .../contact-support-flow.container.test.tsx | 4 + .../contacts/contacts.component.test.tsx | 4 + libs/core/core/application.module.ts | 5 +- libs/core/core/builder/result.builder.ts | 8 +- .../apps/base-app/base-app-routes.tsx | 166 ++--- .../apps/base-app/base-app.component.tsx | 13 +- libs/core/core/errors/app-error.ts | 10 +- libs/core/core/errors/index.ts | 1 + .../api-device-initialization-modal-flow.tsx | 9 +- .../actions/set-active-device.action.ts | 4 +- .../actions/delete-files.action.test.ts | 23 +- .../actions/get-files.action.test.ts | 18 +- libs/core/help/components/help.test.tsx | 4 + .../harmony-overview.component.test.tsx | 4 + .../pure-overview.component.test.tsx | 4 + .../components/overview/overview.test.tsx | 4 + .../system-update-text.test.tsx | 4 + .../update-os-flow.component.test.tsx | 4 + .../settings/components/about/about.test.tsx | 4 + .../store/schemas/generate-application-id.ts | 28 + .../settings/store/schemas/settings.schema.ts | 24 +- libs/device/feature/src/index.ts | 3 + libs/device/feature/src/lib/api-module.ts | 21 +- .../feature/src/lib/backup/backup.service.ts | 2 +- .../lib/backup/start-pre-backup.request.ts | 2 +- .../lib/file-manager/file-manager.service.ts | 177 ++++++ .../feature/src/lib/file-manager/index.ts | 11 + .../open-backup-directory.request.ts | 17 + .../read-backup-directory.request.ts | 17 + .../file-manager/read-directory.request.ts | 16 + .../file-manager/save-backup-file.request.ts | 21 + .../src/lib/file-manager/save-file.request.ts | 18 + .../file-transfer/file-transfer.service.ts | 339 ++++++++++ .../src/lib/file-transfer/get-file.request.ts | 21 + .../feature/src/lib/file-transfer/index.ts | 11 + .../lib/file-transfer/send-clear.request.ts | 13 + .../lib/file-transfer/send-file.request.ts | 21 + .../start-pre-get-file.request.ts | 19 + .../start-pre-send-file.request.ts | 26 + .../src/lib/restore/restore.service.ts | 2 +- .../feature/src/lib/service-bridge/index.ts | 6 + .../src/lib/service-bridge/service-bridge.ts | 55 ++ libs/device/feature/tsconfig.json | 3 +- libs/device/models/src/index.ts | 1 + .../models/src/lib/api-request.model.ts | 4 + .../file-transfer/file-transfer-statuses.ts | 9 + .../src/lib/file-transfer/file-transfer.ts | 33 + .../models/src/lib/file-transfer/index.ts | 7 + libs/device/models/src/lib/general-error.ts | 10 + .../api-backup-service-events.ts | 1 + .../api-file-transfer-service-events.ts | 12 + .../file-manager-service-events.ts | 13 + .../src/lib/renderer-to-main-events/index.ts | 2 + libs/generic-view/feature/src/index.ts | 1 + .../feature/src/lib/api-device-modals.tsx | 40 ++ libs/generic-view/store/src/index.ts | 6 + .../store/src/lib/action-names.ts | 15 +- .../store/src/lib/backup/actions.ts | 20 +- .../src/lib/backup/create-backup.action.ts | 166 +++++ .../store/src/lib/backup/reducer.ts | 98 ++- .../lib/backup/refresh-backup-list.action.ts | 60 ++ .../store/src/lib/file-transfer/actions.ts | 29 + .../src/lib/file-transfer/get-file.action.ts | 129 ++++ .../store/src/lib/file-transfer/reducer.ts | 129 ++++ .../src/lib/file-transfer/send-file.action.ts | 91 +++ .../generic-view/store/src/lib/hooks/index.ts | 2 + .../hooks/use-api-serial-port-listeners.ts | 14 +- .../src/lib/hooks/use-app-events-listeners.ts | 27 + .../store/src/lib/hooks/use-backup-list.ts | 24 + .../store/src/lib/hooks/use-outbox.ts | 5 + .../selectors/active-device-configuration.ts | 21 + .../lib/selectors/active-device-features.ts | 15 +- .../src/lib/selectors/backup-location.ts | 18 + .../lib/selectors/backup-process-status.ts | 12 + .../src/lib/selectors/backup-progress.ts | 40 ++ .../store/src/lib/selectors/device-backups.ts | 4 +- .../store/src/lib/selectors/index.ts | 3 + .../store/src/lib/views/reducer.ts | 9 + libs/generic-view/theme/src/lib/color.ts | 1 + libs/generic-view/theme/src/lib/font-size.ts | 2 + .../theme/src/lib/generic-theme-provider.tsx | 18 + .../generic-view/theme/src/lib/line-height.ts | 2 + libs/generic-view/ui/src/index.ts | 3 +- .../lib/buttons/button-base/button-base.tsx | 3 +- .../buttons/button-base/use-button-action.ts | 71 ++- .../ui/src/lib/buttons/button-primary.tsx | 5 +- .../ui/src/lib/buttons/button-secondary.tsx | 10 +- .../ui/src/lib/buttons/button-text.tsx | 34 +- .../ui/src/lib/icon/get-icon.helper.tsx | 16 + libs/generic-view/ui/src/lib/icon/icon.tsx | 15 +- .../ui/src/lib/icon/svg/backup.svg | 8 + .../ui/src/lib/icon/svg/confirm.svg | 4 + .../ui/src/lib/icon/svg/failed.svg | 4 + .../ui/src/lib/icon/svg/folder.svg | 5 + .../ui/src/lib/icon/svg/password-hide.svg | 8 + .../ui/src/lib/icon/svg/password-show.svg | 8 + .../ui/src/lib/icon/svg/settings.svg | 8 + .../ui/src/lib/interactive/form/form.tsx | 24 + .../src/lib/interactive/input/text-input.tsx | 180 ++++++ .../ui/src/lib/interactive/interactive.ts | 6 + .../ui/src/lib/interactive/modal/index.ts | 9 + .../src/lib/interactive/modal/modal-base.tsx | 70 +-- .../lib/interactive/modal/modal-helpers.tsx | 160 +++++ .../ui/src/lib/interactive/modal/modal.tsx | 22 +- .../src/lib/interactive/modal/text-modal.tsx | 33 +- .../interactive/progress-bar/progress-bar.tsx | 85 +++ .../predefined/backup-restore-available.tsx | 2 + .../lib/predefined/backup/backup-create.tsx | 183 ++++++ .../lib/predefined/backup/backup-error.tsx | 49 ++ .../lib/predefined/backup/backup-features.tsx | 88 +++ .../lib/predefined/backup/backup-password.tsx | 141 +++++ .../lib/predefined/backup/backup-progress.tsx | 72 +++ .../lib/predefined/backup/backup-success.tsx | 90 +++ .../src/lib/predefined/overview-predefined.ts | 4 +- .../generic-view/ui/src/lib/shared/button.tsx | 1 + .../utils/src/lib/models/button.types.ts | 11 +- .../utils/src/lib/models/icons.types.ts | 7 + .../views/src/lib/mc-overview/mc-overview.ts | 27 - .../section-backup/backup-create-modal.ts | 35 ++ .../section-backup/section-backup.ts | 12 +- .../section-update/section-update.ts | 1 + .../utils/src/lib/call-renderer.helper.ts | 3 +- .../utils/src/lib/main-event.constant.ts | 4 + libs/system-utils/feature/.babelrc | 20 + libs/system-utils/feature/.eslintrc.json | 18 + libs/system-utils/feature/README.md | 7 + libs/system-utils/feature/jest.config.ts | 11 + libs/system-utils/feature/project.json | 20 + libs/system-utils/feature/src/index.ts | 6 + .../src/lib/directory/directory.service.ts | 26 + .../feature/src/lib/system-utils.module.ts | 16 + libs/system-utils/feature/tsconfig.json | 20 + libs/system-utils/feature/tsconfig.lib.json | 24 + libs/system-utils/feature/tsconfig.spec.json | 20 + libs/system-utils/models/.babelrc | 20 + libs/system-utils/models/.eslintrc.json | 18 + libs/system-utils/models/README.md | 7 + libs/system-utils/models/jest.config.ts | 11 + libs/system-utils/models/project.json | 20 + libs/system-utils/models/src/index.ts | 6 + .../src/lib/directory-service-events.ts | 8 + libs/system-utils/models/tsconfig.json | 20 + libs/system-utils/models/tsconfig.lib.json | 24 + libs/system-utils/models/tsconfig.spec.json | 20 + package-lock.json | 36 +- package.json | 8 +- tsconfig.base.json | 4 +- 156 files changed, 3858 insertions(+), 958 deletions(-) delete mode 100644 libs/core/__deprecated__/main/main.ts create mode 100644 libs/core/settings/store/schemas/generate-application-id.ts create mode 100644 libs/device/feature/src/lib/file-manager/file-manager.service.ts create mode 100644 libs/device/feature/src/lib/file-manager/index.ts create mode 100644 libs/device/feature/src/lib/file-manager/open-backup-directory.request.ts create mode 100644 libs/device/feature/src/lib/file-manager/read-backup-directory.request.ts create mode 100644 libs/device/feature/src/lib/file-manager/read-directory.request.ts create mode 100644 libs/device/feature/src/lib/file-manager/save-backup-file.request.ts create mode 100644 libs/device/feature/src/lib/file-manager/save-file.request.ts create mode 100644 libs/device/feature/src/lib/file-transfer/file-transfer.service.ts create mode 100644 libs/device/feature/src/lib/file-transfer/get-file.request.ts create mode 100644 libs/device/feature/src/lib/file-transfer/index.ts create mode 100644 libs/device/feature/src/lib/file-transfer/send-clear.request.ts create mode 100644 libs/device/feature/src/lib/file-transfer/send-file.request.ts create mode 100644 libs/device/feature/src/lib/file-transfer/start-pre-get-file.request.ts create mode 100644 libs/device/feature/src/lib/file-transfer/start-pre-send-file.request.ts create mode 100644 libs/device/feature/src/lib/service-bridge/index.ts create mode 100644 libs/device/feature/src/lib/service-bridge/service-bridge.ts create mode 100644 libs/device/models/src/lib/file-transfer/file-transfer-statuses.ts create mode 100644 libs/device/models/src/lib/file-transfer/file-transfer.ts create mode 100644 libs/device/models/src/lib/file-transfer/index.ts create mode 100644 libs/device/models/src/lib/renderer-to-main-events/api-file-transfer-service-events.ts create mode 100644 libs/device/models/src/lib/renderer-to-main-events/file-manager-service-events.ts create mode 100644 libs/generic-view/feature/src/lib/api-device-modals.tsx create mode 100644 libs/generic-view/store/src/lib/backup/create-backup.action.ts create mode 100644 libs/generic-view/store/src/lib/backup/refresh-backup-list.action.ts create mode 100644 libs/generic-view/store/src/lib/file-transfer/actions.ts create mode 100644 libs/generic-view/store/src/lib/file-transfer/get-file.action.ts create mode 100644 libs/generic-view/store/src/lib/file-transfer/reducer.ts create mode 100644 libs/generic-view/store/src/lib/file-transfer/send-file.action.ts create mode 100644 libs/generic-view/store/src/lib/hooks/use-app-events-listeners.ts create mode 100644 libs/generic-view/store/src/lib/hooks/use-backup-list.ts create mode 100644 libs/generic-view/store/src/lib/selectors/active-device-configuration.ts create mode 100644 libs/generic-view/store/src/lib/selectors/backup-location.ts create mode 100644 libs/generic-view/store/src/lib/selectors/backup-process-status.ts create mode 100644 libs/generic-view/store/src/lib/selectors/backup-progress.ts create mode 100644 libs/generic-view/ui/src/lib/icon/svg/backup.svg create mode 100644 libs/generic-view/ui/src/lib/icon/svg/confirm.svg create mode 100644 libs/generic-view/ui/src/lib/icon/svg/failed.svg create mode 100644 libs/generic-view/ui/src/lib/icon/svg/folder.svg create mode 100644 libs/generic-view/ui/src/lib/icon/svg/password-hide.svg create mode 100644 libs/generic-view/ui/src/lib/icon/svg/password-show.svg create mode 100644 libs/generic-view/ui/src/lib/icon/svg/settings.svg create mode 100644 libs/generic-view/ui/src/lib/interactive/form/form.tsx create mode 100644 libs/generic-view/ui/src/lib/interactive/input/text-input.tsx create mode 100644 libs/generic-view/ui/src/lib/interactive/modal/index.ts create mode 100644 libs/generic-view/ui/src/lib/interactive/modal/modal-helpers.tsx create mode 100644 libs/generic-view/ui/src/lib/interactive/progress-bar/progress-bar.tsx create mode 100644 libs/generic-view/ui/src/lib/predefined/backup/backup-create.tsx create mode 100644 libs/generic-view/ui/src/lib/predefined/backup/backup-error.tsx create mode 100644 libs/generic-view/ui/src/lib/predefined/backup/backup-features.tsx create mode 100644 libs/generic-view/ui/src/lib/predefined/backup/backup-password.tsx create mode 100644 libs/generic-view/ui/src/lib/predefined/backup/backup-progress.tsx create mode 100644 libs/generic-view/ui/src/lib/predefined/backup/backup-success.tsx create mode 100644 libs/generic-view/views/src/lib/mc-overview/section-backup/backup-create-modal.ts create mode 100644 libs/system-utils/feature/.babelrc create mode 100644 libs/system-utils/feature/.eslintrc.json create mode 100644 libs/system-utils/feature/README.md create mode 100644 libs/system-utils/feature/jest.config.ts create mode 100644 libs/system-utils/feature/project.json create mode 100644 libs/system-utils/feature/src/index.ts create mode 100644 libs/system-utils/feature/src/lib/directory/directory.service.ts create mode 100644 libs/system-utils/feature/src/lib/system-utils.module.ts create mode 100644 libs/system-utils/feature/tsconfig.json create mode 100644 libs/system-utils/feature/tsconfig.lib.json create mode 100644 libs/system-utils/feature/tsconfig.spec.json create mode 100644 libs/system-utils/models/.babelrc create mode 100644 libs/system-utils/models/.eslintrc.json create mode 100644 libs/system-utils/models/README.md create mode 100644 libs/system-utils/models/jest.config.ts create mode 100644 libs/system-utils/models/project.json create mode 100644 libs/system-utils/models/src/index.ts create mode 100644 libs/system-utils/models/src/lib/directory-service-events.ts create mode 100644 libs/system-utils/models/tsconfig.json create mode 100644 libs/system-utils/models/tsconfig.lib.json create mode 100644 libs/system-utils/models/tsconfig.spec.json diff --git a/.stylelintrc.js b/.stylelintrc.js index d2bc3333a..c7f62c7ef 100644 --- a/.stylelintrc.js +++ b/.stylelintrc.js @@ -2,5 +2,6 @@ module.exports = { extends: "@mudita/stylelint-config", rules: { "no-descending-specificity": null, - } + "selector-type-no-unknown": [true, { ignoreTypes: ["$dummyValue"] }], + }, } diff --git a/apps/mudita-center/src/main.ts b/apps/mudita-center/src/main.ts index 92a1be41c..523f01e75 100644 --- a/apps/mudita-center/src/main.ts +++ b/apps/mudita-center/src/main.ts @@ -81,6 +81,7 @@ import installExtension, { REDUX_DEVTOOLS, REACT_DEVELOPER_TOOLS, } from "electron-devtools-installer" +import { AppEvents, callRenderer } from "shared/utils" // AUTO DISABLED - fix me if you like :) // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call @@ -190,6 +191,10 @@ const createWindow = async () => { app.exit() }) + win.on("focus", () => { + callRenderer(AppEvents.WindowFocused) + }) + new MetadataInitializer(metadataStore).init() const registerDownloadListener = createDownloadListenerRegistrar(win) diff --git a/demo-data/kompakt-img.ts b/demo-data/kompakt-img.ts index 2f681f1af..8f0d3660c 100644 --- a/demo-data/kompakt-img.ts +++ b/demo-data/kompakt-img.ts @@ -1,2 +1,2 @@ export const kompaktImg = - "data:image/png;base64,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" + "data:image/png;base64,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hRfWrzfeeON6xfyrX/1KHfWd76hXVgruXVZfXb3mta9VG264oQL9Qef4jDPOEMuvuOIK9cVKCQQrIOWplZgCISWDHm6dGFMkLk3OgRHyiRauO2OoLqW8IVKPRnFbT8f71AspadWdV15ZbVC5MpqAygdVPulVK/P1hz/0ofr9ySedVJuyJchnToKDzN8pbqlWvbfddpu680orqTvf+c4qF1ot31ZZS8isnso+2oxBdSXfHJAhgdJArocnPelJ9ev17nEPtdtuu6kdd9xR3aVSKGKc89e/qh//+Mdq6623Dsoo5uaAAw4Q29Jvi5SNhre9/e3qMY95TP163fXWUw9/+MPVO97xDrX22msr0C/0Oz7wwAPVV776VdZNdeghh9RWo1zIwkn3B4q3KQnYvv7669WSJUuCewpdG834dI9KudIWAq37oCUd0aC4GpkiK+jdRCrONvMbxVCEcRP5sR3B3bq6AJz+8xmpCyPTSXtIcRP0yzl0dKxyjMk/OSsqz3rmM9vXJJivueaaoA6tLHeqBMtTn/KU+t/rXvc69feLLgrqzVbni/zjr6/Kn/rkJ6unP/Wp6pnPeEbtDz///POdunQTed5zn6u2fN7z6tUpBX3uvPPO6klbbKGe8bSnqZe8+MXqDCZwlC623/3ud2r7V71KPbmq24zxucoU3vjyQR70fTdceeWVQTn51pcu5dcQpGQ0QoPcGLdVip3P8T/5ibpwaHWgvjhIADXQathnnXXWQUr7HiGle80116xfn3rKKer0ylXlc3nlUvre975XvybLpaioV7/FP1Qusne+853qKfR7r363T64U0rfusEP9G7UFA91LKe6FfvOHfPnL6qrKEvr+97+/vp+89CUvUdddd11dj66H71RWqW222aYOEqU+X1rdC+gesTxiAVvx0UIIgnztRzwZkRbSu3jdkZtj9H4celv6uTcHwZwy15ihMjF81vxChQLwGuh78VcVl156qXpDZeqmaHCKsqfVwmmnnqpeV5meG0FBkCD/9Cc/WSsdtDOAlAWyclD/P6mEyqu3314dXZnVG2hl9I9//KOO0/jiF75QKwc//9nP1A033FD/O/fcc9Ub3vCG+q/dhla6O1Q+9j9WigbNhcb997//rb5c3aBojP/85z8K5PGwauXf8PWvf119qLJQUfQ+rTJT0EryBS98Yf36ggsuUN/97ned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" diff --git a/libs/core/__deprecated__/main/main.ts b/libs/core/__deprecated__/main/main.ts deleted file mode 100644 index ecafc194c..000000000 --- a/libs/core/__deprecated__/main/main.ts +++ /dev/null @@ -1,593 +0,0 @@ -/** - * Copyright (c) Mudita sp. z o.o. All rights reserved. - * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md - */ - -import "reflect-metadata" -import { check as checkPort } from "tcp-port-used" -import { - app, - BrowserWindow, - BrowserWindowConstructorOptions, - shell, -} from "electron" -import { ipcMain } from "electron-better-ipc" -import * as path from "path" -import * as url from "url" -import packageInfo from "Root/apps/mudita-center/package.json" -import registerPureOsDownloadListener from "Core/__deprecated__/main/functions/register-pure-os-download-listener" -import registerNewsListener from "Core/__deprecated__/main/functions/register-news-listener/register-news-listener" -import registerAppLogsListeners from "Core/__deprecated__/main/functions/register-app-logs-listener" -import registerContactsExportListener from "Core/contacts/backend/export-contacts" -import registerWriteFileListener from "Core/__deprecated__/main/functions/register-write-file-listener" -import registerCopyFileListener from "Core/__deprecated__/main/functions/register-copy-file-listener" -import registerWriteGzipListener from "Core/__deprecated__/main/functions/register-write-gzip-listener" -import registerRmdirListener from "Core/__deprecated__/main/functions/register-rmdir-listener" -import registerArchiveFilesListener from "Core/__deprecated__/main/functions/register-archive-files-listener" -import createDownloadListenerRegistrar from "Core/__deprecated__/main/functions/create-download-listener-registrar" -import { - registerDownloadHelpHandler, - removeDownloadHelpHandler, -} from "Core/__deprecated__/main/functions/download-help-handler" -import { - registerSetHelpStoreHandler, - removeSetHelpStoreHandler, -} from "Core/__deprecated__/main/functions/set-help-store-handler" -import { - registerGetHelpStoreHandler, - removeGetHelpStoreHandler, -} from "Core/__deprecated__/main/functions/get-help-store-handler" -import { GoogleAuthActions } from "Core/__deprecated__/common/enums/google-auth-actions.enum" -import { - authServerPort, - createAuthServer, - killAuthServer, -} from "Core/__deprecated__/main/auth-server" -import logger from "Core/__deprecated__/main/utils/logger" -import { Scope } from "Core/__deprecated__/renderer/models/external-providers/google/google.interface" -import { OutlookAuthActions } from "Core/__deprecated__/common/enums/outlook-auth-actions.enum" -import { - clientId, - redirectUrl, -} from "Core/__deprecated__/renderer/models/external-providers/outlook/outlook.constants" -import { TokenRequester } from "Core/__deprecated__/renderer/models/external-providers/outlook/token-requester" -import { - GOOGLE_AUTH_WINDOW_SIZE, - WINDOW_SIZE, - DEFAULT_WINDOWS_SIZE, -} from "./config" -import autoupdate, { mockAutoupdate } from "./autoupdate" -import { - URL_MAIN, - URL_OVERVIEW, -} from "Core/__deprecated__/renderer/constants/urls" -import { Mode } from "Core/__deprecated__/common/enums/mode.enum" -import { HelpActions } from "Core/__deprecated__/common/enums/help-actions.enum" -import { AboutActions } from "Core/__deprecated__/common/enums/about-actions.enum" -import { PureSystemActions } from "Core/__deprecated__/common/enums/pure-system-actions.enum" -import { BrowserActions } from "Core/__deprecated__/common/enums/browser-actions.enum" -import { - createMetadataStore, - MetadataStore, - MetadataInitializer, - registerMetadataAllGetValueListener, - registerMetadataGetValueListener, - registerMetadataSetValueListener, -} from "Core/metadata" -import { registerOsUpdateAlreadyDownloadedCheck } from "Core/update/requests" -import { createSettingsService } from "Core/settings/containers/settings.container" -import { ApplicationModule } from "Core/core/application.module" -import registerExternalUsageDevice from "Core/device/listeners/register-external-usage-device.listner" -import installExtension, { - REDUX_DEVTOOLS, - REACT_DEVELOPER_TOOLS, -} from "electron-devtools-installer" -import isPrereleaseSet from "Core/utils/is-prerelease-set" - -// AUTO DISABLED - fix me if you like :) -// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call -require("dotenv").config() - -// FIXME: electron v12 added changes to the remote module. This module has many subtle pitfalls. -// There is almost always a better way to accomplish your task than using this module. -// You can read more in https://github.com/electron/remote#migrating-from-remote -require("@electron/remote/main").initialize() - -logger.info("Starting the app") - -let win: BrowserWindow | null -let helpWindow: BrowserWindow | null = null -let googleAuthWindow: BrowserWindow | null = null -let outlookAuthWindow: BrowserWindow | null = null -const licenseWindow: BrowserWindow | null = null -const termsWindow: BrowserWindow | null = null -const policyWindow: BrowserWindow | null = null -const metadataStore: MetadataStore = createMetadataStore() - -// Disabling browser security features -// to address CORS issue between local and remote servers. -// To be handled as part of ticket https://appnroll.atlassian.net/browse/CP-2242 -app.commandLine.appendSwitch( - "disable-features", - "BlockInsecurePrivateNetworkRequests,PrivateNetworkAccessSendPreflights" -) - -const gotTheLock = app.requestSingleInstanceLock() - -// Fetch and log all errors -process.on("uncaughtException", (error) => { - logger.error(error) - // TODO: Add contact support modal -}) - -const productionEnvironment = process.env.NODE_ENV === "production" -const commonWindowOptions: BrowserWindowConstructorOptions = { - resizable: true, - fullscreen: false, - fullscreenable: true, - useContentSize: true, - webPreferences: { - nodeIntegration: true, - webSecurity: false, - // FIXME: electron v12 throw error: 'Require' is not defined. `contextIsolation` default value is changed to `true`. - // You can read more in https://www.electronjs.org/blog/electron-12-0#breaking-changes - contextIsolation: false, - }, -} -const getWindowOptions = ( - extendedWindowOptions?: BrowserWindowConstructorOptions -) => ({ - ...commonWindowOptions, - ...extendedWindowOptions, -}) - -const installElectronDevToolExtensions = async () => { - try { - await installExtension([REDUX_DEVTOOLS, REACT_DEVELOPER_TOOLS], { - loadExtensionOptions: { - allowFileAccess: true, - }, - }) - console.info(`[INFO] Successfully added devtools extensions`) - } catch (err) { - console.warn( - "[WARN] An error occurred while trying to add devtools extensions:\n", - err - ) - } -} - -const createWindow = async () => { - const version = packageInfo.version - const prereleaseSet = isPrereleaseSet(version) - const title = prereleaseSet ? `Mudita Center - ${version}` : "Mudita Center" - - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-call - ;(global as any).__static = require("path") - .join(__dirname, "/static") - .replace(/\\/g, "\\\\") - - win = new BrowserWindow( - getWindowOptions({ - minWidth: WINDOW_SIZE.minWidth, - width: WINDOW_SIZE.width, - minHeight: WINDOW_SIZE.minHeight, - height: WINDOW_SIZE.height, - title, - }) - ) - // FIXME: electron v12 added changes to the remote module. This module has many subtle pitfalls. - // There is almost always a better way to accomplish your task than using this module. - // You can read more in https://github.com/electron/remote#migrating-from-remote - require("@electron/remote/main").enable(win.webContents) - win.removeMenu() - - win.webContents.on("before-input-event", (event, input) => { - if ((input.control || input.meta) && input.key.toLowerCase() === "r") { - event.preventDefault() - } - }) - - win.on("closed", () => { - win = null - app.exit() - }) - - new MetadataInitializer(metadataStore).init() - - const registerDownloadListener = createDownloadListenerRegistrar(win) - - const settingsService = createSettingsService() - settingsService.init() - - const appModules = new ApplicationModule(ipcMain, win) - - registerPureOsDownloadListener(registerDownloadListener) - registerOsUpdateAlreadyDownloadedCheck() - registerNewsListener() - registerAppLogsListeners() - registerContactsExportListener() - registerWriteFileListener() - registerCopyFileListener() - registerRmdirListener() - registerWriteGzipListener() - registerArchiveFilesListener() - registerMetadataAllGetValueListener() - registerMetadataGetValueListener() - registerMetadataSetValueListener() - registerExternalUsageDevice() - - if (productionEnvironment) { - win.setMenuBarVisibility(false) - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/no-floating-promises - win.loadURL( - url.format({ - pathname: path.join(__dirname, "index.html"), - protocol: "file:", - slashes: true, - }) - ) - autoupdate(win) - } else { - await installElectronDevToolExtensions() - process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = "1" - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/no-floating-promises - win.loadURL(`http://localhost:2003`) - mockAutoupdate(win) - } - - win.webContents.setWindowOpenHandler(({ url }) => { - shell.openExternal(url) - return { - action: "deny", - overrideBrowserWindowOptions: {}, - } - }) - - if (productionEnvironment) { - win.webContents.once("dom-ready", () => { - appModules.lateInitialization() - }) - } else { - // Open DevTools, see https://github.com/electron/electron/issues/12438 for why we wait for dom-ready - win.webContents.once("dom-ready", () => { - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - win!.webContents.openDevTools() - appModules.lateInitialization() - }) - - win.webContents.once("dom-ready", () => { - win!.webContents.once("devtools-opened", () => { - win!.focus() - }) - win!.webContents.openDevTools() - }) - } - - logger.updateMetadata() -} - -if (!gotTheLock) { - app.quit() -} else { - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/no-misused-promises - app.on("ready", createWindow) - - app.on("window-all-closed", () => { - app.quit() - }) - - app.on("activate", () => { - if (win === null) { - void createWindow() - } - }) -} - -ipcMain.answerRenderer(HelpActions.OpenWindow, () => { - const title = "Mudita Center - Help" - if (helpWindow === null) { - helpWindow = new BrowserWindow( - getWindowOptions({ - width: DEFAULT_WINDOWS_SIZE.width, - height: DEFAULT_WINDOWS_SIZE.height, - title, - }) - ) - // FIXME: electron v12 added changes to the remote module. This module has many subtle pitfalls. - // There is almost always a better way to accomplish your task than using this module. - // You can read more in https://github.com/electron/remote#migrating-from-remote - require("@electron/remote/main").enable(helpWindow.webContents) - helpWindow.removeMenu() - - helpWindow.on("closed", () => { - removeDownloadHelpHandler() - removeSetHelpStoreHandler() - removeGetHelpStoreHandler() - helpWindow = null - }) - - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/no-floating-promises - helpWindow.loadURL( - !productionEnvironment - ? `http://localhost:2003/?mode=${Mode.Help}#${URL_MAIN.help}` - : url.format({ - pathname: path.join(__dirname, "index.html"), - protocol: "file:", - slashes: true, - hash: URL_MAIN.help, - search: `?mode=${Mode.Help}`, - }) - ) - registerDownloadHelpHandler() - registerSetHelpStoreHandler() - registerGetHelpStoreHandler() - } else { - helpWindow.show() - } -}) - -const createOpenWindowListener = ( - channel: string, - mode: string, - urlMain: string, - title: string, - newWindow: BrowserWindow | null = null -) => { - ipcMain.answerRenderer(channel, async () => { - if (newWindow === null) { - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/await-thenable - newWindow = new BrowserWindow( - getWindowOptions({ - width: DEFAULT_WINDOWS_SIZE.width, - height: DEFAULT_WINDOWS_SIZE.height, - title, - }) - ) - // FIXME: electron v12 added changes to the remote module. This module has many subtle pitfalls. - // There is almost always a better way to accomplish your task than using this module. - // You can read more in https://github.com/electron/remote#migrating-from-remote - require("@electron/remote/main").enable(newWindow.webContents) - newWindow.removeMenu() - - newWindow.on("closed", () => { - newWindow = null - }) - - await newWindow.loadURL( - !productionEnvironment - ? `http://localhost:2003/?mode=${mode}#${urlMain}` - : url.format({ - pathname: path.join(__dirname, "index.html"), - protocol: "file:", - slashes: true, - hash: urlMain, - search: `?mode=${mode}`, - }) - ) - - newWindow.webContents.setWindowOpenHandler(({ url }) => { - shell.openExternal(url) - return { - action: "allow", - overrideBrowserWindowOptions: {}, - } - }) - } else { - newWindow.show() - } - }) -} - -ipcMain.answerRenderer(BrowserActions.PolicyOpenBrowser, () => - shell.openExternal( - `${process.env.MUDITA_CENTER_SERVER_URL ?? ""}/privacy-policy-url` - ) -) -ipcMain.answerRenderer(BrowserActions.UpdateOpenBrowser, () => - shell.openExternal("https://mudita.com") -) - -ipcMain.answerRenderer(BrowserActions.AppleOpenBrowser, () => - shell.openExternal( - "https://support.apple.com/en-al/guide/contacts/adrbdcfd32e6/mac#:~:text=In%20the%20Contacts%20app%20on,vcf)%20only." - ) -) - -createOpenWindowListener( - AboutActions.LicenseOpenWindow, - Mode.License, - URL_MAIN.license, - "Mudita Center - License", - licenseWindow -) - -createOpenWindowListener( - AboutActions.TermsOpenWindow, - Mode.TermsOfService, - URL_MAIN.termsOfService, - "Mudita Center - Terms of service", - termsWindow -) - -createOpenWindowListener( - AboutActions.PolicyOpenWindow, - Mode.PrivacyPolicy, - URL_MAIN.privacyPolicy, - "Mudita Center - Privacy policy", - policyWindow -) - -createOpenWindowListener( - PureSystemActions.SarOpenWindow, - Mode.Sar, - URL_OVERVIEW.sar, - "Mudita Center - SAR information", - policyWindow -) - -const createErrorWindow = async (googleAuthWindow: BrowserWindow) => { - return await googleAuthWindow.loadURL( - !productionEnvironment - ? `http://localhost:2003/?mode=${Mode.ServerError}#${URL_MAIN.error}` - : url.format({ - pathname: path.join(__dirname, "index.html"), - protocol: "file:", - slashes: true, - hash: URL_MAIN.error, - search: `?mode=${Mode.ServerError}`, - }) - ) -} - -ipcMain.answerRenderer(GoogleAuthActions.OpenWindow, async (scope: Scope) => { - const title = "Mudita Center - Google Auth" - if (process.env.MUDITA_CENTER_SERVER_URL) { - const cb = (data: string) => { - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/no-floating-promises - ipcMain.callRenderer( - win as BrowserWindow, - GoogleAuthActions.GotCredentials, - data - ) - } - - if (googleAuthWindow === null) { - googleAuthWindow = new BrowserWindow( - getWindowOptions({ - width: GOOGLE_AUTH_WINDOW_SIZE.width, - height: GOOGLE_AUTH_WINDOW_SIZE.height, - title, - webPreferences: { - nodeIntegration: true, - }, - }) - ) - googleAuthWindow.removeMenu() - - googleAuthWindow.on("close", () => { - void ipcMain.callRenderer( - win as BrowserWindow, - GoogleAuthActions.CloseWindow - ) - googleAuthWindow = null - killAuthServer() - }) - - if (await checkPort(authServerPort)) { - await createErrorWindow(googleAuthWindow) - return - } - - createAuthServer(cb) - - let scopeUrl: string - - switch (scope) { - case Scope.Calendar: - scopeUrl = "https://www.googleapis.com/auth/calendar" - break - case Scope.Contacts: - scopeUrl = "https://www.googleapis.com/auth/contacts" - break - } - const url = `${process.env.MUDITA_CENTER_SERVER_URL}/google-auth-init` - void (await googleAuthWindow.loadURL(`${url}?scope=${scopeUrl}`)) - } else { - googleAuthWindow.show() - } - } else { - console.log("No Google Auth URL defined!") - } -}) - -ipcMain.answerRenderer(GoogleAuthActions.CloseWindow, () => { - killAuthServer() - googleAuthWindow?.close() -}) - -ipcMain.answerRenderer( - OutlookAuthActions.OpenWindow, - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/require-await - async (data: { authorizationUrl: string; scope: string }) => { - const title = "Mudita Center - Outlook Auth" - const { authorizationUrl, scope } = data - if (clientId) { - if (outlookAuthWindow === null) { - outlookAuthWindow = new BrowserWindow( - getWindowOptions({ - width: 600, - height: 600, - title, - }) - ) - outlookAuthWindow.removeMenu() - - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/no-floating-promises - outlookAuthWindow.loadURL(authorizationUrl) - - outlookAuthWindow.on("close", () => { - void ipcMain.callRenderer( - win as BrowserWindow, - OutlookAuthActions.CloseWindow - ) - outlookAuthWindow = null - }) - - const { - session: { webRequest }, - } = outlookAuthWindow.webContents - webRequest.onBeforeRequest( - { - urls: [`${redirectUrl}*`], - }, // * character is used to "catch all" url params - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/no-misused-promises - async ({ url }) => { - const code = new URL(url).searchParams.get("code") || "" - try { - const tokenRequester = new TokenRequester() - const tokens = await tokenRequester.requestTokens(code, scope) - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/no-floating-promises - ipcMain.callRenderer( - win as BrowserWindow, - OutlookAuthActions.GotCredentials, - tokens - ) - } catch (error) { - // AUTO DISABLED - fix me if you like :) - // eslint-disable-next-line @typescript-eslint/no-floating-promises - ipcMain.callRenderer( - win as BrowserWindow, - OutlookAuthActions.GotCredentials, - { error } - ) - } - - outlookAuthWindow?.close() - outlookAuthWindow = null - } - ) - } else { - outlookAuthWindow.show() - } - } else { - logger.info("No Outlook Auth URL defined!") - } - } -) - -ipcMain.answerRenderer(OutlookAuthActions.CloseWindow, () => { - outlookAuthWindow?.close() -}) diff --git a/libs/core/__deprecated__/renderer/components/rest/header/header.test.tsx b/libs/core/__deprecated__/renderer/components/rest/header/header.test.tsx index 27c04aac7..c73fba719 100644 --- a/libs/core/__deprecated__/renderer/components/rest/header/header.test.tsx +++ b/libs/core/__deprecated__/renderer/components/rest/header/header.test.tsx @@ -16,6 +16,10 @@ import store from "Core/__deprecated__/renderer/store" jest.mock("Core/feature-flags") +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + test("matches snapshot without tabs", () => { const currentLocation = "/overview" const { container } = renderWithThemeAndIntl( diff --git a/libs/core/__deprecated__/renderer/components/rest/menu/menu.test.tsx b/libs/core/__deprecated__/renderer/components/rest/menu/menu.test.tsx index 72541e13c..93acab9dd 100644 --- a/libs/core/__deprecated__/renderer/components/rest/menu/menu.test.tsx +++ b/libs/core/__deprecated__/renderer/components/rest/menu/menu.test.tsx @@ -27,6 +27,10 @@ import { } from "Core/device-initialization/reducers/device-initialization.interface" import { DeviceManagerState } from "Core/device-manager/reducers/device-manager.interface" +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + jest.mock("Core/feature-flags") type Props = MenuProps diff --git a/libs/core/__deprecated__/renderer/locales/default/en-US.json b/libs/core/__deprecated__/renderer/locales/default/en-US.json index 0a39cadf3..eb857aba5 100644 --- a/libs/core/__deprecated__/renderer/locales/default/en-US.json +++ b/libs/core/__deprecated__/renderer/locales/default/en-US.json @@ -862,5 +862,32 @@ "module.genericBackup.createButtonLabel": "Create backup", "module.genericBackup.restoreButtonLabel": "Restore from backup", "module.genericViews.update.tag": "Update is available ({version}).", - "module.genericViews.update.actionLabel": "You can update it on your device." + "module.genericViews.update.actionLabel": "You can update it on your device.", + "module.genericViews.backup.features.title": "Create backup", + "module.genericViews.backup.features.description": "All backup data stays on your computer.", + "module.genericViews.backup.features.cancelButtonLabel": "Cancel", + "module.genericViews.backup.features.createButtonLabel": "Create backup", + "module.genericViews.backup.password.title": "Create password for backup", + "module.genericViews.backup.password.subtitle": "(optional)", + "module.genericViews.backup.password.description": "You can protect backup with a new password.", + "module.genericViews.backup.password.description2": "* You can't change/recover the password later.", + "module.genericViews.backup.password.passwordPlaceholder": "Password", + "module.genericViews.backup.password.passwordRepeatPlaceholder": "Repeat password", + "module.genericViews.backup.password.passwordRepeatNotMatchingError": "Passwords do not match", + "module.genericViews.backup.password.confirmButtonLabel": "Confirm password", + "module.genericViews.backup.password.skipButtonLabel": "Skip password", + "module.genericViews.backup.progress.title": "Creating backup", + "module.genericViews.backup.progress.description": "Please wait and do not unplug your device from computer.", + "module.genericViews.backup.progress.progressDetails": "This might take a few minutes", + "module.genericViews.backup.progress.progressDetailsForFeature": "Backing up {featureLabel}", + "module.genericViews.backup.success.title": "Backup complete", + "module.genericViews.backup.success.description": "Your data was successfully secured.\nOpen the backup folder to see your backup data or close this window.", + "module.genericViews.backup.success.openBackupButtonLabel": "Open backup folder", + "module.genericViews.backup.success.closeButtonLabel": "Close", + "module.genericViews.backup.failure.title": "Backup failed", + "module.genericViews.backup.failure.defaultErrorMessage": "The backup process was interrupted.", + "module.genericViews.backup.failure.closeButtonLabel": "Close", + "module.genericViews.backup.directoryOpenFailure.title": "Directory open failed", + "module.genericViews.backup.directoryOpenFailure.defaultErrorMessage": "The directory could not be opened.\n\nYou can still try to find the backup in the default location:", + "module.genericViews.backup.directoryOpenFailure.closeButtonLabel": "Close" } diff --git a/libs/core/__deprecated__/renderer/store/reducers.ts b/libs/core/__deprecated__/renderer/store/reducers.ts index 9d3d8435a..bf20841ea 100644 --- a/libs/core/__deprecated__/renderer/store/reducers.ts +++ b/libs/core/__deprecated__/renderer/store/reducers.ts @@ -24,6 +24,7 @@ import { appInitializationReducer } from "Core/app-initialization/reducers/app-i import { deviceManagerReducer } from "Core/device-manager/reducers/device-manager.reducer" import { genericBackupsReducer, + genericFileTransferReducer, genericModalsReducer, genericViewsReducer, } from "generic-view/store" @@ -51,6 +52,7 @@ export const reducers = { genericViews: genericViewsReducer, genericModals: genericModalsReducer, genericBackups: genericBackupsReducer, + genericFileTransfer: genericFileTransferReducer, appState: appStateReducer, } diff --git a/libs/core/__deprecated__/renderer/wrappers/app-update-step-modal/app-update-step-modal.component.test.tsx b/libs/core/__deprecated__/renderer/wrappers/app-update-step-modal/app-update-step-modal.component.test.tsx index aac20a9ef..ad344d4fb 100644 --- a/libs/core/__deprecated__/renderer/wrappers/app-update-step-modal/app-update-step-modal.component.test.tsx +++ b/libs/core/__deprecated__/renderer/wrappers/app-update-step-modal/app-update-step-modal.component.test.tsx @@ -17,6 +17,10 @@ import { AppUpdateStepModalTestIds } from "Core/__deprecated__/renderer/wrappers import { Provider } from "react-redux" import store from "../../store" +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + const onCloseMock = jest.fn() const openExternalMock = jest.fn() diff --git a/libs/core/contact-support/containers/contact-support-flow.container.test.tsx b/libs/core/contact-support/containers/contact-support-flow.container.test.tsx index 987be5d2e..3d622c96c 100644 --- a/libs/core/contact-support/containers/contact-support-flow.container.test.tsx +++ b/libs/core/contact-support/containers/contact-support-flow.container.test.tsx @@ -11,6 +11,10 @@ import ModalsManager from "Core/modals-manager/components/modals-manager.contain import ContactSupportFlow from "Core/contact-support/containers/contact-support-flow.container" import { ContactSupportFlowTestIds } from "Core/contact-support/components/contact-support-flow-test-ids.component" +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + type Props = ComponentProps const defaultProps: Props = {} diff --git a/libs/core/contacts/components/contacts/contacts.component.test.tsx b/libs/core/contacts/components/contacts/contacts.component.test.tsx index 5a0717a9d..2c8c09856 100644 --- a/libs/core/contacts/components/contacts/contacts.component.test.tsx +++ b/libs/core/contacts/components/contacts/contacts.component.test.tsx @@ -38,6 +38,10 @@ window.IntersectionObserver = jest type Props = ComponentProps +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + jest.mock("@electron/remote", () => ({ Menu: () => ({ popup: jest.fn(), diff --git a/libs/core/core/application.module.ts b/libs/core/core/application.module.ts index 400dbc3a6..e220132f3 100644 --- a/libs/core/core/application.module.ts +++ b/libs/core/core/application.module.ts @@ -46,6 +46,7 @@ import { } from "Core/device-manager/services" import { APIModule } from "device/feature" import { FileSystemDialogModule } from "shared/app-state" +import { SystemUtilsModule } from "system-utils/feature" export class ApplicationModule { public modules: Module[] = [ @@ -89,6 +90,7 @@ export class ApplicationModule { new DeviceResolverService(), this.eventEmitter ) + private systemUtilsModule = new SystemUtilsModule() constructor( private ipc: MainProcessIpc, @@ -105,11 +107,12 @@ export class ApplicationModule { this.initializeInitializer = new InitializeInitializer() this.modules.forEach(this.initModule) - this.apiModule = new APIModule(this.deviceManager) + this.apiModule = new APIModule(this.deviceManager, this.systemUtilsModule) this.controllerInitializer.initialize(this.apiModule.getAPIServices()) this.controllerInitializer.initialize( FileSystemDialogModule.getControllers() ) + this.controllerInitializer.initialize(this.systemUtilsModule.getServices()) } lateInitialization(): void { diff --git a/libs/core/core/builder/result.builder.ts b/libs/core/core/builder/result.builder.ts index 2b585bb36..32ac0cdaf 100644 --- a/libs/core/core/builder/result.builder.ts +++ b/libs/core/core/builder/result.builder.ts @@ -3,11 +3,11 @@ * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md */ -import { AppError } from "Core/core/errors" +import { AppError, AppErrorType } from "Core/core/errors" export type ResultObject< Data, - ErrorType extends string = string, + ErrorType extends AppErrorType = AppErrorType, ErrorData = unknown > = SuccessResult | FailedResult @@ -18,7 +18,7 @@ export class SuccessResult { constructor(public data: Data) {} } -export class FailedResult { +export class FailedResult { public ok: false = false constructor( @@ -32,7 +32,7 @@ export class Result { return new SuccessResult(data) } - static failed( + static failed( error: AppError, data?: Data ): FailedResult { diff --git a/libs/core/core/components/apps/base-app/base-app-routes.tsx b/libs/core/core/components/apps/base-app/base-app-routes.tsx index 94162dd1b..9d8d615c2 100644 --- a/libs/core/core/components/apps/base-app/base-app-routes.tsx +++ b/libs/core/core/components/apps/base-app/base-app-routes.tsx @@ -35,99 +35,101 @@ import ConfiguredDevicesDiscovery from "Core/discovery-device/components/configu import DevicesInitialization from "Core/device-initialization/components/devices-initialization.component" import AvailableDeviceListContainer from "Core/discovery-device/components/available-device-list.container" import DeviceConnecting from "Core/discovery-device/components/device-connecting.component" -import { GenericView } from "generic-view/feature" +import { ApiDeviceModals, GenericView } from "generic-view/feature" import { APIConnectionDemo } from "generic-view/ui" // AUTO DISABLED - fix me if you like :) // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export default () => ( - - - + <> + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) diff --git a/libs/core/core/components/apps/base-app/base-app.component.tsx b/libs/core/core/components/apps/base-app/base-app.component.tsx index 6efa9595b..887230e9a 100644 --- a/libs/core/core/components/apps/base-app/base-app.component.tsx +++ b/libs/core/core/components/apps/base-app/base-app.component.tsx @@ -18,8 +18,12 @@ import { useDeviceDetachedEffect } from "Core/core/hooks/use-device-detached-eff import { useDeviceConnectFailedEffect } from "Core/core/hooks/use-device-connect-failed-effect" import { useDiscoveryRedirectEffect } from "Core/core/hooks/use-discovery-redirect-effect" import { useRouterListener } from "Core/core/hooks" -import { useAPISerialPortListeners, useOutbox } from "generic-view/store" - +import { + OutboxWrapper, + useAPISerialPortListeners, + useBackupList, + useAppEventsListeners, +} from "generic-view/store" const BaseApp: FunctionComponent = () => { useRouterListener() @@ -33,10 +37,11 @@ const BaseApp: FunctionComponent = () => { useDiscoveryRedirectEffect() // API useAPISerialPortListeners() - useOutbox() - + useAppEventsListeners() + useBackupList() return ( <> + diff --git a/libs/core/core/errors/app-error.ts b/libs/core/core/errors/app-error.ts index f9757e16f..6dd05f26e 100644 --- a/libs/core/core/errors/app-error.ts +++ b/libs/core/core/errors/app-error.ts @@ -3,13 +3,19 @@ * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md */ -export class AppError extends Error { +export type AppErrorType = string | number + +export class AppError< + Type extends AppErrorType = AppErrorType, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + Payload = any +> extends Error { constructor( public readonly type: Type, public readonly message: string = "", // AUTO DISABLED - fix me if you like :) // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any - public readonly payload?: any + public readonly payload?: Payload ) { super() diff --git a/libs/core/core/errors/index.ts b/libs/core/core/errors/index.ts index bbd1e4cf1..e66ade5fb 100644 --- a/libs/core/core/errors/index.ts +++ b/libs/core/core/errors/index.ts @@ -4,3 +4,4 @@ */ export { AppError } from "./app-error" +export type { AppErrorType } from "./app-error" diff --git a/libs/core/device-initialization/components/devices-initialization-modal-flows/api-device-initialization-modal-flow.tsx b/libs/core/device-initialization/components/devices-initialization-modal-flows/api-device-initialization-modal-flow.tsx index fbf72cb21..de82c2273 100644 --- a/libs/core/device-initialization/components/devices-initialization-modal-flows/api-device-initialization-modal-flow.tsx +++ b/libs/core/device-initialization/components/devices-initialization-modal-flows/api-device-initialization-modal-flow.tsx @@ -19,6 +19,7 @@ import { ApiError } from "device/models" import { intl } from "Core/__deprecated__/renderer/utils/intl" import { defineMessages } from "react-intl" import { + closeButtonStyles, IconButton, ModalBase, ModalCenteredContent, @@ -122,9 +123,9 @@ export const APIDeviceInitializationModalFlow: FunctionComponent = () => { variant={"small"} overlayHidden closeButton={ - + - + } > @@ -151,3 +152,7 @@ const ConnectingText = styled.p` font-weight: ${({ theme }) => theme.fontWeight.bold}; margin: 2.4rem 0 0; ` + +const CloseButton = styled(IconButton)` + ${closeButtonStyles}; +` diff --git a/libs/core/device-manager/actions/set-active-device.action.ts b/libs/core/device-manager/actions/set-active-device.action.ts index c8cc07b10..1b0f2fbcf 100644 --- a/libs/core/device-manager/actions/set-active-device.action.ts +++ b/libs/core/device-manager/actions/set-active-device.action.ts @@ -8,12 +8,14 @@ import { ReduxRootState } from "Core/__deprecated__/renderer/store" import { DeviceManagerEvent } from "Core/device-manager/constants" import { setActiveDeviceRequest } from "Core/device-manager/requests" import { DeviceId } from "Core/device/constants/device-id" +import { cleanBackupProcess } from "generic-view/store" export const setActiveDevice = createAsyncThunk< DeviceId | undefined, DeviceId | undefined, { state: ReduxRootState } ->(DeviceManagerEvent.SetActiveDevice, async (payload) => { +>(DeviceManagerEvent.SetActiveDevice, async (payload, { dispatch }) => { await setActiveDeviceRequest(payload) + dispatch(cleanBackupProcess()) return payload }) diff --git a/libs/core/files-manager/actions/delete-files.action.test.ts b/libs/core/files-manager/actions/delete-files.action.test.ts index 5299b0b54..faefeee1b 100644 --- a/libs/core/files-manager/actions/delete-files.action.test.ts +++ b/libs/core/files-manager/actions/delete-files.action.test.ts @@ -12,11 +12,18 @@ import { Result, ResultObject } from "Core/core/builder" import { deleteFiles } from "Core/files-manager/actions/delete-files.action" import { AppError } from "Core/core/errors" import { testError } from "Core/__deprecated__/renderer/store/constants" -import { fulfilledAction, pendingAction } from "Core/__deprecated__/renderer/store" +import { + fulfilledAction, + pendingAction, +} from "Core/__deprecated__/renderer/store" import * as loadStorageInfoActionModule from "Core/device/actions/load-storage-info.action" import * as loadDeviceDataActionModule from "Core/device/actions/load-device-data.action" import { DeviceEvent } from "Core/device" +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + jest.mock("Core/files-manager/requests/delete-files.request") jest .spyOn(loadStorageInfoActionModule, "loadStorageInfoAction") @@ -26,14 +33,12 @@ jest type: pendingAction(DeviceEvent.LoadStorageInfo), } as unknown as jest.Mock) ) -jest - .spyOn(loadDeviceDataActionModule, "loadDeviceData") - .mockImplementation( - () => - ({ - type: fulfilledAction(DeviceEvent.LoadDeviceData), - } as unknown as jest.Mock) - ) +jest.spyOn(loadDeviceDataActionModule, "loadDeviceData").mockImplementation( + () => + ({ + type: fulfilledAction(DeviceEvent.LoadDeviceData), + } as unknown as jest.Mock) +) const filePaths = [ "user/music/example_file_name.mp3", "user/music/second_example_file_name.wav", diff --git a/libs/core/files-manager/actions/get-files.action.test.ts b/libs/core/files-manager/actions/get-files.action.test.ts index a5d0662d6..383e6cda9 100644 --- a/libs/core/files-manager/actions/get-files.action.test.ts +++ b/libs/core/files-manager/actions/get-files.action.test.ts @@ -18,16 +18,18 @@ import * as loadDeviceDataActionModule from "Core/device/actions/load-device-dat import { fulfilledAction } from "Core/__deprecated__/renderer/store" import { DeviceEvent } from "Core/device" +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + jest.mock("Core/files-manager/requests/get-files.request") -jest - .spyOn(loadDeviceDataActionModule, "loadDeviceData") - .mockImplementation( - () => - ({ - type: fulfilledAction(DeviceEvent.LoadDeviceData), - } as unknown as jest.Mock) - ) +jest.spyOn(loadDeviceDataActionModule, "loadDeviceData").mockImplementation( + () => + ({ + type: fulfilledAction(DeviceEvent.LoadDeviceData), + } as unknown as jest.Mock) +) const successObjectResult: ResultObject = Result.success([ { diff --git a/libs/core/help/components/help.test.tsx b/libs/core/help/components/help.test.tsx index e7f34d615..49ff37bfd 100644 --- a/libs/core/help/components/help.test.tsx +++ b/libs/core/help/components/help.test.tsx @@ -12,6 +12,10 @@ import { HelpComponentTestIds } from "Core/help/components/help.enum" import Help from "Core/help/components/help.component" import { data } from "Core/__deprecated__/seeds/help" +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + jest.mock("@electron/remote", () => ({ dialog: { showOpenDialog: jest.fn(), diff --git a/libs/core/overview/components/overview-screens/harmony-overview/harmony-overview.component.test.tsx b/libs/core/overview/components/overview-screens/harmony-overview/harmony-overview.component.test.tsx index 670612a17..f95182e85 100644 --- a/libs/core/overview/components/overview-screens/harmony-overview/harmony-overview.component.test.tsx +++ b/libs/core/overview/components/overview-screens/harmony-overview/harmony-overview.component.test.tsx @@ -16,6 +16,10 @@ import { Provider } from "react-redux" import { CheckForUpdateState } from "Core/update/constants/check-for-update-state.constant" import { CaseColour } from "Core/device" +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + jest.mock("Core/feature-flags") jest.mock("@electron/remote", () => ({ diff --git a/libs/core/overview/components/overview-screens/pure-overview/pure-overview.component.test.tsx b/libs/core/overview/components/overview-screens/pure-overview/pure-overview.component.test.tsx index 09d3a079f..cbbc6a53f 100644 --- a/libs/core/overview/components/overview-screens/pure-overview/pure-overview.component.test.tsx +++ b/libs/core/overview/components/overview-screens/pure-overview/pure-overview.component.test.tsx @@ -20,6 +20,10 @@ import { CheckForUpdateState } from "Core/update/constants/check-for-update-stat // TODO [mw] add integration tests for update process - scope of the next PR (after all the changes from CP-1681 are done) +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + jest.mock("Core/feature-flags") jest.mock("@electron/remote", () => ({ diff --git a/libs/core/overview/components/overview/overview.test.tsx b/libs/core/overview/components/overview/overview.test.tsx index be5145546..fa903a57e 100644 --- a/libs/core/overview/components/overview/overview.test.tsx +++ b/libs/core/overview/components/overview/overview.test.tsx @@ -23,6 +23,10 @@ import { CheckForUpdateState } from "Core/update/constants/check-for-update-stat type Props = ComponentProps +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + jest.mock("@electron/remote", () => ({ Menu: () => ({ popup: jest.fn(), diff --git a/libs/core/overview/components/system-update-text/system-update-text.test.tsx b/libs/core/overview/components/system-update-text/system-update-text.test.tsx index ddbbc5608..9ebd89871 100644 --- a/libs/core/overview/components/system-update-text/system-update-text.test.tsx +++ b/libs/core/overview/components/system-update-text/system-update-text.test.tsx @@ -15,6 +15,10 @@ import { initialState as update } from "Core/update/reducers" import { OsRelease } from "Core/update/dto" import { OsReleaseType, Product } from "Core/update/constants" +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + const defaultProps: SystemUpdateTextProps = { checkForUpdateFailed: false, checkForUpdateInProgress: false, diff --git a/libs/core/overview/components/update-os-flow/update-os-flow.component.test.tsx b/libs/core/overview/components/update-os-flow/update-os-flow.component.test.tsx index 01e4dd6cc..fc509587c 100644 --- a/libs/core/overview/components/update-os-flow/update-os-flow.component.test.tsx +++ b/libs/core/overview/components/update-os-flow/update-os-flow.component.test.tsx @@ -22,6 +22,10 @@ import { renderWithThemeAndIntl } from "Core/__deprecated__/renderer/utils/rende import React from "react" import { CheckForUpdateState } from "Core/update/constants/check-for-update-state.constant" +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + jest.mock("@electron/remote", () => ({ Menu: () => ({ popup: jest.fn(), diff --git a/libs/core/settings/components/about/about.test.tsx b/libs/core/settings/components/about/about.test.tsx index 5fdfe510d..4428473d2 100644 --- a/libs/core/settings/components/about/about.test.tsx +++ b/libs/core/settings/components/about/about.test.tsx @@ -15,6 +15,10 @@ import { flags } from "Core/feature-flags" import store from "Core/__deprecated__/renderer/store" import { Provider } from "react-redux" +jest.mock("Core/settings/store/schemas/generate-application-id", () => ({ + generateApplicationId: () => "123", +})) + jest.mock("Core/feature-flags") jest.mock("electron-better-ipc", () => { return { diff --git a/libs/core/settings/store/schemas/generate-application-id.ts b/libs/core/settings/store/schemas/generate-application-id.ts new file mode 100644 index 000000000..582179706 --- /dev/null +++ b/libs/core/settings/store/schemas/generate-application-id.ts @@ -0,0 +1,28 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import getMAC from "getmac" + +export const generateApplicationId = (): string | null => { + const maxApplicationIdLength = 16 + + const mac = getMACOrNull() + if (mac !== null) { + const uniqueValue = mac.replace(/:/g, "").slice(-maxApplicationIdLength) + const padLength = maxApplicationIdLength - uniqueValue.length + const pad = Math.random().toString(16).slice(-padLength) + return `${pad}${uniqueValue}` + } else { + return null + } +} + +const getMACOrNull = (): string | null => { + try { + return getMAC() + } catch (ex) { + return null + } +} diff --git a/libs/core/settings/store/schemas/settings.schema.ts b/libs/core/settings/store/schemas/settings.schema.ts index b7c0af229..c149d772c 100644 --- a/libs/core/settings/store/schemas/settings.schema.ts +++ b/libs/core/settings/store/schemas/settings.schema.ts @@ -5,33 +5,11 @@ import path from "path" import { Schema } from "electron-store" -import getMAC from "getmac" import getAppPath from "Core/__deprecated__/main/utils/get-app-path" import { Settings } from "Core/settings/dto" import { ConversionFormat, Convert } from "Core/settings/constants" import translationConfig from "App/translations.config.json" - -const generateApplicationId = (): string | null => { - const maxApplicationIdLength = 16 - - const mac = getMACOrNull() - if (mac !== null) { - const uniqueValue = mac.replace(/:/g, "").slice(-maxApplicationIdLength) - const padLength = maxApplicationIdLength - uniqueValue.length - const pad = Math.random().toString(16).slice(-padLength) - return `${pad}${uniqueValue}` - } else { - return null - } -} - -const getMACOrNull = (): string | null => { - try { - return getMAC() - } catch (ex) { - return null - } -} +import { generateApplicationId } from "Core/settings/store/schemas/generate-application-id" export const settingsSchema: Schema = { applicationId: { diff --git a/libs/device/feature/src/index.ts b/libs/device/feature/src/index.ts index 76e03c6f5..80c9b2826 100644 --- a/libs/device/feature/src/index.ts +++ b/libs/device/feature/src/index.ts @@ -10,3 +10,6 @@ export * from "./lib/api-features" export * from "./lib/outbox" export * from "./lib/menu" export * from "./lib/server" +export * from "./lib/file-transfer" +export * from "./lib/file-manager" +export * from "./lib/backup" diff --git a/libs/device/feature/src/lib/api-module.ts b/libs/device/feature/src/lib/api-module.ts index 7b36415bc..e2c065031 100644 --- a/libs/device/feature/src/lib/api-module.ts +++ b/libs/device/feature/src/lib/api-module.ts @@ -7,9 +7,14 @@ import { DeviceManager } from "Core/device-manager/services" import { APIConfigService } from "./api-config/api-config.service" import { APIFeaturesService } from "./api-features/api-features.service" import { APIBackupService } from "./backup" +import { FileManager } from "./file-manager" import { APIMenuService } from "./menu" import { APIOutboxService } from "./outbox/outbox.service" import { ServerService } from "./server/server.service" +import { APIFileTransferService } from "./file-transfer" +import { ServiceBridge } from "./service-bridge" +import { SystemUtilsModule } from "system-utils/feature" +import { createSettingsService } from "Core/settings/containers/settings.container" export class APIModule { private apiConfigService: APIConfigService @@ -18,14 +23,26 @@ export class APIModule { private apiMenuService: APIMenuService private serverService: ServerService private backupService: APIBackupService + private fileTransferService: APIFileTransferService + private fileManager: FileManager + private serviceBridge: ServiceBridge - constructor(deviceManager: DeviceManager) { + constructor( + deviceManager: DeviceManager, + systemUtilsModule: SystemUtilsModule + ) { + this.serviceBridge = new ServiceBridge() this.apiConfigService = new APIConfigService(deviceManager) this.apiFeaturesService = new APIFeaturesService(deviceManager) this.apiOutboxService = new APIOutboxService(deviceManager) this.apiMenuService = new APIMenuService(deviceManager) this.serverService = new ServerService() this.backupService = new APIBackupService(deviceManager) + this.fileTransferService = new APIFileTransferService(deviceManager) + this.fileManager = new FileManager(deviceManager, this.serviceBridge) + this.serviceBridge.systemUtilsModule = systemUtilsModule + this.serviceBridge.fileTransfer = this.fileTransferService + this.serviceBridge.settingsService = createSettingsService() } public getAPIServices() { @@ -36,6 +53,8 @@ export class APIModule { this.apiMenuService, this.serverService, this.backupService, + this.fileTransferService, + this.fileManager, ] } } diff --git a/libs/device/feature/src/lib/backup/backup.service.ts b/libs/device/feature/src/lib/backup/backup.service.ts index 8e3301293..010190cf6 100644 --- a/libs/device/feature/src/lib/backup/backup.service.ts +++ b/libs/device/feature/src/lib/backup/backup.service.ts @@ -112,7 +112,7 @@ export class APIBackupService { } private parsePreBackupResponse( - response: ResultObject, string, unknown>, + response: ResultObject, string | number, unknown>, features: string[] ) { if (!response.ok) { diff --git a/libs/device/feature/src/lib/backup/start-pre-backup.request.ts b/libs/device/feature/src/lib/backup/start-pre-backup.request.ts index 7d7de2292..b7ba91c77 100644 --- a/libs/device/feature/src/lib/backup/start-pre-backup.request.ts +++ b/libs/device/feature/src/lib/backup/start-pre-backup.request.ts @@ -8,7 +8,7 @@ import { ipcRenderer } from "electron-better-ipc" import { APIBackupServiceEvents, PreBackup } from "device/models" import { DeviceId } from "Core/device/constants/device-id" -export const getStartPreBackupRequest = ( +export const startPreBackupRequest = ( features: string[], deviceId?: DeviceId ): Promise> => { diff --git a/libs/device/feature/src/lib/file-manager/file-manager.service.ts b/libs/device/feature/src/lib/file-manager/file-manager.service.ts new file mode 100644 index 000000000..24ca45d0e --- /dev/null +++ b/libs/device/feature/src/lib/file-manager/file-manager.service.ts @@ -0,0 +1,177 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { Result, ResultObject } from "Core/core/builder" +import { IpcEvent } from "Core/core/decorators" +import { ServiceBridge } from "../service-bridge" +import { FileManagerServiceEvents, GeneralError } from "device/models" +import { AppError } from "Core/core/errors" +import { DeviceManager } from "Core/device-manager/services" +import { DeviceId } from "Core/device/constants/device-id" +import packageInfo from "../../../../../../apps/mudita-center/package.json" +import { writeFileSync, writeJSONSync, mkdirSync, readdirSync } from "fs-extra" +import AES from "crypto-js/aes" +import path from "path" + +export class FileManager { + constructor( + private deviceManager: DeviceManager, + private serviceBridge: ServiceBridge + ) {} + + @IpcEvent(FileManagerServiceEvents.SaveFile) + public saveFileByTransferId({ + filePath, + transferId, + }: { + filePath: string + transferId: number + }): ResultObject { + try { + const file = + this.serviceBridge.fileTransfer.getFileByTransferId(transferId) + writeFileSync(filePath, file.chunks.join(), "base64") + + return Result.success(undefined) + } catch (e) { + console.log(e) + return Result.failed(new AppError(GeneralError.IncorrectResponse)) + } + } + + @IpcEvent(FileManagerServiceEvents.GetBackupPath) + public getBackupPath({ deviceId }: { deviceId?: DeviceId }) { + const device = deviceId + ? this.deviceManager.getAPIDeviceById(deviceId) + : this.deviceManager.apiDevice + + if (!device) { + return Result.failed(new AppError(GeneralError.NoDevice, "")) + } + + const vendorId = device.portInfo.vendorId ?? "unknown" + const productId = device.portInfo.productId ?? "unknown" + + const { osBackupLocation } = + this.serviceBridge.settingsService.getSettings() + const backupLocation = path.join( + osBackupLocation, + `${vendorId}-${productId}` + ) + return Result.success(backupLocation) + } + + @IpcEvent(FileManagerServiceEvents.OpenBackupDirectory) + public openBackupDirectory({ deviceId }: { deviceId?: DeviceId }) { + const backupDirectory = this.getBackupPath({ deviceId }) + if (!backupDirectory.ok) { + return Result.failed(new AppError(GeneralError.InternalError, "")) + } + return this.serviceBridge.systemUtilsModule.directory.open({ + path: backupDirectory.data, + }) + } + + @IpcEvent(FileManagerServiceEvents.SaveBackupFile) + public saveBackupFile({ + deviceId, + featureToTransferId, + password, + }: { + deviceId?: DeviceId + featureToTransferId: Record + password?: string + }) { + const device = deviceId + ? this.deviceManager.getAPIDeviceById(deviceId) + : this.deviceManager.apiDevice + + if (!device) { + return Result.failed(new AppError(GeneralError.NoDevice, "")) + } + try { + const vendorId = device.portInfo.vendorId ?? "" + const productId = device.portInfo.productId ?? "" + const serialNumber = device.portInfo.serialNumber ?? "" + const timestamp = new Date().getTime() + const appVersion = packageInfo.version + const backupDirectory = this.getBackupPath({ deviceId }) + + if (!backupDirectory.ok) { + return Result.failed(new AppError(GeneralError.InternalError, "")) + } + + const backupFilePath = path.join( + backupDirectory.data, + `${timestamp}_${serialNumber}.mcbackup` + ) + + const data = Object.entries(featureToTransferId).reduce( + (acc, [feature, transferId]) => { + const transfer = + this.serviceBridge.fileTransfer.getFileByTransferId(transferId) + + const featureData = password + ? AES.encrypt(transfer.chunks.join(), password).toString() + : transfer.chunks.join() + + return { ...acc, [feature]: featureData } + }, + {} + ) + + const fileToSave = { + header: { + vendorId, + productId, + serialNumber, + appVersion, + ...(password && { crypto: "AES" }), + }, + data, + } + + mkdirSync(backupDirectory.data, { recursive: true }) + + writeJSONSync(backupFilePath, fileToSave) + + return Result.success(undefined) + } catch (e) { + console.log(e) + return Result.failed(new AppError(GeneralError.InternalError)) + } + } + + @IpcEvent(FileManagerServiceEvents.ReadDirectory) + public readDirectory({ path }: { path: string }): ResultObject { + try { + const result = readdirSync(path) + + return Result.success(result) + } catch (e) { + console.log(e) + return Result.failed(new AppError(GeneralError.InternalError)) + } + } + + @IpcEvent(FileManagerServiceEvents.ReadBackupDirectory) + public readBackupDirectory({ + deviceId, + }: { + deviceId?: DeviceId + }): ResultObject { + const device = deviceId + ? this.deviceManager.getAPIDeviceById(deviceId) + : this.deviceManager.apiDevice + + const pathResult = this.getBackupPath({ deviceId }) + + if (!pathResult.ok) { + return Result.failed(new AppError(GeneralError.InternalError)) + } + + return this.readDirectory({ path: pathResult.data }) + } +} diff --git a/libs/device/feature/src/lib/file-manager/index.ts b/libs/device/feature/src/lib/file-manager/index.ts new file mode 100644 index 000000000..5b597ed81 --- /dev/null +++ b/libs/device/feature/src/lib/file-manager/index.ts @@ -0,0 +1,11 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +export * from "./file-manager.service" +export * from "./save-file.request" +export * from "./save-backup-file.request" +export * from "./open-backup-directory.request" +export * from "./read-directory.request" +export * from "./read-backup-directory.request" diff --git a/libs/device/feature/src/lib/file-manager/open-backup-directory.request.ts b/libs/device/feature/src/lib/file-manager/open-backup-directory.request.ts new file mode 100644 index 000000000..6e4579614 --- /dev/null +++ b/libs/device/feature/src/lib/file-manager/open-backup-directory.request.ts @@ -0,0 +1,17 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { ResultObject } from "Core/core/builder" +import { DeviceId } from "Core/device/constants/device-id" +import { FileManagerServiceEvents } from "device/models" +import { ipcRenderer } from "electron-better-ipc" + +export const openBackupDirectoryRequest = ( + deviceId?: DeviceId +): Promise> => { + return ipcRenderer.callMain(FileManagerServiceEvents.OpenBackupDirectory, { + deviceId, + }) +} diff --git a/libs/device/feature/src/lib/file-manager/read-backup-directory.request.ts b/libs/device/feature/src/lib/file-manager/read-backup-directory.request.ts new file mode 100644 index 000000000..85637dd09 --- /dev/null +++ b/libs/device/feature/src/lib/file-manager/read-backup-directory.request.ts @@ -0,0 +1,17 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { ResultObject } from "Core/core/builder" +import { DeviceId } from "Core/device/constants/device-id" +import { FileManagerServiceEvents } from "device/models" +import { ipcRenderer } from "electron-better-ipc" + +export const readBackupDirectoryRequest = ( + deviceId: DeviceId +): Promise> => { + return ipcRenderer.callMain(FileManagerServiceEvents.ReadBackupDirectory, { + deviceId, + }) +} diff --git a/libs/device/feature/src/lib/file-manager/read-directory.request.ts b/libs/device/feature/src/lib/file-manager/read-directory.request.ts new file mode 100644 index 000000000..ca58ed62f --- /dev/null +++ b/libs/device/feature/src/lib/file-manager/read-directory.request.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { ResultObject } from "Core/core/builder" +import { FileManagerServiceEvents } from "device/models" +import { ipcRenderer } from "electron-better-ipc" + +export const readDirectoryRequest = ( + path: string +): Promise> => { + return ipcRenderer.callMain(FileManagerServiceEvents.ReadDirectory, { + path, + }) +} diff --git a/libs/device/feature/src/lib/file-manager/save-backup-file.request.ts b/libs/device/feature/src/lib/file-manager/save-backup-file.request.ts new file mode 100644 index 000000000..a7e2dc51c --- /dev/null +++ b/libs/device/feature/src/lib/file-manager/save-backup-file.request.ts @@ -0,0 +1,21 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { ResultObject } from "Core/core/builder" +import { DeviceId } from "Core/device/constants/device-id" +import { FileManagerServiceEvents } from "device/models" +import { ipcRenderer } from "electron-better-ipc" + +export const saveBackupFileRequest = ( + featureToTransferId: Record, + deviceId?: DeviceId, + password?: string +): Promise> => { + return ipcRenderer.callMain(FileManagerServiceEvents.SaveBackupFile, { + featureToTransferId, + deviceId, + password, + }) +} diff --git a/libs/device/feature/src/lib/file-manager/save-file.request.ts b/libs/device/feature/src/lib/file-manager/save-file.request.ts new file mode 100644 index 000000000..e24b70cee --- /dev/null +++ b/libs/device/feature/src/lib/file-manager/save-file.request.ts @@ -0,0 +1,18 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { ResultObject } from "Core/core/builder" +import { FileManagerServiceEvents } from "device/models" +import { ipcRenderer } from "electron-better-ipc" + +export const saveFileRequest = ( + filePath: string, + transferId: number +): Promise> => { + return ipcRenderer.callMain(FileManagerServiceEvents.SaveFile, { + filePath, + transferId, + }) +} diff --git a/libs/device/feature/src/lib/file-transfer/file-transfer.service.ts b/libs/device/feature/src/lib/file-transfer/file-transfer.service.ts new file mode 100644 index 000000000..467e31a04 --- /dev/null +++ b/libs/device/feature/src/lib/file-transfer/file-transfer.service.ts @@ -0,0 +1,339 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { Result, ResultObject } from "Core/core/builder" +import { IpcEvent } from "Core/core/decorators" +import { AppError, AppErrorType } from "Core/core/errors" +import { DeviceManager } from "Core/device-manager/services" +import { DeviceId } from "Core/device/constants/device-id" +import { + ApiFileTransferError, + ApiFileTransferServiceEvents, + FileTransferStatuses, + GeneralError, + PreTransferGet, + PreTransferGetValidator, + PreTransferSendValidator, + TransferGetValidator, + TransferSend, + TransferSendValidator, +} from "device/models" +import { readFileSync } from "fs-extra" +import crc from "js-crc" + +interface Transfer { + crc32: string + fileSize: number + filePath: string + chunks: string[] +} + +const DEFAULT_MAX_REPEATS = 2 + +export class APIFileTransferService { + constructor( + private deviceManager: DeviceManager, + private transfers: Record = {} + ) {} + + private prepareFile(path: string) { + const file = readFileSync(path, { + encoding: "base64", + }) + return { + file, + crc32: crc.crc32(file), + } + } + + public getFileByTransferId(transferId: number) { + return this.transfers[transferId] + } + + // Sending files to device + @IpcEvent(ApiFileTransferServiceEvents.PreSend) + public async preTransferSend({ + filePath, + targetPath, + deviceId, + }: { + filePath: string + targetPath: string + deviceId?: DeviceId + }): Promise< + ResultObject<{ + transferId: number + chunksCount: number + }> + > { + const device = deviceId + ? this.deviceManager.getAPIDeviceById(deviceId) + : this.deviceManager.apiDevice + + if (!device) { + return Result.failed(new AppError(GeneralError.NoDevice, "")) + } + const { crc32, file } = this.prepareFile(filePath) + + const response = await device.request({ + endpoint: "PRE_FILE_TRANSFER", + method: "POST", + body: { + filePath: targetPath, + fileSize: file.length, + crc32, + }, + }) + + if (response.ok) { + const preTransferResponse = PreTransferSendValidator.safeParse( + response.data.body + ) + + const success = preTransferResponse.success + + if (!success) { + return handleError(response.data.status) + } + + this.transfers[preTransferResponse.data.transferId] = { + crc32, + fileSize: file.length, + filePath, + chunks: + file.match( + new RegExp(`.{1,${preTransferResponse.data.chunkSize}}`, "g") + ) || [], + } + + return Result.success({ + transferId: preTransferResponse.data.transferId, + chunksCount: + this.transfers[preTransferResponse.data.transferId].chunks.length, + }) + } + + return handleError(response.error.type) + } + + @IpcEvent(ApiFileTransferServiceEvents.Send) + public async transferSend({ + transferId, + chunkNumber, + deviceId, + repeats = 0, + maxRepeats = DEFAULT_MAX_REPEATS, + }: { + transferId: number + chunkNumber: number + deviceId?: DeviceId + repeats: number + maxRepeats: number + }): Promise> { + const device = deviceId + ? this.deviceManager.getAPIDeviceById(deviceId) + : this.deviceManager.apiDevice + + if (!device) { + return Result.failed(new AppError(GeneralError.NoDevice, "")) + } + + const data = this.transfers[transferId].chunks[chunkNumber - 1] + + const response = await device.request({ + endpoint: "FILE_TRANSFER", + method: "POST", + body: { + transferId, + chunkNumber, + data, + }, + }) + + if (!response.ok) { + if (repeats < maxRepeats) { + return this.transferSend({ + deviceId, + transferId, + chunkNumber, + repeats: repeats + 1, + maxRepeats, + }) + } else { + return handleError(response.error.type) + } + } + + const transferResponse = TransferSendValidator.safeParse(response.data.body) + + const success = + transferResponse.success && + [ + FileTransferStatuses.WholeFileTransferred, + FileTransferStatuses.FileChunkTransferred, + ].includes(response.data.status as number) + + if (!success) { + return handleError(response.data.status) + } + + return Result.success(transferResponse.data) + } + + private validateChecksum(transferId: number) { + const transfer = this.transfers[transferId] + const data = transfer.chunks.join("") + const crc32 = crc.crc32(data) + return crc32.toLowerCase() === transfer.crc32.toLowerCase() + } + + @IpcEvent(ApiFileTransferServiceEvents.PreGet) + public async preTransferGet({ + filePath, + deviceId, + }: { + filePath: string + deviceId?: DeviceId + }): Promise> { + const device = deviceId + ? this.deviceManager.getAPIDeviceById(deviceId) + : this.deviceManager.apiDevice + + if (!device) { + return Result.failed(new AppError(GeneralError.NoDevice, "")) + } + + const response = await device.request({ + endpoint: "PRE_FILE_TRANSFER", + method: "GET", + body: { + filePath, + }, + }) + + if (response.ok) { + const preTransferResponse = PreTransferGetValidator.safeParse( + response.data.body + ) + + const success = preTransferResponse.success + + if (!success) { + return handleError(response.data.status) + } + + this.transfers[preTransferResponse.data.transferId] = { + crc32: preTransferResponse.data.crc32, + fileSize: preTransferResponse.data.fileSize, + filePath, + chunks: [], + } + + return Result.success(preTransferResponse.data) + } + + return handleError(response.error.type) + } + + @IpcEvent(ApiFileTransferServiceEvents.Get) + public async transferGet({ + deviceId, + transferId, + chunkNumber, + repeats = 0, + maxRepeats = DEFAULT_MAX_REPEATS, + }: { + deviceId?: DeviceId + transferId: number + chunkNumber: number + repeats: number + maxRepeats: number + }): Promise> { + const device = deviceId + ? this.deviceManager.getAPIDeviceById(deviceId) + : this.deviceManager.apiDevice + + if (!device) { + return Result.failed(new AppError(GeneralError.NoDevice, "")) + } + + const response = await device.request({ + endpoint: "FILE_TRANSFER", + method: "GET", + body: { + transferId, + chunkNumber, + }, + }) + + if (!response.ok) { + if (repeats < maxRepeats) { + return this.transferGet({ + deviceId, + transferId, + chunkNumber, + repeats: repeats + 1, + maxRepeats, + }) + } else { + return handleError(response.error.type) + } + } + + const transferResponse = TransferGetValidator.safeParse(response.data.body) + + const success = + transferResponse.success && + [ + FileTransferStatuses.WholeFileTransferred, + FileTransferStatuses.FileChunkTransferred, + ].includes(response.data.status as number) + + if (!success) { + return handleError(response.data.status) + } + + this.transfers[transferId].chunks[chunkNumber - 1] = + transferResponse.data.data + + if ( + (response.data.status as number) === + FileTransferStatuses.WholeFileTransferred + ) { + if (this.validateChecksum(transferId)) { + return Result.success(undefined) + } else { + return Result.failed( + new AppError( + ApiFileTransferError.CRCMismatch, + ApiFileTransferError[ApiFileTransferError.CRCMismatch] + ) + ) + } + } + return Result.success(undefined) + } + + @IpcEvent(ApiFileTransferServiceEvents.Clear) + public transferClear({ transferId }: { transferId: number }) { + delete this.transfers[transferId] + } +} + +const handleError = (responseStatus: AppErrorType) => { + if (ApiFileTransferError[responseStatus as ApiFileTransferError]) { + return Result.failed< + { transferId?: number; filePath: string }, + AppErrorType + >( + new AppError( + responseStatus, + ApiFileTransferError[responseStatus as ApiFileTransferError] + ) + ) + } else { + return Result.failed(new AppError(GeneralError.IncorrectResponse, "")) + } +} diff --git a/libs/device/feature/src/lib/file-transfer/get-file.request.ts b/libs/device/feature/src/lib/file-transfer/get-file.request.ts new file mode 100644 index 000000000..980aef7b1 --- /dev/null +++ b/libs/device/feature/src/lib/file-transfer/get-file.request.ts @@ -0,0 +1,21 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { ipcRenderer } from "electron-better-ipc" +import { ApiFileTransferServiceEvents } from "device/models" +import { DeviceId } from "Core/device/constants/device-id" +import { ResultObject } from "Core/core/builder" + +export const getFileRequest = ( + transferId: number, + chunkNumber: number, + deviceId?: DeviceId +): Promise> => { + return ipcRenderer.callMain(ApiFileTransferServiceEvents.Get, { + transferId, + chunkNumber, + deviceId, + }) +} diff --git a/libs/device/feature/src/lib/file-transfer/index.ts b/libs/device/feature/src/lib/file-transfer/index.ts new file mode 100644 index 000000000..69516bff5 --- /dev/null +++ b/libs/device/feature/src/lib/file-transfer/index.ts @@ -0,0 +1,11 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +export * from "./file-transfer.service" +export * from "./start-pre-send-file.request" +export * from "./send-file.request" +export * from "./send-clear.request" +export * from "./start-pre-get-file.request" +export * from "./get-file.request" diff --git a/libs/device/feature/src/lib/file-transfer/send-clear.request.ts b/libs/device/feature/src/lib/file-transfer/send-clear.request.ts new file mode 100644 index 000000000..1377055d3 --- /dev/null +++ b/libs/device/feature/src/lib/file-transfer/send-clear.request.ts @@ -0,0 +1,13 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { ipcRenderer } from "electron-better-ipc" +import { ApiFileTransferServiceEvents } from "device/models" + +export const sendClearRequest = (transferId: number): Promise => { + return ipcRenderer.callMain(ApiFileTransferServiceEvents.Clear, { + transferId, + }) +} diff --git a/libs/device/feature/src/lib/file-transfer/send-file.request.ts b/libs/device/feature/src/lib/file-transfer/send-file.request.ts new file mode 100644 index 000000000..9441b6d80 --- /dev/null +++ b/libs/device/feature/src/lib/file-transfer/send-file.request.ts @@ -0,0 +1,21 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { ipcRenderer } from "electron-better-ipc" +import { ApiFileTransferServiceEvents, TransferSend } from "device/models" +import { DeviceId } from "Core/device/constants/device-id" +import { ResultObject } from "Core/core/builder" + +export const sendFileRequest = ( + transferId: number, + chunkNumber: number, + deviceId?: DeviceId +): Promise> => { + return ipcRenderer.callMain(ApiFileTransferServiceEvents.Send, { + transferId, + chunkNumber, + deviceId, + }) +} diff --git a/libs/device/feature/src/lib/file-transfer/start-pre-get-file.request.ts b/libs/device/feature/src/lib/file-transfer/start-pre-get-file.request.ts new file mode 100644 index 000000000..1d79f7d17 --- /dev/null +++ b/libs/device/feature/src/lib/file-transfer/start-pre-get-file.request.ts @@ -0,0 +1,19 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { ipcRenderer } from "electron-better-ipc" +import { ApiFileTransferServiceEvents, PreTransferGet } from "device/models" +import { DeviceId } from "Core/device/constants/device-id" +import { ResultObject } from "Core/core/builder" + +export const startPreGetFileRequest = ( + filePath: string, + deviceId?: DeviceId +): Promise> => { + return ipcRenderer.callMain(ApiFileTransferServiceEvents.PreGet, { + filePath, + deviceId, + }) +} diff --git a/libs/device/feature/src/lib/file-transfer/start-pre-send-file.request.ts b/libs/device/feature/src/lib/file-transfer/start-pre-send-file.request.ts new file mode 100644 index 000000000..51ef56856 --- /dev/null +++ b/libs/device/feature/src/lib/file-transfer/start-pre-send-file.request.ts @@ -0,0 +1,26 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { ipcRenderer } from "electron-better-ipc" +import { ApiFileTransferServiceEvents } from "device/models" +import { DeviceId } from "Core/device/constants/device-id" +import { ResultObject } from "Core/core/builder" + +export const startPreSendFileRequest = ( + filePath: string, + targetPath: string, + deviceId?: DeviceId +): Promise< + ResultObject<{ + transferId: number + chunksCount: number + }> +> => { + return ipcRenderer.callMain(ApiFileTransferServiceEvents.PreSend, { + filePath, + targetPath, + deviceId, + }) +} diff --git a/libs/device/feature/src/lib/restore/restore.service.ts b/libs/device/feature/src/lib/restore/restore.service.ts index de16311f8..3ec4f1f33 100644 --- a/libs/device/feature/src/lib/restore/restore.service.ts +++ b/libs/device/feature/src/lib/restore/restore.service.ts @@ -118,7 +118,7 @@ export class APIRestoreService { } private parseRestoreResponse( - response: ResultObject, string, unknown> + response: ResultObject, string | number, unknown> ) { if (!response.ok) { return Result.failed(response.error) diff --git a/libs/device/feature/src/lib/service-bridge/index.ts b/libs/device/feature/src/lib/service-bridge/index.ts new file mode 100644 index 000000000..9bdd0cc18 --- /dev/null +++ b/libs/device/feature/src/lib/service-bridge/index.ts @@ -0,0 +1,6 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +export * from "./service-bridge" diff --git a/libs/device/feature/src/lib/service-bridge/service-bridge.ts b/libs/device/feature/src/lib/service-bridge/service-bridge.ts new file mode 100644 index 000000000..34b930e57 --- /dev/null +++ b/libs/device/feature/src/lib/service-bridge/service-bridge.ts @@ -0,0 +1,55 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { SettingsService } from "Core/settings/services" +import { APIFileTransferService } from "../file-transfer" +import { SystemUtilsModule } from "system-utils/feature" + +export class ServiceBridge { + private _fileTransfer?: APIFileTransferService + + get fileTransfer(): APIFileTransferService { + if (!this._fileTransfer) { + throw new Error( + "APIFileTransferService reference has not been set in ServiceBridge" + ) + } + return this._fileTransfer + } + set fileTransfer(value: APIFileTransferService) { + this._fileTransfer = value + } + + private _settingsService?: SettingsService + + get settingsService(): SettingsService { + if (!this._settingsService) { + throw new Error( + "SettingsService reference has not been set in ServiceBridge" + ) + } + return this._settingsService + } + set settingsService(value: SettingsService) { + this._settingsService = value + } + + private _systemUtilsModule?: SystemUtilsModule + + get systemUtilsModule(): SystemUtilsModule { + if (!this._systemUtilsModule) { + throw new Error( + "SystemUtilsService reference has not been set in ServiceBridge" + ) + } + return this._systemUtilsModule + } + + set systemUtilsModule(value: SystemUtilsModule) { + this._systemUtilsModule = value + } + + constructor() {} +} diff --git a/libs/device/feature/tsconfig.json b/libs/device/feature/tsconfig.json index 4daaf45cd..ac56d3d8c 100644 --- a/libs/device/feature/tsconfig.json +++ b/libs/device/feature/tsconfig.json @@ -4,7 +4,8 @@ "allowJs": false, "esModuleInterop": false, "allowSyntheticDefaultImports": true, - "strict": true + "strict": true, + "resolveJsonModule": true, }, "files": [], "include": [], diff --git a/libs/device/models/src/index.ts b/libs/device/models/src/index.ts index ad6e17ff5..f14d789b6 100644 --- a/libs/device/models/src/index.ts +++ b/libs/device/models/src/index.ts @@ -13,4 +13,5 @@ export * from "./lib/api-config" export * from "./lib/server" export * from "./lib/general-error" export * from "./lib/backup" +export * from "./lib/file-transfer" export * from "./lib/restore" diff --git a/libs/device/models/src/lib/api-request.model.ts b/libs/device/models/src/lib/api-request.model.ts index 50a66d0f0..fb483c896 100644 --- a/libs/device/models/src/lib/api-request.model.ts +++ b/libs/device/models/src/lib/api-request.model.ts @@ -12,6 +12,8 @@ const APIEndpoints = { Outbox: "OUTBOX", PreBackup: "PRE_BACKUP", PostBackup: "POST_BACKUP", + PreFileTransfer: "PRE_FILE_TRANSFER", + FileTransfer: "FILE_TRANSFER", PreRestore: "PRE_RESTORE", Restore: "RESTORE", } as const @@ -36,6 +38,8 @@ const APIRequests = { OUTBOX: [APIMethods.GET], PRE_BACKUP: [APIMethods.POST, APIMethods.GET], POST_BACKUP: [APIMethods.POST], + PRE_FILE_TRANSFER: [APIMethods.POST, APIMethods.GET], + FILE_TRANSFER: [APIMethods.POST, APIMethods.GET], PRE_RESTORE: [APIMethods.POST], RESTORE: [APIMethods.POST, APIMethods.GET], } as const diff --git a/libs/device/models/src/lib/file-transfer/file-transfer-statuses.ts b/libs/device/models/src/lib/file-transfer/file-transfer-statuses.ts new file mode 100644 index 000000000..59428258d --- /dev/null +++ b/libs/device/models/src/lib/file-transfer/file-transfer-statuses.ts @@ -0,0 +1,9 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +export enum FileTransferStatuses { + WholeFileTransferred = 200, + FileChunkTransferred = 206, +} diff --git a/libs/device/models/src/lib/file-transfer/file-transfer.ts b/libs/device/models/src/lib/file-transfer/file-transfer.ts new file mode 100644 index 000000000..adb9e4bd4 --- /dev/null +++ b/libs/device/models/src/lib/file-transfer/file-transfer.ts @@ -0,0 +1,33 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { z } from "zod" + +export const PreTransferSendValidator = z.object({ + transferId: z.number(), + chunkSize: z.number().positive(), +}) + +export const TransferSendValidator = z.object({ + transferId: z.number(), + chunkNumber: z.number().positive(), +}) + +export type TransferSend = z.infer + +export const PreTransferGetValidator = z.object({ + transferId: z.number(), + chunkSize: z.number().positive(), + fileSize: z.number().positive(), + crc32: z.string(), +}) + +export type PreTransferGet = z.infer + +export const TransferGetValidator = z.object({ + transferId: z.number(), + chunkNumber: z.number().positive(), + data: z.string().min(1), +}) diff --git a/libs/device/models/src/lib/file-transfer/index.ts b/libs/device/models/src/lib/file-transfer/index.ts new file mode 100644 index 000000000..465d6dc58 --- /dev/null +++ b/libs/device/models/src/lib/file-transfer/index.ts @@ -0,0 +1,7 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +export * from "./file-transfer" +export * from "./file-transfer-statuses" diff --git a/libs/device/models/src/lib/general-error.ts b/libs/device/models/src/lib/general-error.ts index 3f81b3c71..2cf094253 100644 --- a/libs/device/models/src/lib/general-error.ts +++ b/libs/device/models/src/lib/general-error.ts @@ -6,8 +6,18 @@ export enum GeneralError { NoDevice = "no-device", IncorrectResponse = "incorrect-response", + InternalError = "internal-error", } export enum ApiError { DeviceLocked = 423, } + +export enum ApiFileTransferError { + AccessRestricted = 403, + IncorrectPath = 404, + FileAlreadyExists = 409, + CRCMismatch = 422, + Unknown = 500, + NotEnoughSpace = 507, +} diff --git a/libs/device/models/src/lib/renderer-to-main-events/api-backup-service-events.ts b/libs/device/models/src/lib/renderer-to-main-events/api-backup-service-events.ts index 03828399e..4d07a21ab 100644 --- a/libs/device/models/src/lib/renderer-to-main-events/api-backup-service-events.ts +++ b/libs/device/models/src/lib/renderer-to-main-events/api-backup-service-events.ts @@ -7,4 +7,5 @@ export enum APIBackupServiceEvents { StartPreBackup = "apiservice_backup-start-pre-backup", CheckPreBackup = "apiservice_backup-check-pre-backup", PostBackup = "apiservice_backup-post-backup", + GetBackupList = "apiservice_backup-get-backup-list", } diff --git a/libs/device/models/src/lib/renderer-to-main-events/api-file-transfer-service-events.ts b/libs/device/models/src/lib/renderer-to-main-events/api-file-transfer-service-events.ts new file mode 100644 index 000000000..692a18774 --- /dev/null +++ b/libs/device/models/src/lib/renderer-to-main-events/api-file-transfer-service-events.ts @@ -0,0 +1,12 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +export enum ApiFileTransferServiceEvents { + PreGet = "apiservice_file_transfer-pre-transfer-get", + Get = "apiservice_file_transfer-transfer-get", + PreSend = "apiservice_file_transfer-pre-transfer-send", + Send = "apiservice_file_transfer-transfer-send", + Clear = "apiservice_file_transfer-transfer-clear", +} diff --git a/libs/device/models/src/lib/renderer-to-main-events/file-manager-service-events.ts b/libs/device/models/src/lib/renderer-to-main-events/file-manager-service-events.ts new file mode 100644 index 000000000..89aabbbd1 --- /dev/null +++ b/libs/device/models/src/lib/renderer-to-main-events/file-manager-service-events.ts @@ -0,0 +1,13 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +export enum FileManagerServiceEvents { + SaveFile = "apiservice_file_manager-save-file", + SaveBackupFile = "apiservice_file_manager-save-backup-file", + GetBackupPath = "apiservice_file_manager-get-backup-path", + OpenBackupDirectory = "apiservice_file_manager-open-directory", + ReadDirectory = "apiservice_file_manager-read-directory", + ReadBackupDirectory = "apiservice_file_manager-read-backup-directory", +} diff --git a/libs/device/models/src/lib/renderer-to-main-events/index.ts b/libs/device/models/src/lib/renderer-to-main-events/index.ts index 050709159..29c32b38a 100644 --- a/libs/device/models/src/lib/renderer-to-main-events/index.ts +++ b/libs/device/models/src/lib/renderer-to-main-events/index.ts @@ -10,3 +10,5 @@ export * from "./api-config-service-events" export * from "./api-backup-service-events" export * from "./api-restore-service-events" export * from "./server-service-events" +export * from "./api-file-transfer-service-events" +export * from "./file-manager-service-events" diff --git a/libs/generic-view/feature/src/index.ts b/libs/generic-view/feature/src/index.ts index 38d9faca2..604cd4e7c 100644 --- a/libs/generic-view/feature/src/index.ts +++ b/libs/generic-view/feature/src/index.ts @@ -5,3 +5,4 @@ export * from "./lib/generic-view" export * from "./lib/recursive-layout" +export * from "./lib/api-device-modals" diff --git a/libs/generic-view/feature/src/lib/api-device-modals.tsx b/libs/generic-view/feature/src/lib/api-device-modals.tsx new file mode 100644 index 000000000..551958e70 --- /dev/null +++ b/libs/generic-view/feature/src/lib/api-device-modals.tsx @@ -0,0 +1,40 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import React, { FunctionComponent } from "react" +import { GenericThemeProvider } from "generic-view/theme" +import { BackupError, ModalBase, ModalCenteredContent } from "generic-view/ui" +import { useDispatch, useSelector } from "react-redux" +import { + cleanBackupProcess, + selectActiveDevice, + selectBackupProcessStatus, +} from "generic-view/store" + +export const ApiDeviceModals: FunctionComponent = () => { + return ( + + + + ) +} + +const BackupErrorModal: FunctionComponent = () => { + const dispatch = useDispatch() + const activeDevice = useSelector(selectActiveDevice) + const backupStatus = useSelector(selectBackupProcessStatus) + const opened = backupStatus === "FAILED" && !activeDevice + + const onClose = () => { + dispatch(cleanBackupProcess()) + } + return ( + + + + + + ) +} diff --git a/libs/generic-view/store/src/index.ts b/libs/generic-view/store/src/index.ts index 744653a29..9e5c3adfd 100644 --- a/libs/generic-view/store/src/index.ts +++ b/libs/generic-view/store/src/index.ts @@ -13,3 +13,9 @@ export * from "./lib/modals/reducer" export * from "./lib/modals/actions" export * from "./lib/backup/reducer" export * from "./lib/backup/actions" +export * from "./lib/backup/create-backup.action" +export * from "./lib/backup/refresh-backup-list.action" +export * from "./lib/file-transfer/reducer" +export * from "./lib/file-transfer/actions" +export * from "./lib/file-transfer/send-file.action" +export * from "./lib/file-transfer/get-file.action" diff --git a/libs/generic-view/store/src/lib/action-names.ts b/libs/generic-view/store/src/lib/action-names.ts index 0a5241497..bb742dd14 100644 --- a/libs/generic-view/store/src/lib/action-names.ts +++ b/libs/generic-view/store/src/lib/action-names.ts @@ -18,5 +18,18 @@ export enum ActionName { CloseAllModals = "generic-modals/close-all-modals", ReplaceModal = "generic-modals/replace-modal", CloseDomainModals = "generic-modals/close-domain-modals", - AddBackupFiles = "generic-backups/add-backup-files", + SetBackupProcess = "generic-backups/set-backup-process", + CleanBackupProcess = "generic-backups/clean-backup-process", + BackupProcessStatus = "generic-backups/backup-process-status", + SetBackupProcessFileStatus = "generic-backups/set-backup-process-file-status", + CreateBackup = "generic-backups/create-backup", + RefreshBackupList = "generic-backups/refresh-backup-list", + FileTransferSend = "generic-file-transfer/send", + PreFileTransferSend = "generic-file-transfer/pre-send", + ChunkFileTransferSend = "generic-file-transfer/chunk-sent", + ClearFileTransferSendError = "generic-file-transfer/clear-send-errors", + PreFileTransferGet = "generic-file-transfer/pre-get", + FileTransferGet = "generic-file-transfer/get", + ChunkFileTransferGet = "generic-file-transfer/chunk-get", + ClearFileTransferGetError = "generic-file-transfer/clear-get-errors", } diff --git a/libs/generic-view/store/src/lib/backup/actions.ts b/libs/generic-view/store/src/lib/backup/actions.ts index 1dea01132..329b84967 100644 --- a/libs/generic-view/store/src/lib/backup/actions.ts +++ b/libs/generic-view/store/src/lib/backup/actions.ts @@ -4,8 +4,24 @@ */ import { createAction } from "@reduxjs/toolkit" -import { Backup } from "./reducer" +import { + BackupProcess, + BackupProcessFileStatus, + BackupProcessStatus, +} from "./reducer" import { ActionName } from "../action-names" -export const setBackupFiles = createAction(ActionName.AddBackupFiles) +export const setBackupProcess = createAction( + ActionName.SetBackupProcess +) +export const cleanBackupProcess = createAction(ActionName.CleanBackupProcess) + +export const setBackupProcessFileStatus = createAction<{ + feature: string + status: BackupProcessFileStatus +}>(ActionName.SetBackupProcessFileStatus) + +export const setBackupProcessStatus = createAction( + ActionName.BackupProcessStatus +) diff --git a/libs/generic-view/store/src/lib/backup/create-backup.action.ts b/libs/generic-view/store/src/lib/backup/create-backup.action.ts new file mode 100644 index 000000000..414a1a91c --- /dev/null +++ b/libs/generic-view/store/src/lib/backup/create-backup.action.ts @@ -0,0 +1,166 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { createAsyncThunk } from "@reduxjs/toolkit" +import { ReduxRootState } from "Core/__deprecated__/renderer/store" +import { + checkPreBackupRequest, + postBackupRequest, + saveBackupFileRequest, + sendClearRequest, + startPreBackupRequest, +} from "device/feature" + +import { ActionName } from "../action-names" +import { getFile } from "../file-transfer/get-file.action" +import { + setBackupProcess, + setBackupProcessFileStatus, + setBackupProcessStatus, +} from "./actions" +import { refreshBackupList } from "./refresh-backup-list.action" + +export const createBackup = createAsyncThunk< + undefined, + { + features: string[] + password?: string + }, + { state: ReduxRootState } +>( + ActionName.CreateBackup, + async ( + { features, password }, + { getState, dispatch, rejectWithValue, signal } + ) => { + let aborted = false + + const abortListener = async () => { + signal.removeEventListener("abort", abortListener) + aborted = true + abortFileRequest?.() + await clearTransfers?.() + if (backupId && deviceId) { + await postBackupRequest(backupId, deviceId) + } + } + signal.addEventListener("abort", abortListener) + + if (aborted) { + return rejectWithValue(undefined) + } + + dispatch( + setBackupProcess({ + status: "PRE_BACKUP", + featureFilesTransfer: features.reduce((acc, item) => { + return { ...acc, [item]: { done: false } } + }, {}), + }) + ) + + const deviceId = getState().genericViews.activeDevice + + if (deviceId === undefined || aborted) { + return rejectWithValue(undefined) + } + + const startPreBackupResponse = await startPreBackupRequest( + features, + deviceId + ) + + if (!startPreBackupResponse.ok || aborted) { + console.log(startPreBackupResponse.error) + return rejectWithValue(undefined) + } + + const backupId = startPreBackupResponse.data.backupId + let backupFeaturesFiles = startPreBackupResponse.data.features + let abortFileRequest: VoidFunction + const featureToTransferId: Record = {} + + const clearTransfers = () => { + return Promise.all( + Object.values(featureToTransferId).map(async (transferId) => { + await sendClearRequest(transferId) + }) + ) + } + + while (backupFeaturesFiles === undefined) { + if (aborted) { + return rejectWithValue(undefined) + } + const checkPreBackupResponse = await checkPreBackupRequest( + backupId, + features, + deviceId + ) + + if (!checkPreBackupResponse.ok) { + console.log(checkPreBackupResponse.error) + return rejectWithValue(undefined) + } + + backupFeaturesFiles = checkPreBackupResponse.data.features + } + dispatch(setBackupProcessStatus("FILES_TRANSFER")) + + for (let i = 0; i < features.length; ++i) { + if (aborted) { + return rejectWithValue(undefined) + } + const feature = features[i] + + dispatch(setBackupProcessFileStatus({ feature, status: "IN_PROGRESS" })) + const filePromise = dispatch( + getFile({ + deviceId, + filePath: backupFeaturesFiles[feature], + targetPath: "", + }) + ) + abortFileRequest = filePromise.abort + const file = await filePromise + if ( + file.meta.requestStatus === "fulfilled" && + file.payload && + "transferId" in file.payload + ) { + featureToTransferId[feature] = file.payload.transferId + dispatch(setBackupProcessFileStatus({ feature, status: "DONE" })) + } else if (!aborted) { + console.log("Error while downloading file") + await clearTransfers() + await postBackupRequest(backupId, deviceId) + return rejectWithValue(undefined) + } + } + if (aborted) { + return rejectWithValue(undefined) + } + dispatch(setBackupProcessStatus("SAVE_FILE")) + const saveBackupFileResponse = await saveBackupFileRequest( + featureToTransferId, + deviceId, + password + ) + + if (!saveBackupFileResponse.ok) { + console.log("Error while saving file") + await clearTransfers() + await postBackupRequest(backupId, deviceId) + return rejectWithValue(undefined) + } + + dispatch(refreshBackupList()) + + if (!aborted) { + await postBackupRequest(backupId, deviceId) + } + return undefined + } +) diff --git a/libs/generic-view/store/src/lib/backup/reducer.ts b/libs/generic-view/store/src/lib/backup/reducer.ts index b180a2878..8763ca3a2 100644 --- a/libs/generic-view/store/src/lib/backup/reducer.ts +++ b/libs/generic-view/store/src/lib/backup/reducer.ts @@ -4,43 +4,91 @@ */ import { createReducer } from "@reduxjs/toolkit" -import { setBackupFiles } from "./actions" +import { + cleanBackupProcess, + setBackupProcess, + setBackupProcessFileStatus, + setBackupProcessStatus, +} from "./actions" +import { createBackup } from "./create-backup.action" +import { refreshBackupList } from "./refresh-backup-list.action" export interface Backup { fileName: string date: Date - features: string[] - device: { - serialNumber: string - vendorId: string - productId: string - osVersion: string - } + serialNumber: string +} + +export type BackupProcessStatus = + | "PRE_BACKUP" + | "FILES_TRANSFER" + | "SAVE_FILE" + | "DONE" + | "FAILED" + +export type BackupProcessFileStatus = "PENDING" | "IN_PROGRESS" | "DONE" + +export interface BackupProcess { + status: "PRE_BACKUP" | "FILES_TRANSFER" | "SAVE_FILE" | "DONE" | "FAILED" + featureFilesTransfer: Record< + string, + { transferId?: number; status: BackupProcessFileStatus } + > } interface BackupState { - files: Backup[] + lastBackupRefresh: number + backups: Backup[] + backupProcess?: BackupProcess } const initialState: BackupState = { - // Demo data - files: [ - { - fileName: "backup1.json", - date: new Date(), - features: ["calls", "messages"], - device: { - serialNumber: "0123456789ABCDEF", - vendorId: "0e8d", - productId: "2006", - osVersion: "12", - }, - }, - ], + lastBackupRefresh: 0, + backups: [], } export const genericBackupsReducer = createReducer(initialState, (builder) => { - builder.addCase(setBackupFiles, (state, action) => { - state.files = action.payload + builder.addCase(cleanBackupProcess, (state, action) => { + delete state.backupProcess + }) + builder.addCase(setBackupProcess, (state, action) => { + state.backupProcess = action.payload + }) + builder.addCase(setBackupProcessFileStatus, (state, action) => { + if (state.backupProcess) { + state.backupProcess.featureFilesTransfer[action.payload.feature].status = + action.payload.status + } + }) + builder.addCase(setBackupProcessStatus, (state, action) => { + if (state.backupProcess) { + state.backupProcess.status = action.payload + } + }) + builder.addCase(createBackup.rejected, (state, action) => { + if (state.backupProcess) { + state.backupProcess.status = "FAILED" + } else { + state.backupProcess = { + status: "FAILED", + featureFilesTransfer: {}, + } + } + }) + builder.addCase(createBackup.fulfilled, (state, action) => { + if (state.backupProcess) { + state.backupProcess.status = "DONE" + } else { + state.backupProcess = { + status: "DONE", + featureFilesTransfer: {}, + } + } + }) + builder.addCase(refreshBackupList.fulfilled, (state, action) => { + if (state.lastBackupRefresh < action.payload.refreshTimestamp) { + state.lastBackupRefresh = action.payload.refreshTimestamp + state.backups = action.payload.backups + } }) }) diff --git a/libs/generic-view/store/src/lib/backup/refresh-backup-list.action.ts b/libs/generic-view/store/src/lib/backup/refresh-backup-list.action.ts new file mode 100644 index 000000000..3fe54fec8 --- /dev/null +++ b/libs/generic-view/store/src/lib/backup/refresh-backup-list.action.ts @@ -0,0 +1,60 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { createAsyncThunk } from "@reduxjs/toolkit" +import { DeviceId } from "Core/device/constants/device-id" +import { ReduxRootState } from "Core/__deprecated__/renderer/store" +import { readBackupDirectoryRequest } from "device/feature" + +import { ActionName } from "../action-names" +import { Backup } from "./reducer" + +export const refreshBackupList = createAsyncThunk< + { refreshTimestamp: number; backups: Backup[]; deviceId: DeviceId }, + undefined, + { state: ReduxRootState } +>( + ActionName.RefreshBackupList, + async (_, { getState, dispatch, rejectWithValue }) => { + const refreshTimestamp = new Date().getTime() + + const deviceId = getState().genericViews.activeDevice + if (!deviceId) { + return rejectWithValue(undefined) + } + + const backupsList = await readBackupDirectoryRequest(deviceId) + + if (!backupsList.ok) { + return rejectWithValue(undefined) + } + + const backups = + (backupsList.data + .map((item) => { + const isFormatValid = /^\d+[_][a-zA-Z0-9]+[.]mcbackup$/i.test(item) + + if (!isFormatValid) { + return null + } + + const [fileName] = item.split(".") + const [timestamp, serialNumber] = fileName.split("_") + const result: Backup = { + date: new Date(Number(timestamp)), + fileName: item, + serialNumber, + } + return result + }) + .filter(Boolean) as Backup[]) ?? [] + + return { + refreshTimestamp, + backups, + deviceId, + } + } +) diff --git a/libs/generic-view/store/src/lib/file-transfer/actions.ts b/libs/generic-view/store/src/lib/file-transfer/actions.ts new file mode 100644 index 000000000..5f45b9914 --- /dev/null +++ b/libs/generic-view/store/src/lib/file-transfer/actions.ts @@ -0,0 +1,29 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { createAction } from "@reduxjs/toolkit" +import { ActionName } from "../action-names" +import { FileProgress } from "./reducer" +import { SendFileErrorPayload } from "./send-file.action" +import { GetFileErrorPayload } from "Libs/generic-view/store/src" + +export const fileTransferSendPrepared = createAction< + Pick +>(ActionName.PreFileTransferSend) +export const fileTransferChunkSent = createAction< + Pick +>(ActionName.ChunkFileTransferSend) +export const fileTransferGetPrepared = createAction< + Pick +>(ActionName.PreFileTransferGet) +export const fileTransferChunkGet = createAction< + Pick +>(ActionName.ChunkFileTransferGet) +export const clearSendErrors = createAction( + ActionName.ClearFileTransferSendError +) +export const clearGetErrors = createAction( + ActionName.ClearFileTransferGetError +) diff --git a/libs/generic-view/store/src/lib/file-transfer/get-file.action.ts b/libs/generic-view/store/src/lib/file-transfer/get-file.action.ts new file mode 100644 index 000000000..c5dd38ea7 --- /dev/null +++ b/libs/generic-view/store/src/lib/file-transfer/get-file.action.ts @@ -0,0 +1,129 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { createAsyncThunk } from "@reduxjs/toolkit" +import { ReduxRootState } from "Core/__deprecated__/renderer/store" +import { + getFileRequest, + saveFileRequest, + sendClearRequest, + startPreGetFileRequest, +} from "device/feature" +import { DeviceId } from "Core/device/constants/device-id" +import { ActionName } from "../action-names" +import { fileTransferChunkGet, fileTransferGetPrepared } from "./actions" +import { AppError, AppErrorType } from "Core/core/errors" +import { GeneralError, PreTransferGet } from "device/models" +import { Result } from "Core/core/builder" + +export type GetFileErrorPayload = { + transferId?: number + filePath: string +} + +interface GetFileError { + deviceId: DeviceId + error: AppError +} + +export const getFile = createAsyncThunk< + { transferId: number }, + { + deviceId: DeviceId + filePath: string + targetPath: string + preTransfer?: PreTransferGet + }, + { state: ReduxRootState; rejectValue: GetFileError | undefined } +>( + ActionName.FileTransferGet, + async ( + { deviceId, filePath, targetPath, preTransfer }, + { rejectWithValue, dispatch, signal } + ) => { + let aborted = false + + const abortListener = async () => { + signal.removeEventListener("abort", abortListener) + aborted = true + const transferId = preTransferResponse?.ok + ? preTransferResponse.data.transferId + : preTransferResponse?.error.payload + if (transferId) { + await sendClearRequest(transferId) + } + } + signal.addEventListener("abort", abortListener) + + if (aborted) { + return rejectWithValue(undefined) + } + + const preTransferResponse = preTransfer + ? Result.success(preTransfer) + : await startPreGetFileRequest(filePath, deviceId) + + if (preTransferResponse.ok && !aborted) { + const { transferId, chunkSize, fileSize } = preTransferResponse.data + const chunksCount = Math.ceil(fileSize / chunkSize) + dispatch( + fileTransferGetPrepared({ + transferId, + chunksCount, + filePath, + }) + ) + + for (let chunkNumber = 1; chunkNumber <= chunksCount; chunkNumber++) { + if (aborted) { + return rejectWithValue(undefined) + } + const { ok, error } = await getFileRequest(transferId, chunkNumber) + if (!ok) { + await sendClearRequest(transferId) + return rejectWithValue({ + deviceId, + error: { + ...error, + payload: { + transferId, + filePath, + }, + }, + }) + } + dispatch( + fileTransferChunkGet({ + transferId, + chunksTransferred: chunkNumber, + }) + ) + } + + if (aborted) { + return rejectWithValue(undefined) + } + + if (targetPath) { + await saveFileRequest(targetPath, transferId) + await sendClearRequest(transferId) + } + return { transferId } + } else { + return rejectWithValue({ + deviceId, + error: { + name: GeneralError.IncorrectResponse, + type: GeneralError.IncorrectResponse, + message: "Incorrect response", + payload: { + transferId: preTransferResponse.error?.payload, + filePath, + }, + }, + }) + } + } +) diff --git a/libs/generic-view/store/src/lib/file-transfer/reducer.ts b/libs/generic-view/store/src/lib/file-transfer/reducer.ts new file mode 100644 index 000000000..443597039 --- /dev/null +++ b/libs/generic-view/store/src/lib/file-transfer/reducer.ts @@ -0,0 +1,129 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { createReducer } from "@reduxjs/toolkit" +import { AppErrorType } from "Core/core/errors" +import { + clearGetErrors, + clearSendErrors, + fileTransferChunkGet, + fileTransferChunkSent, + fileTransferGetPrepared, + fileTransferSendPrepared, +} from "./actions" +import { sendFile } from "./send-file.action" +import { getFile } from "./get-file.action" + +export interface FileTransferError { + code?: AppErrorType + message?: string + filePath?: string + transferId?: number +} + +export interface FileProgress { + transferId: number + chunksCount: number + chunksTransferred: number + filePath?: string +} + +interface FileTransferState { + sendingFilesProgress: { + [transferId: number]: FileProgress + } + sendingErrors?: FileTransferError[] + receivingFilesProgress: { + [transferId: number]: FileProgress + } + receivingErrors?: FileTransferError[] +} + +const initialState: FileTransferState = { + sendingFilesProgress: {}, + sendingErrors: [], + receivingFilesProgress: {}, + receivingErrors: [], +} + +export const genericFileTransferReducer = createReducer( + initialState, + (builder) => { + builder.addCase(fileTransferSendPrepared, (state, action) => { + state.sendingFilesProgress[action.payload.transferId] = { + transferId: action.payload.transferId, + chunksCount: action.payload.chunksCount, + chunksTransferred: 0, + } + }) + builder.addCase(fileTransferChunkSent, (state, action) => { + state.sendingFilesProgress[action.payload.transferId].chunksTransferred = + action.payload.chunksTransferred + }) + builder.addCase(sendFile.fulfilled, (state, action) => { + delete state.sendingFilesProgress[action.payload.transferId] + }) + builder.addCase(sendFile.rejected, (state, action) => { + const { transferId, filePath } = action.payload?.error.payload || {} + if (transferId) { + delete state.sendingFilesProgress[transferId] + } + state.sendingErrors?.push({ + code: action.payload?.error.type, + message: action.payload?.error.message, + transferId, + filePath, + }) + }) + builder.addCase(clearSendErrors, (state, action) => { + state.sendingErrors = state.sendingErrors?.filter( + (error) => error.transferId !== action.payload.transferId + ) + }) + builder.addCase(fileTransferGetPrepared, (state, action) => { + state.receivingFilesProgress[action.payload.transferId] = { + transferId: action.payload.transferId, + chunksCount: action.payload.chunksCount, + chunksTransferred: 0, + filePath: action.payload.filePath, + } + }) + builder.addCase(fileTransferChunkGet, (state, action) => { + state.receivingFilesProgress[ + action.payload.transferId + ].chunksTransferred = action.payload.chunksTransferred + }) + builder.addCase(getFile.fulfilled, (state, action) => { + delete state.receivingFilesProgress[action.payload.transferId] + }) + builder.addCase(getFile.rejected, (state, action) => { + if (action.meta.aborted) { + const transfer = Object.entries(state.receivingFilesProgress).find( + ([, item]) => item.filePath === action.meta.arg.filePath + ) + if (transfer) { + const transferId = Number(transfer[0]) + delete state.receivingFilesProgress[transferId] + } + } else { + const { transferId, filePath } = action.payload?.error.payload || {} + if (transferId) { + delete state.receivingFilesProgress[transferId] + } + state.receivingErrors?.push({ + code: action.payload?.error.type, + message: action.payload?.error.message, + transferId, + filePath: action.payload?.error.payload?.filePath, + }) + } + }) + builder.addCase(clearGetErrors, (state, action) => { + state.receivingErrors = state.receivingErrors?.filter( + (error) => error.transferId !== action.payload.transferId + ) + }) + } +) diff --git a/libs/generic-view/store/src/lib/file-transfer/send-file.action.ts b/libs/generic-view/store/src/lib/file-transfer/send-file.action.ts new file mode 100644 index 000000000..78782564b --- /dev/null +++ b/libs/generic-view/store/src/lib/file-transfer/send-file.action.ts @@ -0,0 +1,91 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { createAsyncThunk } from "@reduxjs/toolkit" +import { ReduxRootState } from "Core/__deprecated__/renderer/store" +import { + sendClearRequest, + sendFileRequest, + startPreSendFileRequest, +} from "device/feature" +import { DeviceId } from "Core/device/constants/device-id" +import { ActionName } from "../action-names" +import { fileTransferChunkSent, fileTransferSendPrepared } from "./actions" +import { AppError, AppErrorType } from "Core/core/errors" +import { GeneralError } from "device/models" + +export type SendFileErrorPayload = { + transferId?: number + filePath: string +} + +interface SendFileError { + deviceId: DeviceId + error: AppError +} + +export const sendFile = createAsyncThunk< + { transferId: number }, + { deviceId: DeviceId; filePath: string; targetPath: string }, + { state: ReduxRootState; rejectValue: SendFileError } +>( + ActionName.FileTransferSend, + async ({ deviceId, filePath, targetPath }, { rejectWithValue, dispatch }) => { + const preTransferResponse = await startPreSendFileRequest( + filePath, + targetPath, + deviceId + ) + + if (preTransferResponse.ok) { + const { transferId, chunksCount } = preTransferResponse.data + dispatch( + fileTransferSendPrepared({ + transferId, + chunksCount, + }) + ) + + for (let chunkNumber = 1; chunkNumber <= chunksCount; chunkNumber++) { + // TODO: consider using signal to abort + const { ok, error } = await sendFileRequest(transferId, chunkNumber) + if (!ok) { + await sendClearRequest(transferId) + return rejectWithValue({ + deviceId, + error: { + ...error, + payload: { + transferId, + filePath, + }, + }, + }) + } + dispatch( + fileTransferChunkSent({ + transferId, + chunksTransferred: chunkNumber, + }) + ) + } + await sendClearRequest(transferId) + return { transferId } + } else { + return rejectWithValue({ + deviceId, + error: { + name: GeneralError.IncorrectResponse, + type: GeneralError.IncorrectResponse, + message: "Incorrect response", + payload: { + transferId: preTransferResponse.error.payload, + filePath, + }, + }, + }) + } + } +) diff --git a/libs/generic-view/store/src/lib/hooks/index.ts b/libs/generic-view/store/src/lib/hooks/index.ts index 1ad759f15..29cc2b7aa 100644 --- a/libs/generic-view/store/src/lib/hooks/index.ts +++ b/libs/generic-view/store/src/lib/hooks/index.ts @@ -7,3 +7,5 @@ export * from "./use-api-serial-port-listeners" export * from "./use-outbox" export * from "./use-screen-title" export * from "./use-locked-device-handler" +export * from "./use-backup-list" +export * from "./use-app-events-listeners" diff --git a/libs/generic-view/store/src/lib/hooks/use-api-serial-port-listeners.ts b/libs/generic-view/store/src/lib/hooks/use-api-serial-port-listeners.ts index e32ea0e89..3e7585bbd 100644 --- a/libs/generic-view/store/src/lib/hooks/use-api-serial-port-listeners.ts +++ b/libs/generic-view/store/src/lib/hooks/use-api-serial-port-listeners.ts @@ -5,15 +5,19 @@ import { Device } from "Core/device-manager/reducers/device-manager.interface" import { useEffect } from "react" -import { useDispatch } from "react-redux" +import { useDispatch, useSelector } from "react-redux" import { answerMain, DeviceManagerMainEvent } from "shared/utils" import { detachDevice } from "../views/actions" import { getAPIConfig } from "../get-api-config" import { Dispatch } from "Core/__deprecated__/renderer/store" import { DeviceType } from "Core/device" +import { setBackupProcessStatus } from "../backup/actions" +import { closeAllModals } from "../modals/actions" +import { selectBackupProcessStatus } from "../selectors" export const useAPISerialPortListeners = () => { const dispatch = useDispatch() + const backupProcess = useSelector(selectBackupProcessStatus) useEffect(() => { const unregisterFailListener = answerMain( @@ -39,12 +43,16 @@ export const useAPISerialPortListeners = () => { ) const unregisterDetachedListener = answerMain( DeviceManagerMainEvent.DeviceDetached, - (properties) => { + async (properties) => { const { id, deviceType } = properties if (deviceType !== DeviceType.APIDevice) { return } dispatch(detachDevice({ deviceId: id })) + dispatch(closeAllModals()) + if (backupProcess) { + dispatch(setBackupProcessStatus("FAILED")) + } } ) return () => { @@ -52,5 +60,5 @@ export const useAPISerialPortListeners = () => { unregisterConnectListener() unregisterFailListener() } - }, [dispatch]) + }, [backupProcess, dispatch]) } diff --git a/libs/generic-view/store/src/lib/hooks/use-app-events-listeners.ts b/libs/generic-view/store/src/lib/hooks/use-app-events-listeners.ts new file mode 100644 index 000000000..251e1942d --- /dev/null +++ b/libs/generic-view/store/src/lib/hooks/use-app-events-listeners.ts @@ -0,0 +1,27 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { useEffect } from "react" +import { useDispatch } from "react-redux" +import { answerMain, AppEvents } from "shared/utils" +import { Dispatch } from "Core/__deprecated__/renderer/store" +import { refreshBackupList } from "../backup/refresh-backup-list.action" + +export const useAppEventsListeners = () => { + const dispatch = useDispatch() + + useEffect(() => { + const unregisterWindowFocusedListener = answerMain( + AppEvents.WindowFocused, + () => { + dispatch(refreshBackupList()) + } + ) + + return () => { + unregisterWindowFocusedListener() + } + }, [dispatch]) +} diff --git a/libs/generic-view/store/src/lib/hooks/use-backup-list.ts b/libs/generic-view/store/src/lib/hooks/use-backup-list.ts new file mode 100644 index 000000000..e1292c44c --- /dev/null +++ b/libs/generic-view/store/src/lib/hooks/use-backup-list.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { Dispatch } from "Core/__deprecated__/renderer/store" +import { useEffect } from "react" +import { useDispatch } from "react-redux" +import { refreshBackupList } from "../backup/refresh-backup-list.action" + +export const useBackupList = () => { + const dispatch = useDispatch() + + useEffect(() => { + const interval = setInterval(() => { + dispatch(refreshBackupList()) + }, 5000) + return () => { + clearInterval(interval) + } + }, [dispatch]) + + return undefined +} diff --git a/libs/generic-view/store/src/lib/hooks/use-outbox.ts b/libs/generic-view/store/src/lib/hooks/use-outbox.ts index ec8e5dc8c..e3024cbcc 100644 --- a/libs/generic-view/store/src/lib/hooks/use-outbox.ts +++ b/libs/generic-view/store/src/lib/hooks/use-outbox.ts @@ -31,3 +31,8 @@ export const useOutbox = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [activeDevice, lastRefreshTimestamp]) } + +export const OutboxWrapper = () => { + useOutbox() + return null +} diff --git a/libs/generic-view/store/src/lib/selectors/active-device-configuration.ts b/libs/generic-view/store/src/lib/selectors/active-device-configuration.ts new file mode 100644 index 000000000..9cc922d87 --- /dev/null +++ b/libs/generic-view/store/src/lib/selectors/active-device-configuration.ts @@ -0,0 +1,21 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { createSelector } from "@reduxjs/toolkit" +import { ReduxRootState } from "Core/__deprecated__/renderer/store" +import { selectActiveDevice } from "./active-device" + +export const selectActiveDeviceConfiguration = createSelector( + [ + selectActiveDevice, + (state: ReduxRootState) => state.genericViews.devicesConfiguration, + ], + (activeDevice, devicesConfiguration) => { + if (activeDevice) { + return devicesConfiguration[activeDevice] + } + return undefined + } +) diff --git a/libs/generic-view/store/src/lib/selectors/active-device-features.ts b/libs/generic-view/store/src/lib/selectors/active-device-features.ts index 339532184..606ffed49 100644 --- a/libs/generic-view/store/src/lib/selectors/active-device-features.ts +++ b/libs/generic-view/store/src/lib/selectors/active-device-features.ts @@ -4,18 +4,11 @@ */ import { createSelector } from "@reduxjs/toolkit" -import { ReduxRootState } from "Core/__deprecated__/renderer/store" -import { selectActiveDevice } from "./active-device" +import { selectActiveDeviceConfiguration } from "./active-device-configuration" export const selectActiveDeviceFeatures = createSelector( - [ - selectActiveDevice, - (state: ReduxRootState) => state.genericViews.devicesConfiguration, - ], - (activeDevice, devicesConfiguration) => { - if (activeDevice) { - return devicesConfiguration[activeDevice].features - } - return undefined + selectActiveDeviceConfiguration, + (activeDeviceConfiguration) => { + return activeDeviceConfiguration?.features } ) diff --git a/libs/generic-view/store/src/lib/selectors/backup-location.ts b/libs/generic-view/store/src/lib/selectors/backup-location.ts new file mode 100644 index 000000000..5f1cfb38e --- /dev/null +++ b/libs/generic-view/store/src/lib/selectors/backup-location.ts @@ -0,0 +1,18 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { createSelector } from "@reduxjs/toolkit" +import { ReduxRootState } from "Core/__deprecated__/renderer/store" +import { selectActiveDeviceConfiguration } from "./active-device-configuration" + +export const selectBackupLocation = createSelector( + selectActiveDeviceConfiguration, + (state: ReduxRootState) => state.settings.osBackupLocation, + (deviceConfiguration, location) => { + const { vendorId, productId } = deviceConfiguration?.apiConfig || {} + const deviceDirectory = `${vendorId}_${productId}` + return vendorId && productId ? `${location}/${deviceDirectory}` : location + } +) diff --git a/libs/generic-view/store/src/lib/selectors/backup-process-status.ts b/libs/generic-view/store/src/lib/selectors/backup-process-status.ts new file mode 100644 index 000000000..4825f5b87 --- /dev/null +++ b/libs/generic-view/store/src/lib/selectors/backup-process-status.ts @@ -0,0 +1,12 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { createSelector } from "@reduxjs/toolkit" +import { ReduxRootState } from "Core/__deprecated__/renderer/store" + +export const selectBackupProcessStatus = createSelector( + (state: ReduxRootState) => state.genericBackups.backupProcess?.status, + (status) => status +) diff --git a/libs/generic-view/store/src/lib/selectors/backup-progress.ts b/libs/generic-view/store/src/lib/selectors/backup-progress.ts new file mode 100644 index 000000000..e0e65d9e6 --- /dev/null +++ b/libs/generic-view/store/src/lib/selectors/backup-progress.ts @@ -0,0 +1,40 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { createSelector } from "@reduxjs/toolkit" + +import { ReduxRootState } from "Core/__deprecated__/renderer/store" + +export const backupProgress = createSelector( + [(state: ReduxRootState) => state.genericBackups.backupProcess], + (backupProcess) => { + if (!backupProcess) { + return { progress: 0 } + } + + if (backupProcess.status === "DONE") { + return { progress: 100 } + } + + const features = Object.values(backupProcess.featureFilesTransfer) + const downloadedFilesCount = features.filter( + (item) => item.status === "DONE" + ).length + + if (features.length <= downloadedFilesCount) { + return { progress: 90 } + } + + const [featureInProgress] = + Object.entries(backupProcess.featureFilesTransfer).find( + ([, item]) => item.status === "IN_PROGRESS" + ) ?? [] + + return { + progress: Math.floor(10 + (downloadedFilesCount / features.length) * 80), + featureInProgress, + } + } +) diff --git a/libs/generic-view/store/src/lib/selectors/device-backups.ts b/libs/generic-view/store/src/lib/selectors/device-backups.ts index baa959d05..c0e976ef8 100644 --- a/libs/generic-view/store/src/lib/selectors/device-backups.ts +++ b/libs/generic-view/store/src/lib/selectors/device-backups.ts @@ -9,10 +9,10 @@ import { ReduxRootState } from "Core/__deprecated__/renderer/store" export const selectDeviceBackups = createSelector( selectActiveDevice, - (state: ReduxRootState) => state.genericBackups.files, + (state: ReduxRootState) => state.genericBackups.backups, (activeDevice, backups) => { return backups - .filter((backup) => backup.device.serialNumber === activeDevice) + .filter((backup) => backup.serialNumber === activeDevice) .sort((a, b) => b.date.getTime() - a.date.getTime()) } ) diff --git a/libs/generic-view/store/src/lib/selectors/index.ts b/libs/generic-view/store/src/lib/selectors/index.ts index b93425e6c..c18301dd2 100644 --- a/libs/generic-view/store/src/lib/selectors/index.ts +++ b/libs/generic-view/store/src/lib/selectors/index.ts @@ -12,3 +12,6 @@ export * from "./component" export * from "./view" export * from "./api-error" export * from "./device-backups" +export * from "./backup-progress" +export * from "./backup-process-status" +export * from "./backup-location" diff --git a/libs/generic-view/store/src/lib/views/reducer.ts b/libs/generic-view/store/src/lib/views/reducer.ts index ae7852056..4a24af18f 100644 --- a/libs/generic-view/store/src/lib/views/reducer.ts +++ b/libs/generic-view/store/src/lib/views/reducer.ts @@ -50,6 +50,7 @@ interface GenericState { lastResponse: unknown lastRefresh?: number activeDevice?: DeviceId + pendingDevice?: DeviceId devicesConfiguration: Record apiErrors: Record } @@ -152,12 +153,17 @@ export const genericViewsReducer = createReducer(initialState, (builder) => { : {}), } } + if (state.activeDevice === undefined && state.pendingDevice === deviceId) { + state.activeDevice = deviceId + state.pendingDevice = undefined + } }) builder.addCase(activateDevice, (state, action) => { const { deviceId } = action.payload state.activeDevice = state.devicesConfiguration?.[deviceId]?.apiConfig ? deviceId : undefined + state.pendingDevice = deviceId }) builder.addCase(detachDevice, (state, action) => { const { deviceId } = action.payload @@ -167,6 +173,9 @@ export const genericViewsReducer = createReducer(initialState, (builder) => { if (state.activeDevice === deviceId) { state.activeDevice = undefined } + if (state.pendingDevice === deviceId) { + state.pendingDevice = undefined + } }) builder.addCase(getOutboxData.fulfilled, (state, action) => { const { deviceId, timestamp } = action.payload diff --git a/libs/generic-view/theme/src/lib/color.ts b/libs/generic-view/theme/src/lib/color.ts index bc48ef3ed..289ec6d75 100644 --- a/libs/generic-view/theme/src/lib/color.ts +++ b/libs/generic-view/theme/src/lib/color.ts @@ -13,4 +13,5 @@ export const color = { grey4: "#D2D6DB", grey5: "#F4F5F6", grey6: "#FBFBFB", + red1: "#E96A6A", } as const diff --git a/libs/generic-view/theme/src/lib/font-size.ts b/libs/generic-view/theme/src/lib/font-size.ts index 447b66624..1eb3aeea6 100644 --- a/libs/generic-view/theme/src/lib/font-size.ts +++ b/libs/generic-view/theme/src/lib/font-size.ts @@ -17,4 +17,6 @@ export const fontSize = { buttonLink: "1.4rem", buttonText: "1.2rem", detailText: "1.2rem", + labelText: "1.2rem", + modalTitle: "2rem", } as const diff --git a/libs/generic-view/theme/src/lib/generic-theme-provider.tsx b/libs/generic-view/theme/src/lib/generic-theme-provider.tsx index 43b5b58ea..29b13ff39 100644 --- a/libs/generic-view/theme/src/lib/generic-theme-provider.tsx +++ b/libs/generic-view/theme/src/lib/generic-theme-provider.tsx @@ -58,5 +58,23 @@ const GlobalStyle = createGlobalStyle<{ theme: Theme }>` box-shadow: 0 2rem 10rem 0 ${({ theme }) => theme.color.black + "26"}; display: flex; flex-direction: column; + position: relative; + + .modal-close-button:nth-child(2) { + display: none; + } + } + + *::-webkit-scrollbar { + width: 0.5rem; + } + + *::-webkit-scrollbar-track { + background-color: transparent; + } + + *::-webkit-scrollbar-thumb { + background-color: ${({ theme }) => theme.color.grey2}; + border-radius: 0.25rem; } ` diff --git a/libs/generic-view/theme/src/lib/line-height.ts b/libs/generic-view/theme/src/lib/line-height.ts index 7739e2c77..4b4357c11 100644 --- a/libs/generic-view/theme/src/lib/line-height.ts +++ b/libs/generic-view/theme/src/lib/line-height.ts @@ -17,4 +17,6 @@ export const lineHeight = { buttonLink: "2.2rem", buttonText: "2rem", detailText: "2rem", + labelText: "2rem", + modalTitle: "3.2rem", } as const diff --git a/libs/generic-view/ui/src/index.ts b/libs/generic-view/ui/src/index.ts index 9529bdef9..16d34ebeb 100644 --- a/libs/generic-view/ui/src/index.ts +++ b/libs/generic-view/ui/src/index.ts @@ -13,7 +13,9 @@ import { buttons } from "./lib/buttons/buttons" export { default as Icon } from "./lib/icon/icon" export * from "./lib/api-connection-demo" export * from "./lib/interactive/modal/modal-base" +export * from "./lib/interactive/modal/modal-helpers" export * from "./lib/shared/shared" +export * from "./lib/predefined/backup/backup-error" const apiComponents = { ...predefinedComponents, @@ -27,4 +29,3 @@ const apiComponents = { export default apiComponents export type APIComponents = typeof apiComponents - diff --git a/libs/generic-view/ui/src/lib/buttons/button-base/button-base.tsx b/libs/generic-view/ui/src/lib/buttons/button-base/button-base.tsx index 5924e1eb3..24b12061a 100644 --- a/libs/generic-view/ui/src/lib/buttons/button-base/button-base.tsx +++ b/libs/generic-view/ui/src/lib/buttons/button-base/button-base.tsx @@ -11,11 +11,12 @@ import { DefaultButton } from "../../shared/button" interface Props extends HTMLAttributes { action: ButtonAction viewKey?: string + disabled?: boolean } export const ButtonBase: FunctionComponent = ({ action, ...props }) => { const callButtonAction = useButtonAction(props.viewKey as string) const callAction = () => callButtonAction(action) - return + return } diff --git a/libs/generic-view/ui/src/lib/buttons/button-base/use-button-action.ts b/libs/generic-view/ui/src/lib/buttons/button-base/use-button-action.ts index 26dc7a269..ffd4aca8e 100644 --- a/libs/generic-view/ui/src/lib/buttons/button-base/use-button-action.ts +++ b/libs/generic-view/ui/src/lib/buttons/button-base/use-button-action.ts @@ -7,20 +7,31 @@ import { closeAllModals, closeDomainModals, closeModal, + createBackup, openModal, replaceModal, + selectActiveDevice, + sendFile, useScreenTitle, } from "generic-view/store" import { ButtonAction } from "generic-view/utils" -import { useDispatch } from "react-redux" +import { useDispatch, useSelector } from "react-redux" import { useHistory } from "react-router" +import { Dispatch, ReduxRootState } from "Core/__deprecated__/renderer/store" +import { getPaths } from "shared/app-state" +import { PayloadAction } from "@reduxjs/toolkit" +import { ResultObject } from "Core/core/builder" +import { platform } from "Core/__deprecated__/renderer/utils/platform" export const useButtonAction = (viewKey: string) => { - const dispatch = useDispatch() + const dispatch = useDispatch() const navigate = useHistory() const currentViewName = useScreenTitle(viewKey) + const restore = useButtonRestoreAction() + const backup = useButtonBackupAction() - return (action: ButtonAction) => { + return (action?: ButtonAction) => { + if (!action) return switch (action.type) { case "open-modal": dispatch( @@ -57,6 +68,60 @@ export const useButtonAction = (viewKey: string) => { }, }) break + case "restore-data": + void restore() + break + case "backup-data": + void backup() + break + case "custom": + action.callback() + break + default: + break + } + } +} + +const useButtonRestoreAction = () => { + const dispatch = useDispatch() + const osBackupLocation = useSelector( + (state: ReduxRootState) => state.settings.osBackupLocation + ) + const deviceId = useSelector(selectActiveDevice) + + return async () => { + const { payload: getPathsPayload } = (await dispatch( + getPaths({ + properties: ["openFile"], + defaultPath: osBackupLocation, + }) + )) as PayloadAction> + const location = getPathsPayload.ok && (getPathsPayload.data as string[])[0] + if (location && deviceId) { + const [fileName] = location + .split(platform.windows() ? "\\" : "/") + .reverse() + dispatch( + sendFile({ + deviceId: deviceId, + filePath: location, + targetPath: `/storage/emulated/0/Documents/${fileName}`, + }) + ) + } + } +} + +const useButtonBackupAction = () => { + const dispatch = useDispatch() + const deviceId = useSelector(selectActiveDevice) + + return async () => { + if (deviceId) { + await dispatch( + createBackup({ features: ["CONTACTS_LIST", "MESSAGES", "CALL_LOG"] }) + ) } } } diff --git a/libs/generic-view/ui/src/lib/buttons/button-primary.tsx b/libs/generic-view/ui/src/lib/buttons/button-primary.tsx index ce58776e9..b40032157 100644 --- a/libs/generic-view/ui/src/lib/buttons/button-primary.tsx +++ b/libs/generic-view/ui/src/lib/buttons/button-primary.tsx @@ -10,10 +10,11 @@ import { ButtonBase } from "./button-base/button-base" import Icon from "../icon/icon" import { withConfig } from "../utils/with-config" -interface Config { +export interface Config { text: string icon?: IconType action: ButtonAction + disabled?: boolean } export const ButtonPrimary: APIFC = ({ @@ -22,7 +23,7 @@ export const ButtonPrimary: APIFC = ({ ...props }) => { return ( - diff --git a/libs/generic-view/ui/src/lib/buttons/button-secondary.tsx b/libs/generic-view/ui/src/lib/buttons/button-secondary.tsx index fd0afc94d..6cee4f449 100644 --- a/libs/generic-view/ui/src/lib/buttons/button-secondary.tsx +++ b/libs/generic-view/ui/src/lib/buttons/button-secondary.tsx @@ -5,15 +5,9 @@ import React from "react" import styled from "styled-components" -import { APIFC, ButtonAction, IconType } from "generic-view/utils" +import { APIFC } from "generic-view/utils" import { withConfig } from "../utils/with-config" -import { ButtonPrimary } from "./button-primary" - -interface Config { - text: string - icon?: IconType - action: ButtonAction -} +import { ButtonPrimary, Config } from "./button-primary" export const ButtonSecondary: APIFC = (props) => { return ) @@ -39,30 +35,39 @@ export const ButtonText: APIFC = ({ export default withConfig(ButtonText) const Button = styled(ButtonBase)<{ $modifiers?: ButtonModifiers[] }>` + color: ${({ theme }) => theme.color.grey1}; + + &:hover { + color: ${({ theme }) => theme.color.black}; + } + span { font-size: ${({ theme }) => theme.fontSize.buttonLink}; line-height: ${({ theme }) => theme.lineHeight.buttonLink}; - color: ${({ theme }) => theme.color.grey1}; letter-spacing: 0.05em; text-transform: unset; transition: color 0.15s ease-in-out; } - &:hover span { - color: ${({ theme }) => theme.color.black}; - } ${({ $modifiers }) => $modifiers?.includes("link") && buttonLinkModifier}; ${({ $modifiers }) => $modifiers?.includes("uppercase") && buttonUpperCaseModifier}; ${({ $modifiers }) => $modifiers?.includes("hover-underline") && buttonHoverUnderlineModifier}; + + .icon { + width: 2.2rem; + height: 2.2rem; + + svg * { + fill: currentColor; + } + } ` const buttonLinkModifier = css` - span { - color: ${({ theme }) => theme.color.blue2}; - } - &:hover span { + color: ${({ theme }) => theme.color.blue2}; + &:hover { color: ${({ theme }) => theme.color.blue2}; } ` @@ -73,6 +78,7 @@ const buttonUpperCaseModifier = css` font-size: ${({ theme }) => theme.fontSize.buttonText}; line-height: ${({ theme }) => theme.lineHeight.buttonText}; letter-spacing: 0.1em; + margin-top: 0.1rem; } ` diff --git a/libs/generic-view/ui/src/lib/icon/get-icon.helper.tsx b/libs/generic-view/ui/src/lib/icon/get-icon.helper.tsx index 366e3130d..c1088c1c2 100644 --- a/libs/generic-view/ui/src/lib/icon/get-icon.helper.tsx +++ b/libs/generic-view/ui/src/lib/icon/get-icon.helper.tsx @@ -29,6 +29,15 @@ import CloseIcon from "Core/__deprecated__/renderer/svg/close.svg" import Device from "Core/__deprecated__/renderer/svg/device.svg" import Mudita from "Core/__deprecated__/renderer/svg/mudita.svg" import Spinner from "Core/__deprecated__/renderer/svg/spinner.svg" + +import Backup from "./svg/backup.svg" +import Settings from "./svg/settings.svg" +import PasswordShow from "./svg/password-show.svg" +import PasswordHide from "./svg/password-hide.svg" +import Success from "./svg/confirm.svg" +import Failure from "./svg/failed.svg" +import Folder from "./svg/folder.svg" + import { IconType } from "generic-view/utils" const typeToIcon: Record = { @@ -56,6 +65,13 @@ const typeToIcon: Record = { [IconType.Device]: Device, [IconType.Mudita]: Mudita, [IconType.Spinner]: Spinner, + [IconType.Backup]: Backup, + [IconType.Settings]: Settings, + [IconType.PasswordShow]: PasswordShow, + [IconType.PasswordHide]: PasswordHide, + [IconType.Success]: Success, + [IconType.Failure]: Failure, + [IconType.Folder]: Folder } export const getIcon = ( diff --git a/libs/generic-view/ui/src/lib/icon/icon.tsx b/libs/generic-view/ui/src/lib/icon/icon.tsx index 67126e73a..3edf171fa 100644 --- a/libs/generic-view/ui/src/lib/icon/icon.tsx +++ b/libs/generic-view/ui/src/lib/icon/icon.tsx @@ -3,18 +3,17 @@ * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md */ -import { IconType } from "generic-view/utils" -import { APIFC } from "generic-view/utils" +import { APIFC, IconType } from "generic-view/utils" import React from "react" import styled from "styled-components" import { getIcon } from "./get-icon.helper" -interface IconProps { +interface Data { type: IconType } const StyledIcon = styled.div` - color: pink; + color: inherit; width: 3.2rem; height: 3.2rem; & > * { @@ -23,7 +22,7 @@ const StyledIcon = styled.div` } ` -const Icon: APIFC = ({ className, data, ...rest }) => { +const Icon: APIFC = ({ data, ...rest }) => { if (!data) { return null } @@ -31,11 +30,7 @@ const Icon: APIFC = ({ className, data, ...rest }) => { const SVGToDisplay = getIcon(data.type) return ( - + ) diff --git a/libs/generic-view/ui/src/lib/icon/svg/backup.svg b/libs/generic-view/ui/src/lib/icon/svg/backup.svg new file mode 100644 index 000000000..725259c33 --- /dev/null +++ b/libs/generic-view/ui/src/lib/icon/svg/backup.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libs/generic-view/ui/src/lib/icon/svg/confirm.svg b/libs/generic-view/ui/src/lib/icon/svg/confirm.svg new file mode 100644 index 000000000..cf840aa80 --- /dev/null +++ b/libs/generic-view/ui/src/lib/icon/svg/confirm.svg @@ -0,0 +1,4 @@ + + + + diff --git a/libs/generic-view/ui/src/lib/icon/svg/failed.svg b/libs/generic-view/ui/src/lib/icon/svg/failed.svg new file mode 100644 index 000000000..3a889e881 --- /dev/null +++ b/libs/generic-view/ui/src/lib/icon/svg/failed.svg @@ -0,0 +1,4 @@ + + + + diff --git a/libs/generic-view/ui/src/lib/icon/svg/folder.svg b/libs/generic-view/ui/src/lib/icon/svg/folder.svg new file mode 100644 index 000000000..a5fe7ef7e --- /dev/null +++ b/libs/generic-view/ui/src/lib/icon/svg/folder.svg @@ -0,0 +1,5 @@ + + + diff --git a/libs/generic-view/ui/src/lib/icon/svg/password-hide.svg b/libs/generic-view/ui/src/lib/icon/svg/password-hide.svg new file mode 100644 index 000000000..dba916fb8 --- /dev/null +++ b/libs/generic-view/ui/src/lib/icon/svg/password-hide.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libs/generic-view/ui/src/lib/icon/svg/password-show.svg b/libs/generic-view/ui/src/lib/icon/svg/password-show.svg new file mode 100644 index 000000000..936f800fb --- /dev/null +++ b/libs/generic-view/ui/src/lib/icon/svg/password-show.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libs/generic-view/ui/src/lib/icon/svg/settings.svg b/libs/generic-view/ui/src/lib/icon/svg/settings.svg new file mode 100644 index 000000000..c66b4e815 --- /dev/null +++ b/libs/generic-view/ui/src/lib/icon/svg/settings.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libs/generic-view/ui/src/lib/interactive/form/form.tsx b/libs/generic-view/ui/src/lib/interactive/form/form.tsx new file mode 100644 index 000000000..17a536f96 --- /dev/null +++ b/libs/generic-view/ui/src/lib/interactive/form/form.tsx @@ -0,0 +1,24 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import React from "react" +import { APIFC } from "generic-view/utils" +import { UseFormProps } from "react-hook-form/dist/types/form" +import { FormProvider, useForm } from "react-hook-form" +import { withConfig } from "../../utils/with-config" + +interface Config { + formOptions?: Pick +} + +export const Form: APIFC = ({ config, children }) => { + const methods = useForm({ + mode: "onTouched", + ...config?.formOptions, + }) + return {children} +} + +export default withConfig(Form) diff --git a/libs/generic-view/ui/src/lib/interactive/input/text-input.tsx b/libs/generic-view/ui/src/lib/interactive/input/text-input.tsx new file mode 100644 index 000000000..7c6187419 --- /dev/null +++ b/libs/generic-view/ui/src/lib/interactive/input/text-input.tsx @@ -0,0 +1,180 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import React, { useEffect, useId, useState } from "react" +import { APIFC, IconType } from "generic-view/utils" +import { withConfig } from "../../utils/with-config" +import { withData } from "../../utils/with-data" +import styled, { css } from "styled-components" +import { IconButton } from "../../shared/button" +import Icon from "../../icon/icon" +import { useFormContext } from "react-hook-form" +import { RegisterOptions } from "react-hook-form/dist/types/validator" + +interface Data { + value: string +} + +interface Config { + name: string + label: string + type: "text" | "password" | "email" | "tel" | "url" + validation?: Pick< + RegisterOptions, + "required" | "pattern" | "maxLength" | "minLength" | "deps" | "validate" + > +} + +export const TextInput: APIFC = ({ data, config }) => { + const id = useId() + const { + register, + watch, + setValue, + formState: { errors }, + } = useFormContext() + const value = (watch(config!.name) as string) || "" + const [passwordVisible, setPasswordVisible] = useState(false) + + const error = errors[config!.name] + const inputType = + config?.type === "password" && !passwordVisible ? "password" : "text" + + const togglePasswordVisibility = () => { + setPasswordVisible((prevState) => !prevState) + } + + useEffect(() => { + if (config?.name) { + setValue(config.name, data?.value) + } + }, [config?.name, data?.value, setValue]) + + return ( + + + + + {config?.type === "password" && value.length > 0 && ( + + + + )} + + {error && {error?.message?.toString()}} + + ) +} + +export default withData(withConfig(TextInput)) + +const Wrapper = styled.div` + display: flex; + flex-direction: column; + width: 100%; +` + +const Label = styled.label<{ $inactive: boolean; $withError?: boolean }>` + color: ${({ theme }) => theme.color.grey2}; + letter-spacing: 0.04em; + font-size: ${({ theme }) => theme.fontSize.labelText}; + line-height: ${({ theme }) => theme.lineHeight.labelText}; + transition: all 0.2s ease-in-out; + position: relative; + z-index: 1; + + ${({ $inactive, theme }) => + $inactive && + css` + pointer-events: none; + font-size: ${theme.fontSize.paragraph3}; + letter-spacing: 0.05em; + transform: translateY(2.6rem); + `} + + ${({ $withError, $inactive, theme }) => + $withError && + !$inactive && + css` + color: ${theme.color.red1}; + `} +` + +const inputFocusStyles = css` + border-bottom-color: ${({ theme }) => theme.color.black}; +` + +const Input = styled.input<{ $withError?: boolean }>` + color: ${({ theme }) => theme.color.black}; + font-size: ${({ theme }) => theme.fontSize.paragraph3}; + line-height: ${({ theme }) => theme.lineHeight.paragraph3}; + letter-spacing: 0.05em; + padding: 0 3.2rem 0 0; + min-height: 3.2rem; + border: none; + border-bottom: 0.1rem solid ${({ theme }) => theme.color.grey4}; + box-sizing: content-box; + flex: 1; + outline: none; + transition: border-bottom-color 0.2s ease-in-out; + + &[type="password"] { + font-family: Arial, sans-serif; + letter-spacing: 0.15em; + font-weight: bold; + } + + &:focus { + ${inputFocusStyles}; + } + + ${({ $withError, theme }) => + $withError && + css` + border-bottom-color: ${theme.color.red1} !important; + `} +` + +const InputWrapper = styled.div` + display: flex; + flex-direction: row; + width: 100%; + + &:hover { + ${Input} { + ${inputFocusStyles}; + } + } + + button { + margin-left: -3.2rem; + } +` + +const Error = styled.p` + color: ${({ theme }) => theme.color.red1}; + font-size: ${({ theme }) => theme.fontSize.labelText}; + line-height: ${({ theme }) => theme.lineHeight.labelText}; + min-height: ${({ theme }) => theme.lineHeight.labelText}; + letter-spacing: 0.04em; + margin: 0.4rem 0 0; +` diff --git a/libs/generic-view/ui/src/lib/interactive/interactive.ts b/libs/generic-view/ui/src/lib/interactive/interactive.ts index 50cd7f367..409338318 100644 --- a/libs/generic-view/ui/src/lib/interactive/interactive.ts +++ b/libs/generic-view/ui/src/lib/interactive/interactive.ts @@ -5,8 +5,14 @@ import Modal from "./modal/modal" import { TextModal } from "./modal/text-modal" +import TextInput from "./input/text-input" +import ProgressBar from "./progress-bar/progress-bar" +import Form from "./form/form" export const interactive = { modal: Modal, "text-modal": TextModal, + "text-input": TextInput, + "progress-bar": ProgressBar, + form: Form, } diff --git a/libs/generic-view/ui/src/lib/interactive/modal/index.ts b/libs/generic-view/ui/src/lib/interactive/modal/index.ts new file mode 100644 index 000000000..7603ff0a1 --- /dev/null +++ b/libs/generic-view/ui/src/lib/interactive/modal/index.ts @@ -0,0 +1,9 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +export * from "./modal-base" +export * from "./modal" +export * from "./text-modal" +export * from "./modal-helpers" diff --git a/libs/generic-view/ui/src/lib/interactive/modal/modal-base.tsx b/libs/generic-view/ui/src/lib/interactive/modal/modal-base.tsx index 114b68cc0..675c80974 100644 --- a/libs/generic-view/ui/src/lib/interactive/modal/modal-base.tsx +++ b/libs/generic-view/ui/src/lib/interactive/modal/modal-base.tsx @@ -10,9 +10,6 @@ import React, { } from "react" import ReactModal from "react-modal" import { ModalLayers } from "Core/modals-manager/constants/modal-layers.enum" -import styled from "styled-components" -import Icon from "../../icon/icon" -import { IconType } from "generic-view/utils" interface Props extends PropsWithChildren { opened: boolean @@ -21,7 +18,6 @@ interface Props extends PropsWithChildren { } variant?: "default" | "small" closeButton?: ReactElement - headerDisabled?: boolean overlayHidden?: boolean } @@ -31,7 +27,6 @@ export const ModalBase: FunctionComponent = ({ children, variant = "default", closeButton, - headerDisabled, overlayHidden, }) => { return ( @@ -46,74 +41,17 @@ export const ModalBase: FunctionComponent = ({ zIndex: ModalLayers.Default, }, content: { - width: config?.width || (variant === "small" ? 408 : 614), + width: config?.width || (variant === "small" ? 384 : 614), + maxHeight: 574, zIndex: ModalLayers.Default, // @ts-ignore - "--modal-padding": variant === "small" ? "3.6rem" : "4.8rem", + "--modal-padding": variant === "small" ? "2.4rem" : "4.8rem", }, }} closeTimeoutMS={400} > - {!headerDisabled && {closeButton}} + {closeButton} {children} ) } - -export const ModalCloseIcon = styled(Icon).attrs({ - data: { type: IconType.Close }, -})` - cursor: pointer; - width: 1.6rem; - height: 1.6rem; -` - -export const ModalTitleIcon = styled(Icon)` - width: 8rem; - height: 8rem; - padding: ${({ theme }) => theme.space.lg}; - border-radius: 50%; - background-color: ${({ theme }) => theme.color.grey5}; -` - -export const ModalCenteredContent = styled.div` - display: flex; - flex-direction: column; - align-items: center; - padding: var(--modal-padding); - gap: 4rem; - - ${ModalTitleIcon} { - margin-bottom: -2.6rem; - } - - h1 { - margin: 0; - font-size: ${({ theme }) => theme.fontSize.headline3}; - font-weight: ${({ theme }) => theme.fontWeight.bold}; - line-height: ${({ theme }) => theme.lineHeight.headline3}; - text-align: center; - } - - p { - margin: 0; - font-size: ${({ theme }) => theme.fontSize.paragraph1}; - line-height: ${({ theme }) => theme.lineHeight.paragraph1}; - text-align: center; - color: ${({ theme }) => theme.color.grey1}; - letter-spacing: 0.02em; - } -` - -export const ModalHeader = styled.header` - display: flex; - flex-direction: row; - justify-content: flex-end; - align-items: flex-end; - padding: ${({ theme }) => theme.space.xl} ${({ theme }) => theme.space.xl} 0 0; - min-height: 5.6rem; - - & + ${ModalCenteredContent} { - padding-top: 0; - } -` diff --git a/libs/generic-view/ui/src/lib/interactive/modal/modal-helpers.tsx b/libs/generic-view/ui/src/lib/interactive/modal/modal-helpers.tsx new file mode 100644 index 000000000..d0cd978ef --- /dev/null +++ b/libs/generic-view/ui/src/lib/interactive/modal/modal-helpers.tsx @@ -0,0 +1,160 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import React, { FunctionComponent } from "react" +import styled, { css } from "styled-components" +import Icon from "../../icon/icon" +import { ButtonAction, IconType } from "generic-view/utils" +import { iconButtonStyles } from "../../shared/button" +import { ButtonBase } from "../../buttons/button-base/button-base" + +export const ModalTitleIcon = styled(Icon)` + width: 6.8rem; + height: 6.8rem; + padding: ${({ theme }) => theme.space.md}; + border-radius: 50%; + background-color: ${({ theme }) => theme.color.grey5}; +` + +export const ModalScrollableContent = styled.div` + overflow-y: auto; + + &::-webkit-scrollbar { + width: 0.2rem; + } + + &::-webkit-scrollbar-track { + background-color: transparent; + } + + &::-webkit-scrollbar-thumb { + background-color: ${({ theme }) => theme.color.grey2}; + } +` + +const listBulletStyle = css` + content: url('data:image/svg+xml, '); +` + +export const ModalCenteredContent = styled.div` + display: flex; + flex-direction: column; + align-items: center; + padding: var(--modal-padding); + height: 100%; + overflow: hidden; + gap: ${({ theme }) => theme.space.xl}; + + ${ModalTitleIcon} { + margin-bottom: -1rem; + + + h1 { + margin: 0; + font-size: ${({ theme }) => theme.fontSize.modalTitle}; + line-height: ${({ theme }) => theme.lineHeight.modalTitle}; + font-weight: ${({ theme }) => theme.fontWeight.bold}; + text-align: center; + } + } + + & > p, + article p { + font-size: ${({ theme }) => theme.fontSize.paragraph1}; + line-height: ${({ theme }) => theme.lineHeight.paragraph1}; + text-align: center; + color: ${({ theme }) => theme.color.grey1}; + letter-spacing: 0.02em; + margin: 0; + white-space: pre-line; + } + + & > ul, + article ul { + margin: 0; + padding-left: 2.9rem; + display: flex; + flex-direction: column; + gap: 0.4rem; + + li { + padding: 0.4rem 1.2rem 0.4rem 2.1rem; + font-size: ${({ theme }) => theme.fontSize.paragraph1}; + line-height: ${({ theme }) => theme.lineHeight.paragraph1}; + letter-spacing: 0.02em; + color: ${({ theme }) => theme.color.grey1}; + text-align: left; + + &::marker { + ${listBulletStyle}; + } + } + } + + *:has(${ModalScrollableContent}) { + overflow: hidden; + height: fit-content; + display: flex; + flex-direction: column; + } +` + +export const ModalCloseIcon = styled(Icon).attrs({ + data: { type: IconType.Close }, +})` + cursor: pointer; + width: 1.6rem; + height: 1.6rem; +` + +export const closeButtonStyles = css` + position: absolute; + right: ${({ theme }) => theme.space.xl}; + top: ${({ theme }) => theme.space.xl}; + z-index: 2; +` + +const ModalClose = styled(ButtonBase)` + ${iconButtonStyles}; + ${closeButtonStyles}; +` + +export const ModalCloseButton: FunctionComponent<{ + action?: ButtonAction +}> = ({ action }) => { + if (!action) return null + return ( + + + + ) +} + +export const ModalButtons = styled.div<{ $vertical?: boolean }>` + display: grid; + + ${({ $vertical }) => + $vertical + ? css` + grid-template-columns: 15.6rem; + grid-auto-flow: row; + grid-auto-rows: auto; + row-gap: 1.4rem; + ` + : css` + width: 100%; + grid-template-columns: 1fr 1fr; + grid-template-rows: auto; + column-gap: 2.4rem; + `} + + button { + flex: 1; + min-height: 3.2rem; + } +` diff --git a/libs/generic-view/ui/src/lib/interactive/modal/modal.tsx b/libs/generic-view/ui/src/lib/interactive/modal/modal.tsx index f4c5a3955..2e437b73c 100644 --- a/libs/generic-view/ui/src/lib/interactive/modal/modal.tsx +++ b/libs/generic-view/ui/src/lib/interactive/modal/modal.tsx @@ -5,13 +5,11 @@ import React from "react" import { BaseGenericComponent, ModalAction } from "generic-view/utils" -import styled from "styled-components" -import { ButtonBase } from "../../buttons/button-base/button-base" import { useModalsQueue } from "./use-modals-queue" import { withData } from "../../utils/with-data" import { withConfig } from "../../utils/with-config" -import { ModalCloseIcon, ModalBase, ModalHeader } from "./modal-base" -import { iconButtonStyles } from "../../shared/button" +import { ModalBase } from "./modal-base" +import { ModalCloseButton } from "./modal-helpers" interface Config { closeButtonAction?: ModalAction @@ -26,24 +24,14 @@ export const Modal: BaseGenericComponent< > = ({ children, componentKey, config }) => { const { opened } = useModalsQueue(componentKey) - const closeAction: ModalAction = config?.closeButtonAction - ? config.closeButtonAction - : { type: "close-modal", modalKey: componentKey } - return ( - - - - - + {config?.closeButtonAction && ( + + )} {children} ) } export default withConfig(withData(Modal)) - -const ModalClose = styled(ButtonBase)` - ${iconButtonStyles}; -` diff --git a/libs/generic-view/ui/src/lib/interactive/modal/text-modal.tsx b/libs/generic-view/ui/src/lib/interactive/modal/text-modal.tsx index dcdffb9da..6657a240a 100644 --- a/libs/generic-view/ui/src/lib/interactive/modal/text-modal.tsx +++ b/libs/generic-view/ui/src/lib/interactive/modal/text-modal.tsx @@ -6,12 +6,11 @@ import React, { UIEventHandler, useState } from "react" import { BaseGenericComponent, ModalAction } from "generic-view/utils" import styled, { css } from "styled-components" -import { ButtonBase } from "../../buttons/button-base/button-base" import { useModalsQueue } from "./use-modals-queue" import { withData } from "../../utils/with-data" import { withConfig } from "../../utils/with-config" -import { ModalCloseIcon, ModalBase, ModalHeader } from "./modal-base" -import { iconButtonStyles } from "../../shared/button" +import { ModalBase } from "./modal-base" +import { ModalCloseButton } from "./modal-helpers" interface Config { closeButtonAction?: ModalAction @@ -41,13 +40,10 @@ export const TextModal: BaseGenericComponent< config={{ width: config?.width || 678, }} - headerDisabled > - - - - - +
+ +
{children} ) @@ -55,19 +51,28 @@ export const TextModal: BaseGenericComponent< export default withConfig(withData(TextModal)) -const ModalClose = styled(ButtonBase)` - ${iconButtonStyles}; -` - const headerWhileScrollingStyles = css` box-shadow: 0 1rem 5rem 0 rgba(0, 0, 0, 0.08); ` -const TextModalHeader = styled(ModalHeader)<{ $active: boolean }>` +const Header = styled.header<{ $active: boolean }>` + position: relative; + width: 100%; + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: flex-end; + min-height: 8rem; padding: ${({ theme }) => theme.space.xl}; transition: box-shadow 0.3s ease-in-out; background-color: ${({ theme }) => theme.color.white}; ${({ $active }) => $active && headerWhileScrollingStyles}; + + button { + position: relative; + top: 0; + right: 0; + } ` const ScrollContainer = styled.div` diff --git a/libs/generic-view/ui/src/lib/interactive/progress-bar/progress-bar.tsx b/libs/generic-view/ui/src/lib/interactive/progress-bar/progress-bar.tsx new file mode 100644 index 000000000..666f26f9f --- /dev/null +++ b/libs/generic-view/ui/src/lib/interactive/progress-bar/progress-bar.tsx @@ -0,0 +1,85 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import React, { useId } from "react" +import { APIFC } from "generic-view/utils" +import styled from "styled-components" +import { withConfig } from "../../utils/with-config" +import { withData } from "../../utils/with-data" + +interface Data { + value: number + message?: string +} + +interface Config { + maxValue: number + valueUnit?: string +} + +export const ProgressBar: APIFC = ({ + data, + config, + ...props +}) => { + const id = useId() + return ( + + {data?.message && {data.message}} + + + + ) +} + +export default withData(withConfig(ProgressBar)) + +const Wrapper = styled.div` + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + gap: ${({ theme }) => theme.space.sm}; +` + +const Message = styled.p` + font-size: ${({ theme }) => theme.fontSize.paragraph4}; + line-height: ${({ theme }) => theme.lineHeight.paragraph4}; + color: ${({ theme }) => theme.color.grey2}; + font-weight: ${({ theme }) => theme.fontWeight.light}; + letter-spacing: 0.05em; + margin: 0 0 0.6rem 0; +` + +const Progress = styled.progress` + width: 100%; + height: 0.4rem; + border-radius: 0.2rem; + overflow: hidden; + + &::-webkit-progress-bar { + background-color: ${({ theme }) => theme.color.grey5}; + } + + &::-webkit-progress-value { + background-color: ${({ theme }) => theme.color.grey1}; + border-radius: 0.2rem; + transition: width 0.15s linear; + } +` + +const Label = styled.label` + font-size: ${({ theme }) => theme.fontSize.paragraph3}; + line-height: ${({ theme }) => theme.lineHeight.paragraph3}; + color: ${({ theme }) => theme.color.black}; + letter-spacing: 0.05em; +` diff --git a/libs/generic-view/ui/src/lib/predefined/backup-restore-available.tsx b/libs/generic-view/ui/src/lib/predefined/backup-restore-available.tsx index b88c997a6..e89f1b25a 100644 --- a/libs/generic-view/ui/src/lib/predefined/backup-restore-available.tsx +++ b/libs/generic-view/ui/src/lib/predefined/backup-restore-available.tsx @@ -23,3 +23,5 @@ export const BackupRestoreAvailable: APIFC = ({ return children } + +export default BackupRestoreAvailable diff --git a/libs/generic-view/ui/src/lib/predefined/backup/backup-create.tsx b/libs/generic-view/ui/src/lib/predefined/backup/backup-create.tsx new file mode 100644 index 000000000..ed116cda1 --- /dev/null +++ b/libs/generic-view/ui/src/lib/predefined/backup/backup-create.tsx @@ -0,0 +1,183 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import React, { FunctionComponent, useEffect, useRef, useState } from "react" +import { APIFC, ButtonAction } from "generic-view/utils" +import { withConfig } from "../../utils/with-config" +import { BackupFeatures, Feature } from "./backup-features" +import { BackupPassword } from "./backup-password" +import { useFormContext } from "react-hook-form" +import { BackupProgress } from "./backup-progress" +import { ModalCenteredContent, ModalCloseButton } from "../../interactive/modal" +import { BackupSuccess } from "./backup-success" +import { BackupError } from "./backup-error" +import { Form } from "../../interactive/form/form" +import { useDispatch, useSelector } from "react-redux" +import { Dispatch } from "Core/__deprecated__/renderer/store" +import { + cleanBackupProcess, + closeModal as closeModalAction, + createBackup, + selectBackupProcessStatus, +} from "generic-view/store" + +enum Step { + Features, + Password, + Progress, + Success, + Error, +} + +interface Config { + features?: Feature[] + modalKey?: string +} + +const BackupCreateForm: FunctionComponent = ({ + features = [], + modalKey, +}) => { + const dispatch = useDispatch() + const { handleSubmit } = useFormContext() + const backupProcessStatus = useSelector(selectBackupProcessStatus) + const backupAbortReference = useRef() + const [step, setStep] = useState(Step.Features) + + const featuresKeys = features?.map((item) => item.key) ?? [] + const closeButtonVisible = [ + Step.Features, + Step.Password, + Step.Success, + ].includes(step) + const abortButtonVisible = step === Step.Progress + + const closeModal = () => { + dispatch(closeModalAction({ key: modalKey! })) + dispatch(cleanBackupProcess()) + } + + const startBackup = (password?: string) => { + const promise = dispatch( + createBackup({ + features: featuresKeys, + password, + }) + ) + backupAbortReference.current = ( + promise as unknown as { + abort: VoidFunction + } + ).abort + } + + const backupCloseButtonAction: ButtonAction = { + type: "custom", + callback: closeModal, + } + + const backupAbortButtonAction: ButtonAction = { + type: "custom", + callback: () => { + backupAbortReference.current?.() + }, + } + + const backupCreateButtonAction: ButtonAction = { + type: "custom", + callback: () => { + dispatch(cleanBackupProcess()) + setStep(Step.Password) + }, + } + + const passwordSkipButtonAction: ButtonAction = { + type: "custom", + callback: () => { + handleSubmit(() => { + startBackup() + })() + }, + } + + const passwordConfirmButtonAction: ButtonAction = { + type: "custom", + callback: () => { + handleSubmit((data) => { + startBackup(data.password) + })() + }, + } + + useEffect(() => { + switch (backupProcessStatus) { + case "DONE": + setStep(Step.Success) + break + case "FAILED": + setStep(Step.Error) + break + case "PRE_BACKUP": + case "FILES_TRANSFER": + case "SAVE_FILE": + setStep(Step.Progress) + break + } + }, [backupProcessStatus]) + + useEffect(() => { + return () => { + backupAbortReference.current?.() + } + }, []) + + return ( + <> + {closeButtonVisible && ( + + )} + {abortButtonVisible && ( + + )} + + {step === Step.Features && ( + + )} + {step === Step.Password && ( + + )} + {step === Step.Progress && } + {step === Step.Success && ( + + )} + {step === Step.Error && ( + + )} + + + ) +} + +export const BackupCreate: APIFC = ({ + data, + config, + children, + ...props +}) => { + return ( +
+ + + ) +} + +export default withConfig(BackupCreate) diff --git a/libs/generic-view/ui/src/lib/predefined/backup/backup-error.tsx b/libs/generic-view/ui/src/lib/predefined/backup/backup-error.tsx new file mode 100644 index 000000000..f5dc11ecf --- /dev/null +++ b/libs/generic-view/ui/src/lib/predefined/backup/backup-error.tsx @@ -0,0 +1,49 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import React, { FunctionComponent } from "react" +import { ButtonAction, IconType } from "generic-view/utils" +import { ModalButtons, ModalTitleIcon } from "../../interactive/modal" +import { ButtonSecondary } from "../../buttons/button-secondary" +import { defineMessages } from "react-intl" +import { intl } from "Core/__deprecated__/renderer/utils/intl" + +const messages = defineMessages({ + title: { + id: "module.genericViews.backup.failure.title", + }, + defaultErrorMessage: { + id: "module.genericViews.backup.failure.defaultErrorMessage", + }, + closeButtonLabel: { + id: "module.genericViews.backup.failure.closeButtonLabel", + }, +}) + +interface Props { + closeAction: ButtonAction +} + +export const BackupError: FunctionComponent = ({ closeAction }) => { + return ( + <> + +

{intl.formatMessage(messages.title)}

+

{intl.formatMessage(messages.defaultErrorMessage)}

+ + + + + ) +} diff --git a/libs/generic-view/ui/src/lib/predefined/backup/backup-features.tsx b/libs/generic-view/ui/src/lib/predefined/backup/backup-features.tsx new file mode 100644 index 000000000..bfc36172e --- /dev/null +++ b/libs/generic-view/ui/src/lib/predefined/backup/backup-features.tsx @@ -0,0 +1,88 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import React, { FunctionComponent } from "react" +import styled from "styled-components" +import { ButtonAction, IconType } from "generic-view/utils" +import { ButtonSecondary } from "../../buttons/button-secondary" +import { ButtonPrimary } from "../../buttons/button-primary" +import { + ModalButtons, + ModalScrollableContent, + ModalTitleIcon, +} from "../../interactive/modal" +import { defineMessages } from "react-intl" +import { intl } from "Core/__deprecated__/renderer/utils/intl" + +const messages = defineMessages({ + title: { + id: "module.genericViews.backup.features.title", + }, + description: { + id: "module.genericViews.backup.features.description", + }, + cancelButtonLabel: { + id: "module.genericViews.backup.features.cancelButtonLabel", + }, + createButtonLabel: { + id: "module.genericViews.backup.features.createButtonLabel", + }, +}) + +export interface Feature { + label: string + key: string +} + +interface Props { + features: Feature[] + closeAction: ButtonAction + nextAction: ButtonAction +} + +export const BackupFeatures: FunctionComponent = ({ + features, + closeAction, + nextAction, +}) => { + return ( + <> + +

{intl.formatMessage(messages.title)}

+
+

{intl.formatMessage(messages.description)}

+ +
    + {features.map((feature, index) => ( +
  • {feature.label}
  • + ))} +
+
+
+ + + + + + ) +} + +const Article = styled.article` + width: 100%; + + & > p { + padding-bottom: 1.4rem; + } +` diff --git a/libs/generic-view/ui/src/lib/predefined/backup/backup-password.tsx b/libs/generic-view/ui/src/lib/predefined/backup/backup-password.tsx new file mode 100644 index 000000000..1a2a1b362 --- /dev/null +++ b/libs/generic-view/ui/src/lib/predefined/backup/backup-password.tsx @@ -0,0 +1,141 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import React, { FunctionComponent } from "react" +import styled from "styled-components" +import { ButtonAction, IconType } from "generic-view/utils" +import { withConfig } from "../../utils/with-config" +import { TextInput } from "../../interactive/input/text-input" +import { ButtonPrimary } from "../../buttons/button-primary" +import { ButtonText } from "../../buttons/button-text" +import { useFormContext } from "react-hook-form" +import { ModalButtons, ModalTitleIcon } from "../../interactive/modal" +import { defineMessages } from "react-intl" +import { intl } from "Core/__deprecated__/renderer/utils/intl" + +const messages = defineMessages({ + title: { + id: "module.genericViews.backup.password.title", + }, + subtitle: { + id: "module.genericViews.backup.password.subtitle", + }, + description: { + id: "module.genericViews.backup.password.description", + }, + description2: { + id: "module.genericViews.backup.password.description2", + }, + passwordPlaceholder: { + id: "module.genericViews.backup.password.passwordPlaceholder", + }, + passwordRepeatPlaceholder: { + id: "module.genericViews.backup.password.passwordRepeatPlaceholder", + }, + confirmButtonLabel: { + id: "module.genericViews.backup.password.confirmButtonLabel", + }, + skipButtonLabel: { + id: "module.genericViews.backup.password.skipButtonLabel", + }, + passwordRepeatNotMatchingError: { + id: "module.genericViews.backup.password.passwordRepeatNotMatchingError", + }, +}) + +interface Props { + skipAction: ButtonAction + nextAction: ButtonAction +} + +export const BackupPassword: FunctionComponent = ({ + skipAction, + nextAction, +}) => { + const { watch, formState } = useFormContext() + const password = watch("password") + const passwordRepeat = watch("passwordRepeat") + + const passwordsMatching = password === passwordRepeat + + return ( + <> + +

+ {intl.formatMessage(messages.title)} + + {intl.formatMessage(messages.subtitle)} + +

+ + {intl.formatMessage(messages.description)} + {intl.formatMessage(messages.description2)} + + + { + return ( + value === formValues.password || + intl.formatMessage(messages.passwordRepeatNotMatchingError) + ) + }, + }, + }} + /> + + + + + + ) +} + +export default withConfig(BackupPassword) + +const HeadlineOptional = styled.span` + margin: -0.2rem 0 0; + display: block; + text-align: center; + font-size: ${({ theme }) => theme.fontSize.paragraph1}; + line-height: ${({ theme }) => theme.lineHeight.paragraph1}; + font-weight: ${({ theme }) => theme.fontWeight.regular}; + letter-spacing: 0.02em; +` + +const Text = styled.p` + span { + display: block; + margin: 0; + color: ${({ theme }) => theme.color.grey2}; + font-weight: ${({ theme }) => theme.fontWeight.light}; + } +` diff --git a/libs/generic-view/ui/src/lib/predefined/backup/backup-progress.tsx b/libs/generic-view/ui/src/lib/predefined/backup/backup-progress.tsx new file mode 100644 index 000000000..73cc71808 --- /dev/null +++ b/libs/generic-view/ui/src/lib/predefined/backup/backup-progress.tsx @@ -0,0 +1,72 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import React, { FunctionComponent } from "react" +import styled from "styled-components" +import { IconType } from "generic-view/utils" +import { ProgressBar } from "../../interactive/progress-bar/progress-bar" +import { ModalTitleIcon } from "../../interactive/modal" +import { defineMessages } from "react-intl" +import { intl } from "Core/__deprecated__/renderer/utils/intl" +import { useSelector } from "react-redux" +import { backupProgress } from "generic-view/store" + +const messages = defineMessages({ + title: { + id: "module.genericViews.backup.progress.title", + }, + description: { + id: "module.genericViews.backup.progress.description", + }, + progressDetails: { + id: "module.genericViews.backup.progress.progressDetails", + }, + progressDetailsForFeature: { + id: "module.genericViews.backup.progress.progressDetailsForFeature", + }, +}) + +export interface Feature { + label: string + key: string +} + +interface Props { + features: Feature[] +} + +export const BackupProgress: FunctionComponent = ({ features }) => { + const progressStatus = useSelector(backupProgress) + + const featureLabel = features.find( + (item) => item.key === progressStatus.featureInProgress + )?.label + const detailMessage = featureLabel + ? intl.formatMessage(messages.progressDetailsForFeature, { featureLabel }) + : intl.formatMessage(messages.progressDetails) + + return ( + <> + +

{intl.formatMessage(messages.title)}

+

{intl.formatMessage(messages.description)}

+ + + ) +} + +const Progress = styled(ProgressBar)` + progress { + max-width: 23.3rem; + } +` diff --git a/libs/generic-view/ui/src/lib/predefined/backup/backup-success.tsx b/libs/generic-view/ui/src/lib/predefined/backup/backup-success.tsx new file mode 100644 index 000000000..e473718cc --- /dev/null +++ b/libs/generic-view/ui/src/lib/predefined/backup/backup-success.tsx @@ -0,0 +1,90 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import React, { FunctionComponent } from "react" +import { IconType } from "generic-view/utils" +import { ModalButtons, ModalTitleIcon } from "../../interactive/modal" +import { ButtonSecondary } from "../../buttons/button-secondary" +import { defineMessages } from "react-intl" +import { intl } from "Core/__deprecated__/renderer/utils/intl" +import { openBackupDirectoryRequest } from "device/feature" +import styled from "styled-components" +import { ButtonText } from "../../buttons/button-text" + +const messages = defineMessages({ + title: { + id: "module.genericViews.backup.success.title", + }, + description: { + id: "module.genericViews.backup.success.description", + }, + openBackupButtonLabel: { + id: "module.genericViews.backup.success.openBackupButtonLabel", + }, + closeButtonLabel: { + id: "module.genericViews.backup.success.closeButtonLabel", + }, +}) + +export interface Feature { + label: string + key: string +} + +interface Props { + onClose: VoidFunction +} + +export const BackupSuccess: FunctionComponent = ({ onClose }) => { + const openBackupCallback = async () => { + const openDirectoryResponse = await openBackupDirectoryRequest() + if (openDirectoryResponse.ok) { + onClose() + } + } + return ( + <> + +

{intl.formatMessage(messages.title)}

+
+

{intl.formatMessage(messages.description)}

+ +
+ + + + + ) +} + +const Article = styled.article` + display: flex; + flex-direction: column; + align-items: center; + gap: 1.4rem; + + button { + height: 3.2rem; + } +` diff --git a/libs/generic-view/ui/src/lib/predefined/overview-predefined.ts b/libs/generic-view/ui/src/lib/predefined/overview-predefined.ts index cdbff31e8..185a3c87f 100644 --- a/libs/generic-view/ui/src/lib/predefined/overview-predefined.ts +++ b/libs/generic-view/ui/src/lib/predefined/overview-predefined.ts @@ -6,11 +6,13 @@ import OverviewOsVersion from "./overview-os-version" import AboutDataBox from "./about-data-box" import LastBackupDate from "./last-backup-date" -import { BackupRestoreAvailable } from "./backup-restore-available" +import BackupRestoreAvailable from "./backup-restore-available" +import BackupCreate from "./backup/backup-create" export const predefinedComponents = { "overview-os-version": OverviewOsVersion, "about-data-box": AboutDataBox, "last-backup-date": LastBackupDate, "backup-restore-available": BackupRestoreAvailable, + "backup-create": BackupCreate, } diff --git a/libs/generic-view/ui/src/lib/shared/button.tsx b/libs/generic-view/ui/src/lib/shared/button.tsx index d71afb1a1..9ea3e21a1 100644 --- a/libs/generic-view/ui/src/lib/shared/button.tsx +++ b/libs/generic-view/ui/src/lib/shared/button.tsx @@ -16,6 +16,7 @@ export const DefaultButton = styled.button` display: flex; flex-direction: row; align-items: center; + justify-content: center; gap: 0.4rem; ` diff --git a/libs/generic-view/utils/src/lib/models/button.types.ts b/libs/generic-view/utils/src/lib/models/button.types.ts index 36464cd26..bd23f2ecb 100644 --- a/libs/generic-view/utils/src/lib/models/button.types.ts +++ b/libs/generic-view/utils/src/lib/models/button.types.ts @@ -48,4 +48,13 @@ export interface NavigateAction { viewKey: string } -export type ButtonAction = ModalAction | NavigateAction | BackupAction +export interface CustomAction { + type: "custom" + callback: VoidFunction +} + +export type ButtonAction = + | ModalAction + | NavigateAction + | BackupAction + | CustomAction diff --git a/libs/generic-view/utils/src/lib/models/icons.types.ts b/libs/generic-view/utils/src/lib/models/icons.types.ts index 78806e724..c853c8f0c 100644 --- a/libs/generic-view/utils/src/lib/models/icons.types.ts +++ b/libs/generic-view/utils/src/lib/models/icons.types.ts @@ -28,4 +28,11 @@ export enum IconType { Device = "device", Mudita = "mudita", Spinner = "spinner", + Backup = "backup", + Settings = "settings", + PasswordShow = "password-show", + PasswordHide = "password-hide", + Success = "success", + Failure = "failure", + Folder = "folder", } diff --git a/libs/generic-view/views/src/lib/mc-overview/mc-overview.ts b/libs/generic-view/views/src/lib/mc-overview/mc-overview.ts index 53450b0e2..3a42fb3dd 100644 --- a/libs/generic-view/views/src/lib/mc-overview/mc-overview.ts +++ b/libs/generic-view/views/src/lib/mc-overview/mc-overview.ts @@ -30,33 +30,6 @@ export const generateMcOverviewLayout: ViewGenerator = ( ) => { const summary = generateMcOverviewSummaryLayout(config.summary) - // Push a demo data for backup section - config.sections?.push({ - type: "mc-overview-backup", - dataKey: "backup", - title: "Backup", - backupFeatures: [ - { - label: "Contacts list", - key: "contacts-list", - }, - { - label: "Call log", - key: "call-log", - }, - ], - restoreFeatures: [ - { - label: "Contacts list", - keys: ["contacts-list"], - }, - { - label: "Call log", - keys: ["call-log"], - }, - ], - }) - const sections = config.sections?.map((section) => { switch (section?.type) { diff --git a/libs/generic-view/views/src/lib/mc-overview/section-backup/backup-create-modal.ts b/libs/generic-view/views/src/lib/mc-overview/section-backup/backup-create-modal.ts new file mode 100644 index 000000000..3b16702dd --- /dev/null +++ b/libs/generic-view/views/src/lib/mc-overview/section-backup/backup-create-modal.ts @@ -0,0 +1,35 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { Subview, ViewGenerator } from "generic-view/utils" +import { BackupTileConfig } from "device/models" + +export enum BackupModalsKeys { + Domain = "backup", + Create = "backup-create", + CreateContent = "backup-create-content", +} + +export const generateBackupCreateModalLayout: ViewGenerator< + BackupTileConfig, + Subview +> = (config) => { + return { + [config.dataKey + BackupModalsKeys.Create]: { + component: "modal", + config: { + variant: "small", + }, + childrenKeys: [config.dataKey + BackupModalsKeys.CreateContent], + }, + [config.dataKey + BackupModalsKeys.CreateContent]: { + component: "backup-create", + config: { + features: config.backupFeatures, + modalKey: config.dataKey + BackupModalsKeys.Create, + }, + }, + } +} diff --git a/libs/generic-view/views/src/lib/mc-overview/section-backup/section-backup.ts b/libs/generic-view/views/src/lib/mc-overview/section-backup/section-backup.ts index cb9696194..2f257ecc3 100644 --- a/libs/generic-view/views/src/lib/mc-overview/section-backup/section-backup.ts +++ b/libs/generic-view/views/src/lib/mc-overview/section-backup/section-backup.ts @@ -6,6 +6,10 @@ import { intl } from "Core/__deprecated__/renderer/utils/intl" import { BackupTileConfig } from "device/models" import { Subview, ViewGenerator } from "generic-view/utils" +import { + BackupModalsKeys, + generateBackupCreateModalLayout, +} from "./backup-create-modal" enum BackupKeys { BackupInfo = "backup-info", @@ -90,7 +94,7 @@ export const generateMcOverviewBackupLayout: ViewGenerator< id: "module.genericBackup.restoreButtonLabel", }), action: { - type: "restore-data", + type: "backup-data", features: config.restoreFeatures, }, }, @@ -106,11 +110,13 @@ export const generateMcOverviewBackupLayout: ViewGenerator< id: "module.genericBackup.createButtonLabel", }), action: { - type: "backup-data", - features: config.backupFeatures, + type: "open-modal", + modalKey: config.dataKey + BackupModalsKeys.Create, + domain: BackupModalsKeys.Domain, }, }, }, + ...generateBackupCreateModalLayout(config), } : {}), } diff --git a/libs/generic-view/views/src/lib/mc-overview/section-update/section-update.ts b/libs/generic-view/views/src/lib/mc-overview/section-update/section-update.ts index a0b7eaeae..2000d9e58 100644 --- a/libs/generic-view/views/src/lib/mc-overview/section-update/section-update.ts +++ b/libs/generic-view/views/src/lib/mc-overview/section-update/section-update.ts @@ -73,6 +73,7 @@ export const generateMcOverviewUpdateData = ( semver.coerce(baseUpdateData.version as string)?.raw ?? "" ) } catch { + console.log("error") updateAvailable = false } if (updateAvailable) { diff --git a/libs/shared/utils/src/lib/call-renderer.helper.ts b/libs/shared/utils/src/lib/call-renderer.helper.ts index a931e90d7..bd1368a02 100644 --- a/libs/shared/utils/src/lib/call-renderer.helper.ts +++ b/libs/shared/utils/src/lib/call-renderer.helper.ts @@ -8,13 +8,14 @@ import { LoggerFactory } from "Core/core/factories" import { ApiSerialPortToRendererEvents } from "device/models" import { PureStrategyMainEvent } from "Core/device/strategies" import { getMainAppWindow } from "./get-main-app-window" -import { DeviceManagerMainEvent } from "./main-event.constant" +import { AppEvents, DeviceManagerMainEvent } from "./main-event.constant" const logger = LoggerFactory.getInstance() export type CallRendererEvent = | ApiSerialPortToRendererEvents | DeviceManagerMainEvent + | AppEvents | PureStrategyMainEvent export const callRenderer = (event: CallRendererEvent, payload?: unknown) => { diff --git a/libs/shared/utils/src/lib/main-event.constant.ts b/libs/shared/utils/src/lib/main-event.constant.ts index 3685d8918..611da78c0 100644 --- a/libs/shared/utils/src/lib/main-event.constant.ts +++ b/libs/shared/utils/src/lib/main-event.constant.ts @@ -8,3 +8,7 @@ export enum DeviceManagerMainEvent { DeviceConnected = "device-manager-device-connected", DeviceConnectFailed = "device-manager-device-connect-failed", } + +export enum AppEvents { + WindowFocused = "app-events-window-focused", +} diff --git a/libs/system-utils/feature/.babelrc b/libs/system-utils/feature/.babelrc new file mode 100644 index 000000000..ef4889c1a --- /dev/null +++ b/libs/system-utils/feature/.babelrc @@ -0,0 +1,20 @@ +{ + "presets": [ + [ + "@nx/react/babel", + { + "runtime": "automatic", + "useBuiltIns": "usage" + } + ] + ], + "plugins": [ + [ + "styled-components", + { + "pure": true, + "ssr": true + } + ] + ] +} diff --git a/libs/system-utils/feature/.eslintrc.json b/libs/system-utils/feature/.eslintrc.json new file mode 100644 index 000000000..cacbe2621 --- /dev/null +++ b/libs/system-utils/feature/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../../.eslintrc.js"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/libs/system-utils/feature/README.md b/libs/system-utils/feature/README.md new file mode 100644 index 000000000..09870cdc1 --- /dev/null +++ b/libs/system-utils/feature/README.md @@ -0,0 +1,7 @@ +# system-utils-feature + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test system-utils-feature` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/system-utils/feature/jest.config.ts b/libs/system-utils/feature/jest.config.ts new file mode 100644 index 000000000..103272573 --- /dev/null +++ b/libs/system-utils/feature/jest.config.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +export default { + displayName: "system-utils-feature", + preset: "../../../jest.preset.js", + transform: { + "^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "@nx/react/plugins/jest", + "^.+\\.[tj]sx?$": ["babel-jest", { presets: ["@nx/react/babel"] }], + }, + moduleFileExtensions: ["ts", "tsx", "js", "jsx"], + coverageDirectory: "../../../coverage/libs/system-utils/feature", +} diff --git a/libs/system-utils/feature/project.json b/libs/system-utils/feature/project.json new file mode 100644 index 000000000..175ca13e7 --- /dev/null +++ b/libs/system-utils/feature/project.json @@ -0,0 +1,20 @@ +{ + "name": "system-utils-feature", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/system-utils/feature/src", + "projectType": "library", + "tags": [], + "targets": { + "lint": { + "executor": "@nx/eslint:lint", + "outputs": ["{options.outputFile}"] + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/system-utils/feature/jest.config.ts" + } + } + } +} diff --git a/libs/system-utils/feature/src/index.ts b/libs/system-utils/feature/src/index.ts new file mode 100644 index 000000000..01a4f31c0 --- /dev/null +++ b/libs/system-utils/feature/src/index.ts @@ -0,0 +1,6 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +export * from "./lib/system-utils.module" diff --git a/libs/system-utils/feature/src/lib/directory/directory.service.ts b/libs/system-utils/feature/src/lib/directory/directory.service.ts new file mode 100644 index 000000000..36d227a6d --- /dev/null +++ b/libs/system-utils/feature/src/lib/directory/directory.service.ts @@ -0,0 +1,26 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { shell } from "electron" +import { IpcEvent } from "Core/core/decorators" +import { DirectoryServiceEvents } from "system-utils/models" +import { Result } from "Core/core/builder" +import { AppError } from "Core/core/errors" +import { GeneralError } from "device/models" + +export class Directory { + constructor() {} + + @IpcEvent(DirectoryServiceEvents.OpenDirectory) + public async open({ path }: { path: string }) { + const errorMessage = await shell.openPath(path) + if (errorMessage) { + return Result.failed( + new AppError(GeneralError.InternalError, errorMessage) + ) + } + return Result.success(undefined) + } +} diff --git a/libs/system-utils/feature/src/lib/system-utils.module.ts b/libs/system-utils/feature/src/lib/system-utils.module.ts new file mode 100644 index 000000000..90f5b229a --- /dev/null +++ b/libs/system-utils/feature/src/lib/system-utils.module.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +import { Directory } from "./directory/directory.service" + +export class SystemUtilsModule { + public directory = new Directory() + + constructor() {} + + public getServices() { + return [this.directory] + } +} diff --git a/libs/system-utils/feature/tsconfig.json b/libs/system-utils/feature/tsconfig.json new file mode 100644 index 000000000..4daaf45cd --- /dev/null +++ b/libs/system-utils/feature/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "jsx": "react-jsx", + "allowJs": false, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../tsconfig.base.json" +} diff --git a/libs/system-utils/feature/tsconfig.lib.json b/libs/system-utils/feature/tsconfig.lib.json new file mode 100644 index 000000000..21799b3e6 --- /dev/null +++ b/libs/system-utils/feature/tsconfig.lib.json @@ -0,0 +1,24 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "types": [ + "node", + + "@nx/react/typings/cssmodule.d.ts", + "@nx/react/typings/image.d.ts" + ] + }, + "exclude": [ + "jest.config.ts", + "src/**/*.spec.ts", + "src/**/*.test.ts", + "src/**/*.spec.tsx", + "src/**/*.test.tsx", + "src/**/*.spec.js", + "src/**/*.test.js", + "src/**/*.spec.jsx", + "src/**/*.test.jsx" + ], + "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"] +} diff --git a/libs/system-utils/feature/tsconfig.spec.json b/libs/system-utils/feature/tsconfig.spec.json new file mode 100644 index 000000000..25b7af8f6 --- /dev/null +++ b/libs/system-utils/feature/tsconfig.spec.json @@ -0,0 +1,20 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/libs/system-utils/models/.babelrc b/libs/system-utils/models/.babelrc new file mode 100644 index 000000000..ef4889c1a --- /dev/null +++ b/libs/system-utils/models/.babelrc @@ -0,0 +1,20 @@ +{ + "presets": [ + [ + "@nx/react/babel", + { + "runtime": "automatic", + "useBuiltIns": "usage" + } + ] + ], + "plugins": [ + [ + "styled-components", + { + "pure": true, + "ssr": true + } + ] + ] +} diff --git a/libs/system-utils/models/.eslintrc.json b/libs/system-utils/models/.eslintrc.json new file mode 100644 index 000000000..cacbe2621 --- /dev/null +++ b/libs/system-utils/models/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../../.eslintrc.js"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/libs/system-utils/models/README.md b/libs/system-utils/models/README.md new file mode 100644 index 000000000..588e511d7 --- /dev/null +++ b/libs/system-utils/models/README.md @@ -0,0 +1,7 @@ +# system-utils-models + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test system-utils-models` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/system-utils/models/jest.config.ts b/libs/system-utils/models/jest.config.ts new file mode 100644 index 000000000..56827b88e --- /dev/null +++ b/libs/system-utils/models/jest.config.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +export default { + displayName: "system-utils-models", + preset: "../../../jest.preset.js", + transform: { + "^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "@nx/react/plugins/jest", + "^.+\\.[tj]sx?$": ["babel-jest", { presets: ["@nx/react/babel"] }], + }, + moduleFileExtensions: ["ts", "tsx", "js", "jsx"], + coverageDirectory: "../../../coverage/libs/system-utils/models", +} diff --git a/libs/system-utils/models/project.json b/libs/system-utils/models/project.json new file mode 100644 index 000000000..9fad57830 --- /dev/null +++ b/libs/system-utils/models/project.json @@ -0,0 +1,20 @@ +{ + "name": "system-utils-models", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/system-utils/models/src", + "projectType": "library", + "tags": [], + "targets": { + "lint": { + "executor": "@nx/eslint:lint", + "outputs": ["{options.outputFile}"] + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/system-utils/models/jest.config.ts" + } + } + } +} diff --git a/libs/system-utils/models/src/index.ts b/libs/system-utils/models/src/index.ts new file mode 100644 index 000000000..fa2aed964 --- /dev/null +++ b/libs/system-utils/models/src/index.ts @@ -0,0 +1,6 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +export * from "./lib/directory-service-events" diff --git a/libs/system-utils/models/src/lib/directory-service-events.ts b/libs/system-utils/models/src/lib/directory-service-events.ts new file mode 100644 index 000000000..bbbe99e1f --- /dev/null +++ b/libs/system-utils/models/src/lib/directory-service-events.ts @@ -0,0 +1,8 @@ +/** + * Copyright (c) Mudita sp. z o.o. All rights reserved. + * For licensing, see https://github.com/mudita/mudita-center/blob/master/LICENSE.md + */ + +export enum DirectoryServiceEvents { + OpenDirectory = "directoryservice-open-directory", +} diff --git a/libs/system-utils/models/tsconfig.json b/libs/system-utils/models/tsconfig.json new file mode 100644 index 000000000..4daaf45cd --- /dev/null +++ b/libs/system-utils/models/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "jsx": "react-jsx", + "allowJs": false, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../tsconfig.base.json" +} diff --git a/libs/system-utils/models/tsconfig.lib.json b/libs/system-utils/models/tsconfig.lib.json new file mode 100644 index 000000000..21799b3e6 --- /dev/null +++ b/libs/system-utils/models/tsconfig.lib.json @@ -0,0 +1,24 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "types": [ + "node", + + "@nx/react/typings/cssmodule.d.ts", + "@nx/react/typings/image.d.ts" + ] + }, + "exclude": [ + "jest.config.ts", + "src/**/*.spec.ts", + "src/**/*.test.ts", + "src/**/*.spec.tsx", + "src/**/*.test.tsx", + "src/**/*.spec.js", + "src/**/*.test.js", + "src/**/*.spec.jsx", + "src/**/*.test.jsx" + ], + "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"] +} diff --git a/libs/system-utils/models/tsconfig.spec.json b/libs/system-utils/models/tsconfig.spec.json new file mode 100644 index 000000000..25b7af8f6 --- /dev/null +++ b/libs/system-utils/models/tsconfig.spec.json @@ -0,0 +1,20 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/package-lock.json b/package-lock.json index aed8be02d..06c6c1036 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,8 @@ "libs" ], "dependencies": { + "crypto-js": "^4.2.0", + "js-crc": "^0.2.0", "react-is": "18.2.0", "react-markdown": "^9.0.1", "serialport": "10.1.0", @@ -64,11 +66,13 @@ "@testing-library/user-event": "^14.5.1", "@types/archiver": "^5.3.1", "@types/chai": "^4.3.3", + "@types/crypto-js": "^4.2.2", "@types/elasticlunr": "^0.9.5", "@types/electron-devtools-installer": "^2.2.2", "@types/electron-localshortcut": "^3.1.0", "@types/history": "^4.7.9", "@types/jest": "^29.5.6", + "@types/js-crc": "^0.2.3", "@types/lodash": "^4.14.182", "@types/mime-types": "2.1.2", "@types/mock-fs": "^4.13.1", @@ -149,7 +153,7 @@ "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^7.2.13", "fs-extra": "^10.1.0", - "getmac": "^5.20.0", + "getmac": "^5.21.0", "googleapis": "^133.0.0", "history": "^4.10.1", "html-webpack-plugin": "^5.5.0", @@ -179,7 +183,7 @@ "react-beautiful-dnd": "^13.1.1", "react-dom": "^18.2.0", "react-google-button": "^0.7.2", - "react-hook-form": "~7.47.0", + "react-hook-form": "~7.50.1", "react-intersection-observer": "^9.4.0", "react-intl": "6.4.7", "react-modal": "^3.15.1", @@ -9467,6 +9471,12 @@ "@types/node": "*" } }, + "node_modules/@types/crypto-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz", + "integrity": "sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==", + "dev": true + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -9756,6 +9766,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@types/js-crc": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@types/js-crc/-/js-crc-0.2.3.tgz", + "integrity": "sha512-XQNB5dDWZ1S0AS/NzY0F/Bl8c8uOTC1MbTZrIj08HzkwT4POxgeA7+wWesrP4MvJEdvy+tsHya3OHzcLnQhfIg==", + "dev": true + }, "node_modules/@types/jsdom": { "version": "20.0.1", "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", @@ -17235,6 +17251,11 @@ "node": "*" } }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, "node_modules/crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -28016,6 +28037,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/js-crc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/js-crc/-/js-crc-0.2.0.tgz", + "integrity": "sha512-8DdCSAOACpF8WDAjyDFBC2rj8OS4HUP9mNZBDfl8jCiPCnJG+2bkuycalxwZh6heFy6PrMvoWTp47lp6gzT65A==" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -34945,9 +34971,9 @@ } }, "node_modules/react-hook-form": { - "version": "7.47.0", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.47.0.tgz", - "integrity": "sha512-F/TroLjTICipmHeFlMrLtNLceO2xr1jU3CyiNla5zdwsGUGu2UOxxR4UyJgLlhMwLW/Wzp4cpJ7CPfgJIeKdSg==", + "version": "7.50.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.50.1.tgz", + "integrity": "sha512-3PCY82oE0WgeOgUtIr3nYNNtNvqtJ7BZjsbxh6TnYNbXButaD5WpjOmTjdxZfheuHKR68qfeFnEDVYoSSFPMTQ==", "dev": true, "engines": { "node": ">=12.22.0" diff --git a/package.json b/package.json index 914e5cb42..cec0df44f 100644 --- a/package.json +++ b/package.json @@ -88,11 +88,13 @@ "@testing-library/user-event": "^14.5.1", "@types/archiver": "^5.3.1", "@types/chai": "^4.3.3", + "@types/crypto-js": "^4.2.2", "@types/elasticlunr": "^0.9.5", "@types/electron-devtools-installer": "^2.2.2", "@types/electron-localshortcut": "^3.1.0", "@types/history": "^4.7.9", "@types/jest": "^29.5.6", + "@types/js-crc": "^0.2.3", "@types/lodash": "^4.14.182", "@types/mime-types": "2.1.2", "@types/mock-fs": "^4.13.1", @@ -173,7 +175,7 @@ "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^7.2.13", "fs-extra": "^10.1.0", - "getmac": "^5.20.0", + "getmac": "^5.21.0", "googleapis": "^133.0.0", "history": "^4.10.1", "html-webpack-plugin": "^5.5.0", @@ -203,7 +205,7 @@ "react-beautiful-dnd": "^13.1.1", "react-dom": "^18.2.0", "react-google-button": "^0.7.2", - "react-hook-form": "~7.47.0", + "react-hook-form": "~7.50.1", "react-intersection-observer": "^9.4.0", "react-intl": "6.4.7", "react-modal": "^3.15.1", @@ -265,6 +267,8 @@ "npm": "9.5.1" }, "dependencies": { + "crypto-js": "^4.2.0", + "js-crc": "^0.2.0", "react-is": "18.2.0", "react-markdown": "^9.0.1", "serialport": "10.1.0", diff --git a/tsconfig.base.json b/tsconfig.base.json index b12a082f4..acafde405 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -41,7 +41,9 @@ "generic-view/utils": ["libs/generic-view/utils/src/index.ts"], "generic-view/views": ["libs/generic-view/views/src/index.ts"], "shared/app-state": ["libs/shared/app-state/src/index.ts"], - "shared/utils": ["libs/shared/utils/src/index.ts"] + "shared/utils": ["libs/shared/utils/src/index.ts"], + "system-utils/feature": ["libs/system-utils/feature/src/index.ts"], + "system-utils/models": ["libs/system-utils/models/src/index.ts"] } }, "exclude": [