import "./nav-bar.component.css"; import { BsVersionItem } from "./nav-bar-items/bs-version-item.component"; import { BSVersionManagerService } from "../../services/bs-version-manager.service"; import { Link } from "react-router-dom"; import { BsmIcon } from "../svgs/bsm-icon.component"; import { useObservable } from "renderer/hooks/use-observable.hook"; import { BsManagerIcon } from "./bsmanager-icon.component"; import { SharedNavBarItem } from "./nav-bar-items/shared-nav-bar-item.component"; import { NavBarSpliter } from "./nav-bar-spliter.component"; import { useThemeColor } from "renderer/hooks/use-theme-color.hook"; import Tippy from "@tippyjs/react"; import { useTranslation } from "renderer/hooks/use-translation.hook"; import { useService } from "renderer/hooks/use-service.hook"; import { distinctUntilChanged } from "rxjs"; import equal from "fast-deep-equal"; import { BsDownloaderService } from "renderer/services/bs-version-download/bs-downloader.service"; import { PageStateService } from "renderer/services/page-state.service"; import { NavBarItem } from "./nav-bar-items/nav-bar-item.component"; export function NavBar() { const versionManager = useService(BSVersionManagerService); const versionDownloader = useService(BsDownloaderService); const pageState = useService(PageStateService); const downloadingVersion = useObservable(() => versionDownloader.downloadingVersion$.pipe(distinctUntilChanged(equal))); const installedVersions = useObservable(() => versionManager.installedVersions$); const color = useThemeColor("first-color"); const t = useTranslation(); const route = useObservable(() => pageState.route$); function listVersions(){ const versions = Array.isArray(installedVersions) ? [...installedVersions] : []; if (downloadingVersion){ versions.push(downloadingVersion); } const sorted = BSVersionManagerService.sortVersions(versions); return BSVersionManagerService.removeDuplicateVersions(sorted); } return ( ); }