Skip to content

Comments

feat: Wire drive filter (WPB-20721)#4612

Open
ohassine wants to merge 18 commits intoepic-filter-sort-search-in-shared-drivefrom
wire-drive-filter
Open

feat: Wire drive filter (WPB-20721)#4612
ohassine wants to merge 18 commits intoepic-filter-sort-search-in-shared-drivefrom
wire-drive-filter

Conversation

@ohassine
Copy link
Member

@ohassine ohassine commented Feb 23, 2026

https://wearezeta.atlassian.net/browse/WPB-20721


PR Submission Checklist for internal contributors

  • The PR Title

    • conforms to the style of semantic commits messages¹ supported in Wire's Github Workflow²
    • contains a reference JIRA issue number like SQPIT-764
    • answers the question: If merged, this PR will: ... ³
  • The PR Description

    • is free of optional paragraphs and you have filled the relevant parts to the best of your ability

What's new in this PR?

Description

Implement filter feature in shared drive

screen-20260223-133714-1771850185637.mp4

Needs releases with:

  • GitHub link to other pull request

Testing

Test Coverage (Optional)

  • I have added automated test to this contribution

How to Test

Briefly describe how this change was tested and if applicable the exact steps taken to verify that it works as expected.

Notes (Optional)

Specify here any other facts that you think are important for this issue.

Attachments (Optional)

Attachments like images, videos, etc. (drag and drop in the text box)


PR Post Submission Checklist for internal contributors (Optional)

  • Wire's Github Workflow has automatically linked the PR to a JIRA issue

PR Post Merge Checklist for internal contributors

  • If any soft of configuration variable was introduced by this PR, it has been added to the relevant documents and the CI jobs have been updated.

References
  1. https://sparkbox.com/foundry/semantic_commit_messages
  2. https://github.com/wireapp/.github#usage
  3. E.g. feat(conversation-list): Sort conversations by most emojis in the title #SQPIT-764.

ohassine and others added 16 commits January 16, 2026 14:27
# Conflicts:
#	app/src/main/kotlin/com/wire/android/navigation/MainNavHost.kt
#	app/src/main/kotlin/com/wire/android/navigation/WireMainNavGraph.kt
#	build-logic/plugins/src/main/kotlin/AndroidCoordinates.kt
#	core/ui-common/src/main/kotlin/com/wire/android/ui/common/bottomsheet/WireModalSheetState.kt
#	features/cells/src/main/java/com/wire/android/feature/cells/ui/ConversationFilesScreen.kt
#	features/cells/src/main/java/com/wire/android/feature/cells/ui/ConversationFilesWithSlideInTransitionScreen.kt
@pull-request-size
Copy link

Ups 🫰🟨

This PR is too big. Please try to break it up into smaller PRs.

@sonarqubecloud
Copy link

FilterChip(
modifier = modifier.wrapContentSize(),
onClick = { onSelectChip(label) },
onClick = { onClick(label) },
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor comment: "label" must be always passed by the WireFilterChip caller, no need to return it back in onClick(label). Could be just onClick().

),
).map { pagingData: PagingData<Node> ->
pagingData.map { node: Node ->
if (uiState.value.availableOwners.isEmpty()) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not understand how this is supposed to work. Why do we launch a new coroutine here (and only if not empty:

  • It does not handle duplicates. If there are 10 files from same user it will launch 10 coroutines to get user info
  • It stops adding new users if availableUsers already have some values (?). There will be no filters for users from the second page of files.

I think it's worth to re-think approach to this filter logic.

.collect(state::onQueryChange)
}

LaunchedEffect(sheetState) { sheetState.show() }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is already same line above LaunchedEffect(sheetState) { sheetState.show() }

val showFilterByTags: Boolean = false,
val showFilterByOwner: Boolean = false,

val filesWithPublicLink: Boolean = false,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if it is a bug or a feature. My assumption about this flag is that it must support three values:

  • null - all files
  • true - only files with public link
  • false - only files without public link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants