diff --git a/app/src/main/java/org/futo/circles/feature/people/user/UserDialogFragment.kt b/app/src/main/java/org/futo/circles/feature/people/user/UserDialogFragment.kt
index 1597779069299a931e96dd6f368a2c712b4f2bc5..a1da0890eea356db98eb70c74e4d8034e8dc5a60 100644
--- a/app/src/main/java/org/futo/circles/feature/people/user/UserDialogFragment.kt
+++ b/app/src/main/java/org/futo/circles/feature/people/user/UserDialogFragment.kt
@@ -66,22 +66,25 @@ class UserDialogFragment : BaseFullscreenDialogFragment(DialogFragmentUserBindin
             addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL))
             adapter = usersCirclesAdapter
         }
+        val amIFollowing = viewModel.amIFollowingUser()
+        binding.btnUnFollow.apply {
+            setIsVisible(amIFollowing)
+            setOnClickListener { withConfirmation(UnfollowUser()) { viewModel.unFollowUser() } }
+        }
+        binding.btnInviteToConnect.apply {
+            setIsVisible(!amIFollowing)
+            setOnClickListener { viewModel.inviteToMySharedCircle() }
+        }
     }
 
     @SuppressLint("RestrictedApi")
     private fun setupMenu() {
         with(binding.toolbar) {
             (menu as? MenuBuilder)?.setOptionalIconsVisible(true)
-            menu.findItem(R.id.unFollow).isVisible = viewModel.amIFollowingUser()
             menu.findItem(R.id.ignore).isVisible = !isUserIgnored
             menu.findItem(R.id.unIgnore).isVisible = isUserIgnored
             setOnMenuItemClickListener { item ->
                 return@setOnMenuItemClickListener when (item.itemId) {
-                    R.id.unFollow -> {
-                        withConfirmation(UnfollowUser()) { viewModel.unFollowUser() }
-                        true
-                    }
-
                     R.id.ignore -> {
                         withConfirmation(IgnoreUser()) { viewModel.ignoreUser() }
                         true
diff --git a/app/src/main/java/org/futo/circles/feature/people/user/UserViewModel.kt b/app/src/main/java/org/futo/circles/feature/people/user/UserViewModel.kt
index 14adcf406e54a9ff27d4755de6c955a43b9b3f36..0dbaa784f50a54d471e8795d4148f353c402b1f8 100644
--- a/app/src/main/java/org/futo/circles/feature/people/user/UserViewModel.kt
+++ b/app/src/main/java/org/futo/circles/feature/people/user/UserViewModel.kt
@@ -13,6 +13,8 @@ import org.futo.circles.core.extensions.getOrThrow
 import org.futo.circles.core.extensions.launchBg
 import org.futo.circles.core.extensions.launchUi
 import org.futo.circles.core.feature.room.RoomRelationsBuilder
+import org.futo.circles.core.feature.room.invite.InviteRequestsDataSource
+import org.futo.circles.core.feature.workspace.SharedCircleDataSource
 import org.futo.circles.core.provider.MatrixSessionProvider
 import org.futo.circles.feature.people.UserOptionsDataSource
 import org.futo.circles.model.TimelineListItem
@@ -23,10 +25,13 @@ class UserViewModel @Inject constructor(
     savedStateHandle: SavedStateHandle,
     private val userDataSource: UserDataSource,
     private val userOptionsDataSource: UserOptionsDataSource,
-    private val roomRelationsBuilder: RoomRelationsBuilder
+    private val roomRelationsBuilder: RoomRelationsBuilder,
+    private val inviteRequestsDataSource: InviteRequestsDataSource,
+    sharedCircleDataSource: SharedCircleDataSource
 ) : ViewModel() {
 
     private val userId: String = savedStateHandle.getOrThrow("userId")
+    private val mySharedCircleSpaceId = sharedCircleDataSource.getSharedCirclesSpaceId() ?: ""
 
     val userLiveData = userDataSource.userLiveData
     val timelineLiveDataLiveData = MutableLiveData<List<TimelineListItem>>()
@@ -87,5 +92,11 @@ class UserViewModel @Inject constructor(
     }
 
     fun amIFollowingUser(): Boolean = userOptionsDataSource.amIFollowingUser(userId)
+    fun inviteToMySharedCircle() {
+        launchBg {
+            val result = inviteRequestsDataSource.inviteUser(mySharedCircleSpaceId, userId)
+            requestFollowLiveData.postValue(result)
+        }
+    }
 
 }
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_fragment_user.xml b/app/src/main/res/layout/dialog_fragment_user.xml
index 4de5e4250447602beb1c9090832d4ef128ee4f0f..5e34c60a36874d0752754544cd3cebe053573439 100644
--- a/app/src/main/res/layout/dialog_fragment_user.xml
+++ b/app/src/main/res/layout/dialog_fragment_user.xml
@@ -70,6 +70,42 @@
         app:layout_constraintTop_toBottomOf="@id/tvUserName"
         tools:text="texsdt" />
 
+    <com.google.android.material.button.MaterialButton
+        android:id="@+id/btnUnFollow"
+        style="@style/NegativeButtonStyle"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="8dp"
+        android:text="@string/unfollow"
+        android:textSize="12sp"
+        android:visibility="gone"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/tvUserId"
+        tools:visibility="visible" />
+
+    <com.google.android.material.button.MaterialButton
+        android:id="@+id/btnInviteToConnect"
+        style="@style/AccentButtonStyle"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="8dp"
+        android:text="@string/invite_to_connect"
+        android:textSize="12sp"
+        android:visibility="gone"
+        app:icon="@drawable/ic_link"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/tvUserId"
+        tools:visibility="visible" />
+
+    <androidx.constraintlayout.widget.Barrier
+        android:id="@+id/buttonsBarier"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        app:barrierDirection="bottom"
+        app:constraint_referenced_ids="btnInviteToConnect,btnUnFollow" />
+
 
     <View
         android:id="@+id/divider"
@@ -79,7 +115,7 @@
         android:background="@color/divider_color"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/tvUserId" />
+        app:layout_constraintTop_toBottomOf="@id/buttonsBarier" />
 
 
     <org.futo.circles.core.view.LoadingRecyclerView
diff --git a/app/src/main/res/menu/user_menu.xml b/app/src/main/res/menu/user_menu.xml
index c9aff5dc61aca5ae31d159908ddafa6b4732f698..6a03cbf1c147e71db0da6953fe16d4146d08ca65 100644
--- a/app/src/main/res/menu/user_menu.xml
+++ b/app/src/main/res/menu/user_menu.xml
@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <item
-        android:id="@+id/unFollow"
-        android:icon="@drawable/ic_unfollow"
-        android:title="@string/unfollow" />
 
     <item
         android:id="@+id/ignore"