Lambda parameters in a composable function should be in present tense, not past tense.

https://mrmans0n.github.io/compose-rules/rules/#naming-parameters-properly
This commit is contained in:
Benoit Marty 2024-05-29 10:48:29 +02:00
parent 0ba5537082
commit 37d9a9f5a9
250 changed files with 1698 additions and 1698 deletions

View file

@ -47,8 +47,8 @@ class AddPeopleNode @AssistedInject constructor(
AddPeopleView(
state = state,
modifier = modifier,
onBackPressed = this::navigateUp,
onNextPressed = this::onContinue,
onBackClick = this::navigateUp,
onNextClick = this::onContinue,
)
}
}

View file

@ -42,8 +42,8 @@ import io.element.android.libraries.ui.strings.CommonStrings
@Composable
fun AddPeopleView(
state: UserListState,
onBackPressed: () -> Unit,
onNextPressed: () -> Unit,
onBackClick: () -> Unit,
onNextClick: () -> Unit,
modifier: Modifier = Modifier,
) {
Scaffold(
@ -51,14 +51,14 @@ fun AddPeopleView(
topBar = {
AddPeopleViewTopBar(
hasSelectedUsers = state.selectedUsers.isNotEmpty(),
onBackPressed = {
onBackClick = {
if (state.isSearchActive) {
state.eventSink(UserListEvents.OnSearchActiveChanged(false))
} else {
onBackPressed()
onBackClick()
}
},
onNextPressed = onNextPressed,
onNextClick = onNextClick,
)
}
) { padding ->
@ -69,8 +69,8 @@ fun AddPeopleView(
.consumeWindowInsets(padding),
state = state,
showBackButton = false,
onUserSelected = {},
onUserDeselected = {},
onSelectUser = {},
onDeselectUser = {},
)
}
}
@ -79,8 +79,8 @@ fun AddPeopleView(
@Composable
private fun AddPeopleViewTopBar(
hasSelectedUsers: Boolean,
onBackPressed: () -> Unit,
onNextPressed: () -> Unit,
onBackClick: () -> Unit,
onNextClick: () -> Unit,
) {
TopAppBar(
title = {
@ -89,12 +89,12 @@ private fun AddPeopleViewTopBar(
style = ElementTheme.typography.aliasScreenTitle
)
},
navigationIcon = { BackButton(onClick = onBackPressed) },
navigationIcon = { BackButton(onClick = onBackClick) },
actions = {
val textActionResId = if (hasSelectedUsers) CommonStrings.action_next else CommonStrings.action_skip
TextButton(
text = stringResource(id = textActionResId),
onClick = onNextPressed,
onClick = onNextClick,
)
}
)
@ -105,7 +105,7 @@ private fun AddPeopleViewTopBar(
internal fun AddPeopleViewPreview(@PreviewParameter(AddPeopleUserListStateProvider::class) state: UserListState) = ElementPreview {
AddPeopleView(
state = state,
onBackPressed = {},
onNextPressed = {},
onBackClick = {},
onNextClick = {},
)
}

View file

@ -41,7 +41,7 @@ import io.element.android.libraries.designsystem.theme.components.Text
@Composable
fun RoomPrivacyOption(
roomPrivacyItem: RoomPrivacyItem,
onOptionSelected: (RoomPrivacyItem) -> Unit,
onOptionClick: (RoomPrivacyItem) -> Unit,
modifier: Modifier = Modifier,
isSelected: Boolean = false,
) {
@ -50,7 +50,7 @@ fun RoomPrivacyOption(
.fillMaxWidth()
.selectable(
selected = isSelected,
onClick = { onOptionSelected(roomPrivacyItem) },
onClick = { onOptionClick(roomPrivacyItem) },
role = Role.RadioButton,
)
.padding(8.dp),
@ -98,12 +98,12 @@ internal fun RoomPrivacyOptionPreview() = ElementPreview {
Column {
RoomPrivacyOption(
roomPrivacyItem = aRoomPrivacyItem,
onOptionSelected = {},
onOptionClick = {},
isSelected = true,
)
RoomPrivacyOption(
roomPrivacyItem = aRoomPrivacyItem,
onOptionSelected = {},
onOptionClick = {},
isSelected = false,
)
}

View file

@ -53,11 +53,11 @@ fun SearchUserBar(
showLoader: Boolean,
selectedUsers: ImmutableList<MatrixUser>,
active: Boolean,
isMultiSelectionEnabled: Boolean,
onActiveChanged: (Boolean) -> Unit,
onTextChanged: (String) -> Unit,
onUserSelected: (MatrixUser) -> Unit,
onUserDeselected: (MatrixUser) -> Unit,
isMultiSelectionEnable: Boolean,
onActiveChange: (Boolean) -> Unit,
onTextChange: (String) -> Unit,
onUserSelect: (MatrixUser) -> Unit,
onUserDeselect: (MatrixUser) -> Unit,
modifier: Modifier = Modifier,
showBackButton: Boolean = true,
placeHolderTitle: String = stringResource(CommonStrings.common_search_for_someone),
@ -66,14 +66,14 @@ fun SearchUserBar(
SearchBar(
query = query,
onQueryChange = onTextChanged,
onQueryChange = onTextChange,
active = active,
onActiveChange = onActiveChanged,
onActiveChange = onActiveChange,
modifier = modifier,
placeHolderTitle = placeHolderTitle,
showBackButton = showBackButton,
contentPrefix = {
if (isMultiSelectionEnabled && active && selectedUsers.isNotEmpty()) {
if (isMultiSelectionEnable && active && selectedUsers.isNotEmpty()) {
// We want the selected users to behave a bit like a top bar - when the list below is scrolled, the colour
// should change to indicate elevation.
@ -96,7 +96,7 @@ fun SearchUserBar(
contentPadding = PaddingValues(16.dp),
selectedUsers = selectedUsers,
autoScroll = true,
onUserRemoved = onUserDeselected,
onUserRemove = onUserDeselect,
modifier = Modifier.background(appBarContainerColor)
)
}
@ -109,7 +109,7 @@ fun SearchUserBar(
resultState = state,
resultHandler = { users ->
LazyColumn(state = columnState) {
if (isMultiSelectionEnabled) {
if (isMultiSelectionEnable) {
itemsIndexed(users) { index, searchResult ->
SearchMultipleUsersResultItem(
modifier = Modifier.fillMaxWidth(),
@ -117,9 +117,9 @@ fun SearchUserBar(
isUserSelected = selectedUsers.contains(searchResult.matrixUser),
onCheckedChange = { checked ->
if (checked) {
onUserSelected(searchResult.matrixUser)
onUserSelect(searchResult.matrixUser)
} else {
onUserDeselected(searchResult.matrixUser)
onUserDeselect(searchResult.matrixUser)
}
}
)
@ -132,7 +132,7 @@ fun SearchUserBar(
SearchSingleUserResultItem(
modifier = Modifier.fillMaxWidth(),
searchResult = searchResult,
onClick = { onUserSelected(searchResult.matrixUser) }
onClick = { onUserSelect(searchResult.matrixUser) }
)
if (index < users.lastIndex) {
HorizontalDivider()

View file

@ -44,8 +44,8 @@ import io.element.android.libraries.ui.strings.CommonStrings
@Composable
fun UserListView(
state: UserListState,
onUserSelected: (MatrixUser) -> Unit,
onUserDeselected: (MatrixUser) -> Unit,
onSelectUser: (MatrixUser) -> Unit,
onDeselectUser: (MatrixUser) -> Unit,
modifier: Modifier = Modifier,
showBackButton: Boolean = true,
) {
@ -59,17 +59,17 @@ fun UserListView(
selectedUsers = state.selectedUsers,
active = state.isSearchActive,
showLoader = state.showSearchLoader,
isMultiSelectionEnabled = state.isMultiSelectionEnabled,
isMultiSelectionEnable = state.isMultiSelectionEnabled,
showBackButton = showBackButton,
onActiveChanged = { state.eventSink(UserListEvents.OnSearchActiveChanged(it)) },
onTextChanged = { state.eventSink(UserListEvents.UpdateSearchQuery(it)) },
onUserSelected = {
onActiveChange = { state.eventSink(UserListEvents.OnSearchActiveChanged(it)) },
onTextChange = { state.eventSink(UserListEvents.UpdateSearchQuery(it)) },
onUserSelect = {
state.eventSink(UserListEvents.AddToSelection(it))
onUserSelected(it)
onSelectUser(it)
},
onUserDeselected = {
onUserDeselect = {
state.eventSink(UserListEvents.RemoveFromSelection(it))
onUserDeselected(it)
onDeselectUser(it)
},
)
@ -78,9 +78,9 @@ fun UserListView(
contentPadding = PaddingValues(16.dp),
selectedUsers = state.selectedUsers,
autoScroll = true,
onUserRemoved = {
onUserRemove = {
state.eventSink(UserListEvents.RemoveFromSelection(it))
onUserDeselected(it)
onDeselectUser(it)
},
)
}
@ -102,10 +102,10 @@ fun UserListView(
onCheckedChange = {
if (isSelected) {
state.eventSink(UserListEvents.RemoveFromSelection(recentDirectRoom.matrixUser))
onUserDeselected(recentDirectRoom.matrixUser)
onDeselectUser(recentDirectRoom.matrixUser)
} else {
state.eventSink(UserListEvents.AddToSelection(recentDirectRoom.matrixUser))
onUserSelected(recentDirectRoom.matrixUser)
onSelectUser(recentDirectRoom.matrixUser)
}
},
data = CheckableUserRowData.Resolved(
@ -129,7 +129,7 @@ fun UserListView(
internal fun UserListViewPreview(@PreviewParameter(UserListStateProvider::class) state: UserListState) = ElementPreview {
UserListView(
state = state,
onUserSelected = {},
onUserDeselected = {},
onSelectUser = {},
onDeselectUser = {},
)
}

View file

@ -50,7 +50,7 @@ class ConfigureRoomNode @AssistedInject constructor(
fun onCreateRoomSuccess(roomId: RoomId)
}
private fun onRoomCreated(roomId: RoomId) {
private fun onCreateRoomSuccess(roomId: RoomId) {
plugins<Callback>().forEach { it.onCreateRoomSuccess(roomId) }
}
@ -60,8 +60,8 @@ class ConfigureRoomNode @AssistedInject constructor(
ConfigureRoomView(
state = state,
modifier = modifier,
onBackPressed = this::navigateUp,
onRoomCreated = this::onRoomCreated,
onBackClick = this::navigateUp,
onCreateRoomSuccess = this::onCreateRoomSuccess,
)
}
}

View file

@ -65,14 +65,14 @@ import io.element.android.libraries.ui.strings.CommonStrings
@Composable
fun ConfigureRoomView(
state: ConfigureRoomState,
onBackPressed: () -> Unit,
onRoomCreated: (RoomId) -> Unit,
onBackClick: () -> Unit,
onCreateRoomSuccess: (RoomId) -> Unit,
modifier: Modifier = Modifier,
) {
val focusManager = LocalFocusManager.current
val isAvatarActionsSheetVisible = remember { mutableStateOf(false) }
fun onAvatarClicked() {
fun onAvatarClick() {
focusManager.clearFocus()
isAvatarActionsSheetVisible.value = true
}
@ -82,8 +82,8 @@ fun ConfigureRoomView(
topBar = {
ConfigureRoomToolbar(
isNextActionEnabled = state.isCreateButtonEnabled,
onBackPressed = onBackPressed,
onNextPressed = {
onBackClick = onBackClick,
onNextClick = {
focusManager.clearFocus()
state.eventSink(ConfigureRoomEvents.CreateRoom(state.config))
},
@ -102,20 +102,20 @@ fun ConfigureRoomView(
modifier = Modifier.padding(horizontal = 16.dp),
avatarUri = state.config.avatarUri,
roomName = state.config.roomName.orEmpty(),
onAvatarClick = ::onAvatarClicked,
onRoomNameChanged = { state.eventSink(ConfigureRoomEvents.RoomNameChanged(it)) },
onAvatarClick = ::onAvatarClick,
onChangeRoomName = { state.eventSink(ConfigureRoomEvents.RoomNameChanged(it)) },
)
RoomTopic(
modifier = Modifier.padding(horizontal = 16.dp),
topic = state.config.topic.orEmpty(),
onTopicChanged = { state.eventSink(ConfigureRoomEvents.TopicChanged(it)) },
onTopicChange = { state.eventSink(ConfigureRoomEvents.TopicChanged(it)) },
)
if (state.config.invites.isNotEmpty()) {
SelectedUsersRowList(
modifier = Modifier.padding(bottom = 16.dp),
contentPadding = PaddingValues(horizontal = 24.dp),
selectedUsers = state.config.invites,
onUserRemoved = {
onUserRemove = {
focusManager.clearFocus()
state.eventSink(ConfigureRoomEvents.RemoveFromSelection(it))
},
@ -124,7 +124,7 @@ fun ConfigureRoomView(
RoomPrivacyOptions(
modifier = Modifier.padding(bottom = 40.dp),
selected = state.config.privacy,
onOptionSelected = {
onOptionClick = {
focusManager.clearFocus()
state.eventSink(ConfigureRoomEvents.RoomPrivacyChanged(it.privacy))
},
@ -136,7 +136,7 @@ fun ConfigureRoomView(
actions = state.avatarActions,
isVisible = isAvatarActionsSheetVisible.value,
onDismiss = { isAvatarActionsSheetVisible.value = false },
onActionSelected = { state.eventSink(ConfigureRoomEvents.HandleAvatarAction(it)) }
onSelectAction = { state.eventSink(ConfigureRoomEvents.HandleAvatarAction(it)) }
)
AsyncActionView(
@ -146,7 +146,7 @@ fun ConfigureRoomView(
progressText = stringResource(CommonStrings.common_creating_room),
)
},
onSuccess = { onRoomCreated(it) },
onSuccess = { onCreateRoomSuccess(it) },
errorMessage = { stringResource(R.string.screen_create_room_error_creating_room) },
onRetry = { state.eventSink(ConfigureRoomEvents.CreateRoom(state.config)) },
onErrorDismiss = { state.eventSink(ConfigureRoomEvents.CancelCreateRoom) },
@ -161,8 +161,8 @@ fun ConfigureRoomView(
@Composable
private fun ConfigureRoomToolbar(
isNextActionEnabled: Boolean,
onBackPressed: () -> Unit,
onNextPressed: () -> Unit,
onBackClick: () -> Unit,
onNextClick: () -> Unit,
) {
TopAppBar(
title = {
@ -171,12 +171,12 @@ private fun ConfigureRoomToolbar(
style = ElementTheme.typography.aliasScreenTitle,
)
},
navigationIcon = { BackButton(onClick = onBackPressed) },
navigationIcon = { BackButton(onClick = onBackClick) },
actions = {
TextButton(
text = stringResource(CommonStrings.action_create),
enabled = isNextActionEnabled,
onClick = onNextPressed,
onClick = onNextClick,
)
}
)
@ -187,7 +187,7 @@ private fun RoomNameWithAvatar(
avatarUri: Uri?,
roomName: String,
onAvatarClick: () -> Unit,
onRoomNameChanged: (String) -> Unit,
onChangeRoomName: (String) -> Unit,
modifier: Modifier = Modifier,
) {
Row(
@ -205,7 +205,7 @@ private fun RoomNameWithAvatar(
value = roomName,
placeholder = stringResource(CommonStrings.common_room_name_placeholder),
singleLine = true,
onValueChange = onRoomNameChanged,
onValueChange = onChangeRoomName,
)
}
}
@ -213,7 +213,7 @@ private fun RoomNameWithAvatar(
@Composable
private fun RoomTopic(
topic: String,
onTopicChanged: (String) -> Unit,
onTopicChange: (String) -> Unit,
modifier: Modifier = Modifier,
) {
LabelledTextField(
@ -221,7 +221,7 @@ private fun RoomTopic(
label = stringResource(R.string.screen_create_room_topic_label),
value = topic,
placeholder = stringResource(CommonStrings.common_topic_placeholder),
onValueChange = onTopicChanged,
onValueChange = onTopicChange,
maxLines = 3,
keyboardOptions = KeyboardOptions(
capitalization = KeyboardCapitalization.Sentences,
@ -232,7 +232,7 @@ private fun RoomTopic(
@Composable
private fun RoomPrivacyOptions(
selected: RoomPrivacy?,
onOptionSelected: (RoomPrivacyItem) -> Unit,
onOptionClick: (RoomPrivacyItem) -> Unit,
modifier: Modifier = Modifier,
) {
val items = roomPrivacyItems()
@ -241,7 +241,7 @@ private fun RoomPrivacyOptions(
RoomPrivacyOption(
roomPrivacyItem = item,
isSelected = selected == item.privacy,
onOptionSelected = onOptionSelected,
onOptionClick = onOptionClick,
)
}
}
@ -252,7 +252,7 @@ private fun RoomPrivacyOptions(
internal fun ConfigureRoomViewPreview(@PreviewParameter(ConfigureRoomStateProvider::class) state: ConfigureRoomState) = ElementPreview {
ConfigureRoomView(
state = state,
onBackPressed = {},
onRoomCreated = {},
onBackClick = {},
onCreateRoomSuccess = {},
)
}

View file

@ -68,10 +68,10 @@ class CreateRoomRootNode @AssistedInject constructor(
CreateRoomRootView(
state = state,
modifier = modifier,
onClosePressed = this::navigateUp,
onNewRoomClicked = ::onCreateNewRoom,
onCloseClick = this::navigateUp,
onNewRoomClick = ::onCreateNewRoom,
onOpenDM = ::onStartChatSuccess,
onInviteFriendsClicked = { invitePeople(activity) }
onInviteFriendsClick = { invitePeople(activity) }
)
}

View file

@ -59,17 +59,17 @@ import kotlinx.collections.immutable.persistentListOf
@Composable
fun CreateRoomRootView(
state: CreateRoomRootState,
onClosePressed: () -> Unit,
onNewRoomClicked: () -> Unit,
onCloseClick: () -> Unit,
onNewRoomClick: () -> Unit,
onOpenDM: (RoomId) -> Unit,
onInviteFriendsClicked: () -> Unit,
onInviteFriendsClick: () -> Unit,
modifier: Modifier = Modifier,
) {
Scaffold(
modifier = modifier.fillMaxWidth(),
topBar = {
if (!state.userListState.isSearchActive) {
CreateRoomRootViewTopBar(onClosePressed = onClosePressed)
CreateRoomRootViewTopBar(onCloseClick = onCloseClick)
}
}
) { paddingValues ->
@ -86,18 +86,18 @@ fun CreateRoomRootView(
state = state.userListState.copy(
recentDirectRooms = persistentListOf(),
),
onUserSelected = {
onSelectUser = {
state.eventSink(CreateRoomRootEvents.StartDM(it))
},
onUserDeselected = { },
onDeselectUser = { },
)
if (!state.userListState.isSearchActive) {
CreateRoomActionButtonsList(
state = state,
onNewRoomClicked = onNewRoomClicked,
onInvitePeopleClicked = onInviteFriendsClicked,
onDmClicked = onOpenDM,
onNewRoomClick = onNewRoomClick,
onInvitePeopleClick = onInviteFriendsClick,
onDmClick = onOpenDM,
)
}
}
@ -125,7 +125,7 @@ fun CreateRoomRootView(
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun CreateRoomRootViewTopBar(
onClosePressed: () -> Unit,
onCloseClick: () -> Unit,
) {
TopAppBar(
title = {
@ -137,7 +137,7 @@ private fun CreateRoomRootViewTopBar(
navigationIcon = {
BackButton(
imageVector = CompoundIcons.Close(),
onClick = onClosePressed,
onClick = onCloseClick,
)
}
)
@ -146,23 +146,23 @@ private fun CreateRoomRootViewTopBar(
@Composable
private fun CreateRoomActionButtonsList(
state: CreateRoomRootState,
onNewRoomClicked: () -> Unit,
onInvitePeopleClicked: () -> Unit,
onDmClicked: (RoomId) -> Unit,
onNewRoomClick: () -> Unit,
onInvitePeopleClick: () -> Unit,
onDmClick: (RoomId) -> Unit,
) {
LazyColumn {
item {
CreateRoomActionButton(
iconRes = CompoundDrawables.ic_compound_plus,
text = stringResource(id = R.string.screen_create_room_action_create_room),
onClick = onNewRoomClicked,
onClick = onNewRoomClick,
)
}
item {
CreateRoomActionButton(
iconRes = CompoundDrawables.ic_compound_share_android,
text = stringResource(id = CommonStrings.action_invite_friends_to_app, state.applicationName),
onClick = onInvitePeopleClicked,
onClick = onInvitePeopleClick,
)
}
if (state.userListState.recentDirectRooms.isNotEmpty()) {
@ -177,7 +177,7 @@ private fun CreateRoomActionButtonsList(
MatrixUserRow(
modifier = Modifier.clickable(
onClick = {
onDmClicked(recentDirectRoom.roomId)
onDmClick(recentDirectRoom.roomId)
}
),
matrixUser = recentDirectRoom.matrixUser,
@ -222,9 +222,9 @@ internal fun CreateRoomRootViewPreview(@PreviewParameter(CreateRoomRootStateProv
ElementPreview {
CreateRoomRootView(
state = state,
onClosePressed = {},
onNewRoomClicked = {},
onCloseClick = {},
onNewRoomClick = {},
onOpenDM = {},
onInviteFriendsClicked = {},
onInviteFriendsClick = {},
)
}

View file

@ -47,7 +47,7 @@ class AddPeopleViewTest {
aUserListState(
eventSink = eventsRecorder,
),
onBackPressed = it
onBackClick = it
)
rule.pressBack()
}
@ -75,7 +75,7 @@ class AddPeopleViewTest {
aUserListState(
eventSink = eventsRecorder,
),
onNextPressed = it
onNextClick = it
)
rule.clickOn(CommonStrings.action_skip)
}
@ -85,14 +85,14 @@ class AddPeopleViewTest {
private fun <R : TestRule> AndroidComposeTestRule<R, ComponentActivity>.setAddPeopleView(
state: UserListState,
onBackPressed: () -> Unit = EnsureNeverCalled(),
onNextPressed: () -> Unit = EnsureNeverCalled(),
onBackClick: () -> Unit = EnsureNeverCalled(),
onNextClick: () -> Unit = EnsureNeverCalled(),
) {
setContent {
AddPeopleView(
state = state,
onBackPressed = onBackPressed,
onNextPressed = onNextPressed,
onBackClick = onBackClick,
onNextClick = onNextClick,
)
}
}

View file

@ -54,7 +54,7 @@ class CreateRoomRootViewTest {
aCreateRoomRootState(
eventSink = eventsRecorder,
),
onClosePressed = it
onCloseClick = it
)
rule.pressBack()
}
@ -68,7 +68,7 @@ class CreateRoomRootViewTest {
aCreateRoomRootState(
eventSink = eventsRecorder,
),
onNewRoomClicked = it
onNewRoomClick = it
)
rule.clickOn(R.string.screen_create_room_action_create_room)
}
@ -84,7 +84,7 @@ class CreateRoomRootViewTest {
applicationName = "test",
eventSink = eventsRecorder,
),
onInviteFriendsClicked = it
onInviteFriendsClick = it
)
val text = rule.activity.getString(CommonStrings.action_invite_friends_to_app, "test")
rule.onNodeWithText(text).performClick()
@ -114,18 +114,18 @@ class CreateRoomRootViewTest {
private fun <R : TestRule> AndroidComposeTestRule<R, ComponentActivity>.setCreateRoomRootView(
state: CreateRoomRootState,
onClosePressed: () -> Unit = EnsureNeverCalled(),
onNewRoomClicked: () -> Unit = EnsureNeverCalled(),
onCloseClick: () -> Unit = EnsureNeverCalled(),
onNewRoomClick: () -> Unit = EnsureNeverCalled(),
onOpenDM: (RoomId) -> Unit = EnsureNeverCalledWithParam(),
onInviteFriendsClicked: () -> Unit = EnsureNeverCalled(),
onInviteFriendsClick: () -> Unit = EnsureNeverCalled(),
) {
setContent {
CreateRoomRootView(
state = state,
onClosePressed = onClosePressed,
onNewRoomClicked = onNewRoomClicked,
onCloseClick = onCloseClick,
onNewRoomClick = onNewRoomClick,
onOpenDM = onOpenDM,
onInviteFriendsClicked = onInviteFriendsClicked,
onInviteFriendsClick = onInviteFriendsClick,
)
}
}