master
Raw Download raw file
 1import { DateTime } from "luxon";
 2import React from "react";
 3import { Link, Navigate } from "react-router-dom";
 4
 5import { useMySecrets } from "./useMySecrets";
 6import { useUser } from "./useUser";
 7
 8import styles from "./MySecrets.module.scss";
 9
10export const MySecrets = () => {
11	const { user } = useUser();
12	const { secrets } = useMySecrets();
13
14	if (user.loading) {
15		return <div>Loading...</div>;
16	} else if (user.value === undefined) {
17		return <Navigate to="/login" />;
18	} else if (secrets.loading) {
19		return <div>Loading...</div>;
20	} else if (secrets.value === undefined) {
21		return <div>Error</div>;
22	}
23
24	return (
25		<>
26			<h1>My Secrets</h1>
27			<div className={styles.list}>
28				{secrets.value.length === 0 ? (
29					<div className={styles.empty}>
30						No secrets yet. <Link to="/secret/create">Create one here.</Link>
31					</div>
32				) : (
33					<>
34						<div className={styles.header}>
35							<div className={styles.name}>Secret</div>
36							<div className={styles.revealAt}>Reveal At</div>
37							<div className={styles.createdAt}>Created At</div>
38						</div>
39						{secrets.value.map((secret) => (
40							<Link to={`/secret/${secret.id}`} className={styles.secret} key={secret.id}>
41								<div className={styles.name}>{secret.name}</div>
42								<div className={styles.revealAt}>
43									{DateTime.fromISO(secret.revealAt)
44										.setZone("local")
45										.toLocaleString(DateTime.DATETIME_SHORT)}
46								</div>
47								<div className={styles.createdAt}>
48									{DateTime.fromISO(secret.createdAt)
49										.setZone("local")
50										.toLocaleString(DateTime.DATETIME_SHORT)}
51								</div>
52							</Link>
53						))}
54					</>
55				)}
56			</div>
57		</>
58	);
59};