Skip to content

Commit bf04846

Browse files
committed
fix: Refresh patch options only once on bundle load
1 parent 1357647 commit bf04846

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

app/src/main/java/app/morphe/manager/ui/screen/settings/advanced/PatchOptionsSection.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ import app.morphe.manager.ui.viewmodel.PatchOptionsViewModel
3636
import app.morphe.manager.util.KnownApps
3737
import app.morphe.manager.util.toast
3838
import kotlinx.coroutines.launch
39-
import org.koin.androidx.compose.koinViewModel
4039

4140
/**
4241
* Advanced patch options section.
@@ -46,8 +45,8 @@ import org.koin.androidx.compose.koinViewModel
4645
@Composable
4746
fun PatchOptionsSection(
4847
patchOptionsPrefs: PatchOptionsPreferencesManager,
49-
patchOptionsViewModel: PatchOptionsViewModel = koinViewModel(),
50-
homeViewModel: HomeViewModel = koinViewModel()
48+
patchOptionsViewModel: PatchOptionsViewModel,
49+
homeViewModel: HomeViewModel
5150
) {
5251
val scope = rememberCoroutineScope()
5352
val context = LocalContext.current
@@ -69,8 +68,14 @@ fun PatchOptionsSection(
6968
val bundleInfo by homeViewModel.patchBundleRepository.bundleInfoFlow
7069
.collectAsStateWithLifecycle(emptyMap())
7170

71+
// Refresh only once when bundle info first becomes available.
72+
// Using a flag avoids re-triggering refresh on every recomposition or tab switch
73+
var hasRefreshed by remember { mutableStateOf(false) }
7274
LaunchedEffect(bundleInfo) {
73-
if (bundleInfo.isNotEmpty()) patchOptionsViewModel.refresh()
75+
if (bundleInfo.isNotEmpty() && !hasRefreshed) {
76+
hasRefreshed = true
77+
patchOptionsViewModel.refresh()
78+
}
7479
}
7580

7681
val noPatchesAvailable = patchOptionsViewModel.noPatchesAvailable

0 commit comments

Comments
 (0)