import { useQuery } from "react-query"; import { fetchGuildChannels, fetchGuildReminders } from "../../api"; import { EditReminder } from "../Reminder/EditReminder"; import { CreateReminder } from "../Reminder/CreateReminder"; import { useState } from "preact/hooks"; import { Loader } from "../Loader"; import { useGuild } from "../App/useGuild"; enum Sort { Time = "time", Name = "name", Channel = "channel", } export const GuildReminders = () => { const guild = useGuild(); const { isSuccess, isFetching, isFetched, data: guildReminders, } = useQuery(fetchGuildReminders(guild)); const { data: channels } = useQuery(fetchGuildChannels(guild)); const [collapsed, setCollapsed] = useState(false); const [sort, setSort] = useState(Sort.Time); let prevReminder = null; return ( <> {!isFetched && }
Create Reminder


Reminders
{isSuccess && guildReminders .sort((r1, r2) => { if (sort === Sort.Time) { return r1.utc_time > r2.utc_time ? 1 : -1; } else if (sort === Sort.Name) { return r1.name > r2.name ? 1 : -1; } else { return r1.channel > r2.channel ? 1 : -1; } }) .map((reminder) => { let breaker = <>; if (sort === Sort.Channel && channels) { if ( prevReminder === null || prevReminder.channel !== reminder.channel ) { const channel = channels.find( (ch) => ch.id === reminder.channel, ); breaker =
#{channel.name}
; } } prevReminder = reminder; return ( <> {breaker} ); })}
); };