add notifcaiton support with unmount button
This commit is contained in:
@@ -20,7 +20,10 @@ import sh.sar.isodroid.data.IsoFile
|
||||
import sh.sar.isodroid.data.MountOptions
|
||||
import sh.sar.isodroid.data.MountStatus
|
||||
import sh.sar.isodroid.isodrive.IsoDriveManager
|
||||
import sh.sar.isodroid.isodrive.MountEvent
|
||||
import sh.sar.isodroid.isodrive.MountEventBus
|
||||
import sh.sar.isodroid.isodrive.SupportStatus
|
||||
import sh.sar.isodroid.notification.NotificationHelper
|
||||
import sh.sar.isodroid.root.RootManager
|
||||
import java.io.File
|
||||
|
||||
@@ -29,6 +32,7 @@ private val Application.dataStore: DataStore<Preferences> by preferencesDataStor
|
||||
class MainViewModel(application: Application) : AndroidViewModel(application) {
|
||||
|
||||
private val isoDriveManager = IsoDriveManager.getInstance(application)
|
||||
private val notificationHelper = NotificationHelper.getInstance(application)
|
||||
private val dataStore = application.dataStore
|
||||
|
||||
private val _uiState = MutableStateFlow(MainUiState())
|
||||
@@ -45,6 +49,21 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
||||
viewModelScope.launch {
|
||||
initialize()
|
||||
}
|
||||
|
||||
// Observe mount events from notification actions
|
||||
viewModelScope.launch {
|
||||
MountEventBus.events.collect { event ->
|
||||
when (event) {
|
||||
is MountEvent.Unmounted -> {
|
||||
checkMountStatus()
|
||||
_uiState.update { it.copy(successMessage = "Unmounted successfully") }
|
||||
}
|
||||
is MountEvent.Mounted -> {
|
||||
checkMountStatus()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun initialize() {
|
||||
@@ -178,6 +197,15 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
||||
private suspend fun checkMountStatus() {
|
||||
val status = isoDriveManager.getStatus()
|
||||
_uiState.update { it.copy(mountStatus = status) }
|
||||
updateNotification(status)
|
||||
}
|
||||
|
||||
private fun updateNotification(status: MountStatus) {
|
||||
if (status.mounted) {
|
||||
notificationHelper.showMountedNotification(status)
|
||||
} else {
|
||||
notificationHelper.hideNotification()
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun mount(path: String, options: MountOptions) {
|
||||
|
||||
Reference in New Issue
Block a user