import React, { useEffect, useCallback } from 'react';
import { Grid, ErrorText } from 'indigo-react';
import cn from 'classnames';
import { useHosting } from 'store/hosting';
import BridgeForm from 'form/BridgeForm';
import { GenerateButton, ForwardButton } from './Buttons';
import 'style/hosted-ship.scss';
import useKeyfileGenerator from 'lib/useKeyfileGenerator';
export default function HostedShip({
// useHostedShip
// additional from parent
className,
}) {
const ship = useHosting();
const { syncStatus } = ship;
console.log(ship);
const { keyfile } = useKeyfileGenerator();
const createShip = useCallback(() => ship.create(keyfile), [ship, keyfile]);
const renderStatus = () => {
if (ship.missing || ship.booting) {
return (
Boot Urbit OS
);
} else if (ship.running || ship.connecting) {
return (
Connect
);
} else if (ship.connected) {
return (
Disconnect
);
} else if (ship.unknown || ship.querying) {
return (
'}
solid
success
disabled={ship.querying}
loading={ship.querying}
onClick={syncStatus}>
Query
);
}
};
const renderEvents = (title, detail, events) => {
return (
<>
{title}
{events.length === 0 && - <Waiting>
}
{events.map(event => (
- {event}
))}
>
);
};
return (
<>
{() => (
<>
{ship.error && (
{ship.error.message}
)}
{renderStatus()}
{!ship.unknown && (
Ship Status
)}
>
)}
{ship.connected && (
<>
{renderEvents('Run', 'Terminal events', ship.runEvents)}
{renderEvents(
'New',
'Pier creation and boot events',
ship.newEvents
)}
{renderEvents(
'Sys',
'Hosting platform events',
ship.sysEvents.map(e => e.object.message)
)}
>
)}
>
);
}