push: 30-с таймаут входящего звонка + уведомление «Пропущенный звонок»
Не отвеченный звонок звонит 30 секунд, после чего снимается сам: рингтон/уведомление гасятся, показывается «Пропущенный звонок» (на локскрине — обезличенно, после разблокировки — с названием комнаты; тап открывает комнату). Полноэкранный входящий закрывается по тому же событию. Страховочный alarm поднимает процесс и снимает звонок, даже если система убила приложение во время звонка. Принятые/отклонённые звонки «Пропущенный» не показывают. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -25,6 +25,8 @@ import ru.forbion.f7cloud.feature.talknative.TalkNativeCallLauncher
|
||||
*/
|
||||
class CallIncomingActivity : ComponentActivity() {
|
||||
|
||||
private var callEndedListener: ((String) -> Unit)? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
enableEdgeToEdge()
|
||||
@@ -55,6 +57,20 @@ class CallIncomingActivity : ComponentActivity() {
|
||||
finish()
|
||||
}
|
||||
|
||||
// Звонок сняли извне (30-с таймаут «не берут трубку», принят/отклонён из
|
||||
// уведомления) — закрываем полноэкранный входящий.
|
||||
launch.roomToken?.takeIf { it.isNotBlank() }?.let { token ->
|
||||
val listener: (String) -> Unit = { ended ->
|
||||
if (ended == token) {
|
||||
runOnUiThread {
|
||||
if (!isFinishing) finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
callEndedListener = listener
|
||||
F7IncomingCallQueue.addCallEndedListener(listener)
|
||||
}
|
||||
|
||||
setContent {
|
||||
F7Theme {
|
||||
IncomingCallScreen(
|
||||
@@ -74,6 +90,12 @@ class CallIncomingActivity : ComponentActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
callEndedListener?.let(F7IncomingCallQueue::removeCallEndedListener)
|
||||
callEndedListener = null
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
override fun onNewIntent(intent: Intent) {
|
||||
super.onNewIntent(intent)
|
||||
setIntent(intent)
|
||||
|
||||
Reference in New Issue
Block a user