|
|
@ -18,6 +18,7 @@ package io.element.android.features.roomdetails.impl |
|
|
|
|
|
|
|
|
|
|
|
import android.content.Context |
|
|
|
import android.content.Context |
|
|
|
import androidx.compose.runtime.Composable |
|
|
|
import androidx.compose.runtime.Composable |
|
|
|
|
|
|
|
import androidx.compose.runtime.rememberCoroutineScope |
|
|
|
import androidx.compose.ui.Modifier |
|
|
|
import androidx.compose.ui.Modifier |
|
|
|
import androidx.compose.ui.platform.LocalContext |
|
|
|
import androidx.compose.ui.platform.LocalContext |
|
|
|
import com.bumble.appyx.core.lifecycle.subscribe |
|
|
|
import com.bumble.appyx.core.lifecycle.subscribe |
|
|
@ -35,6 +36,8 @@ import io.element.android.libraries.matrix.api.permalink.PermalinkBuilder |
|
|
|
import io.element.android.libraries.matrix.api.room.MatrixRoom |
|
|
|
import io.element.android.libraries.matrix.api.room.MatrixRoom |
|
|
|
import io.element.android.libraries.matrix.api.room.RoomMember |
|
|
|
import io.element.android.libraries.matrix.api.room.RoomMember |
|
|
|
import io.element.android.services.analytics.api.AnalyticsService |
|
|
|
import io.element.android.services.analytics.api.AnalyticsService |
|
|
|
|
|
|
|
import kotlinx.coroutines.CoroutineScope |
|
|
|
|
|
|
|
import kotlinx.coroutines.launch |
|
|
|
import timber.log.Timber |
|
|
|
import timber.log.Timber |
|
|
|
import io.element.android.libraries.androidutils.R as AndroidUtilsR |
|
|
|
import io.element.android.libraries.androidutils.R as AndroidUtilsR |
|
|
|
|
|
|
|
|
|
|
@ -83,11 +86,9 @@ class RoomDetailsNode @AssistedInject constructor( |
|
|
|
callbacks.forEach { it.openPollHistory() } |
|
|
|
callbacks.forEach { it.openPollHistory() } |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private fun onShareRoom(context: Context) { |
|
|
|
private fun CoroutineScope.onShareRoom(context: Context) = launch { |
|
|
|
val alias = room.alias ?: room.alternativeAliases.firstOrNull() |
|
|
|
room.getPermalink() |
|
|
|
val permalinkResult = alias?.let { permalinkBuilder.permalinkForRoomAlias(it) } |
|
|
|
.onSuccess { permalink -> |
|
|
|
?: permalinkBuilder.permalinkForRoomId(room.roomId) |
|
|
|
|
|
|
|
permalinkResult.onSuccess { permalink -> |
|
|
|
|
|
|
|
context.startSharePlainTextIntent( |
|
|
|
context.startSharePlainTextIntent( |
|
|
|
activityResultLauncher = null, |
|
|
|
activityResultLauncher = null, |
|
|
|
chooserTitle = context.getString(R.string.screen_room_details_share_room_title), |
|
|
|
chooserTitle = context.getString(R.string.screen_room_details_share_room_title), |
|
|
@ -129,9 +130,10 @@ class RoomDetailsNode @AssistedInject constructor( |
|
|
|
override fun View(modifier: Modifier) { |
|
|
|
override fun View(modifier: Modifier) { |
|
|
|
val context = LocalContext.current |
|
|
|
val context = LocalContext.current |
|
|
|
val state = presenter.present() |
|
|
|
val state = presenter.present() |
|
|
|
|
|
|
|
val coroutineScope = rememberCoroutineScope() |
|
|
|
|
|
|
|
|
|
|
|
fun onShareRoom() { |
|
|
|
fun onShareRoom() { |
|
|
|
this.onShareRoom(context) |
|
|
|
coroutineScope.onShareRoom(context) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fun onShareMember(roomMember: RoomMember) { |
|
|
|
fun onShareMember(roomMember: RoomMember) { |
|
|
|