refactor: improve player accessibility
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
plugins {
|
||||
id("gwenedeg.kmp.library")
|
||||
}
|
||||
|
||||
kotlin {
|
||||
androidLibrary {
|
||||
namespace = "bzh.ajaury.chombev.core.accessibility"
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package bzh.ajaury.chombev.core.accessibility.data
|
||||
|
||||
import android.content.Context
|
||||
import android.view.accessibility.AccessibilityManager
|
||||
import bzh.ajaury.chombev.core.accessibility.domain.AccessibilityRepository
|
||||
|
||||
internal class AndroidAccessibilityRepository(
|
||||
context: Context,
|
||||
) : AccessibilityRepository {
|
||||
private val accessibilityManager = context.getSystemService(AccessibilityManager::class.java)
|
||||
|
||||
// Screen readers such as TalkBack turn on touch exploration. Other accessibility services
|
||||
// (password managers, automation tools) do not, so `isEnabled` alone would misreport them.
|
||||
override fun isScreenReaderEnabled(): Boolean = accessibilityManager?.isTouchExplorationEnabled == true
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package bzh.ajaury.chombev.core.accessibility.di
|
||||
|
||||
import bzh.ajaury.chombev.core.accessibility.data.AndroidAccessibilityRepository
|
||||
import bzh.ajaury.chombev.core.accessibility.domain.AccessibilityRepository
|
||||
import org.koin.core.module.Module
|
||||
import org.koin.core.module.dsl.bind
|
||||
import org.koin.core.module.dsl.singleOf
|
||||
import org.koin.dsl.module
|
||||
|
||||
actual val accessibilityModule: Module = module {
|
||||
singleOf(::AndroidAccessibilityRepository) { bind<AccessibilityRepository>() }
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package bzh.ajaury.chombev.core.accessibility.data
|
||||
|
||||
import bzh.ajaury.chombev.core.accessibility.domain.AccessibilityRepository
|
||||
|
||||
internal class UndetectableAccessibilityRepository : AccessibilityRepository {
|
||||
override fun isScreenReaderEnabled(): Boolean = false
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package bzh.ajaury.chombev.core.accessibility.di
|
||||
|
||||
import org.koin.core.module.Module
|
||||
|
||||
expect val accessibilityModule: Module
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package bzh.ajaury.chombev.core.accessibility.domain
|
||||
|
||||
interface AccessibilityRepository {
|
||||
fun isScreenReaderEnabled(): Boolean
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package bzh.ajaury.chombev.core.accessibility.data
|
||||
|
||||
import bzh.ajaury.chombev.core.accessibility.domain.AccessibilityRepository
|
||||
import platform.UIKit.UIAccessibilityIsVoiceOverRunning
|
||||
|
||||
internal class IosAccessibilityRepository : AccessibilityRepository {
|
||||
override fun isScreenReaderEnabled(): Boolean = UIAccessibilityIsVoiceOverRunning()
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package bzh.ajaury.chombev.core.accessibility.di
|
||||
|
||||
import bzh.ajaury.chombev.core.accessibility.data.IosAccessibilityRepository
|
||||
import bzh.ajaury.chombev.core.accessibility.domain.AccessibilityRepository
|
||||
import org.koin.core.module.Module
|
||||
import org.koin.core.module.dsl.bind
|
||||
import org.koin.core.module.dsl.singleOf
|
||||
import org.koin.dsl.module
|
||||
|
||||
actual val accessibilityModule: Module = module {
|
||||
singleOf(::IosAccessibilityRepository) { bind<AccessibilityRepository>() }
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package bzh.ajaury.chombev.core.accessibility.di
|
||||
|
||||
import bzh.ajaury.chombev.core.accessibility.data.UndetectableAccessibilityRepository
|
||||
import bzh.ajaury.chombev.core.accessibility.domain.AccessibilityRepository
|
||||
import org.koin.core.module.Module
|
||||
import org.koin.core.module.dsl.bind
|
||||
import org.koin.core.module.dsl.singleOf
|
||||
import org.koin.dsl.module
|
||||
|
||||
actual val accessibilityModule: Module = module {
|
||||
singleOf(::UndetectableAccessibilityRepository) { bind<AccessibilityRepository>() }
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package bzh.ajaury.chombev.core.accessibility.di
|
||||
|
||||
import bzh.ajaury.chombev.core.accessibility.data.UndetectableAccessibilityRepository
|
||||
import bzh.ajaury.chombev.core.accessibility.domain.AccessibilityRepository
|
||||
import org.koin.core.module.Module
|
||||
import org.koin.core.module.dsl.bind
|
||||
import org.koin.core.module.dsl.singleOf
|
||||
import org.koin.dsl.module
|
||||
|
||||
actual val accessibilityModule: Module = module {
|
||||
singleOf(::UndetectableAccessibilityRepository) { bind<AccessibilityRepository>() }
|
||||
}
|
||||
Reference in New Issue
Block a user