mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-17 23:18:27 +02:00
Merge commit 'af0b6d4be985d9f26e5111d3fa01389c7321949f' into feature/7276_FOSS_Merge_1_27_11 # Conflicts: # Config/AppVersion.xcconfig # Gemfile.lock # IDETemplateMacros.plist # Podfile # Podfile.lock # README.md # Riot/Modules/Authentication/AuthenticationCoordinator.swift # Riot/Modules/Room/CellData/RoomBubbleCellData.m # Riot/target.yml # RiotNSE/NotificationService.swift # RiotSwiftUI/Modules/Authentication/ServerSelection/AuthenticationServerSelectionModels.swift # RiotSwiftUI/Modules/Authentication/ServerSelection/AuthenticationServerSelectionViewModel.swift # RiotSwiftUI/Modules/Authentication/ServerSelection/Coordinator/AuthenticationServerSelectionCoordinator.swift # RiotSwiftUI/Modules/Authentication/ServerSelection/View/AuthenticationServerSelectionScreen.swift # RiotSwiftUI/Modules/Room/CompletionSuggestion/Service/CompletionSuggestionService.swift # fastlane/Fastfile
66 lines
2.1 KiB
Swift
66 lines
2.1 KiB
Swift
//
|
|
// Copyright 2021-2024 New Vector Ltd.
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
|
// Please see LICENSE files in the repository root for full details.
|
|
//
|
|
|
|
import Foundation
|
|
import MatrixSDK
|
|
|
|
extension MXEvent {
|
|
|
|
/// Get MXMessageType if any
|
|
var messageType: MXMessageType? {
|
|
guard let messageTypeString = self.content["msgtype"] as? String else {
|
|
return nil
|
|
}
|
|
return MXMessageType(identifier: messageTypeString)
|
|
}
|
|
|
|
/// Lightweight version of the receiver, in which reply-specific keys are stripped. Returns the same event with the receiver if not a reply event.
|
|
/// Should be used only to update formatting behavior.
|
|
var replyStrippedVersion: MXEvent {
|
|
if self.isReply(), let newMessage = self.copy() as? MXEvent {
|
|
var jsonDict = newMessage.isEncrypted ? newMessage.clear?.jsonDictionary() : newMessage.jsonDictionary()
|
|
if var content = jsonDict?["content"] as? [String: Any] {
|
|
content.removeValue(forKey: "format")
|
|
content.removeValue(forKey: "formatted_body")
|
|
content.removeValue(forKey: kMXEventRelationRelatesToKey)
|
|
if let replyText = MXReplyEventParser().parse(newMessage)?.bodyParts.replyText {
|
|
content["body"] = replyText
|
|
}
|
|
jsonDict?["content"] = content
|
|
}
|
|
return MXEvent(fromJSON: jsonDict)
|
|
} else {
|
|
return self
|
|
}
|
|
}
|
|
|
|
@objc
|
|
var isTimelinePollEvent: Bool {
|
|
switch eventType {
|
|
case .pollStart, .pollEnd:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
// bwi: #5806 bugfix: showing live location view when deleting location event
|
|
@objc
|
|
var isTimlineLcationEvent: Bool {
|
|
switch eventType {
|
|
case .roomMessage:
|
|
if messageType == .location {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
}
|