个人资料卡的一些修改
This commit is contained in:
@@ -3,7 +3,7 @@ import useEventListener from "../utils/useEventListener.ts"
|
|||||||
import AvatarMySelf from "./AvatarMySelf.tsx"
|
import AvatarMySelf from "./AvatarMySelf.tsx"
|
||||||
import MainSharedContext from './MainSharedContext.ts'
|
import MainSharedContext from './MainSharedContext.ts'
|
||||||
import * as React from 'react'
|
import * as React from 'react'
|
||||||
import { BrowserRouter, createBrowserRouter, Link, LoaderFunction, Outlet, Route, RouterProvider, Routes } from "react-router"
|
import { BrowserRouter, createBrowserRouter, Link, LoaderFunction, Outlet, Route, RouterProvider, Routes, useNavigate } from "react-router"
|
||||||
import LoginDialog from "./main-page/LoginDialog.tsx"
|
import LoginDialog from "./main-page/LoginDialog.tsx"
|
||||||
import useAsyncEffect from "../utils/useAsyncEffect.ts"
|
import useAsyncEffect from "../utils/useAsyncEffect.ts"
|
||||||
import performAuth from "../performAuth.ts"
|
import performAuth from "../performAuth.ts"
|
||||||
@@ -23,6 +23,7 @@ import UserOrChatInfoDialogLoader from "./routers/UserOrChatInfoDialogDataLoader
|
|||||||
import ChatFragmentDialog from "./routers/ChatFragmentDialog.tsx"
|
import ChatFragmentDialog from "./routers/ChatFragmentDialog.tsx"
|
||||||
import EffectOnly from "./EffectOnly.tsx"
|
import EffectOnly from "./EffectOnly.tsx"
|
||||||
import MainSharedReducer from "./MainSharedReducer.ts"
|
import MainSharedReducer from "./MainSharedReducer.ts"
|
||||||
|
import gotoUserInfo from "./routers/gotoUserInfo.ts"
|
||||||
|
|
||||||
function Root() {
|
function Root() {
|
||||||
const [myProfileCache, setMyProfileCache] = React.useState<UserMySelf>()
|
const [myProfileCache, setMyProfileCache] = React.useState<UserMySelf>()
|
||||||
@@ -52,6 +53,8 @@ function Root() {
|
|||||||
const [showRegisterDialog, setShowRegisterDialog] = React.useState(false)
|
const [showRegisterDialog, setShowRegisterDialog] = React.useState(false)
|
||||||
const [showAddFavourtieChatDialog, setShowAddFavourtieChatDialog] = React.useState(false)
|
const [showAddFavourtieChatDialog, setShowAddFavourtieChatDialog] = React.useState(false)
|
||||||
|
|
||||||
|
const nav = useNavigate()
|
||||||
|
|
||||||
const [state, dispatch] = React.useReducer(MainSharedReducer, {
|
const [state, dispatch] = React.useReducer(MainSharedReducer, {
|
||||||
favouriteChats: [],
|
favouriteChats: [],
|
||||||
currentSelectedChatId: '',
|
currentSelectedChatId: '',
|
||||||
@@ -116,7 +119,7 @@ function Root() {
|
|||||||
<mdui-list style={{
|
<mdui-list style={{
|
||||||
padding: '10px',
|
padding: '10px',
|
||||||
}}>
|
}}>
|
||||||
<mdui-list-item rounded>
|
<mdui-list-item rounded onClick={() => gotoUserInfo(nav, myProfileCache!.getId())}>
|
||||||
<span>{myProfileCache?.getNickName()}</span>
|
<span>{myProfileCache?.getNickName()}</span>
|
||||||
<AvatarMySelf slot="icon" />
|
<AvatarMySelf slot="icon" />
|
||||||
</mdui-list-item>
|
</mdui-list-item>
|
||||||
|
|||||||
@@ -17,7 +17,9 @@ export default function UserOrChatInfoDialog() {
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
const dialogRef = useRouterDialogRef()
|
const dialogRef = useRouterDialogRef()
|
||||||
const { chat, id } = useLoaderData<typeof UserOrChatInfoDialogLoader>()
|
const { chat, id, mySelf } = useLoaderData<typeof UserOrChatInfoDialogLoader>()
|
||||||
|
|
||||||
|
const isMySelf = mySelf?.getId() == id
|
||||||
|
|
||||||
const favourited = React.useMemo(() => shared.state.favouriteChats.map((v) => v.getId()).indexOf(chat.getId() || '') != -1, [chat, shared.state.favouriteChats])
|
const favourited = React.useMemo(() => shared.state.favouriteChats.map((v) => v.getId()).indexOf(chat.getId() || '') != -1, [chat, shared.state.favouriteChats])
|
||||||
|
|
||||||
@@ -53,7 +55,13 @@ export default function UserOrChatInfoDialog() {
|
|||||||
marginTop: "10px",
|
marginTop: "10px",
|
||||||
}}></mdui-divider>
|
}}></mdui-divider>
|
||||||
<mdui-list>
|
<mdui-list>
|
||||||
<mdui-list-item icon={favourited ? "favorite_border" : "favorite"} rounded onClick={() => dialog({
|
{
|
||||||
|
isMySelf && <mdui-list-item icon="edit" rounded>
|
||||||
|
编辑资料
|
||||||
|
</mdui-list-item>
|
||||||
|
}
|
||||||
|
{
|
||||||
|
!isMySelf && <mdui-list-item icon={favourited ? "favorite_border" : "favorite"} rounded onClick={() => dialog({
|
||||||
headline: favourited ? "取消收藏对话" : "收藏对话",
|
headline: favourited ? "取消收藏对话" : "收藏对话",
|
||||||
description: favourited ? "确定从收藏对话列表中移除吗? (虽然这不会导致聊天记录丢失)" : "确定要添加到收藏对话列表吗?",
|
description: favourited ? "确定从收藏对话列表中移除吗? (虽然这不会导致聊天记录丢失)" : "确定要添加到收藏对话列表吗?",
|
||||||
actions: [
|
actions: [
|
||||||
@@ -84,6 +92,7 @@ export default function UserOrChatInfoDialog() {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
})}>{favourited ? '取消收藏' : '收藏对话'}</mdui-list-item>
|
})}>{favourited ? '取消收藏' : '收藏对话'}</mdui-list-item>
|
||||||
|
}
|
||||||
<mdui-list-item icon="chat" rounded onClick={() => {
|
<mdui-list-item icon="chat" rounded onClick={() => {
|
||||||
|
|
||||||
}}>打开对话</mdui-list-item>
|
}}>打开对话</mdui-list-item>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { LoaderFunctionArgs } from "react-router"
|
import { LoaderFunctionArgs } from "react-router"
|
||||||
import getClient from "../../getClient"
|
import getClient from "../../getClient"
|
||||||
import { Chat } from "lingchair-client-protocol"
|
import { Chat } from "lingchair-client-protocol"
|
||||||
|
import ClientCache from "../../ClientCache"
|
||||||
|
|
||||||
export default async function UserOrChatInfoDialogLoader({ params, request }: LoaderFunctionArgs) {
|
export default async function UserOrChatInfoDialogLoader({ params, request }: LoaderFunctionArgs) {
|
||||||
const searchParams = new URL(request.url).searchParams
|
const searchParams = new URL(request.url).searchParams
|
||||||
@@ -16,6 +17,7 @@ export default async function UserOrChatInfoDialogLoader({ params, request }: Lo
|
|||||||
id = await chat.getTheOtherUserIdOrThrow()
|
id = await chat.getTheOtherUserIdOrThrow()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
mySelf: await ClientCache.getMySelf(),
|
||||||
chat,
|
chat,
|
||||||
id,
|
id,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user