Compare commits

...

3 Commits

Author SHA1 Message Date
CrescentLeaf
1e2e90f9e7 移除路由动画试图保留行为, 杂物 2025-12-27 00:49:16 +08:00
CrescentLeaf
2ad2e6e863 Merge branch 'cache' 2025-12-26 21:23:13 +08:00
CrescentLeaf
3b3e9a3d9d test 2025-12-26 21:18:56 +08:00
6 changed files with 12 additions and 20 deletions

View File

@@ -42,6 +42,7 @@ type IData = {
apply(): void apply(): void
access_token?: string access_token?: string
device_id: string device_id: string
override_use_mobile_ui?: boolean
} }
declare global { declare global {

View File

@@ -3,19 +3,10 @@ import { Await } from "react-router"
import getClient from "../../getClient" import getClient from "../../getClient"
import ChatFragment from "./ChatFragment" import ChatFragment from "./ChatFragment"
import * as React from 'react' import * as React from 'react'
import showSnackbar from "../../utils/showSnackbar"
import EffectOnly from "../EffectOnly" import EffectOnly from "../EffectOnly"
export default function LazyChatFragment({ chatId, openedWithRouter }: { chatId: string, openedWithRouter: boolean }) { export default function LazyChatFragment({ chatId, openedWithRouter }: { chatId: string, openedWithRouter: boolean }) {
return <React.Suspense fallback={<EffectOnly effect={() => { return <React.Suspense fallback={<EffectOnly effect={() => {}} deps={[]} />}>
const s = showSnackbar({
message: '请稍后...',
autoCloseDelay: 0,
})
return () => {
s.open = false
}
}} deps={[]} />}>
<Await <Await
resolve={React.useMemo(() => Chat.getByIdOrThrow(getClient(), chatId), [chatId])} resolve={React.useMemo(() => Chat.getByIdOrThrow(getClient(), chatId), [chatId])}
children={(chatInfo: Chat) => <ChatFragment chatInfo={chatInfo} openedWithRouter={openedWithRouter} />} /> children={(chatInfo: Chat) => <ChatFragment chatInfo={chatInfo} openedWithRouter={openedWithRouter} />} />

View File

@@ -22,7 +22,7 @@ export default function ChatFragmentDialog() {
const body = shadow.querySelector(".body") as HTMLElement const body = shadow.querySelector(".body") as HTMLElement
body.style.height = '100%' body.style.height = '100%'
body.style.display = 'flex' body.style.display = 'flex'
}, []) })
return (<> return (<>
<mdui-dialog fullscreen ref={dialogRef}> <mdui-dialog fullscreen ref={dialogRef}>

View File

@@ -23,8 +23,6 @@ export default function UserOrChatInfoDialog() {
(context: Shared) => context.setCurrentSelectedChatId (context: Shared) => context.setCurrentSelectedChatId
) )
console.log(setCurrentSelectedChatId, favouriteChats)
const nav = useNavigate() const nav = useNavigate()
const dialogRef = useRouterDialogRef() const dialogRef = useRouterDialogRef()

View File

@@ -6,11 +6,13 @@ import * as React from 'react'
import RouterDialogsContext from './RouterDialogsContext' import RouterDialogsContext from './RouterDialogsContext'
export default function useRouterDialogRef() { export default function useRouterDialogRef() {
const dialogRef = React.useRef<Dialog>(RouterDialogsContext) const dialogRef = React.useRef<Dialog>()
const registerRouterDialog = React.useContext(RouterDialogsContext) const nav = useNavigate()
useAsyncEffect(async () => { useAsyncEffect(async () => {
registerRouterDialog(dialogRef) dialogRef.current!.addEventListener('closed', async () => {
nav(-1)
})
await sleep(10) await sleep(10)
dialogRef.current!.open = true dialogRef.current!.open = true
}, []) }, [])

View File

@@ -1,5 +1,5 @@
import data from "../data"
export default function isMobileUI() { export default function isMobileUI() {
const mobile = new URL(location.href).searchParams.get('mobile') return data.override_use_mobile_ui || /Mobi|Android|iPhone/i.test(navigator.userAgent)
if (mobile) return mobile == 'true'
return /Mobi|Android|iPhone/i.test(navigator.userAgent)
} }