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