import {html} from 'htm/preact'; import {useState} from 'preact/hooks'; import { ConfirmButton, Link, QComponent, QItem, removeQItem, Settings } from '../..'; type MainProps = { settings: Settings; }; export function PageMain(props: MainProps): QComponent { const [queue, updateQueue] = useState(props.settings.queue); const _removeQItem = async (id: number) => { const updated = await removeQItem(id); updateQueue(updated.queue); }; const qItems: QComponent[] = queue .sort((a, b) => a.added.getTime() - b.added.getTime()) .map((item) => html`<${Item} item=${item} remove=${_removeQItem} />`); if (qItems.length === 0) { qItems.push(html`
  • No items queued. 🤷
  • `); } return html`
    How do I use Queue?

    Adding links to your queue:

    Opening the next link from your queue:

    Opening the extension page:

    Deleting queue items:

    `; } type ItemProps = { item: QItem; remove: (id: number) => Promise; }; function Item(props: ItemProps): QComponent { const {added, id, text, url} = props.item; return html`
  • <${Link} text=${text ?? url} url=${url} />

    <${ConfirmButton} class="confirm-button" clickHandler=${async () => props.remove(id)} confirmClass="confirm" confirmText="✓" text="✗" timeout=${5 * 1000} title="Remove" />

  • `; }