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.logTag
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 kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.SupervisorJob
@@ -26,7 +26,7 @@ import javax.inject.Inject
@AndroidEntryPoint
class RecorderService : SmartService() {
class RecorderService : Service2() {
private lateinit var builder: NotificationCompat.Builder
@Inject lateinit var recorderModule: RecorderModule
@@ -9,11 +9,11 @@ import androidx.core.view.isInvisible
import dagger.hilt.android.AndroidEntryPoint
import eu.darken.capod.common.debug.logging.logTag
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
@AndroidEntryPoint
class RecorderActivity : SmartActivity() {
class RecorderActivity : Activity2() {
private lateinit var ui: DebugRecordingActivityBinding
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.replayingShare
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.first
import kotlinx.coroutines.flow.map
@@ -30,7 +30,7 @@ class RecorderActivityVM @Inject constructor(
handle: SavedStateHandle,
dispatcherProvider: DispatcherProvider,
@ApplicationContext private val context: Context,
) : Smart2VM(dispatcherProvider) {
) : ViewModel3(dispatcherProvider) {
private val recordedPath = handle.get<String>(RecorderActivity.RECORD_PATH)!!
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.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.logTag
abstract class SmartActivity : AppCompatActivity() {
abstract class Activity2 : AppCompatActivity() {
internal val tag: String =
logTag("Activity", this.javaClass.simpleName + "(" + Integer.toHexString(hashCode()) + ")")
@@ -38,7 +38,7 @@ abstract class SmartActivity : AppCompatActivity() {
}
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.Intent
@@ -18,10 +18,10 @@ import eu.darken.capod.common.navigation.popBackStack
import eu.darken.capod.common.observe2
abstract class Smart2BottomSheetDialogFragment : BottomSheetDialogFragment() {
abstract class BottomSheetDialogFragment2 : BottomSheetDialogFragment() {
abstract val ui: ViewBinding
abstract val vdc: Smart2VM
abstract val vdc: ViewModel3
internal val tag: String =
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.Intent
@@ -13,7 +13,7 @@ import eu.darken.capod.common.debug.logging.log
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)
@@ -1,4 +1,4 @@
package eu.darken.capod.common.smart
package eu.darken.capod.common.uix
import android.os.Bundle
import android.view.View
@@ -11,12 +11,12 @@ import eu.darken.capod.common.navigation.doNavigate
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)
abstract val ui: ViewBinding?
abstract val vm: Smart2VM
abstract val vm: ViewModel3
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.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.logTag
abstract class SmartService : Service() {
abstract class Service2 : Service() {
private val tag: String =
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.lifecycle.ViewModel
import eu.darken.capod.common.debug.logging.log
import eu.darken.capod.common.debug.logging.logTag
abstract class VM : ViewModel() {
abstract class ViewModel1 : ViewModel() {
val TAG: String = logTag("VM", javaClass.simpleName)
init {
@@ -1,4 +1,4 @@
package eu.darken.capod.common.smart
package eu.darken.capod.common.uix
import androidx.lifecycle.asLiveData
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.error.ErrorEventSource
import eu.darken.capod.common.flow.DynamicStateFlow
import eu.darken.capod.common.viewmodel.VM
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.launchIn
import kotlin.coroutines.CoroutineContext
abstract class SmartVM(
abstract class ViewModel2(
private val dispatcherProvider: DispatcherProvider = DefaultDispatcherProvider(),
) : VM() {
) : ViewModel1() {
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 eu.darken.capod.common.coroutine.DispatcherProvider
@@ -13,9 +13,9 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.launchIn
abstract class Smart2VM(
abstract class ViewModel3(
dispatcherProvider: DispatcherProvider,
) : SmartVM(dispatcherProvider), NavEventSource, ErrorEventSource {
) : ViewModel2(dispatcherProvider), NavEventSource, ErrorEventSource {
override val navEvents = SingleLiveEvent<NavDirections?>()
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
@@ -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 eu.darken.capod.R
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
@AndroidEntryPoint
class MainActivity : SmartActivity() {
class MainActivity : Activity2() {
private val vm: MainActivityVM by viewModels()
private lateinit var ui: MainActivityBinding
@@ -3,7 +3,7 @@ package eu.darken.capod.main.ui
import androidx.lifecycle.SavedStateHandle
import dagger.hilt.android.lifecycle.HiltViewModel
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
@@ -11,4 +11,4 @@ import javax.inject.Inject
class MainActivityVM @Inject constructor(
handle: SavedStateHandle,
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.lists.differ.update
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.databinding.MainFragmentBinding
import javax.inject.Inject
@AndroidEntryPoint
class MainFragment : Smart2Fragment(R.layout.main_fragment) {
class MainFragment : Fragment3(R.layout.main_fragment) {
override val vm: MainFragmentVM by viewModels()
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.permissions.Permission
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.ToggleCardVH
import kotlinx.coroutines.flow.*
@@ -24,7 +24,7 @@ class MainFragmentVM @Inject constructor(
@ApplicationContext private val context: Context,
dispatcherProvider: DispatcherProvider,
private val recorderModule: RecorderModule,
) : Smart2VM(dispatcherProvider = dispatcherProvider) {
) : ViewModel3(dispatcherProvider = dispatcherProvider) {
private val enabledState: Flow<Boolean> = flow {