import { Trash } from "react-bootstrap-icons";
import Button from "react-bootstrap/Button";
import ButtonGroup from "react-bootstrap/ButtonGroup";
import ButtonToolbar from "react-bootstrap/ButtonToolbar";
import Placeholder from "react-bootstrap/Placeholder";
import React from "react";
import Stack from "react-bootstrap/Stack";

import Client from "./client/Client";
import DateTime from "./components/DateTime";
import EmailFrom from "./components/EmailFrom";
import { IAccount, IEmailStub, IMailbox } from "./client/types";

type EmailSummaryProps = {
	account: IAccount;
	client: Client;
	emailId: string;
	emailStub: IEmailStub | null;
	mailbox: IMailbox;
};
type EmailSummaryState = {};

class EmailSummary extends React.Component<
	EmailSummaryProps,
	EmailSummaryState
> {
	componentDidMount() {
		this.ensureData();
	}
	componentDidUpdate() {
		this.ensureData();
	}

	ensureData() {
		this.props.client.ensureEmailStub(
			this.props.account.id,
			this.props.emailId,
		);
	}

	render() {
		const href =
			"#" +
			this.props.account.id +
			"/" +
			this.props.mailbox.id +
			"/" +
			this.props.emailId;
		const stub = this.props.emailStub;
		if (stub === null) {
			return <Placeholder />;
		}
		return (
			<Stack
				direction="horizontal"
				className="email-summary"
				key={this.props.emailId}
			>
				<DateTime className="received" d={stub.receivedAt} />
				<EmailFrom froms={stub.from} />
				<div>{stub.from == null ? "?" : stub.from[0].name}</div>
				<a className="btn" href={href}>
					<div>{stub.subject}</div>
				</a>
				<ButtonToolbar className="ms-auto">
					<ButtonGroup className="me-2">
						<Button
							onClick={() => {
								this.props.client.emailMoveTrash(
									this.props.account,
									this.props.emailId,
								);
							}}
						>
							<Trash />
						</Button>
						<Button>2</Button>
					</ButtonGroup>
				</ButtonToolbar>
			</Stack>
		);
	}
}
export default EmailSummary;