import React, { useState } from 'react' import { Spinner } from 'react-bootstrap' import { isLaunchable, isUpdatable, isUpdateCompat, PackageInfo } from '../../data/packageInfo' import { AppButton } from './AppButton' import { ConfirmationModal } from './partials/Modals/Confirmation' export interface AppInfoAction { label: string color?: string onClick?: (pkg: PackageInfo) => void } export interface AppInfoToolbarProps { info: PackageInfo onCheckIfDependent: Function isDependent: boolean, onUnInstall?: Function onUpdate?: Function onResync?: Function onDisable?: Function onRestart?: Function onLaunch?: Function onInstall?: Function onOn?: () => Promise onOff?: () => Promise } export const AppInfoToolbar = (props: AppInfoToolbarProps): JSX.Element => { const [isServiceLoading,setIsServiceLoading] = useState(false) const updatable = isUpdatable(props.info) const sysCompatible = isUpdateCompat(props.info) const handleServiceStatusChange = (e:React.MouseEvent) =>{ e.preventDefault() setIsServiceLoading(true) if(props.info.enabled) { props.onOff().then(()=>{ setIsServiceLoading(false) }) return } props.onOn().then(()=>{ setIsServiceLoading(false) }) } const [isOpenUninstallModal,setIsOpenUninstallModal] = useState(false) const handleOnOpenUninstallModal = () =>{ props.onCheckIfDependent() setIsOpenUninstallModal(true) } const handleOnCloseUninstallModal = () =>{ setIsOpenUninstallModal(false) } const handleOnConfirmUninstall = () =>{ props.onUnInstall() setIsOpenUninstallModal(false) } const confirmationMessage = props.isDependent ? "You are about to uninstall a package that is required by other packages. Uninstalling might affects its functionality.": `Are you sure you want to permanently remove ${props.info.name} including its data?` return (
{ sysCompatible && updatable && ( Update )} { sysCompatible && props.info.status === "uninstalled" && ( Install )} {props.info.isService && <> Clear Restart {props.info.status === "installed" && {isServiceLoading && } {props.info.enabled && !isServiceLoading && "Disable"} {!props.info.enabled && !isServiceLoading && "Enable"} } } {props.info.status === 'installed' && props.info.category !== 'system' && Uninstall } { isLaunchable(props.info) && ( Launch )}
) }