refactor(chat): show images in page overlay

This commit is contained in:
2026-07-09 10:11:25 +08:00
parent cb7791dd8d
commit fc92c3a5d5
23 changed files with 253 additions and 627 deletions
@@ -19,6 +19,8 @@ export interface UseChatUnlockNavigationFlowInput {
returnUrl: string;
expectedKind?: PendingChatUnlockKind;
expectedMessageId?: string;
ignoredKind?: PendingChatUnlockKind;
enabled?: boolean;
}
export interface UseChatUnlockNavigationFlowOutput {
@@ -35,6 +37,8 @@ export function useChatUnlockNavigationFlow({
returnUrl,
expectedKind,
expectedMessageId,
ignoredKind,
enabled = true,
}: UseChatUnlockNavigationFlowInput): UseChatUnlockNavigationFlowOutput {
const navigator = useAppNavigator();
const userState = useUserState();
@@ -44,9 +48,12 @@ export function useChatUnlockNavigationFlow({
request: chatState.unlockPaywallRequest,
expectedKind,
expectedMessageId,
ignoredKind,
enabled,
});
useEffect(() => {
if (!enabled) return;
if (!chatState.historyLoaded || !navigator.isAuthenticatedUser) return;
let cancelled = false;
@@ -83,8 +90,10 @@ export function useChatUnlockNavigationFlow({
}, [
chatDispatch,
chatState.historyLoaded,
enabled,
expectedKind,
expectedMessageId,
ignoredKind,
navigator.isAuthenticatedUser,
returnUrl,
]);
@@ -135,9 +144,19 @@ function getScopedUnlockPaywallRequest(input: {
request: ChatUnlockPaywallRequest | null;
expectedKind?: PendingChatUnlockKind;
expectedMessageId?: string;
ignoredKind?: PendingChatUnlockKind;
enabled?: boolean;
}): ChatUnlockPaywallRequest | null {
const { request, expectedKind, expectedMessageId } = input;
const {
request,
expectedKind,
expectedMessageId,
ignoredKind,
enabled = true,
} = input;
if (!enabled) return null;
if (!request) return null;
if (ignoredKind && request.kind === ignoredKind) return null;
if (expectedKind && request.kind !== expectedKind) return null;
if (expectedMessageId && request.messageId !== expectedMessageId) return null;
return request;