53 lines
1.2 KiB
TypeScript
53 lines
1.2 KiB
TypeScript
import React from "react";
|
|
import Stack from "react-bootstrap/Stack";
|
|
|
|
import Client from "./client/Client";
|
|
import { IAccount, IMailbox } from "./client/types";
|
|
import EmailSummary from "./EmailSummary";
|
|
|
|
type EmailListProps = {
|
|
account: IAccount | null;
|
|
client: Client | null;
|
|
mailbox: IMailbox | null;
|
|
};
|
|
|
|
type EmailListState = {};
|
|
|
|
class EmailList extends React.Component<EmailListProps, EmailListState> {
|
|
componentDidUpdate() {
|
|
if (this.props.account == null) return;
|
|
if (this.props.client == null) return;
|
|
if (this.props.mailbox == null) return;
|
|
this.props.client.ensureEmailList(
|
|
this.props.account.id,
|
|
this.props.mailbox.id,
|
|
);
|
|
}
|
|
|
|
render() {
|
|
if (
|
|
this.props.account == null ||
|
|
this.props.client == null ||
|
|
this.props.mailbox == null ||
|
|
this.props.mailbox.emailIds == null
|
|
) {
|
|
return <Stack />;
|
|
} else {
|
|
return (
|
|
<Stack className="text-start">
|
|
{this.props.mailbox.emailIds.slice(0, 5).map((e) => (
|
|
<EmailSummary
|
|
account={this.props.account}
|
|
client={this.props.client}
|
|
emailId={e}
|
|
email={this.props.client!.email(e)}
|
|
key={e}
|
|
/>
|
|
))}
|
|
</Stack>
|
|
);
|
|
}
|
|
}
|
|
}
|
|
export default EmailList;
|