@@ -22,6 +22,7 @@ import android.os.Build
2222import androidx.core.content.getSystemService
2323import androidx.core.content.pm.ShortcutManagerCompat
2424import im.vector.app.core.di.ActiveSessionHolder
25+ import im.vector.app.features.pin.PinCodeStore
2526import io.reactivex.disposables.Disposable
2627import io.reactivex.disposables.Disposables
2728import org.matrix.android.sdk.api.session.room.RoomSortOrder
@@ -35,7 +36,8 @@ import javax.inject.Inject
3536class ShortcutsHandler @Inject constructor(
3637 private val context : Context ,
3738 private val shortcutCreator : ShortcutCreator ,
38- private val activeSessionHolder : ActiveSessionHolder
39+ private val activeSessionHolder : ActiveSessionHolder ,
40+ private val pinCodeStore : PinCodeStore
3941) {
4042
4143 fun observeRoomsAndBuildShortcuts (): Disposable {
@@ -61,7 +63,6 @@ class ShortcutsHandler @Inject constructor(
6163 }
6264 }
6365
64-
6566 private fun removeDeadShortcut (roomIds : List <String >) {
6667 val deadShortcutIds = ShortcutManagerCompat .getShortcuts(context, ShortcutManagerCompat .FLAG_MATCH_DYNAMIC )
6768 .map { it.id }
@@ -79,12 +80,17 @@ class ShortcutsHandler @Inject constructor(
7980 }
8081
8182 private fun createShortcuts (rooms : List <RoomSummary >) {
82- val shortcuts = rooms.mapIndexed { index, room ->
83- shortcutCreator.create(room, index)
84- }
83+ if (pinCodeStore.getEncodedPin() != null ) {
84+ // No shortcut in this case (privacy)
85+ ShortcutManagerCompat .removeAllDynamicShortcuts(context)
86+ } else {
87+ val shortcuts = rooms.mapIndexed { index, room ->
88+ shortcutCreator.create(room, index)
89+ }
8590
86- shortcuts.forEach { shortcut ->
87- ShortcutManagerCompat .pushDynamicShortcut(context, shortcut)
91+ shortcuts.forEach { shortcut ->
92+ ShortcutManagerCompat .pushDynamicShortcut(context, shortcut)
93+ }
8894 }
8995 }
9096
0 commit comments