Refactoring

This commit is contained in:
darken
2021-12-29 22:37:23 +01:00
parent 88278625f1
commit deb513f998
17 changed files with 36 additions and 52 deletions
@@ -14,7 +14,7 @@ import eu.darken.capod.common.coroutine.DispatcherProvider
import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.log
import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.debug.logging.logTag
import eu.darken.capod.common.notifications.PendingIntentCompat import eu.darken.capod.common.notifications.PendingIntentCompat
import eu.darken.capod.common.smart.SmartService import eu.darken.capod.common.uix.Service2
import eu.darken.capod.main.ui.MainActivity import eu.darken.capod.main.ui.MainActivity
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.SupervisorJob
@@ -26,7 +26,7 @@ import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class RecorderService : SmartService() { class RecorderService : Service2() {
private lateinit var builder: NotificationCompat.Builder private lateinit var builder: NotificationCompat.Builder
@Inject lateinit var recorderModule: RecorderModule @Inject lateinit var recorderModule: RecorderModule
@@ -9,11 +9,11 @@ import androidx.core.view.isInvisible
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.debug.logging.logTag
import eu.darken.capod.common.error.asErrorDialogBuilder import eu.darken.capod.common.error.asErrorDialogBuilder
import eu.darken.capod.common.smart.SmartActivity import eu.darken.capod.common.uix.Activity2
import eu.darken.capod.databinding.DebugRecordingActivityBinding import eu.darken.capod.databinding.DebugRecordingActivityBinding
@AndroidEntryPoint @AndroidEntryPoint
class RecorderActivity : SmartActivity() { class RecorderActivity : Activity2() {
private lateinit var ui: DebugRecordingActivityBinding private lateinit var ui: DebugRecordingActivityBinding
private val vm: RecorderActivityVM by viewModels() private val vm: RecorderActivityVM by viewModels()
@@ -16,7 +16,7 @@ import eu.darken.capod.common.flow.DynamicStateFlow
import eu.darken.capod.common.flow.onError import eu.darken.capod.common.flow.onError
import eu.darken.capod.common.flow.replayingShare import eu.darken.capod.common.flow.replayingShare
import eu.darken.capod.common.livedata.SingleLiveEvent import eu.darken.capod.common.livedata.SingleLiveEvent
import eu.darken.capod.common.smart.Smart2VM import eu.darken.capod.common.uix.ViewModel3
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
@@ -30,7 +30,7 @@ class RecorderActivityVM @Inject constructor(
handle: SavedStateHandle, handle: SavedStateHandle,
dispatcherProvider: DispatcherProvider, dispatcherProvider: DispatcherProvider,
@ApplicationContext private val context: Context, @ApplicationContext private val context: Context,
) : Smart2VM(dispatcherProvider) { ) : ViewModel3(dispatcherProvider) {
private val recordedPath = handle.get<String>(RecorderActivity.RECORD_PATH)!! private val recordedPath = handle.get<String>(RecorderActivity.RECORD_PATH)!!
private val pathCache = MutableStateFlow(recordedPath) private val pathCache = MutableStateFlow(recordedPath)
@@ -1,4 +1,4 @@
package eu.darken.capod.common.smart package eu.darken.capod.common.uix
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
@@ -8,7 +8,7 @@ import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE
import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.log
import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.debug.logging.logTag
abstract class SmartActivity : AppCompatActivity() { abstract class Activity2 : AppCompatActivity() {
internal val tag: String = internal val tag: String =
logTag("Activity", this.javaClass.simpleName + "(" + Integer.toHexString(hashCode()) + ")") logTag("Activity", this.javaClass.simpleName + "(" + Integer.toHexString(hashCode()) + ")")
@@ -38,7 +38,7 @@ abstract class SmartActivity : AppCompatActivity() {
} }
fun <T> LiveData<T>.observe2(callback: (T) -> Unit) { fun <T> LiveData<T>.observe2(callback: (T) -> Unit) {
observe(this@SmartActivity) { callback.invoke(it) } observe(this@Activity2) { callback.invoke(it) }
} }
} }
@@ -1,4 +1,4 @@
package eu.darken.capod.common.smart package eu.darken.capod.common.uix
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
@@ -18,10 +18,10 @@ import eu.darken.capod.common.navigation.popBackStack
import eu.darken.capod.common.observe2 import eu.darken.capod.common.observe2
abstract class Smart2BottomSheetDialogFragment : BottomSheetDialogFragment() { abstract class BottomSheetDialogFragment2 : BottomSheetDialogFragment() {
abstract val ui: ViewBinding abstract val ui: ViewBinding
abstract val vdc: Smart2VM abstract val vdc: ViewModel3
internal val tag: String = internal val tag: String =
logTag("Fragment", "${this.javaClass.simpleName}(${Integer.toHexString(hashCode())})") logTag("Fragment", "${this.javaClass.simpleName}(${Integer.toHexString(hashCode())})")
@@ -1,4 +1,4 @@
package eu.darken.capod.common.smart package eu.darken.capod.common.uix
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
@@ -13,7 +13,7 @@ import eu.darken.capod.common.debug.logging.log
import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.debug.logging.logTag
abstract class SmartFragment(@LayoutRes val layoutRes: Int?) : Fragment(layoutRes ?: 0) { abstract class Fragment2(@LayoutRes val layoutRes: Int?) : Fragment(layoutRes ?: 0) {
constructor() : this(null) constructor() : this(null)
@@ -1,4 +1,4 @@
package eu.darken.capod.common.smart package eu.darken.capod.common.uix
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
@@ -11,12 +11,12 @@ import eu.darken.capod.common.navigation.doNavigate
import eu.darken.capod.common.navigation.popBackStack import eu.darken.capod.common.navigation.popBackStack
abstract class Smart2Fragment(@LayoutRes layoutRes: Int?) : SmartFragment(layoutRes) { abstract class Fragment3(@LayoutRes layoutRes: Int?) : Fragment2(layoutRes) {
constructor() : this(null) constructor() : this(null)
abstract val ui: ViewBinding? abstract val ui: ViewBinding?
abstract val vm: Smart2VM abstract val vm: ViewModel3
var onErrorEvent: ((Throwable) -> Boolean)? = null var onErrorEvent: ((Throwable) -> Boolean)? = null
@@ -1,4 +1,4 @@
package eu.darken.capod.common.smart package eu.darken.capod.common.uix
import android.app.Service import android.app.Service
import android.content.Intent import android.content.Intent
@@ -6,7 +6,7 @@ import android.content.res.Configuration
import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.log
import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.debug.logging.logTag
abstract class SmartService : Service() { abstract class Service2 : Service() {
private val tag: String = private val tag: String =
logTag("Service", this.javaClass.simpleName + "(" + Integer.toHexString(this.hashCode()) + ")") logTag("Service", this.javaClass.simpleName + "(" + Integer.toHexString(this.hashCode()) + ")")
@@ -1,11 +1,11 @@
package eu.darken.capod.common.viewmodel package eu.darken.capod.common.uix
import androidx.annotation.CallSuper import androidx.annotation.CallSuper
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.log
import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.debug.logging.logTag
abstract class VM : ViewModel() { abstract class ViewModel1 : ViewModel() {
val TAG: String = logTag("VM", javaClass.simpleName) val TAG: String = logTag("VM", javaClass.simpleName)
init { init {
@@ -1,4 +1,4 @@
package eu.darken.capod.common.smart package eu.darken.capod.common.uix
import androidx.lifecycle.asLiveData import androidx.lifecycle.asLiveData
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
@@ -9,16 +9,15 @@ import eu.darken.capod.common.debug.logging.asLog
import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.log
import eu.darken.capod.common.error.ErrorEventSource import eu.darken.capod.common.error.ErrorEventSource
import eu.darken.capod.common.flow.DynamicStateFlow import eu.darken.capod.common.flow.DynamicStateFlow
import eu.darken.capod.common.viewmodel.VM
import kotlinx.coroutines.* import kotlinx.coroutines.*
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
import kotlin.coroutines.CoroutineContext import kotlin.coroutines.CoroutineContext
abstract class SmartVM( abstract class ViewModel2(
private val dispatcherProvider: DispatcherProvider = DefaultDispatcherProvider(), private val dispatcherProvider: DispatcherProvider = DefaultDispatcherProvider(),
) : VM() { ) : ViewModel1() {
val vmScope = viewModelScope + dispatcherProvider.Default val vmScope = viewModelScope + dispatcherProvider.Default
@@ -1,4 +1,4 @@
package eu.darken.capod.common.smart package eu.darken.capod.common.uix
import androidx.navigation.NavDirections import androidx.navigation.NavDirections
import eu.darken.capod.common.coroutine.DispatcherProvider import eu.darken.capod.common.coroutine.DispatcherProvider
@@ -13,9 +13,9 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
abstract class Smart2VM( abstract class ViewModel3(
dispatcherProvider: DispatcherProvider, dispatcherProvider: DispatcherProvider,
) : SmartVM(dispatcherProvider), NavEventSource, ErrorEventSource { ) : ViewModel2(dispatcherProvider), NavEventSource, ErrorEventSource {
override val navEvents = SingleLiveEvent<NavDirections?>() override val navEvents = SingleLiveEvent<NavDirections?>()
override val errorEvents = SingleLiveEvent<Throwable>() override val errorEvents = SingleLiveEvent<Throwable>()
@@ -1,4 +1,4 @@
package eu.darken.capod.common.viewmodel package eu.darken.capod.common.uix
/* /*
* Copyright 2018 The Android Open Source Project * Copyright 2018 The Android Open Source Project
@@ -1,15 +0,0 @@
package eu.darken.capod.common.viewmodel
import androidx.lifecycle.asLiveData
import eu.darken.capod.common.coroutine.DefaultDispatcherProvider
import eu.darken.capod.common.coroutine.DispatcherProvider
import kotlinx.coroutines.flow.Flow
abstract class SmartVM(
private val dispatcherProvider: DispatcherProvider = DefaultDispatcherProvider(),
) : VM() {
fun <T> Flow<T>.asLiveData2() = this.asLiveData(context = dispatcherProvider.Default)
}
@@ -5,11 +5,11 @@ import androidx.activity.viewModels
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import eu.darken.capod.R import eu.darken.capod.R
import eu.darken.capod.common.navigation.findNavController import eu.darken.capod.common.navigation.findNavController
import eu.darken.capod.common.smart.SmartActivity import eu.darken.capod.common.uix.Activity2
import eu.darken.capod.databinding.MainActivityBinding import eu.darken.capod.databinding.MainActivityBinding
@AndroidEntryPoint @AndroidEntryPoint
class MainActivity : SmartActivity() { class MainActivity : Activity2() {
private val vm: MainActivityVM by viewModels() private val vm: MainActivityVM by viewModels()
private lateinit var ui: MainActivityBinding private lateinit var ui: MainActivityBinding
@@ -3,7 +3,7 @@ package eu.darken.capod.main.ui
import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.SavedStateHandle
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import eu.darken.capod.common.coroutine.DispatcherProvider import eu.darken.capod.common.coroutine.DispatcherProvider
import eu.darken.capod.common.viewmodel.SmartVM import eu.darken.capod.common.uix.ViewModel2
import javax.inject.Inject import javax.inject.Inject
@@ -11,4 +11,4 @@ import javax.inject.Inject
class MainActivityVM @Inject constructor( class MainActivityVM @Inject constructor(
handle: SavedStateHandle, handle: SavedStateHandle,
dispatcherProvider: DispatcherProvider, dispatcherProvider: DispatcherProvider,
) : SmartVM(dispatcherProvider = dispatcherProvider) ) : ViewModel2(dispatcherProvider = dispatcherProvider)
@@ -11,13 +11,13 @@ import eu.darken.capod.common.BuildConfigWrap
import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.log
import eu.darken.capod.common.lists.differ.update import eu.darken.capod.common.lists.differ.update
import eu.darken.capod.common.lists.setupDefaults import eu.darken.capod.common.lists.setupDefaults
import eu.darken.capod.common.smart.Smart2Fragment import eu.darken.capod.common.uix.Fragment3
import eu.darken.capod.common.viewbinding.viewBinding import eu.darken.capod.common.viewbinding.viewBinding
import eu.darken.capod.databinding.MainFragmentBinding import eu.darken.capod.databinding.MainFragmentBinding
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class MainFragment : Smart2Fragment(R.layout.main_fragment) { class MainFragment : Fragment3(R.layout.main_fragment) {
override val vm: MainFragmentVM by viewModels() override val vm: MainFragmentVM by viewModels()
override val ui: MainFragmentBinding by viewBinding() override val ui: MainFragmentBinding by viewBinding()
@@ -11,7 +11,7 @@ import eu.darken.capod.common.hasApiLevel
import eu.darken.capod.common.livedata.SingleLiveEvent import eu.darken.capod.common.livedata.SingleLiveEvent
import eu.darken.capod.common.permissions.Permission import eu.darken.capod.common.permissions.Permission
import eu.darken.capod.common.permissions.isGranted import eu.darken.capod.common.permissions.isGranted
import eu.darken.capod.common.smart.Smart2VM import eu.darken.capod.common.uix.ViewModel3
import eu.darken.capod.main.ui.cards.PermissionCardVH import eu.darken.capod.main.ui.cards.PermissionCardVH
import eu.darken.capod.main.ui.cards.ToggleCardVH import eu.darken.capod.main.ui.cards.ToggleCardVH
import kotlinx.coroutines.flow.* import kotlinx.coroutines.flow.*
@@ -24,7 +24,7 @@ class MainFragmentVM @Inject constructor(
@ApplicationContext private val context: Context, @ApplicationContext private val context: Context,
dispatcherProvider: DispatcherProvider, dispatcherProvider: DispatcherProvider,
private val recorderModule: RecorderModule, private val recorderModule: RecorderModule,
) : Smart2VM(dispatcherProvider = dispatcherProvider) { ) : ViewModel3(dispatcherProvider = dispatcherProvider) {
private val enabledState: Flow<Boolean> = flow { private val enabledState: Flow<Boolean> = flow {