import { AlertCircle, Check, RefreshCwIcon } from 'lucide-react'
import { SchemaInstallationStatus } from 'stripe-experiment-sync/supabase'
import {
hasInstallError,
hasUninstallError,
isInstalled,
isInstalling,
isUninstalling,
} from './stripe-sync-status'
export const StatusDisplay = ({
status,
isInstallRequested,
isInstallInitiated,
isUninstallRequested,
isUninstallInitiated,
isUpgrade,
timedOut,
}: {
status: SchemaInstallationStatus
isInstallRequested: boolean
isInstallInitiated: boolean
isUninstallRequested: boolean
isUninstallInitiated: boolean
isUpgrade?: boolean
timedOut: boolean
}) => {
const installed = isInstalled(status)
const installError = hasInstallError(status)
const uninstallError = hasUninstallError(status)
const installInProgress = isInstalling(status)
const uninstallInProgress = isUninstalling(status)
const installing = (installInProgress || isInstallRequested || isInstallInitiated) && !timedOut
const uninstalling =
(uninstallInProgress || isUninstallRequested || isUninstallInitiated) && !timedOut
if (uninstalling) {
return (
Uninstalling...
)
}
if (uninstallError) {
return (
Uninstallation error
)
}
if (installing) {
return (
{isUpgrade ? 'Upgrading...' : 'Installing...'}
)
}
if (installError) {
return (
{isUpgrade ? 'Upgrade error' : 'Installation error'}
)
}
if (installed) {
return (
Installed
)
}
return (
Not installed
)
}