Skip to content

Redesign channel info view#1256

Draft
martinmitrevski wants to merge 15 commits intov5from
v5-chat-info
Draft

Redesign channel info view#1256
martinmitrevski wants to merge 15 commits intov5from
v5-chat-info

Conversation

@martinmitrevski
Copy link
Contributor

πŸ”— Issue Links

Provide all Linear and/or Github issues related to this PR, if applicable.

🎯 Goal

Describe why we are making this change.

πŸ“ Summary

Provide bullet points with the most important changes in the codebase.

πŸ›  Implementation

Provide a detailed description of the implementation and explain your decisions if you find them relevant.

🎨 Showcase

Add relevant screenshots and/or videos/gifs to easily see what this PR changes, if applicable.

Before After
img img

πŸ§ͺ Manual Testing Notes

Explain how this change can be tested manually, if applicable.

β˜‘οΈ Contributor Checklist

  • I have signed the Stream CLA (required)
  • This change should be manually QAed
  • Changelog is updated with client-facing changes
  • Changelog is updated with new localization keys
  • New code is covered by unit tests
  • Documentation has been updated in the docs-content repo

@martinmitrevski martinmitrevski requested a review from a team as a code owner March 3, 2026 23:09
@martinmitrevski martinmitrevski marked this pull request as draft March 3, 2026 23:09
@coderabbitai
Copy link

coderabbitai bot commented Mar 3, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

βš™οΈ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: db8c7513-8058-41a3-871b-79b524e68e66

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • πŸ” Trigger review
✨ Finishing Touches
πŸ§ͺ Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch v5-chat-info

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❀️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

github-actions bot commented Mar 3, 2026

1 Warning
⚠️ Big PR
1 Message
πŸ“– There seems to be app changes but CHANGELOG wasn't modified.
Please include an entry if the PR includes user-facing changes.
You can find it at CHANGELOG.md.

Generated by 🚫 Danger

@Stream-SDK-Bot
Copy link
Collaborator

SDK Size

title v5 branch diff status
StreamChatSwiftUI 9.68 MB 9.85 MB +172 KB 🟒

@Stream-SDK-Bot
Copy link
Collaborator

StreamChatSwiftUI XCSize

Object Diff (bytes)
EditGroupView.o +38478
ChatChannelInfoView.o +29438
AddUsersView.o +24006
ChatChannelInfoViewModel.o +16463
MediaAttachmentsView.o +9743
Show 41 more objects
Object Diff (bytes)
ChatChannelInfoHelperViews.o +5662
ChannelAvatar.o +4705
AddUsersViewModel.o +3877
AttachmentCameraPickerView.o -1735
Styles.o -1604
ChatChannelViewModel.o -1589
ReactionsOverlayContainer.o -1320
ParticipantInfoView.o +1012
ChatThreadListItem.o +490
PinnedMessagesView.o -410
MessageListView.o -336
SearchBar.o -316
DefaultViewFactory.o -304
ChatInfoParticipantsView.o -264
AlertBannerViewModifier.o +192
ChatThreadList.o -188
MessageActionsView.o +182
NoContentView.o +168
MoreChannelActionsView.o -158
Compatibility+TaskViewModifier.o -142
UserSuggestionsView.o +132
ChatChannelHeaderViewModifier.o -128
ChatChannelView.o -110
ChatChannelHelperViews.o -109
StreamChat +108
AttachmentMediaPickerItemView.o +105
ChatChannelListViewModel.o -104
FileAttachmentsView.o -100
L10n.o -97
ImageAttachmentView.o -78
Foundation.tbd +76
DeletedMessageView.o +72
SendInChannelView.o -64
GalleryView.o -60
MediaAttachmentsViewModel.o -56
SelectionBadgeView.o -50
PhotoAssetLoader.o -49
MoreChannelActionsFullScreenWrappingView.o -48
SwiftUICore.tbd -48
ChatChannelListItem.o +45
DefaultChannelActions.o -45

@github-actions
Copy link

github-actions bot commented Mar 4, 2026

Public Interface

+ public struct ChatInfoDirectMessageView: View  
+ 
+   public var body: some View
+   
+ 
+   public init(factory: Factory = DefaultViewFactory.shared,participant: ParticipantInfo)

+ public struct ChatInfoGroupHeaderView: View  
+ 
+   public var body: some View
+   
+ 
+   public init(viewModel: ChatChannelInfoViewModel)

+ public struct EditGroupView: View  
+ 
+   public var body: some View
+   
+ 
+   public init(viewModel: ChatChannelInfoViewModel)

+ public struct ChatInfoMemberView: View  
+ 
+   public var body: some View
+   
+ 
+   public init(factory: Factory = DefaultViewFactory.shared,participant: ParticipantInfo,backgroundColor: UIColor? = nil,onAppear: @escaping () -> Void,onTap: @escaping () -> Void)

+ public extension Appearance.ColorPalette

+ public struct InfoSectionCard: View  
+ 
+   public var body: some View
+   
+ 
+   public init(@ViewBuilder content: () -> Content)

+ public struct MemberListView: View  
+ 
+   public var body: some View
+   
+ 
+   public init(factory: Factory = DefaultViewFactory.shared,viewModel: ChatChannelInfoViewModel)

- public struct ChatInfoMentionText: View  
- 
-   public var body: some View
-   
- 
-   public init(participant: ParticipantInfo? = nil)

- public struct ChannelNameUpdateView: View  
- 
-   public var body: some View
-   
- 
-   public init(viewModel: ChatChannelInfoViewModel)

- public struct ChatInfoOptionsView: View  
- 
-   public var body: some View
-   
- 
-   public init(factory: Factory = DefaultViewFactory.shared,viewModel: ChatChannelInfoViewModel)

- public struct ChannelInfoDivider: View  
- 
-   public var body: some View
-   
- 
-   public init()

- public struct ChatInfoDirectChannelView: View  
- 
-   public var body: some View
-   
- 
-   public init(factory: Factory = DefaultViewFactory.shared,participant: ParticipantInfo?)

- public struct ChatChannelInfoButton: View  
- 
-   public var body: some View
-   
- 
-   public init(title: String,iconName: String,foregroundColor: Color,buttonTapped: @escaping () -> Void)

 public struct AddUsersView: View  
-   public init(factory: Factory = DefaultViewFactory.shared,loadedUserIds: [String],onUserTap: @escaping (ChatUser) -> Void)
+   public init(factory: Factory = DefaultViewFactory.shared,loadedUserIds: [String],onConfirm: @escaping ([ChatUser]) -> Void)

 public final class AddUsersOptions: Sendable  
-   public let loadedUsers: [ChatUser]
+   public let loadedUserIds: [String]
-   public init(loadedUsers: [ChatUser])
+   public init(loadedUserIds: [String])

 @MainActor public class ChatChannelInfoViewModel: ObservableObject, ChatChannelControllerDelegate  
-   @Published public var leaveGroupAlertShown
+   @Published public var memberListSheetShown
-   @Published public var errorShown
+   @Published public var editGroupShown
-   @Published public var channelName: String
+   @Published public var isUploadingGroupAvatar
-   @Published public var channel: ChatChannel
+   @Published public var leaveGroupAlertShown
-   @Published public var channelId
+   @Published public var blockUserAlertShown
-   @Published public var keyboardShown
+   @Published public var errorShown
-   @Published public var addUsersShown
+   @Published public var channelName: String
-   @Published public var selectedParticipant: ParticipantInfo?
+   @Published public var channel: ChatChannel
-   open var shouldShowLeaveConversationButton: Bool
+   @Published public var channelId
-   open var shouldShowMuteChannelButton: Bool
+   @Published public var keyboardShown
-   open var canRenameChannel: Bool
+   @Published public var addUsersShown
-   open var shouldShowAddUserButton: Bool
+   @Published public var selectedParticipant: ParticipantInfo?
-   public var showSingleMemberDMView: Bool
+   open var shouldShowBlockUserButton: Bool
-   public var displayedParticipants: [ParticipantInfo]
+   public var isDMUserBlocked: Bool
-   open var leaveButtonTitle: String
+   public var blockUserTitle: String
-   open var leaveConversationDescription: String
+   open var shouldShowLeaveConversationButton: Bool
-   public var showMoreUsersButtonTitle: String
+   open var shouldShowMuteChannelButton: Bool
-   public var notDisplayedParticipantsCount: Int
+   open var canRenameChannel: Bool
-   public var mutedText: String
+   open var shouldShowAddUserButton: Bool
-   public var showMoreUsersButton: Bool
+   public var showSingleMemberDMView: Bool
-   
+   public var displayedParticipants: [ParticipantInfo]
- 
+   public var allParticipants: [ParticipantInfo]
-   public init(channel: ChatChannel)
+   open var leaveButtonTitle: String
-   
+   open var leaveConversationDescription: String
- 
+   public var notDisplayedParticipantsCount: Int
-   public func onlineInfo(for user: ChatUser)-> String
+   public var mutedText: String
-   public func onParticipantAppear(_ participantInfo: ParticipantInfo)
+   public var showMoreUsersButton: Bool
-   public func leaveConversationTapped(completion: @escaping @MainActor () -> Void)
+   public var allMemberIds: [String]
-   public func cancelGroupRenaming()
+   
-   public func confirmGroupRenaming()
+ 
-   public func channelController(_ channelController: ChatChannelController,didUpdateChannel channel: EntityChange<ChatChannel>)
+   public init(channel: ChatChannel)
-   public func addUserTapped(_ user: ChatUser)
+   
-   open func participantActions(for participant: ParticipantInfo)-> [ParticipantAction]
+ 
-   public func muteAction(participant: ParticipantInfo,onDismiss: @escaping () -> Void,onError: @escaping (Error) -> Void)-> ParticipantAction
+   public func onlineInfo(for user: ChatUser)-> String
-   public func unmuteAction(participant: ParticipantInfo,onDismiss: @escaping () -> Void,onError: @escaping (Error) -> Void)-> ParticipantAction
+   public func onParticipantAppear(_ participantInfo: ParticipantInfo)
-   public func removeUserAction(participant: ParticipantInfo,onDismiss: @escaping () -> Void,onError: @escaping (Error) -> Void)-> ParticipantAction
+   public func onSheetMemberAppear(_ participantInfo: ParticipantInfo)
+   public func leaveConversationTapped(completion: @escaping @MainActor () -> Void)
+   public func blockUserTapped()
+   public func cancelGroupRenaming()
+   public func confirmGroupRenaming()
+   public func saveGroupEdit(name: String,image: UIImage?)
+   public func channelController(_ channelController: ChatChannelController,didUpdateChannel channel: EntityChange<ChatChannel>)
+   public func addUsersTapped(_ users: [ChatUser])
+   open func participantActions(for participant: ParticipantInfo)-> [ParticipantAction]
+   public func muteAction(participant: ParticipantInfo,onDismiss: @escaping () -> Void,onError: @escaping (Error) -> Void)-> ParticipantAction
+   public func unmuteAction(participant: ParticipantInfo,onDismiss: @escaping () -> Void,onError: @escaping (Error) -> Void)-> ParticipantAction
+   public func removeUserAction(participant: ParticipantInfo,onDismiss: @escaping () -> Void,onError: @escaping (Error) -> Void)-> ParticipantAction
+   public func blockParticipantAction(participant: ParticipantInfo,onDismiss: @escaping () -> Void,onError: @escaping (Error) -> Void)-> ParticipantAction
+   public func leaveGroupAction(onDismiss: @escaping () -> Void,onError: @escaping (Error) -> Void)-> ParticipantAction

 public final class AddUsersViewOptions: Sendable  
-   public let onUserTap: @MainActor (ChatUser) -> Void
+   public let onConfirm: @MainActor ([ChatUser]) -> Void
-   public init(options: AddUsersOptions,onUserTap: @escaping @MainActor (ChatUser) -> Void)
+   public init(options: AddUsersOptions,onConfirm: @escaping @MainActor ([ChatUser]) -> Void)

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants