mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 00:52:43 +02:00
Merge branch 'develop' into flescio/7253-Add_mar_kas_unread_option_for_rooms
This commit is contained in:
@@ -148,6 +148,8 @@ static NSString *const kMXAppGroupID = @"group.org.matrix";
|
||||
kMXEventTypeStringKeyVerificationDone,
|
||||
kMXEventTypeStringPollStart,
|
||||
kMXEventTypeStringPollStartMSC3381,
|
||||
kMXEventTypeStringPollEnd,
|
||||
kMXEventTypeStringPollEndMSC3381,
|
||||
kMXEventTypeStringBeaconInfo,
|
||||
kMXEventTypeStringBeaconInfoMSC3672
|
||||
].mutableCopy;
|
||||
@@ -181,6 +183,8 @@ static NSString *const kMXAppGroupID = @"group.org.matrix";
|
||||
kMXEventTypeStringKeyVerificationDone,
|
||||
kMXEventTypeStringPollStart,
|
||||
kMXEventTypeStringPollStartMSC3381,
|
||||
kMXEventTypeStringPollEnd,
|
||||
kMXEventTypeStringPollEndMSC3381,
|
||||
kMXEventTypeStringBeaconInfo,
|
||||
kMXEventTypeStringBeaconInfoMSC3672
|
||||
].mutableCopy;
|
||||
|
||||
@@ -572,6 +572,7 @@ extern NSString *const kMXKRoomDataSourceTimelineErrorErrorKey;
|
||||
Once complete, this local echo will be replaced by the event saved by the homeserver.
|
||||
|
||||
@param audioFileLocalURL the local filesystem path of the audio file to send.
|
||||
@param additionalContentParams (optional) the additional parameters to the content.
|
||||
@param mimeType (optional) the mime type of the file. Defaults to `audio/ogg`
|
||||
@param duration the length of the voice message in milliseconds
|
||||
@param samples an array of floating point values normalized to [0, 1], boxed within NSNumbers
|
||||
@@ -580,6 +581,7 @@ extern NSString *const kMXKRoomDataSourceTimelineErrorErrorKey;
|
||||
@param failure A block object called when the operation fails.
|
||||
*/
|
||||
- (void)sendVoiceMessage:(NSURL *)audioFileLocalURL
|
||||
additionalContentParams:(NSDictionary*)additionalContentParams
|
||||
mimeType:mimeType
|
||||
duration:(NSUInteger)duration
|
||||
samples:(NSArray<NSNumber *> *)samples
|
||||
|
||||
@@ -1998,6 +1998,7 @@ typedef NS_ENUM (NSUInteger, MXKRoomDataSourceError) {
|
||||
}
|
||||
|
||||
- (void)sendVoiceMessage:(NSURL *)audioFileLocalURL
|
||||
additionalContentParams:(NSDictionary *)additionalContentParams
|
||||
mimeType:mimeType
|
||||
duration:(NSUInteger)duration
|
||||
samples:(NSArray<NSNumber *> *)samples
|
||||
@@ -2006,7 +2007,7 @@ typedef NS_ENUM (NSUInteger, MXKRoomDataSourceError) {
|
||||
{
|
||||
__block MXEvent *localEchoEvent = nil;
|
||||
|
||||
[_room sendVoiceMessage:audioFileLocalURL mimeType:mimeType duration:duration samples:samples threadId:self.threadId localEcho:&localEchoEvent success:success failure:failure keepActualFilename:YES];
|
||||
[_room sendVoiceMessage:audioFileLocalURL additionalContentParams:additionalContentParams mimeType:mimeType duration:duration samples:samples threadId:self.threadId localEcho:&localEchoEvent success:success failure:failure keepActualFilename:YES];
|
||||
|
||||
if (localEchoEvent)
|
||||
{
|
||||
@@ -2185,10 +2186,20 @@ typedef NS_ENUM (NSUInteger, MXKRoomDataSourceError) {
|
||||
[self removeEventWithEventId:eventId];
|
||||
|
||||
if (event.isVoiceMessage) {
|
||||
// Voice message
|
||||
NSNumber *duration = event.content[kMXMessageContentKeyExtensibleAudioMSC1767][kMXMessageContentKeyExtensibleAudioDuration];
|
||||
NSArray<NSNumber *> *samples = event.content[kMXMessageContentKeyExtensibleAudioMSC1767][kMXMessageContentKeyExtensibleAudioWaveform];
|
||||
|
||||
[self sendVoiceMessage:localFileURL mimeType:mimetype duration:duration.doubleValue samples:samples success:success failure:failure];
|
||||
|
||||
// Additional content params in case it is a voicebroacast chunk
|
||||
NSDictionary* additionalContentParams = nil;
|
||||
if (event.content[kMXEventRelationRelatesToKey] != nil && event.content[VoiceBroadcastSettings.voiceBroadcastContentKeyChunkType] != nil) {
|
||||
additionalContentParams = @{
|
||||
kMXEventRelationRelatesToKey: event.content[kMXEventRelationRelatesToKey],
|
||||
VoiceBroadcastSettings.voiceBroadcastContentKeyChunkType: event.content[VoiceBroadcastSettings.voiceBroadcastContentKeyChunkType]
|
||||
};
|
||||
}
|
||||
|
||||
[self sendVoiceMessage:localFileURL additionalContentParams:additionalContentParams mimeType:mimetype duration:duration.doubleValue samples:samples success:success failure:failure];
|
||||
} else {
|
||||
[self sendAudioFile:localFileURL mimeType:mimetype success:success failure:failure];
|
||||
}
|
||||
@@ -2881,10 +2892,21 @@ typedef NS_ENUM (NSUInteger, MXKRoomDataSourceError) {
|
||||
return NO;
|
||||
}
|
||||
|
||||
if (event.eventType == MXEventTypePollStart) {
|
||||
if (event.isTimelinePollEvent) {
|
||||
return YES;
|
||||
}
|
||||
|
||||
// Specific case for voice broadcast event
|
||||
if (event.eventType == MXEventTypeCustom &&
|
||||
[event.type isEqualToString:VoiceBroadcastSettings.voiceBroadcastInfoContentKeyType]) {
|
||||
|
||||
// Ensures that we only support reactions for a start event
|
||||
VoiceBroadcastInfo* voiceBroadcastInfo = [VoiceBroadcastInfo modelFromJSON: event.content];
|
||||
if ([VoiceBroadcastInfo isStartedFor: voiceBroadcastInfo.state]) {
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
|
||||
BOOL isRoomMessage = (event.eventType == MXEventTypeRoomMessage);
|
||||
|
||||
if (!isRoomMessage) {
|
||||
|
||||
@@ -18,34 +18,38 @@ import Foundation
|
||||
|
||||
class MXKSendReplyEventStringLocalizer: NSObject, MXSendReplyEventStringLocalizerProtocol {
|
||||
func senderSentAnImage() -> String {
|
||||
return VectorL10n.messageReplyToSenderSentAnImage
|
||||
VectorL10n.messageReplyToSenderSentAnImage
|
||||
}
|
||||
|
||||
func senderSentAVideo() -> String {
|
||||
return VectorL10n.messageReplyToSenderSentAVideo
|
||||
VectorL10n.messageReplyToSenderSentAVideo
|
||||
}
|
||||
|
||||
func senderSentAnAudioFile() -> String {
|
||||
return VectorL10n.messageReplyToSenderSentAnAudioFile
|
||||
VectorL10n.messageReplyToSenderSentAnAudioFile
|
||||
}
|
||||
|
||||
func senderSentAVoiceMessage() -> String {
|
||||
return VectorL10n.messageReplyToSenderSentAVoiceMessage
|
||||
VectorL10n.messageReplyToSenderSentAVoiceMessage
|
||||
}
|
||||
|
||||
func senderSentAFile() -> String {
|
||||
return VectorL10n.messageReplyToSenderSentAFile
|
||||
VectorL10n.messageReplyToSenderSentAFile
|
||||
}
|
||||
|
||||
func senderSentTheirLocation() -> String {
|
||||
return VectorL10n.messageReplyToSenderSentTheirLocation
|
||||
VectorL10n.messageReplyToSenderSentTheirLocation
|
||||
}
|
||||
|
||||
func senderSentTheirLiveLocation() -> String {
|
||||
return VectorL10n.messageReplyToSenderSentTheirLiveLocation
|
||||
VectorL10n.messageReplyToSenderSentTheirLiveLocation
|
||||
}
|
||||
|
||||
func messageToReplyToPrefix() -> String {
|
||||
return VectorL10n.messageReplyToMessageToReplyToPrefix
|
||||
VectorL10n.messageReplyToMessageToReplyToPrefix
|
||||
}
|
||||
|
||||
func replyToEndedPoll() -> String {
|
||||
VectorL10n.pollTimelineReplyEndedPoll
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user