这一大坨玩意我不想写说明了

This commit is contained in:
CrescentLeaf
2025-12-14 16:34:45 +08:00
parent 6a1ae692f9
commit 56f651f084
22 changed files with 653 additions and 41 deletions

View File

@@ -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>
}

View File

@@ -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>

View 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)
}