Rocket.Chat.ReactNative/ios/RocketChat Watch App/Formatters/Mapper/MessageInfoMapper.swift

166 lines
4.5 KiB
Swift

import SwiftUI
struct InfoMessage {
let msg: String
let username: String
let type: String
let role: String
let comment: String
}
func getInfoMessage(_ infoMessage: InfoMessage) -> LocalizedStringKey {
switch infoMessage.type {
case "rm":
return "message removed"
case "uj":
return "joined the channel"
case "ujt":
return "joined this team"
case "ut":
return "joined the conversation"
case "r":
return "changed room name to: \(infoMessage.msg)"
case "ru":
return "removed \(infoMessage.msg)"
case "au":
return "added \(infoMessage.msg)"
case "user-muted":
return "muted \(infoMessage.msg)"
case "room_changed_description":
return "changed room description to: \(infoMessage.msg)"
case "room_changed_announcement":
return "changed room announcement to: \(infoMessage.msg)"
case "room_changed_topic":
return "changed room topic to: \(infoMessage.msg)"
case "room_changed_privacy":
return "changed room to \(infoMessage.msg)"
case "room_changed_avatar":
return "changed room avatar"
case "message_snippeted":
return "created a snippet"
case "room_e2e_disabled":
return "disabled E2E encryption for this room"
case "room_e2e_enabled":
return "enabled E2E encryption for this room"
case "removed-user-from-team":
return "removed @\(infoMessage.msg) from this team"
case "added-user-to-team":
return "added @\(infoMessage.msg) to this team"
case "user-added-room-to-team":
return "added #\(infoMessage.msg) to this team"
case "user-converted-to-team":
return "converted #\(infoMessage.msg) to a team"
case "user-converted-to-channel":
return "converted #\(infoMessage.msg) to channel"
case "user-deleted-room-from-team":
return "deleted #\(infoMessage.msg)"
case "user-removed-room-from-team":
return "removed #\(infoMessage.msg) from this team"
case "room-disallowed-reacting":
return "disallowed reactions"
case "room-allowed-reacting":
return "allowed reactions"
case "room-set-read-only":
return "set room to read only"
case "room-removed-read-only":
return "removed read only permission"
case "user-unmuted":
return "unmuted \(infoMessage.msg)"
case "room-archived":
return "archived room"
case "room-unarchived":
return "unarchived room"
case "subscription-role-added":
return "defined \(infoMessage.msg) as \(infoMessage.role)"
case "subscription-role-removed":
return "removed \(infoMessage.msg) as \(infoMessage.role)"
case "message_pinned":
return "Pinned a message:"
case "ul":
return "left the channel"
case "ult":
return "has left the team"
case "jitsi_call_started":
return "Call started by \(infoMessage.username)"
case "omnichannel_placed_chat_on_hold":
return "Chat on hold: \(infoMessage.comment)"
case "omnichannel_on_hold_chat_resumed":
return "On hold chat resumed: \(infoMessage.comment)"
case "command":
return "returned the chat to the queue"
case "livechat-started":
return "Chat started"
case "livechat-close":
return "Conversation closed"
case "livechat_transfer_history":
return "New chat transfer: \(infoMessage.username) returned the chat to the queue"
default:
return "Unsupported system message"
}
}
func messageHaveAuthorName(_ messageType: String) -> Bool {
messagesWithAuthorName.contains(messageType)
}
extension InfoMessage {
init(from message: Message) {
self.init(
msg: message.msg ?? "",
username: message.user?.username ?? "",
type: message.t ?? "",
role: message.role ?? "",
comment: message.comment ?? ""
)
}
}
private let messagesWithAuthorName: Set<String> = [
"r",
"ru",
"au",
"rm",
"uj",
"ujt",
"ut",
"ul",
"ult",
"message_pinned",
"message_snippeted",
"removed-user-from-team",
"added-user-to-team",
"user-added-room-to-team",
"user-converted-to-team",
"user-converted-to-channel",
"user-deleted-room-from-team",
"user-removed-room-from-team",
"omnichannel_placed_chat_on_hold",
"omnichannel_on_hold_chat_resumed",
"livechat_navigation_history",
"livechat_transcript_history",
"command",
"livechat-started",
"livechat-close",
"livechat_video_call",
"livechat_webrtc_video_call",
"livechat_transfer_history",
"room-archived",
"room-unarchived",
"user-muted",
"room_changed_description",
"room_changed_announcement",
"room_changed_topic",
"room_changed_privacy",
"room_changed_avatar",
"room_e2e_disabled",
"room_e2e_enabled",
"room-allowed-reacting",
"room-disallowed-reacting",
"room-set-read-only",
"room-removed-read-only",
"user-unmuted",
"room-unarchived",
"subscription-role-added",
"subscription-role-removed"
]