From ee670f86b6dad5526f4969748933445f619d5242 Mon Sep 17 00:00:00 2001 From: CrescentLeaf Date: Sun, 14 Sep 2025 14:33:04 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=A7=A3=E8=80=A6=E5=81=B4?= =?UTF-8?q?=E9=82=8A=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/ui/App.tsx | 48 +++++-------------------- client/ui/AppMobile.tsx | 64 +++++++-------------------------- client/ui/main/ContactsList.tsx | 40 +++++++++++++++++++++ client/ui/main/RecentsList.tsx | 31 ++++++++++++++++ 4 files changed, 92 insertions(+), 91 deletions(-) create mode 100644 client/ui/main/ContactsList.tsx create mode 100644 client/ui/main/RecentsList.tsx diff --git a/client/ui/App.tsx b/client/ui/App.tsx index 904da2a..dc89420 100644 --- a/client/ui/App.tsx +++ b/client/ui/App.tsx @@ -1,8 +1,6 @@ import Client from "../api/Client.ts" import data from "../Data.ts" import ChatFragment from "./chat/ChatFragment.tsx" -import ContactsListItem from "./main/ContactsListItem.jsx" -import RecentsListItem from "./main/RecentsListItem.jsx" import useEventListener from './useEventListener.ts' import User from "../api/client_data/User.ts" import RecentChat from "../api/client_data/RecentChat.ts" @@ -17,6 +15,8 @@ import { checkApiSuccessOrSncakbar } from "./snackbar.ts" import RegisterDialog from "./dialog/RegisterDialog.tsx" import LoginDialog from "./dialog/LoginDialog.tsx" import UserProfileDialog from "./dialog/UserProfileDialog.tsx" +import ContactsList from "./main/ContactsList.tsx"; +import RecentsList from "./main/RecentsList.tsx"; declare global { namespace React { @@ -143,47 +143,15 @@ export default function App() { { diff --git a/client/ui/AppMobile.tsx b/client/ui/AppMobile.tsx index 3443297..fd0a66e 100644 --- a/client/ui/AppMobile.tsx +++ b/client/ui/AppMobile.tsx @@ -1,12 +1,8 @@ import Client from "../api/Client.ts" import data from "../Data.ts" -import ChatFragment from "./chat/ChatFragment.tsx" -import ContactsListItem from "./main/ContactsListItem.jsx" -import RecentsListItem from "./main/RecentsListItem.jsx" import useEventListener from './useEventListener.ts' import User from "../api/client_data/User.ts" import RecentChat from "../api/client_data/RecentChat.ts" -import Avatar from "./Avatar.tsx" import * as React from 'react' import { Dialog, NavigationBar, TextField } from "mdui" @@ -16,6 +12,8 @@ import { checkApiSuccessOrSncakbar } from "./snackbar.ts" import RegisterDialog from "./dialog/RegisterDialog.tsx" import LoginDialog from "./dialog/LoginDialog.tsx" import UserProfileDialog from "./dialog/UserProfileDialog.tsx" +import ContactsList from "./main/ContactsList.tsx" +import RecentsList from "./main/RecentsList.tsx" declare global { namespace React { @@ -75,9 +73,9 @@ export default function AppMobile() { const userProfileDialogRef: React.MutableRefObject = React.useRef(null) const openMyUserProfileDialogButtonRef: React.MutableRefObject = React.useRef(null) -/* useEventListener(openMyUserProfileDialogButtonRef, 'click', (_event) => { - userProfileDialogRef.current!.open = true - })*/ + /* useEventListener(openMyUserProfileDialogButtonRef, 'click', (_event) => { + userProfileDialogRef.current!.open = true + })*/ const [myUserProfileCache, setMyUserProfileCache]: [User, React.Dispatch>] = React.useState(null as unknown as User) @@ -119,12 +117,12 @@ export default function AppMobile() { - + 最近 聯絡人 - + diff --git a/client/ui/main/ContactsList.tsx b/client/ui/main/ContactsList.tsx new file mode 100644 index 0000000..2a4fd7b --- /dev/null +++ b/client/ui/main/ContactsList.tsx @@ -0,0 +1,40 @@ +import User from "../../api/client_data/User.ts" +import ContactsListItem from "./ContactsListItem.jsx" + +interface Args extends React.HTMLAttributes { + contactsMap: { [key: string]: User[] } + display: boolean +} + +export default function ContactsList({ + contactsMap, + display, + ...props +}: Args) { + return + + + { + Object.keys(contactsMap).map((v) => + + {v} + { + contactsMap[v].map((v2) => + + ) + } + + ) + } + + +} \ No newline at end of file diff --git a/client/ui/main/RecentsList.tsx b/client/ui/main/RecentsList.tsx new file mode 100644 index 0000000..df98f19 --- /dev/null +++ b/client/ui/main/RecentsList.tsx @@ -0,0 +1,31 @@ +import RecentChat from "../../api/client_data/RecentChat.ts" +import User from "../../api/client_data/User.ts" +import ContactsListItem from "./ContactsListItem.jsx" +import RecentsListItem from "./RecentsListItem.jsx" + +interface Args extends React.HTMLAttributes { + recentsList: RecentChat[] + display: boolean +} + +export default function RecentsList({ + recentsList, + display, + ...props +}: Args) { + return + { + recentsList.map((v) => + + ) + } + +} \ No newline at end of file