@@ -17,6 +17,7 @@ import androidx.compose.runtime.setValue
17
17
import io.element.android.libraries.architecture.Presenter
18
18
import io.element.android.libraries.matrix.api.core.EventId
19
19
import io.element.android.libraries.matrix.api.media.MediaPreviewValue
20
+ import io.element.android.libraries.matrix.api.media.isPreviewEnabled
20
21
import io.element.android.libraries.matrix.api.room.MatrixRoom
21
22
import io.element.android.libraries.preferences.api.store.AppPreferencesStore
22
23
import kotlinx.collections.immutable.toImmutableSet
@@ -26,37 +27,29 @@ class TimelineProtectionPresenter @Inject constructor(
26
27
private val appPreferencesStore : AppPreferencesStore ,
27
28
private val room : MatrixRoom ,
28
29
) : Presenter<TimelineProtectionState> {
30
+ private val allowedEvents = mutableStateOf<Set <EventId >>(setOf ())
31
+
29
32
@Composable
30
33
override fun present (): TimelineProtectionState {
31
34
val mediaPreviewValue = remember {
32
35
appPreferencesStore.getTimelineMediaPreviewValueFlow()
33
- }.collectAsState(initial = MediaPreviewValue .Off )
34
- var allowedEvents by remember { mutableStateOf<Set <EventId >>(setOf ()) }
36
+ }.collectAsState(initial = MediaPreviewValue .On )
35
37
val roomInfo = room.roomInfoFlow.collectAsState()
36
38
val protectionState by remember {
37
39
derivedStateOf {
38
- when (mediaPreviewValue.value) {
39
- MediaPreviewValue .On -> {
40
- ProtectionState .RenderAll
41
- }
42
- MediaPreviewValue .Off -> {
43
- ProtectionState .RenderOnly (eventIds = allowedEvents.toImmutableSet())
44
- }
45
- MediaPreviewValue .Private -> {
46
- if (roomInfo.value.isPublic) {
47
- ProtectionState .RenderOnly (eventIds = allowedEvents.toImmutableSet())
48
- } else {
49
- ProtectionState .RenderAll
50
- }
51
- }
40
+ val isPreviewEnabled = mediaPreviewValue.value.isPreviewEnabled(roomInfo.value.joinRule)
41
+ if (isPreviewEnabled) {
42
+ ProtectionState .RenderAll
43
+ } else {
44
+ ProtectionState .RenderOnly (eventIds = allowedEvents.value.toImmutableSet())
52
45
}
53
46
}
54
47
}
55
48
56
49
fun handleEvent (event : TimelineProtectionEvent ) {
57
50
when (event) {
58
51
is TimelineProtectionEvent .ShowContent -> {
59
- allowedEvents = allowedEvents + setOfNotNull(event.eventId)
52
+ allowedEvents.value = allowedEvents.value + setOfNotNull(event.eventId)
60
53
}
61
54
}
62
55
}
0 commit comments