feat(mobile): improve image viewer and install entry
Docker Image / Build and Push Docker Image (push) Successful in 2m5s

(cherry picked from commit 556bfd2919)
This commit is contained in:
Codex
2026-07-24 11:24:23 +08:00
parent 92768047e9
commit a20a333665
11 changed files with 403 additions and 42 deletions
+18 -1
View File
@@ -1,6 +1,6 @@
"use client";
import { useEffect, useMemo, type CSSProperties } from "react";
import { useEffect, useMemo, useRef, type CSSProperties } from "react";
import Image from "next/image";
import { useRouter, useSearchParams } from "next/navigation";
@@ -70,6 +70,8 @@ export function ChatScreen() {
const chatDispatch = useChatDispatch();
const authState = useAuthState();
const authDispatch = useAuthDispatch();
const imageOpenedFromChatRef = useRef(false);
const imageViewerClosingRef = useRef(false);
useSplashLatestMessageSync({
characterId: state.characterId,
historyLoaded: state.historyLoaded,
@@ -127,6 +129,13 @@ export function ChatScreen() {
loginStatus: authState.loginStatus,
});
useEffect(() => {
if (!imageMessageId) {
imageOpenedFromChatRef.current = false;
imageViewerClosingRef.current = false;
}
}, [imageMessageId]);
useEffect(() => {
if (
!imageMessageId ||
@@ -218,6 +227,7 @@ export function ChatScreen() {
}
function handleOpenImage(displayMessageId: string): void {
imageOpenedFromChatRef.current = true;
router.push(
buildChatImageOverlayUrl(displayMessageId, characterRoutes.chat),
{ scroll: false },
@@ -225,6 +235,13 @@ export function ChatScreen() {
}
function handleCloseImageViewer(): void {
if (imageViewerClosingRef.current) return;
imageViewerClosingRef.current = true;
if (imageOpenedFromChatRef.current) {
imageOpenedFromChatRef.current = false;
router.back();
return;
}
router.replace(
buildChatWithoutImageOverlayUrl(searchParams, characterRoutes.chat),
{ scroll: false },