srctree

Robin Linden parent 9c22eb87 f6d07b09
Inject SharedPreferences

inlinesplit
atox/src/main/kotlin/Extensions.kt added: 24, removed: 20, total 4
@@ -1,16 +1,11 @@
package ltd.evilcorp.atox
 
import android.content.Context
import android.os.Build
import android.view.View
import android.view.WindowInsets
import androidx.fragment.app.Fragment
import androidx.preference.PreferenceManager
import ltd.evilcorp.atox.di.ViewModelFactory
 
fun Context.getPreferences() =
PreferenceManager.getDefaultSharedPreferences(this)
 
val Fragment.vmFactory: ViewModelFactory
get() = (requireActivity() as MainActivity).vmFactory
 
 
atox/src/main/kotlin/MainActivity.kt added: 24, removed: 20, total 4
@@ -1,12 +1,12 @@
package ltd.evilcorp.atox
 
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.navigation.fragment.findNavController
import androidx.preference.PreferenceManager
import kotlinx.android.synthetic.main.activity_main.*
import ltd.evilcorp.atox.di.ViewModelFactory
import javax.inject.Inject
@@ -19,14 +19,15 @@ class MainActivity : AppCompatActivity() {
@Inject
lateinit var vmFactory: ViewModelFactory
 
@Inject
lateinit var preferences: SharedPreferences
 
override fun onCreate(savedInstanceState: Bundle?) {
(application as App).component.inject(this)
 
super.onCreate(savedInstanceState)
 
AppCompatDelegate.setDefaultNightMode(
applicationContext.getPreferences().getInt("theme", 0)
)
AppCompatDelegate.setDefaultNightMode(preferences.getInt("theme", 0))
 
setContentView(R.layout.activity_main)
 
 
atox/src/main/kotlin/di/AndroidModule.kt added: 24, removed: 20, total 4
@@ -2,6 +2,8 @@ package ltd.evilcorp.atox.di
 
import android.content.ContentResolver
import android.content.Context
import android.content.SharedPreferences
import androidx.preference.PreferenceManager
import dagger.Module
import dagger.Provides
 
@@ -9,4 +11,8 @@ import dagger.Provides
class AndroidModule {
@Provides
fun provideContentResolver(context: Context): ContentResolver = context.contentResolver
 
@Provides
fun provideSharedPreferences(context: Context): SharedPreferences =
PreferenceManager.getDefaultSharedPreferences(context)
}
 
atox/src/main/kotlin/tox/ToxStarter.kt added: 24, removed: 20, total 4
@@ -2,11 +2,11 @@ package ltd.evilcorp.atox.tox
 
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.os.Build
import android.util.Log
import im.tox.tox4j.core.exceptions.ToxNewException
import ltd.evilcorp.atox.ToxService
import ltd.evilcorp.atox.getPreferences
import ltd.evilcorp.domain.feature.UserManager
import ltd.evilcorp.domain.tox.*
import javax.inject.Inject
@@ -20,7 +20,8 @@ class ToxStarter @Inject constructor(
private val tox: Tox,
private val eventListener: ToxEventListener,
private val avEventListener: ToxAvEventListener,
private val context: Context
private val context: Context,
private val preferences: SharedPreferences
) {
fun startTox(save: ByteArray? = null): Boolean = try {
listenerCallbacks.setUp(eventListener)
@@ -28,7 +29,7 @@ class ToxStarter @Inject constructor(
tox.start(
SaveOptions(
save,
udpEnabled = context.getPreferences().getBoolean("udp_enabled", false)
udpEnabled = preferences.getBoolean("udp_enabled", false)
), eventListener, avEventListener
)
startService()
 
atox/src/main/kotlin/ui/settings/SettingsViewModel.kt added: 24, removed: 20, total 4
@@ -2,6 +2,7 @@ package ltd.evilcorp.atox.ui.settings
 
import android.content.ComponentName
import android.content.Context
import android.content.SharedPreferences
import android.content.pm.PackageManager
import android.util.Log
import androidx.lifecycle.ViewModel
@@ -10,21 +11,21 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import ltd.evilcorp.atox.BootReceiver
import ltd.evilcorp.atox.getPreferences
import ltd.evilcorp.atox.tox.ToxStarter
import ltd.evilcorp.domain.tox.Tox
import javax.inject.Inject
 
class SettingsViewModel @Inject constructor(
private val context: Context,
private val preferences: SharedPreferences,
private val toxStarter: ToxStarter,
private val tox: Tox
) : ViewModel(), CoroutineScope by GlobalScope {
private var restartNeeded = false
 
fun getUdpEnabled(): Boolean = context.getPreferences().getBoolean("udp_enabled", false)
fun getUdpEnabled(): Boolean = preferences.getBoolean("udp_enabled", false)
fun setUdpEnabled(enabled: Boolean) {
context.getPreferences().edit().putBoolean("udp_enabled", enabled).apply()
preferences.edit().putBoolean("udp_enabled", enabled).apply()
restartNeeded = true
}