import { HydratedStatus } from "../types.ts";
interface HomePageProps {
currentUser: {
isAuthenticated: boolean;
handle?: string;
};
statuses: HydratedStatus[];
userTimezone?: string;
}
const statusOptions = [
"👍",
"👎",
"💙",
"❤️",
"😍",
"🤩",
"😎",
"🤔",
"😴",
"🎉",
"🔥",
"💯",
"✨",
"⭐",
"🌟",
"🚀",
"💪",
"🙌",
"👏",
"🤝",
"🤗",
"😊",
"😄",
"😆",
"😂",
"🥳",
"🤯",
"😱",
"😭",
"💔",
"🙏",
"🤞",
"👀",
"🧠",
"💡",
];
export function HomePage({ currentUser, statuses, userTimezone }: HomePageProps) {
return (
How are you feeling?
{statusOptions.map((emoji) => (
))}
Setting status...
Recent Statuses
);
}
interface StatusTimelineProps {
statuses: HydratedStatus[];
userTimezone?: string;
}
export function StatusTimeline({ statuses, userTimezone }: StatusTimelineProps) {
return (
{statuses.length === 0 ? (
No statuses yet. Be the first to share!
) : (
{statuses.map((status) => {
const authorHandle = status.author?.handle ||
status.did?.split(":").pop() ||
"unknown";
const createdAtDate = new Date(status.value.createdAt);
const formatOptions: Intl.DateTimeFormatOptions = {
year: 'numeric',
month: 'short',
day: 'numeric',
hour: 'numeric',
minute: '2-digit',
hour12: true
};
// Use user's timezone if available, otherwise let browser decide
if (userTimezone) {
formatOptions.timeZone = userTimezone;
}
const createdAt = new Intl.DateTimeFormat('en-US', formatOptions).format(createdAtDate);
return (
{status.value.status}
@{authorHandle} • {createdAt}
);
})}
)}
);
}