From 392cf7fc2b76b9586cdc09f7d79cf1b17a7ca567 Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Wed, 6 Jul 2022 22:37:20 +0200 Subject: [PATCH] handle download error with notifications --- src/main/services/bs-installer.service.ts | 2 +- src/renderer/App.tsx | 9 +++++++++ .../pages/available-versions-list.components.tsx | 7 ++++++- src/renderer/services/bs-downloader.service.ts | 4 +--- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/services/bs-installer.service.ts b/src/main/services/bs-installer.service.ts index 3b5ca749..1536d5bd 100644 --- a/src/main/services/bs-installer.service.ts +++ b/src/main/services/bs-installer.service.ts @@ -128,7 +128,7 @@ export class BSInstallerService{ this.utils.newIpcSenc("bs-download.[Warning]", {success: true, data: out[1]}); } else if(out[0] === "[Error]" as DownloadEventType){ - reject(out); + reject(out[1]); this.killDownloadProcess(); log.error("Download Event, Error", data.toString()); } diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 7ad3a866..70271f15 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -9,16 +9,25 @@ import { BsmProgressBar } from "./components/progress-bar/bsm-progress-bar.compo import { useEffect } from "react"; import { ThemeService } from "./services/theme.service"; import { NotificationOverlay } from "./components/notification/notification-overlay.component"; +import { BsDownloaderService } from "./services/bs-downloader.service"; +import { NotificationService } from "./services/notification.service"; +import { distinctUntilChanged, filter, throttleTime } from "rxjs"; export default function App() { const themeService = ThemeService.getInstance(); + const bsDownloadService = BsDownloaderService.getInstance(); + const notificationService = NotificationService.getInstance(); useEffect(() => { themeService.theme$.subscribe(() => { if(themeService.isDark || (themeService.isOS && window.matchMedia('(prefers-color-scheme: dark)').matches)){ document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } }); + + bsDownloadService.downloadWarning$.pipe(throttleTime(1000), filter(v => !!v), distinctUntilChanged()).subscribe(() => { + notificationService.notifyWarning({title: "Warning", desc: "Your connection seems unstable"}); + }); }, []) diff --git a/src/renderer/pages/available-versions-list.components.tsx b/src/renderer/pages/available-versions-list.components.tsx index e29bae31..fedef23b 100644 --- a/src/renderer/pages/available-versions-list.components.tsx +++ b/src/renderer/pages/available-versions-list.components.tsx @@ -7,6 +7,7 @@ import { ProgressBarService } from "renderer/services/progress-bar.service"; import { BsmButton } from "renderer/components/shared/bsm-button.component"; import { AnimatePresence, motion } from "framer-motion"; import { distinctUntilChanged } from "rxjs"; +import { NotificationService } from "renderer/services/notification.service"; export function AvailableVersionsList() { @@ -21,6 +22,7 @@ export function AvailableVersionsList() { ]; const bsDownloaderService: BsDownloaderService = BsDownloaderService.getInstance(); const progressBarService: ProgressBarService = ProgressBarService.getInstance(); + const notificationService: NotificationService = NotificationService.getInstance(); const [versionSelected, setVersionSelected] = useState(null as BSVersion); const [progressBarVisible, setProgressBarVisible] = useState(false); @@ -28,8 +30,11 @@ export function AvailableVersionsList() { const startDownload = () => { if(progressBarService.visible$.value){ return; } progressBarService.show(bsDownloaderService.downloadProgress$); - bsDownloaderService.download(versionSelected).then(() => { + bsDownloaderService.download(versionSelected).then(res => { progressBarService.hide(true); + + if(res.success){ notificationService.notifySuccess({title: 'Download Complete', duration: 3000}); } + else{ notificationService.notifyError({title: 'Error', desc: res.data as any as string}); } }); } diff --git a/src/renderer/services/bs-downloader.service.ts b/src/renderer/services/bs-downloader.service.ts index 989a2841..8b4cbd70 100644 --- a/src/renderer/services/bs-downloader.service.ts +++ b/src/renderer/services/bs-downloader.service.ts @@ -1,11 +1,9 @@ import { DownloadEvent } from 'main/services/bs-installer.service'; -import { BehaviorSubject, distinctUntilChanged, Observable, Subscription } from 'rxjs'; +import { BehaviorSubject, distinctUntilChanged } from 'rxjs'; import { IpcResponse } from 'shared/models/ipc-models.model'; -import { DownloadInfo } from '../../main/ipcs/bs-download-ipcs'; import { BSVersion } from '../../main/services/bs-version-manager.service' import { AuthUserService } from './auth-user.service'; import { BSVersionManagerService } from './bs-version-manager.service'; -import { ConfigurationService } from './configuration.service'; import { IpcService } from './ipc.service'; import { ModalExitCode, ModalService, ModalType } from './modale.service';