From 23261ab3a321f77ba51f868e69b6353436ba24bf Mon Sep 17 00:00:00 2001 From: Joseph Hale Date: Mon, 19 Feb 2024 14:43:34 -0700 Subject: [PATCH] refactor: Rename `affectCurrentActivities` to `setCurrentActivities` "affect" is too generic of a word that fails to precisely describe the type of change it causes in the system. "set" is more precise and better matches the naming of the underlying WearRPCClient method it eventually calls. Also removed the unnecessary currying of the callback. Now it's (ArrayActivity>) -> Unit instead of (ArrayActivity>) -> (ArrayActivity>) -> Unit --- .../presentation/remember/currentActivities.kt | 16 +++++++++------- .../presentation/screens/ActivitiesScreen.kt | 9 +++++---- 2 files changed, 14 insertions(+), 11 deletions(-) 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() -- 2.51.2