diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationList.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationList.kt
index 5a39243773ea8d6719fb3ed2850c4020eda53892..f716f77b6c1c5ca2634ae46b38e8e15cfec673bb 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationList.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationList.kt
@@ -155,7 +155,8 @@ fun main() = preview(
                     { _, it -> it.markRead() }
                 )
             },
-            respondToRequest = { _, _ -> },
+            respondToRequest = { _,_ -> },
+            openRequestedShareable = {},
             deleteMessage = {},
         )
     }
@@ -170,6 +171,7 @@ fun ConversationList(
     onMessageAddedToBottom: SingleStateEvent<ConversationViewModel.MessageAddedType>,
     markMessagesRead: (List<Int>) -> Unit,
     respondToRequest: (ConversationRequestItem, Boolean) -> Unit,
+    openRequestedShareable: (ConversationRequestItem) -> Unit,
     deleteMessage: (MessageId) -> Unit,
 ) {
     // we need to make sure the ConversationList is out of composition before showing new messages
@@ -201,6 +203,7 @@ fun ConversationList(
                         ConversationRequestItemView(
                             m,
                             onResponse = { accept -> respondToRequest(m, accept) },
+                            onOpenRequestedShareable = { openRequestedShareable(m) },
                             onDelete = deleteMessage
                         )
                 }
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationScreen.kt
index 0826283aa4b79519d97e93bf63d1f80c1d697cbe..52cc79a1c819b76abaa0f890f5bdfa119c6838d9 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationScreen.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationScreen.kt
@@ -29,16 +29,17 @@ import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
 import org.briarproject.bramble.api.contact.ContactId
+import org.briarproject.briar.api.sharing.Shareable
 import org.briarproject.briar.desktop.contact.ContactInfoDrawer
 import org.briarproject.briar.desktop.contact.ContactInfoDrawerState
 import org.briarproject.briar.desktop.ui.Loader
 import org.briarproject.briar.desktop.ui.getInfoDrawerHandler
 import org.briarproject.briar.desktop.viewmodel.viewModel
 
-@OptIn(ExperimentalMaterialApi::class)
 @Composable
 fun ConversationScreen(
     contactId: ContactId,
+    openRequestedShareable: (ConversationRequestItem) -> Unit,
     viewModel: ConversationViewModel = viewModel(),
 ) {
     LaunchedEffect(contactId) {
@@ -103,6 +104,7 @@ fun ConversationScreen(
                     viewModel.onMessageAddedToBottom,
                     viewModel::markMessagesRead,
                     viewModel::respondToRequest,
+                    openRequestedShareable,
                     viewModel::deleteMessage,
                 )
             },
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt
index 42065c51fbebd05694032f75d8096e7f85b9de06..4e088e4d2b9e18fa65788245c71c804ad43ab833 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/PrivateMessageScreen.kt
@@ -52,6 +52,7 @@ import org.briarproject.briar.desktop.viewmodel.viewModel
 
 @Composable
 fun PrivateMessageScreen(
+    openRequestedShareable: (ConversationRequestItem) -> Unit,
     viewModel: ContactListViewModel = viewModel(),
     addContactViewModel: AddContactViewModel = viewModel(),
 ) {
@@ -85,7 +86,7 @@ fun PrivateMessageScreen(
                 NoContactSelected()
             } else when (id) {
                 is RealContactIdWrapper -> {
-                    ConversationScreen(id.contactId)
+                    ConversationScreen(id.contactId, openRequestedShareable)
                 }
                 is PendingContactIdWrapper -> {
                     PendingContactSelected()
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/SidebarViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/SidebarViewModel.kt
index 223e98e9ab737db652fe8dd3a5f615267411fa33..7586506cc0fc6bb2a74ae364fcaf5ea822a99bf0 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/SidebarViewModel.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/SidebarViewModel.kt
@@ -20,10 +20,15 @@ package org.briarproject.briar.desktop.navigation
 
 import androidx.compose.runtime.State
 import androidx.compose.runtime.mutableStateOf
+import mu.KotlinLogging
 import org.briarproject.bramble.api.identity.IdentityManager
 import org.briarproject.bramble.api.identity.LocalAuthor
+import org.briarproject.briar.desktop.conversation.ConversationRequestItem
+import org.briarproject.briar.desktop.conversation.ConversationRequestItem.RequestType.FORUM
 import org.briarproject.briar.desktop.ui.UiMode
+import org.briarproject.briar.desktop.utils.KLoggerUtils.w
 import org.briarproject.briar.desktop.viewmodel.ViewModel
+import org.briarproject.briar.desktop.viewmodel.asState
 import javax.inject.Inject
 
 class SidebarViewModel
@@ -32,6 +37,10 @@ constructor(
     private val identityManager: IdentityManager,
 ) : ViewModel() {
 
+    companion object {
+        private val LOG = KotlinLogging.logger {}
+    }
+
     override fun onInit() {
         loadAccountInfo()
     }
@@ -39,8 +48,8 @@ constructor(
     private var _uiMode = mutableStateOf(UiMode.CONTACTS)
     private var _account = mutableStateOf<LocalAuthor?>(null)
 
-    val uiMode: State<UiMode> = _uiMode
-    val account: State<LocalAuthor?> = _account
+    val uiMode = _uiMode.asState()
+    val account = _account.asState()
 
     fun setUiMode(uiMode: UiMode) {
         _uiMode.value = uiMode
@@ -49,4 +58,11 @@ constructor(
     fun loadAccountInfo() {
         _account.value = identityManager.localAuthor
     }
+
+    fun openRequestedShareable(m: ConversationRequestItem) {
+        when (m.requestType) {
+            FORUM -> setUiMode(UiMode.FORUMS)
+            else -> LOG.w { "Currently only forums are supported." }
+        }
+    }
 }
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt
index 4dcdf9c52c98192b165f3c78641c0b546f2fb592..94b53bf2d6961ae83a54b1c8c8f962a7f89509ab 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt
@@ -27,6 +27,8 @@ import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.runtime.staticCompositionLocalOf
+import org.briarproject.briar.desktop.conversation.ConversationRequestItem
+import org.briarproject.briar.desktop.conversation.ConversationRequestItem.RequestType.FORUM
 import org.briarproject.briar.desktop.conversation.PrivateMessageScreen
 import org.briarproject.briar.desktop.forums.ForumScreen
 import org.briarproject.briar.desktop.navigation.BriarSidebar
@@ -58,7 +60,7 @@ fun MainScreen(viewModel: SidebarViewModel = viewModel()) {
                 )
                 VerticalDivider()
                 when (viewModel.uiMode.value) {
-                    UiMode.CONTACTS -> PrivateMessageScreen()
+                    UiMode.CONTACTS -> PrivateMessageScreen(viewModel::openRequestedShareable)
                     UiMode.GROUPS -> PrivateGroupScreen()
                     UiMode.FORUMS -> ForumScreen()
                     UiMode.SETTINGS -> SettingsScreen()