package pw.binom.viewmate.phone /** Событие изменения связи очки↔телефон (для автоматики паузы/продолжения). */ internal enum class ConnectionEvent { /** Связь не менялась. */ NONE, /** Связь потеряна (была → нет). */ LOST, /** Связь восстановилась (не было → есть). */ RESTORED, } /** Переход «было подключено / стало подключено» → событие. Чистая функция. */ internal fun connectionEvent(prevConnected: Boolean, nowConnected: Boolean): ConnectionEvent = when { prevConnected && !nowConnected -> ConnectionEvent.LOST !prevConnected && nowConnected -> ConnectionEvent.RESTORED else -> ConnectionEvent.NONE } /** * Флаг «продолжить звук после восстановления связи»: при обрыве запоминает, * играл ли звук; по восстановлении — отдаёт и сбрасывает. * Чистая логика без Android — покрыта unit-тестами. */ internal class ConnectionAutoResume { var resumeAfterReconnect: Boolean = false private set /** Обрыв связи: звук продолжится, только если плеер был активен и играл. */ fun onLost(audioActive: Boolean, wasPlaying: Boolean) { resumeAfterReconnect = audioActive && wasPlaying } /** Восстановление связи: продолжить ли звук (сбрасывает флаг). */ fun consumeResume(): Boolean { val shouldResume = resumeAfterReconnect resumeAfterReconnect = false return shouldResume } /** Сброс (например, после CLOSE). */ fun reset() { resumeAfterReconnect = false } }