diff --git a/apps/web-chat/src/call/AudioCallStage.tsx b/apps/web-chat/src/call/AudioCallStage.tsx index 92b1089..61f86a7 100644 --- a/apps/web-chat/src/call/AudioCallStage.tsx +++ b/apps/web-chat/src/call/AudioCallStage.tsx @@ -102,6 +102,7 @@ export function AudioCallStage({ call, accessToken, iceServers, loading, invalid subCaption={mode === "active" ? (rtc.micOn ? "Говорите" : "Ваш микрофон выключен") : undefined} onToggleMic={rtc.toggleMic} onAccept={() => void join()} + onDecline={() => void onCancel()} onCancel={() => void onCancel()} onEnd={rtc.end} onClose={close} diff --git a/apps/web-chat/src/call/model.ts b/apps/web-chat/src/call/model.ts index fcfca92..0cc9ca2 100644 --- a/apps/web-chat/src/call/model.ts +++ b/apps/web-chat/src/call/model.ts @@ -49,7 +49,10 @@ export function resolveAudioCallViewMode(state: { loading: boolean; invalid: boo if (state.loading || state.invalid || !state.call) return "status"; if (state.mediaIssue === "devices" || state.mediaIssue === "unsupported") return "status"; if (isTerminalCall(state.call.status) || state.connection === "failed") return "status"; - if (!state.started) return state.call.status === "RINGING" || state.call.status === "REQUESTED" ? "ringing" : "incoming"; + // Приглашение для клиента — входящий звонок: он решает принять или отклонить + // (звонок всегда инициирует сотрудник, поэтому «исходящего» для клиента нет). + // REQUESTED/RINGING до старта → incoming (парные Принять/Отклонить). + if (!state.started) return "incoming"; if (state.connection === "reconnecting") return "reconnecting"; if (state.connection === "connected" || state.call.status === "ACTIVE") return "active"; return "connecting"; diff --git a/apps/web-chat/src/styles.css b/apps/web-chat/src/styles.css index 854be9e..fd3aecf 100644 --- a/apps/web-chat/src/styles.css +++ b/apps/web-chat/src/styles.css @@ -9,6 +9,25 @@ body, box-sizing: border-box; } +/* + Дизайн-токены для страницы звонка /calls/ (baseline Edevs Hub DS). + На основной странице виджета (встраиваемого) эти переменные не нужны, но экран + аудиозвонка из @edevs/ui (audio-call.css) использует var(--font-sans) и радиусы, + которых в web-chat нет. Значения — системный font stack Ant Design и токены + радиусов из baseline tokens/typography.css + tokens/effects.css (ADR-HUB-0013: + внешние веб-шрифты не подключаются). +*/ +:root { + --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + + --radius-lg: 9px; + --radius-4xl: 14px; + --radius-pill: 999px; + + --success: #52c41a; + --error: #ff4d4f; +} + @keyframes wcTyping { 0%, 80%, 100% { opacity: 0.25; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-2px); }