import { Friend } from "./Friend"; import { Text } from "preact-i18n"; import styles from "./Friend.module.scss"; import Header from "../../components/ui/Header"; import Overline from "../../components/ui/Overline"; import Tooltip from "../../components/common/Tooltip"; import IconButton from "../../components/ui/IconButton"; import { useUsers } from "../../context/revoltjs/hooks"; import { User, Users } from "revolt.js/dist/api/objects"; import UserIcon from "../../components/common/user/UserIcon"; import { isTouchscreenDevice } from "../../lib/isTouchscreenDevice"; import { useIntermediate } from "../../context/intermediate/Intermediate"; import { ChevronDown, ChevronRight } from "@styled-icons/boxicons-regular"; import { UserDetail, Conversation, UserPlus } from "@styled-icons/boxicons-solid"; export default function Friends() { const { openScreen } = useIntermediate(); const users = useUsers() as User[]; users.sort((a, b) => a.username.localeCompare(b.username)); const friends = users.filter(x => x.relationship === Users.Relationship.Friend); const lists = [ [ 'app.special.friends.pending', users.filter(x => x.relationship === Users.Relationship.Incoming ) ], [ 'app.special.friends.pending', users.filter(x => x.relationship === Users.Relationship.Outgoing ) ], [ 'app.status.online', friends.filter(x => x.online && x.status?.presence !== Users.Presence.Invisible ) ], [ 'app.status.offline', friends.filter(x => !x.online || x.status?.presence === Users.Presence.Invisible ) ], [ 'app.special.friends.blocked', friends.filter(x => x.relationship === Users.Relationship.Blocked ) ] ] as [ string, User[] ][]; const isEmpty = lists.reduce((p: number, n) => p + n.length, 0) === 0; return ( <>
{ !isTouchscreenDevice && }
openScreen({ id: 'special_input', type: 'create_group' })}> openScreen({ id: 'special_input', type: 'add_friend' })}> {/*
*/}
{isEmpty && ( <> )} { lists[0][1].length > 0 &&
openScreen({ id: 'pending_requests', users: lists[0][1].map(x => x._id) })}>
{ lists[0][1].map((x, i) => i < 3 && ) }
{/* ! FIXME: i18n */}
Pending requests{ lists[0][1].length }
From { lists[0][1].map(x => x.username).join(', ') }
} { lists.map(([i18n, list], index) => { if (index === 0) return; if (list.length === 0) return; return (
— { list.length } { list.map(x => ) }
) }) }
); }