From 281f88deb128a19154fd92123c0d40691b5fbde3 Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Thu, 7 Jul 2022 23:57:17 +0200 Subject: [PATCH] add feedbacks on steam logout --- .../shared/bsm-button.component.tsx | 4 +-- .../pages/settings-page.component.tsx | 30 ++++++++++++------- src/renderer/services/auth-user.service.ts | 6 ++++ 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/renderer/components/shared/bsm-button.component.tsx b/src/renderer/components/shared/bsm-button.component.tsx index 18b3257d..898b5f23 100644 --- a/src/renderer/components/shared/bsm-button.component.tsx +++ b/src/renderer/components/shared/bsm-button.component.tsx @@ -3,10 +3,10 @@ import OutsideClickHandler from 'react-outside-click-handler'; import React from "react"; import { BsmImage } from "./bsm-image.component"; -export function BsmButton({className, style, imgClassName, icon, image, text, type, active, withBar = true, onClickOutside, onClick}: {className?: string, style?: React.CSSProperties, imgClassName?: string, icon?: BsmIconType, image?: string, text?: string, type?: string, active?: boolean, withBar?: boolean, onClickOutside?: (e: MouseEvent) => void, onClick?: (e: React.MouseEvent) => void}) { +export function BsmButton({className, style, imgClassName, icon, image, text, type, active, withBar = true, disabled, onClickOutside, onClick}: {className?: string, style?: React.CSSProperties, imgClassName?: string, icon?: BsmIconType, image?: string, text?: string, type?: string, active?: boolean, withBar?: boolean, disabled?: boolean, onClickOutside?: (e: MouseEvent) => void, onClick?: (e: React.MouseEvent) => void}) { return ( onClickOutside && onClickOutside(e)}> -
onClick && onClick(e)} className={`${className} overflow-hidden cursor-pointer group`} style={style}> +
onClick && onClick(e)} className={`${className} overflow-hidden cursor-pointer group ${disabled && "brightness-75 cursor-not-allowed"}`} style={style}> { image && } { icon && } {text && (type === "submit" ? : {text})} diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index 7dfa58fd..1665b853 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -10,18 +10,20 @@ import { BsDownloaderService } from "renderer/services/bs-downloader.service"; import { ConfigurationService } from "renderer/services/configuration.service" import { IpcService } from "renderer/services/ipc.service"; import { ModalExitCode, ModalService, ModalType } from "renderer/services/modale.service"; +import { NotificationService } from "renderer/services/notification.service"; import { ProgressBarService } from "renderer/services/progress-bar.service"; import { ThemeService } from "renderer/services/theme.service"; export function SettingsPage() { - const configService = ConfigurationService.getInstance(); - const themeService = ThemeService.getInstance(); - const ipcService = IpcService.getInstance(); - const modalService = ModalService.getInsance(); - const downloaderService = BsDownloaderService.getInstance(); - const progressBarService = ProgressBarService.getInstance(); - const authService = AuthUserService.getInstance(); + const configService: ConfigurationService = ConfigurationService.getInstance(); + const themeService: ThemeService = ThemeService.getInstance(); + const ipcService: IpcService = IpcService.getInstance(); + const modalService: ModalService = ModalService.getInsance(); + const downloaderService: BsDownloaderService = BsDownloaderService.getInstance(); + const progressBarService: ProgressBarService = ProgressBarService.getInstance(); + const authService: AuthUserService = AuthUserService.getInstance(); + const notificationService: NotificationService = NotificationService.getInstance(); const themeItem: RadioItem[] = [ {id: 0, text: "Dark", value: "dark" as ThemeConfig}, @@ -31,6 +33,7 @@ export function SettingsPage() { const firstColor = useObservable(configService.watch("first-color")); const secondColor = useObservable(configService.watch("second-color")); + const sessionExist = useObservable(authService.sessionExist$); const[themeIdSelected, setThemeIdSelected]= useState(themeItem.find(e => e.value === themeService.getTheme()).id); const [installationFolder, setInstallationFolder] = useState(null); @@ -67,14 +70,21 @@ export function SettingsPage() { progressBarService.complete(); setTimeout(() => progressBarService.hide(true), 1000); }, 1000); - if(res.success){ setInstallationFolder(res.data); } + if(res.success){ + setInstallationFolder(res.data); + notificationService.notifySuccess({title: "Transfer completed", duration: 3000}); + } }); } }) } - const deleteSteamSession = () => authService.deleteSteamSession(); + const deleteSteamSession = () => { + if(!sessionExist){ return; } + authService.deleteSteamSession(); + notificationService.notifySuccess({title: "Disconnected from Steam", duration: 3000}); + }; return (
@@ -82,7 +92,7 @@ export function SettingsPage() {
- + diff --git a/src/renderer/services/auth-user.service.ts b/src/renderer/services/auth-user.service.ts index c2861aea..73dbc844 100644 --- a/src/renderer/services/auth-user.service.ts +++ b/src/renderer/services/auth-user.service.ts @@ -1,3 +1,5 @@ +import { Observable } from "rxjs"; +import { map } from "rxjs/operators"; import { ConfigurationService } from "./configuration.service"; export class AuthUserService { @@ -22,6 +24,10 @@ export class AuthUserService { return !!this.configService.get(this.STEAM_USERNAME_KEY); } + public get sessionExist$(): Observable{ + return this.configService.watch(this.STEAM_USERNAME_KEY).pipe(map(v => !!v)); + } + public setSteamSession(username: string, stay = true): void{ this.configService.set(this.STEAM_USERNAME_KEY, username, stay); }