diff --git a/wear/src/main/java/com/example/util/simpletimetracker/presentation/remember/currentActivities.kt b/wear/src/main/java/com/example/util/simpletimetracker/presentation/remember/currentActivities.kt index 4654990f..fec3d059 100644 --- a/wear/src/main/java/com/example/util/simpletimetracker/presentation/remember/currentActivities.kt +++ b/wear/src/main/java/com/example/util/simpletimetracker/presentation/remember/currentActivities.kt @@ -26,12 +26,14 @@ import kotlinx.coroutines.launch * Usage: * ``` * val rpc = /* create a WearRPCClient instance */ - * val (currents, refresh) = rememberCurrentActivities(rpc) + * val (currents, setCurrents, refresh) = rememberCurrentActivities(rpc) * ``` * * Initially, `currents` will be an empty array. Once the actual current activities are received * from the phone, `currents` will *automatically* update to that array and the encapsulating * Composable will *automatically* re-render. + * + * `setCurrents` is a function you can call to set the array of current activities on the phone. * * `refresh` is a function you can call to forcibly re-request the array of current activities * from the phone. @@ -41,8 +43,8 @@ fun rememberCurrentActivities( rpc: WearRPCClient, ): Triple< Array, - ((Array) -> (Array)) -> Unit, - () -> Unit, + (Array) -> Unit, + () -> Unit, > { var currentActivities: Array by remember { mutableStateOf(arrayOf()) } var currentActivitiesQueryCount by remember { mutableIntStateOf(0) } @@ -56,12 +58,12 @@ fun rememberCurrentActivities( return Triple( currentActivities, - { affectCurrentActivities -> - currentActivities = affectCurrentActivities(currentActivities) + { updatedCurrentActivities -> coroutineScope.launch(Dispatchers.Default) { - rpc.setCurrentActivities(currentActivities) + rpc.setCurrentActivities(updatedCurrentActivities) queryCurrentActivities() } - }, { queryCurrentActivities() }, + }, + { queryCurrentActivities() }, ) } \ No newline at end of file diff --git a/wear/src/main/java/com/example/util/simpletimetracker/presentation/screens/ActivitiesScreen.kt b/wear/src/main/java/com/example/util/simpletimetracker/presentation/screens/ActivitiesScreen.kt index 33be4f2f..dc6c5452 100644 --- a/wear/src/main/java/com/example/util/simpletimetracker/presentation/screens/ActivitiesScreen.kt +++ b/wear/src/main/java/com/example/util/simpletimetracker/presentation/screens/ActivitiesScreen.kt @@ -18,8 +18,9 @@ import com.example.util.simpletimetracker.wearrpc.WearRPCClient fun ActivitiesScreen(onSelectActivity: (activityId: Long) -> Unit) { val rpc = WearRPCClient(ContextMessenger(LocalContext.current)) val (activities, refreshActivities) = rememberActivities(rpc) - val (currentActivities, affectCurrentActivities, refreshCurrentActivities) = - rememberCurrentActivities(rpc) + val (currentActivities, setCurrentActivities, refreshCurrentActivities) = rememberCurrentActivities( + rpc, + ) ActivitiesList( activities, @@ -28,9 +29,9 @@ fun ActivitiesScreen(onSelectActivity: (activityId: Long) -> Unit) { onSelectActivity(it.id) }, onDeselectActivity = { deselectedActivity: Activity -> - affectCurrentActivities { + val remainingActivities = currentActivities.filter { it.id != deselectedActivity.id }.toTypedArray() - } + setCurrentActivities(remainingActivities) }, onRefresh = { refreshActivities()