Voice Broadcast - hide voice messages and state events behind hidden events
This commit is contained in:
		
							parent
							
								
									9349b1ae15
								
							
						
					
					
						commit
						f4b948af9d
					
				| @ -45,6 +45,7 @@ import im.vector.app.features.home.room.detail.timeline.helper.MessageInformatio | ||||
| import im.vector.app.features.home.room.detail.timeline.helper.MessageItemAttributesFactory | ||||
| import im.vector.app.features.home.room.detail.timeline.helper.TimelineMediaSizeProvider | ||||
| import im.vector.app.features.home.room.detail.timeline.item.AbsMessageItem | ||||
| import im.vector.app.features.home.room.detail.timeline.item.BaseEventItem | ||||
| import im.vector.app.features.home.room.detail.timeline.item.MessageAudioItem | ||||
| import im.vector.app.features.home.room.detail.timeline.item.MessageAudioItem_ | ||||
| import im.vector.app.features.home.room.detail.timeline.item.MessageFileItem | ||||
| @ -324,9 +325,11 @@ class MessageItemFactory @Inject constructor( | ||||
|             informationData: MessageInformationData, | ||||
|             highlight: Boolean, | ||||
|             attributes: AbsMessageItem.Attributes | ||||
|     ): MessageVoiceItem? { | ||||
|     ): BaseEventItem<*>? { | ||||
|         // Do not display voice broadcast messages | ||||
|         if (params.event.root.asMessageAudioEvent().isVoiceBroadcast()) return null | ||||
|         if (params.event.root.asMessageAudioEvent().isVoiceBroadcast()) { | ||||
|             return noticeItemFactory.create(params) | ||||
|         } | ||||
| 
 | ||||
|         val fileUrl = getAudioFileUrl(messageContent, informationData) | ||||
|         val playbackControlButtonClickListener = createOnPlaybackButtonClickListener(messageContent, informationData, params) | ||||
|  | ||||
| @ -23,6 +23,7 @@ import im.vector.app.features.home.room.detail.timeline.helper.AvatarSizeProvide | ||||
| import im.vector.app.features.home.room.detail.timeline.helper.VoiceBroadcastEventsGroup | ||||
| import im.vector.app.features.home.room.detail.timeline.item.AbsMessageItem | ||||
| import im.vector.app.features.home.room.detail.timeline.item.AbsMessageVoiceBroadcastItem | ||||
| import im.vector.app.features.home.room.detail.timeline.item.BaseEventItem | ||||
| import im.vector.app.features.home.room.detail.timeline.item.MessageVoiceBroadcastListeningItem | ||||
| import im.vector.app.features.home.room.detail.timeline.item.MessageVoiceBroadcastListeningItem_ | ||||
| import im.vector.app.features.home.room.detail.timeline.item.MessageVoiceBroadcastRecordingItem | ||||
| @ -47,6 +48,7 @@ class VoiceBroadcastItemFactory @Inject constructor( | ||||
|         private val voiceBroadcastRecorder: VoiceBroadcastRecorder?, | ||||
|         private val voiceBroadcastPlayer: VoiceBroadcastPlayer, | ||||
|         private val playbackTracker: AudioMessagePlaybackTracker, | ||||
|         private val noticeItemFactory: NoticeItemFactory, | ||||
| ) { | ||||
| 
 | ||||
|     fun create( | ||||
| @ -54,9 +56,11 @@ class VoiceBroadcastItemFactory @Inject constructor( | ||||
|             messageContent: MessageVoiceBroadcastInfoContent, | ||||
|             highlight: Boolean, | ||||
|             attributes: AbsMessageItem.Attributes, | ||||
|     ): AbsMessageVoiceBroadcastItem<*>? { | ||||
|     ): BaseEventItem<*>? { | ||||
|         // Only display item of the initial event with updated data | ||||
|         if (messageContent.voiceBroadcastState != VoiceBroadcastState.STARTED) return null | ||||
|         if (messageContent.voiceBroadcastState != VoiceBroadcastState.STARTED) { | ||||
|             return noticeItemFactory.create(params) | ||||
|         } | ||||
| 
 | ||||
|         val voiceBroadcastEventsGroup = params.eventsGroup?.let { VoiceBroadcastEventsGroup(it) } ?: return null | ||||
|         val voiceBroadcastEvent = voiceBroadcastEventsGroup.getLastDisplayableEvent().root.asVoiceBroadcastEvent() ?: return null | ||||
|  | ||||
| @ -21,6 +21,7 @@ import im.vector.app.R | ||||
| import im.vector.app.core.resources.StringProvider | ||||
| import im.vector.app.features.roomprofile.permissions.RoleFormatter | ||||
| import im.vector.app.features.settings.VectorPreferences | ||||
| import im.vector.app.features.voicebroadcast.VoiceBroadcastConstants | ||||
| import org.matrix.android.sdk.api.crypto.MXCRYPTO_ALGORITHM_MEGOLM | ||||
| import org.matrix.android.sdk.api.extensions.appendNl | ||||
| import org.matrix.android.sdk.api.extensions.orFalse | ||||
| @ -108,7 +109,8 @@ class NoticeEventFormatter @Inject constructor( | ||||
|             EventType.STICKER, | ||||
|             in EventType.POLL_RESPONSE, | ||||
|             in EventType.POLL_END, | ||||
|             in EventType.BEACON_LOCATION_DATA -> formatDebug(timelineEvent.root) | ||||
|             in EventType.BEACON_LOCATION_DATA, | ||||
|             VoiceBroadcastConstants.STATE_ROOM_VOICE_BROADCAST_INFO -> formatDebug(timelineEvent.root) | ||||
|             else -> { | ||||
|                 Timber.v("Type $type not handled by this formatter") | ||||
|                 null | ||||
|  | ||||
| @ -18,6 +18,11 @@ package im.vector.app.features.home.room.detail.timeline.helper | ||||
| 
 | ||||
| import im.vector.app.core.extensions.localDateTime | ||||
| import im.vector.app.core.resources.UserPreferencesProvider | ||||
| import im.vector.app.features.voicebroadcast.VoiceBroadcastConstants | ||||
| import im.vector.app.features.voicebroadcast.isVoiceBroadcast | ||||
| import im.vector.app.features.voicebroadcast.model.VoiceBroadcastState | ||||
| import im.vector.app.features.voicebroadcast.model.asVoiceBroadcastEvent | ||||
| import org.matrix.android.sdk.api.extensions.orFalse | ||||
| import org.matrix.android.sdk.api.session.events.model.Event | ||||
| import org.matrix.android.sdk.api.session.events.model.EventType | ||||
| import org.matrix.android.sdk.api.session.events.model.RelationType | ||||
| @ -28,6 +33,7 @@ import org.matrix.android.sdk.api.session.events.model.toModel | ||||
| import org.matrix.android.sdk.api.session.room.model.Membership | ||||
| import org.matrix.android.sdk.api.session.room.model.RoomMemberContent | ||||
| import org.matrix.android.sdk.api.session.room.model.localecho.RoomLocalEcho | ||||
| import org.matrix.android.sdk.api.session.room.model.message.asMessageAudioEvent | ||||
| import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent | ||||
| import javax.inject.Inject | ||||
| 
 | ||||
| @ -246,6 +252,15 @@ class TimelineEventVisibilityHelper @Inject constructor( | ||||
|             return !root.isRedacted() | ||||
|         } | ||||
| 
 | ||||
|         if (root.getClearType() == VoiceBroadcastConstants.STATE_ROOM_VOICE_BROADCAST_INFO && | ||||
|                 root.asVoiceBroadcastEvent()?.content?.voiceBroadcastState != VoiceBroadcastState.STARTED) { | ||||
|             return true | ||||
|         } | ||||
| 
 | ||||
|         if (root.asMessageAudioEvent()?.isVoiceBroadcast().orFalse()) { | ||||
|             return true | ||||
|         } | ||||
| 
 | ||||
|         return false | ||||
|     } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user