From 5da7ff7f802fb2ecc3f4130ff70ba38daab9dd00 Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Fri, 10 Jan 2025 14:57:49 +0000 Subject: [PATCH 1/3] Expose all default `MessageActions` --- .../DefaultMessageActions.swift | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/Sources/StreamChatSwiftUI/ChatChannel/Reactions/MessageActions/DefaultMessageActions.swift b/Sources/StreamChatSwiftUI/ChatChannel/Reactions/MessageActions/DefaultMessageActions.swift index 9eaca98e0..19ee76258 100644 --- a/Sources/StreamChatSwiftUI/ChatChannel/Reactions/MessageActions/DefaultMessageActions.swift +++ b/Sources/StreamChatSwiftUI/ChatChannel/Reactions/MessageActions/DefaultMessageActions.swift @@ -229,9 +229,7 @@ extension MessageAction { return messageActions } - // MARK: - private - - private static func copyMessageAction( + public static func copyMessageAction( for message: ChatMessage, onFinish: @escaping (MessageActionInfo) -> Void ) -> MessageAction { @@ -255,7 +253,7 @@ extension MessageAction { return copyAction } - private static func editMessageAction( + public static func editMessageAction( for message: ChatMessage, channel: ChatChannel, onFinish: @escaping (MessageActionInfo) -> Void @@ -279,7 +277,7 @@ extension MessageAction { return editAction } - private static func pinMessageAction( + public static func pinMessageAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -318,7 +316,7 @@ extension MessageAction { return pinAction } - private static func unpinMessageAction( + public static func unpinMessageAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -357,7 +355,7 @@ extension MessageAction { return pinAction } - private static func replyAction( + public static func replyAction( for message: ChatMessage, channel: ChatChannel, onFinish: @escaping (MessageActionInfo) -> Void @@ -381,7 +379,7 @@ extension MessageAction { return replyAction } - private static func threadReplyAction( + public static func threadReplyAction( factory: Factory, for message: ChatMessage, channel: ChatChannel @@ -404,7 +402,7 @@ extension MessageAction { return replyThread } - private static func deleteMessageAction( + public static func deleteMessageAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -449,7 +447,7 @@ extension MessageAction { return deleteMessage } - private static func flagMessageAction( + public static func flagMessageAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -494,7 +492,7 @@ extension MessageAction { return flagMessage } - private static func markAsUnreadAction( + public static func markAsUnreadAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -530,7 +528,7 @@ extension MessageAction { return unreadAction } - private static func markThreadAsUnreadAction( + public static func markThreadAsUnreadAction( messageController: ChatMessageController, message: ChatMessage, onFinish: @escaping (MessageActionInfo) -> Void, @@ -562,7 +560,7 @@ extension MessageAction { return unreadAction } - private static func muteAction( + public static func muteAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -598,7 +596,7 @@ extension MessageAction { return muteUser } - private static func blockUserAction( + public static func blockUserAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -638,7 +636,7 @@ extension MessageAction { return blockUser } - private static func unmuteAction( + public static func unmuteAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -674,7 +672,7 @@ extension MessageAction { return unmuteUser } - private static func unblockUserAction( + public static func unblockUserAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -714,7 +712,7 @@ extension MessageAction { return unblockUser } - private static func resendMessageAction( + public static func resendMessageAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -753,7 +751,7 @@ extension MessageAction { return messageAction } - private static func messageNotSentActions( + public static func messageNotSentActions( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, From 0f43e9de7bca883690116914f8acc36805ab5639 Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Fri, 10 Jan 2025 15:11:46 +0000 Subject: [PATCH 2/3] Add docs and make extension public --- .../DefaultMessageActions.swift | 62 ++++++++++++------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/Sources/StreamChatSwiftUI/ChatChannel/Reactions/MessageActions/DefaultMessageActions.swift b/Sources/StreamChatSwiftUI/ChatChannel/Reactions/MessageActions/DefaultMessageActions.swift index 19ee76258..b454a8eca 100644 --- a/Sources/StreamChatSwiftUI/ChatChannel/Reactions/MessageActions/DefaultMessageActions.swift +++ b/Sources/StreamChatSwiftUI/ChatChannel/Reactions/MessageActions/DefaultMessageActions.swift @@ -5,7 +5,9 @@ import StreamChat import SwiftUI -extension MessageAction { +// MARK: - Default Message Actions + +public extension MessageAction { /// Returns the default message actions. /// /// - Parameters: @@ -13,7 +15,7 @@ extension MessageAction { /// - chatClient: the chat client. /// - onDimiss: called when the action is executed. /// - Returns: array of `MessageAction`. - public static func defaultActions( + static func defaultActions( factory: Factory, for message: ChatMessage, channel: ChatChannel, @@ -229,7 +231,8 @@ extension MessageAction { return messageActions } - public static func copyMessageAction( + /// The action to copy the message text. + static func copyMessageAction( for message: ChatMessage, onFinish: @escaping (MessageActionInfo) -> Void ) -> MessageAction { @@ -253,7 +256,8 @@ extension MessageAction { return copyAction } - public static func editMessageAction( + /// The action to edit the message. + static func editMessageAction( for message: ChatMessage, channel: ChatChannel, onFinish: @escaping (MessageActionInfo) -> Void @@ -277,7 +281,8 @@ extension MessageAction { return editAction } - public static func pinMessageAction( + /// The action to pin the message. + static func pinMessageAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -316,7 +321,8 @@ extension MessageAction { return pinAction } - public static func unpinMessageAction( + /// The action to unpin the message. + static func unpinMessageAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -355,7 +361,8 @@ extension MessageAction { return pinAction } - public static func replyAction( + /// The action to reply to the message + static func replyAction( for message: ChatMessage, channel: ChatChannel, onFinish: @escaping (MessageActionInfo) -> Void @@ -379,7 +386,8 @@ extension MessageAction { return replyAction } - public static func threadReplyAction( + /// The action to reply to the message in a thread + static func threadReplyAction( factory: Factory, for message: ChatMessage, channel: ChatChannel @@ -402,7 +410,8 @@ extension MessageAction { return replyThread } - public static func deleteMessageAction( + /// The action to delete the message. + static func deleteMessageAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -447,7 +456,8 @@ extension MessageAction { return deleteMessage } - public static func flagMessageAction( + /// The action to flag the message. + static func flagMessageAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -491,8 +501,9 @@ extension MessageAction { return flagMessage } - - public static func markAsUnreadAction( + + /// The action to mark the message as unread. + static func markAsUnreadAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -528,7 +539,8 @@ extension MessageAction { return unreadAction } - public static func markThreadAsUnreadAction( + /// The action to mark the thread as unread. + static func markThreadAsUnreadAction( messageController: ChatMessageController, message: ChatMessage, onFinish: @escaping (MessageActionInfo) -> Void, @@ -560,7 +572,8 @@ extension MessageAction { return unreadAction } - public static func muteAction( + /// The action to mute the user. + static func muteAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -595,8 +608,9 @@ extension MessageAction { return muteUser } - - public static func blockUserAction( + + /// The action to block the user + static func blockUserAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -636,7 +650,8 @@ extension MessageAction { return blockUser } - public static func unmuteAction( + /// The action to unmute the user. + static func unmuteAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -671,8 +686,9 @@ extension MessageAction { return unmuteUser } - - public static func unblockUserAction( + + /// The action to unblock the user. + static func unblockUserAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -712,7 +728,8 @@ extension MessageAction { return unblockUser } - public static func resendMessageAction( + /// The action to resend the message. + static func resendMessageAction( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -751,7 +768,8 @@ extension MessageAction { return messageAction } - public static func messageNotSentActions( + /// The actions for a message that was not sent. + static func messageNotSentActions( for message: ChatMessage, channel: ChatChannel, chatClient: ChatClient, @@ -781,6 +799,8 @@ extension MessageAction { return messageActions } + // MARK: - Helpers + private static func editAndDeleteActions( for message: ChatMessage, channel: ChatChannel, From fa424c854a0a41ad26447493fc00f3a347eb55b7 Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Fri, 10 Jan 2025 15:15:42 +0000 Subject: [PATCH 3/3] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f00fe415..fbc7a6167 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). # Upcoming +### ✅ Added +- Exposes all the default message actions [#711](https://github.com/GetStream/stream-chat-swiftui/pull/711) ### 🐞 Fixed - Use bright color for typing indicator animation in dark mode [#702](https://github.com/GetStream/stream-chat-swiftui/pull/702) - Refresh quoted message preview when the quoted message is deleted [#705](https://github.com/GetStream/stream-chat-swiftui/pull/705)