这一大坨玩意我不想写说明了
This commit is contained in:
@@ -1,8 +1,27 @@
|
||||
import { useSearchParams } from "react-router"
|
||||
import useRouterDialogRef from "./useRouterDialogRef"
|
||||
import * as React from 'react'
|
||||
import LazyChatFragment from "../chat-fragment/LazyChatFragment"
|
||||
|
||||
export default function ChatFragmentDialog() {
|
||||
const [searchParams] = useSearchParams()
|
||||
const id = searchParams.get('id')
|
||||
|
||||
const dialogRef = useRouterDialogRef()
|
||||
|
||||
return <mdui-dialog fullscreen ref={dialogRef}></mdui-dialog>
|
||||
React.useEffect(() => {
|
||||
const shadow = dialogRef.current!.shadowRoot as ShadowRoot
|
||||
const panel = shadow.querySelector(".panel") as HTMLElement
|
||||
panel.style.padding = '0'
|
||||
panel.style.color = 'inherit'
|
||||
panel.style.backgroundColor = 'rgb(var(--mdui-color-background))'
|
||||
panel.style.setProperty('--mdui-color-background', 'inherit')
|
||||
const body = shadow.querySelector(".body") as HTMLElement
|
||||
body.style.height = '100%'
|
||||
body.style.display = 'flex'
|
||||
}, [])
|
||||
|
||||
return <mdui-dialog fullscreen ref={dialogRef}>
|
||||
<LazyChatFragment chatId={id!} openedWithRouter={true} />
|
||||
</mdui-dialog>
|
||||
}
|
||||
|
||||
@@ -8,14 +8,22 @@ import { useContextSelector } from "use-context-selector"
|
||||
import MainSharedContext, { Shared } from "../MainSharedContext"
|
||||
import * as React from 'react'
|
||||
import UserOrChatInfoDialogLoader from "./UserOrChatInfoDialogDataLoader"
|
||||
import MainSharedReducer from "../MainSharedReducer"
|
||||
import ClientCache from "../../ClientCache"
|
||||
import getClient from "../../getClient"
|
||||
import gotoChat from "./gotoChat"
|
||||
import isMobileUI from "../../utils/isMobileUI"
|
||||
|
||||
export default function UserOrChatInfoDialog() {
|
||||
const shared = useContextSelector(MainSharedContext, (context: Shared) => ({
|
||||
state: context.state,
|
||||
}))
|
||||
const favouriteChats = useContextSelector(
|
||||
MainSharedContext,
|
||||
(context: Shared) => context.state.favouriteChats
|
||||
)
|
||||
const setCurrentSelectedChatId = useContextSelector(
|
||||
MainSharedContext,
|
||||
(context: Shared) => context.setCurrentSelectedChatId
|
||||
)
|
||||
|
||||
console.log(setCurrentSelectedChatId, favouriteChats)
|
||||
|
||||
const nav = useNavigate()
|
||||
|
||||
@@ -24,7 +32,7 @@ export default function UserOrChatInfoDialog() {
|
||||
|
||||
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(() => favouriteChats.map((v) => v.getId()).indexOf(chat.getId() || '') != -1, [chat, favouriteChats])
|
||||
|
||||
return (
|
||||
<mdui-dialog close-on-overlay-click close-on-esc ref={dialogRef}>
|
||||
@@ -96,8 +104,15 @@ export default function UserOrChatInfoDialog() {
|
||||
],
|
||||
})}>{favourited ? '取消收藏' : '收藏对话'}</mdui-list-item>
|
||||
}
|
||||
<mdui-list-item icon="chat" rounded onClick={() => {
|
||||
|
||||
<mdui-list-item icon="chat" rounded onClick={async () => {
|
||||
await nav(-1)
|
||||
gotoChat(isMobileUI() ? {
|
||||
nav: nav,
|
||||
id: chat.getId(),
|
||||
} : {
|
||||
setter: setCurrentSelectedChatId,
|
||||
id: chat.getId(),
|
||||
})
|
||||
}}>打开对话</mdui-list-item>
|
||||
</mdui-list>
|
||||
</mdui-dialog>
|
||||
|
||||
6
client/ui/routers/gotoChat.ts
Normal file
6
client/ui/routers/gotoChat.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import { NavigateFunction } from "react-router"
|
||||
|
||||
export default async function gotoChat({ nav, setter, id }: { nav?: NavigateFunction, setter?: (id: string) => void, id: string }) {
|
||||
await nav?.('/chat?id=' + id)
|
||||
setter?.(id)
|
||||
}
|
||||
Reference in New Issue
Block a user