refactor: user list

This commit is contained in:
Tristan Yang
2023-03-06 09:19:53 +08:00
parent bbc550f809
commit beef1b4d08
7 changed files with 250 additions and 173 deletions
+14 -6
View File
@@ -1,6 +1,8 @@
import { memo, useEffect } from "react";
import { memo, useEffect, useRef } from "react";
import { NavLink, useParams, useLocation } from "react-router-dom";
import { useDispatch } from "react-redux";
import { ViewportList } from 'react-viewport-list';
import { updateRememberedNavs } from "../../app/slices/ui";
import Search from "./Search";
import User from "../../common/component/User";
@@ -12,6 +14,9 @@ import clsx from "clsx";
import GoBackNav from "../../common/component/GoBackNav";
function UsersPage() {
const ref = useRef<HTMLDivElement | null>(
null,
);
const dispatch = useDispatch();
const { pathname } = useLocation();
const { input, updateInput, users } = useFilteredUsers();
@@ -32,16 +37,19 @@ function UsersPage() {
isUserDetail && "hidden md:flex"
)}>
<Search input={input} updateInput={updateInput} />
<div className="px-2 pt-3 pb-20 md:py-3 overflow-scroll">
<nav className="flex flex-col md:gap-1">
{users.map(({ uid }) => {
<div className="flex flex-col md:gap-1 px-2 pt-3 pb-20 md:py-3 overflow-scroll" ref={ref}>
<ViewportList
viewportRef={ref}
items={users.map(({ uid }) => uid)}
>
{(uid) => {
return (
<NavLink key={uid} className={({ isActive }) => `rounded-md md:hover:bg-gray-500/10 ${isActive ? "bg-gray-500/10" : ""}`} to={`/users/${uid}`}>
<User uid={uid} enableContextMenu={true} />
</NavLink>
);
})}
</nav>
}}
</ViewportList>
</div>
</div>
<div className={clsx(`md:rounded-r-2xl bg-white w-full flex justify-center items-start dark:bg-gray-700`,