Skip to content
This repository was archived by the owner on May 23, 2025. It is now read-only.

Commit 49140d6

Browse files
committed
Add helper for determining whether to show media
1 parent 59bc7f6 commit 49140d6

File tree

8 files changed

+15
-21
lines changed

8 files changed

+15
-21
lines changed

app/src/main/java/com/keylesspalace/tusky/components/notifications/requests/details/NotificationRequestDetailsRemoteMediator.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,11 @@ class NotificationRequestDetailsRemoteMediator(
7070
val alwaysShowSensitiveMedia = viewModel.accountManager.activeAccount?.alwaysShowSensitiveMedia == true
7171
val alwaysOpenSpoiler = viewModel.accountManager.activeAccount?.alwaysOpenSpoiler == false
7272
val notificationData = notifications.map { notification ->
73-
val filter = notification.status?.getApplicableFilter(Filter.Kind.NOTIFICATIONS)
7473
notification.toViewData(
75-
isShowingContent = alwaysShowSensitiveMedia || filter?.action != Filter.Action.BLUR,
74+
isShowingContent = notification.status?.shouldShowContent(alwaysShowSensitiveMedia, Filter.Kind.NOTIFICATIONS) ?: true,
7675
isExpanded = alwaysOpenSpoiler,
7776
isCollapsed = true,
78-
filter = filter,
77+
filter = notification.status?.getApplicableFilter(Filter.Kind.NOTIFICATIONS),
7978
)
8079
}
8180

app/src/main/java/com/keylesspalace/tusky/components/search/SearchViewModel.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,11 @@ class SearchViewModel @Inject constructor(
7070
private val statusesPagingSourceFactory =
7171
SearchPagingSourceFactory(mastodonApi, SearchType.Status, loadedStatuses) {
7272
it.statuses.map { status ->
73-
val filter = status.getApplicableFilter(Filter.Kind.PUBLIC)
7473
status.toViewData(
75-
isShowingContent = alwaysShowSensitiveMedia || (!status.actionableStatus.sensitive && filter?.action != Filter.Action.BLUR),
74+
isShowingContent = status.shouldShowContent(alwaysShowSensitiveMedia, Filter.Kind.PUBLIC),
7675
isExpanded = alwaysOpenSpoiler,
7776
isCollapsed = true,
78-
filter = filter,
77+
filter = status.getApplicableFilter(Filter.Kind.PUBLIC),
7978
)
8079
}.apply {
8180
loadedStatuses.addAll(this)

app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineRemoteMediator.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import com.keylesspalace.tusky.db.entity.AccountEntity
2929
import com.keylesspalace.tusky.db.entity.HomeTimelineData
3030
import com.keylesspalace.tusky.db.entity.HomeTimelineEntity
3131
import com.keylesspalace.tusky.db.entity.TimelineStatusEntity
32-
import com.keylesspalace.tusky.entity.Filter
3332
import com.keylesspalace.tusky.entity.Status
3433
import com.keylesspalace.tusky.network.MastodonApi
3534
import retrofit2.HttpException
@@ -161,9 +160,8 @@ class CachedTimelineRemoteMediator(
161160
if (oldStatus != null) break
162161
}
163162

164-
val filter = status.getApplicableFilter(viewModel.kind.toFilterKind())
165163
val expanded = oldStatus?.expanded ?: activeAccount.alwaysOpenSpoiler
166-
val contentShowing = oldStatus?.contentShowing ?: (activeAccount.alwaysShowSensitiveMedia || (!status.actionableStatus.sensitive && filter?.action != Filter.Action.BLUR))
164+
val contentShowing = oldStatus?.contentShowing ?: status.shouldShowContent(activeAccount.alwaysShowSensitiveMedia, viewModel.kind.toFilterKind())
167165
val contentCollapsed = oldStatus?.contentCollapsed != false
168166

169167
statusDao.insert(

app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,13 +207,12 @@ class CachedTimelineViewModel @Inject constructor(
207207
?.let { rebloggedAccount ->
208208
accountDao.insert(rebloggedAccount)
209209
}
210-
val filter = status.getApplicableFilter(kind.toFilterKind())
211210
statusDao.insert(
212211
status.actionableStatus.toEntity(
213212
tuskyAccountId = accountId,
214213
expanded = account.alwaysOpenSpoiler,
215-
contentShowing = account.alwaysShowSensitiveMedia || (!status.actionableStatus.sensitive && filter?.action != Filter.Action.BLUR),
216-
contentCollapsed = true
214+
contentShowing = status.shouldShowContent(account.alwaysShowSensitiveMedia, kind.toFilterKind()),
215+
contentCollapsed = true,
217216
)
218217
)
219218
timelineDao.insertHomeTimelineItem(

app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineRemoteMediator.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import androidx.paging.LoadType
2121
import androidx.paging.PagingState
2222
import androidx.paging.RemoteMediator
2323
import com.keylesspalace.tusky.components.timeline.util.ifExpected
24-
import com.keylesspalace.tusky.entity.Filter
2524
import com.keylesspalace.tusky.util.HttpHeaderLink
2625
import com.keylesspalace.tusky.util.toViewData
2726
import com.keylesspalace.tusky.viewdata.StatusViewData
@@ -76,7 +75,7 @@ class NetworkTimelineRemoteMediator(
7675
}?.asStatusOrNull()
7776

7877
val filter = oldStatus?.filter ?: status.getApplicableFilter(viewModel.kind.toFilterKind())
79-
val contentShowing = oldStatus?.isShowingContent ?: (activeAccount.alwaysShowSensitiveMedia || (!status.actionableStatus.sensitive && filter?.action != Filter.Action.BLUR))
78+
val contentShowing = oldStatus?.isShowingContent ?: status.shouldShowContent(activeAccount.alwaysShowSensitiveMedia, viewModel.kind.toFilterKind())
8079
val expanded = oldStatus?.isExpanded ?: activeAccount.alwaysOpenSpoiler
8180
val contentCollapsed = oldStatus?.isCollapsed != false
8281

app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,12 +222,11 @@ class NetworkTimelineViewModel @Inject constructor(
222222

223223
val activeAccount = accountManager.activeAccount!!
224224
val data: MutableList<StatusViewData> = statuses.map { status ->
225-
val filter = status.getApplicableFilter(kind.toFilterKind())
226225
status.toViewData(
227-
isShowingContent = activeAccount.alwaysShowSensitiveMedia || (!status.actionableStatus.sensitive && filter?.action != Filter.Action.BLUR),
226+
isShowingContent = status.shouldShowContent(activeAccount.alwaysShowSensitiveMedia, kind.toFilterKind()),
228227
isExpanded = activeAccount.alwaysOpenSpoiler,
229228
isCollapsed = true,
230-
filter = filter,
229+
filter = status.getApplicableFilter(kind.toFilterKind()),
231230
)
232231
}.toMutableList()
233232

app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadViewModel.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -432,14 +432,12 @@ class ViewThreadViewModel @Inject constructor(
432432
val oldStatus = (_uiState.value as? ThreadUiState.Success)?.statusViewData?.find {
433433
it.id == this.id
434434
}
435-
val filter = oldStatus?.filter ?: actionableStatus.getApplicableFilter(Filter.Kind.THREAD)
436435
return toViewData(
437-
isShowingContent = oldStatus?.isShowingContent
438-
?: (alwaysShowSensitiveMedia || (!actionableStatus.sensitive && filter?.action != Filter.Action.BLUR)),
436+
isShowingContent = oldStatus?.isShowingContent ?: actionableStatus.shouldShowContent(alwaysShowSensitiveMedia, Filter.Kind.THREAD),
439437
isExpanded = oldStatus?.isExpanded ?: alwaysOpenSpoiler,
440438
isCollapsed = oldStatus?.isCollapsed ?: !isDetailed,
441439
isDetailed = oldStatus?.isDetailed ?: isDetailed,
442-
filter = filter,
440+
filter = oldStatus?.filter ?: actionableStatus.getApplicableFilter(Filter.Kind.THREAD),
443441
)
444442
}
445443

app/src/main/java/com/keylesspalace/tusky/entity/Status.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,9 @@ data class Status(
161161
fun getApplicableFilter(kind: Filter.Kind): Filter? =
162162
actionableStatus.filtered?.filter { it.filter.context.contains(kind) }?.maxByOrNull { it.filter.action.ordinal }?.filter
163163

164+
fun shouldShowContent(alwayShowSensitiveContent: Boolean, context: Filter.Kind): Boolean =
165+
alwayShowSensitiveContent || (!actionableStatus.sensitive && getApplicableFilter(context)?.action != Filter.Action.BLUR)
166+
164167
@JsonClass(generateAdapter = true)
165168
data class Mention(
166169
val id: String,

0 commit comments

Comments
 (0)