import React, { useEffect, useState } from "react"; import { ScrollView, Text, View } from "react-native"; import { getDiagnostics, sessionMemory } from "../src/api"; import { getTokenInfo } from "../src/auth"; import { useApp } from "../src/app-context"; import { isProduction } from "../src/config"; import { getRealtimeDiagnostics } from "../src/realtime"; import { Header, styles } from "../src/ui"; export default function DiagnosticsScreen() { const app = useApp(); const [, render] = useState(0); useEffect(() => { const timer = setInterval(() => render((value) => value + 1), 1000); return () => clearInterval(timer); }, []); if (isProduction) return
Диагностика Экран отключён в production. ; const token = getTokenInfo(); return
void app.signOut() : undefined} /> Безопасная диагностика Режим: {app.authStatus} Realtime: {app.realtimeState} UX-сессия: {sessionMemory.id ?? "нет"} Access token истекает: {token ? new Date(token.expiresAt).toLocaleString("ru-RU") : "нет"} {getRealtimeDiagnostics().map((item) => Cursor {item.dialog}: {item.cursor}, )} Токены, OTP, персональные данные, сообщения и presigned URL здесь никогда не отображаются. Последние запросы {!getDiagnostics().length && Запросов ещё нет.} {getDiagnostics().map((item) => {item.status} {item.method} {item.path} request_id: {item.requestId} )} ; }