mirror of
https://github.com/Zagrios/bs-manager.git
synced 2026-07-03 14:08:25 +02:00
state is now handle by services with rxjs
This commit is contained in:
@@ -1,18 +1,23 @@
|
||||
import { BSVersion } from "../../main/services/bs-version-manager.service"
|
||||
import { useEffect, useState } from "react"
|
||||
import { BSVersionManagerService } from "renderer/services/bs-version-manager.service";
|
||||
|
||||
export function AvailableVersionsArray({versions, setSelectedVersion}: {versions: BSVersion[], setSelectedVersion: Function}) {
|
||||
export function AvailableVersionsArray({setSelectedVersion}: {setSelectedVersion: Function}) {
|
||||
|
||||
const [versionsMap, setVersionsMap] = useState(new Map<string, BSVersion[]>())
|
||||
const [versionsMap, setVersionsMap] = useState(new Map<string, BSVersion[]>());
|
||||
const [versions, setVersions] = useState([] as BSVersion[]);
|
||||
|
||||
console.log(setSelectedVersion);
|
||||
|
||||
useEffect(() => {
|
||||
organiseVersions()
|
||||
BSVersionManagerService.getInstance().availableVersions$.subscribe(versions => {
|
||||
organiseVersions(versions);
|
||||
setVersions(versions);
|
||||
});
|
||||
}, [])
|
||||
|
||||
|
||||
const organiseVersions = () => {
|
||||
const organiseVersions = (versions: BSVersion[]) => {
|
||||
const newMap = new Map<string, BSVersion[]>();
|
||||
versions.forEach(v => {
|
||||
newMap.set(v.year, [...(newMap.has(v.year) ? newMap.get(v.year) : []), v]);
|
||||
|
||||
@@ -5,10 +5,10 @@ import { SteamIcon } from "../svgs/steam-icon.component";
|
||||
|
||||
export default function BsVersionItem(props: {version: BSVersion}) {
|
||||
return (
|
||||
<div className='flex cursor-pointer w-max justify-center content-center items-center pr-1 text-red-600'>
|
||||
{props.version.steam && <SteamIcon className="w-[19px] h-[19px] mr-1"/>}
|
||||
{!props.version.steam && <BsNoteFill className="w-[22px] h-[22px] mr-1"/>}
|
||||
<Link to={`/bs-version/${props.version.BSVersion}`} state={props.version} className="shrink-0 text-lg text-gray-200 font-bold min-w-0">{props.version.BSVersion}</Link>
|
||||
</div>
|
||||
<Link to={`/bs-version/${props.version.BSVersion}`} state={props.version} className='flex cursor-pointer w-max justify-center content-center items-center pr-1 mb-3'>
|
||||
{props.version.steam && <SteamIcon className="w-[19px] h-[19px] mr-[6px]"/>}
|
||||
{!props.version.steam && <BsNoteFill className="w-[19px] h-[19px] mr-[6px] text-red-600"/>}
|
||||
<span className="shrink-0 text-lg text-gray-200 font-bold min-w-0">{props.version.BSVersion}</span>
|
||||
</Link>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
import { FaPlus, } from 'react-icons/fa';
|
||||
import { AiFillSetting } from 'react-icons/ai'
|
||||
import './nav-bar.component.css'
|
||||
import { useSelector } from 'react-redux';
|
||||
import BsVersionItem from './bs-version-item.component';
|
||||
import { BSVersion } from 'main/services/bs-version-manager.service';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { BSVersionManagerService } from 'renderer/services/bs-version-manager.service';
|
||||
|
||||
export function NavBar() {
|
||||
|
||||
const { installedVersions }: {installedVersions: BSVersion[]} = useSelector((state: any) => state.installedBSReducer);
|
||||
const [installedVersions, setInstalledVersions] = useState([] as BSVersion[]);
|
||||
|
||||
useEffect(() => {
|
||||
BSVersionManagerService.getInstance().installedVersions$.subscribe(versions => {
|
||||
setInstalledVersions(versions);
|
||||
})
|
||||
}, [])
|
||||
|
||||
|
||||
return (
|
||||
<div id='nav-bar' className='z-10 flex flex-col h-full max-h-full items-center p-2 bg-gray-200 dark:bg-main-color-1'>
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
import { BSVersion } from "../../main/services/bs-version-manager.service";
|
||||
import { useSelector } from "react-redux";
|
||||
import { AvailableVersionsArray } from "renderer/components/available-versions-array.component";
|
||||
import { useState } from "react";
|
||||
import { ModalService, ModalType } from "renderer/services/modale.service";
|
||||
import { BsDownloaderService } from "renderer/services/bs-downloader.service";
|
||||
|
||||
export function AvailableVersionsList() {
|
||||
|
||||
const { availableVersions }: {availableVersions: BSVersion[]} = useSelector((state: any) => state.availableBsReducer);
|
||||
|
||||
const [versionSelected, setVersionSelected] = useState(null as BSVersion);
|
||||
|
||||
const bsDownloaderService: BsDownloaderService = BsDownloaderService.getInstance();
|
||||
@@ -21,12 +17,10 @@ export function AvailableVersionsList() {
|
||||
bsDownloaderService.download(versionSelected);
|
||||
}
|
||||
|
||||
console.log(availableVersions);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h1 className="w-full text-center font-bold text-gray-200 text-3xl mt-6 tracking-wider text-sh mb-5">CHOOSE BS VERSION</h1>
|
||||
{availableVersions && <AvailableVersionsArray versions={availableVersions} setSelectedVersion={selectedVersionCallback}/>}
|
||||
<AvailableVersionsArray setSelectedVersion={selectedVersionCallback}/>
|
||||
{ versionSelected && (
|
||||
<>
|
||||
<h1 className="w-full text-2xl text-gray-200 font-bold text-center mt-5">SELECTED : {versionSelected.BSVersion}</h1>
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { BehaviorSubject } from 'rxjs';
|
||||
import { DownloadInfo } from '../../main/ipcs/bs-download-ipcs';
|
||||
import { BSVersion } from '../../main/services/bs-version-manager.service'
|
||||
import { BSVersionManagerService } from './bs-version-manager.service';
|
||||
import { ModalExitCode, ModalService, ModalType } from './modale.service';
|
||||
|
||||
export class BsDownloaderService{
|
||||
@@ -7,6 +9,9 @@ export class BsDownloaderService{
|
||||
private static instance: BsDownloaderService;
|
||||
|
||||
private readonly modalService: ModalService = ModalService.getInsance();
|
||||
private readonly bsVersionManager: BSVersionManagerService = BSVersionManagerService.getInstance();
|
||||
|
||||
private readonly downloadedVersions$: BehaviorSubject<BSVersion[]> = new BehaviorSubject([]);
|
||||
|
||||
private constructor(){
|
||||
window.electron.ipcRenderer.on(`bs-download.[Password]`, async (bsVersion: BSVersion) => {
|
||||
@@ -16,12 +21,14 @@ export class BsDownloaderService{
|
||||
});
|
||||
|
||||
window.electron.ipcRenderer.on("bs-download.[Guard]", async () => {
|
||||
console.log("*** GUARD ***");
|
||||
const res = await this.modalService.openModal(ModalType.GUARD_CODE);
|
||||
console.log(`***** res : ${res.exitCode}`);
|
||||
if(res.exitCode != ModalExitCode.COMPLETED){ return; }
|
||||
window.electron.ipcRenderer.sendMessage("bs-download.[Guard]", res.data);
|
||||
});
|
||||
|
||||
window.electron.ipcRenderer.on("bs-download.[Finished]", async () => {
|
||||
this.bsVersionManager.askInstalledVersions();
|
||||
});
|
||||
}
|
||||
|
||||
public static getInstance(){
|
||||
|
||||
Reference in New Issue
Block a user