Skip to content

Commit 4fa2d4b

Browse files
committed
Refresh only when Changes are done!
1 parent ea07b66 commit 4fa2d4b

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

app/src/main/java/com/github/capntrips/kernelflasher/MainActivity.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ import kotlinx.serialization.ExperimentalSerializationApi
7171
import java.io.File
7272
import kotlin.system.exitProcess
7373

74+
object SharedViewModels {
75+
lateinit var mainViewModel: MainViewModel
76+
}
77+
7478
@ExperimentalAnimationApi
7579
@ExperimentalMaterialApi
7680
@ExperimentalMaterial3Api
@@ -210,6 +214,7 @@ class MainActivity : ComponentActivity() {
210214
MainViewModel(application, fileSystemManager, navController)
211215
}
212216
val mainViewModel = viewModel!!
217+
SharedViewModels.mainViewModel = mainViewModel
213218

214219
val context = LocalContext.current
215220
val dialogData = viewModel!!.updateDialogData

app/src/main/java/com/github/capntrips/kernelflasher/ui/screens/main/MainViewModel.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,23 @@ class MainViewModel(
5050
val hasRamoops: Boolean
5151

5252
private val _isRefreshing: MutableState<Boolean> = mutableStateOf(true)
53+
private val _isRefreshRequired = mutableStateOf(true)
5354
private var _error: String? = null
5455
private var _backups: MutableMap<String, Backup> = mutableMapOf()
5556

5657
val isRefreshing: Boolean
5758
get() = _isRefreshing.value
59+
val isRefreshRequired: Boolean
60+
get() = _isRefreshRequired.value
5861
val hasError: Boolean
5962
get() = _error != null
6063
val error: String
6164
get() = _error!!
6265

66+
fun markRefreshNeeded() {
67+
_isRefreshRequired.value = true
68+
}
69+
6370
data class UpdateDialogData(
6471
val title: String,
6572
val changelog: List<String>,
@@ -112,15 +119,20 @@ class MainViewModel(
112119

113120
hasRamoops = fileSystemManager.getFile("/sys/fs/pstore/console-ramoops-0").exists()
114121
_isRefreshing.value = false
122+
_isRefreshRequired.value = false
115123
}
116124

117125
fun refresh(context: Context) {
126+
if (!isRefreshRequired) return
127+
118128
launch {
119129
slotA.refresh(context)
120130
if (isAb) {
121131
slotB!!.refresh(context)
122132
}
123133
backups.refresh(context)
134+
135+
_isRefreshRequired.value = false
124136
}
125137
}
126138

app/src/main/java/com/github/capntrips/kernelflasher/ui/screens/slot/SlotViewModel.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import androidx.compose.runtime.snapshots.SnapshotStateMap
1515
import androidx.lifecycle.ViewModel
1616
import androidx.lifecycle.viewModelScope
1717
import androidx.navigation.NavController
18+
import com.github.capntrips.kernelflasher.SharedViewModels
1819
import com.github.capntrips.kernelflasher.common.PartitionUtil
1920
import com.github.capntrips.kernelflasher.common.extensions.ByteArray.toHex
2021
import com.github.capntrips.kernelflasher.common.extensions.ExtendedFile.inputStream
@@ -27,6 +28,7 @@ import com.topjohnwu.superuser.nio.FileSystemManager
2728
import kotlinx.coroutines.Dispatchers
2829
import kotlinx.coroutines.launch
2930
import kotlinx.coroutines.withContext
31+
import kotlinx.serialization.ExperimentalSerializationApi
3032
import kotlinx.serialization.json.Json
3133
import java.io.File
3234
import java.security.DigestOutputStream
@@ -585,6 +587,7 @@ class SlotViewModel(
585587
Shell.cmd("chmod +rwx $file").exec()
586588
}
587589

590+
@OptIn(ExperimentalSerializationApi::class)
588591
@Suppress("FunctionName")
589592
private suspend fun _flashAk3(context: Context, type: String) {
590593
if (!isActive) {
@@ -620,6 +623,7 @@ class SlotViewModel(
620623
showCautionDialog() // Show dialog instead of uiPrint
621624
}
622625
}
626+
SharedViewModels.mainViewModel.markRefreshNeeded()
623627
}
624628
}
625629

@@ -800,6 +804,7 @@ class SlotViewModel(
800804
}
801805
}
802806
}
807+
SharedViewModels.mainViewModel.markRefreshNeeded()
803808
}
804809
}
805810

@@ -848,6 +853,7 @@ class SlotViewModel(
848853
showCautionDialog() // Show dialog instead of uiPrint
849854
}
850855
}
856+
SharedViewModels.mainViewModel.markRefreshNeeded()
851857
}
852858
}
853859
}

0 commit comments

Comments
 (0)