mirror of
https://github.com/element-hq/element-android
synced 2024-11-28 05:31:21 +03:00
Improve invite bottom sheet
This commit is contained in:
parent
6bf8202e65
commit
195fb6f6fc
1 changed files with 35 additions and 0 deletions
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package im.vector.app.features.spaces.invite
|
package im.vector.app.features.spaces.invite
|
||||||
|
|
||||||
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.airbnb.mvrx.ActivityViewModelContext
|
import com.airbnb.mvrx.ActivityViewModelContext
|
||||||
import com.airbnb.mvrx.Fail
|
import com.airbnb.mvrx.Fail
|
||||||
import com.airbnb.mvrx.FragmentViewModelContext
|
import com.airbnb.mvrx.FragmentViewModelContext
|
||||||
|
@ -32,7 +33,10 @@ import im.vector.app.core.platform.VectorViewModel
|
||||||
import im.vector.app.features.session.coroutineScope
|
import im.vector.app.features.session.coroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import org.matrix.android.sdk.api.extensions.tryOrNull
|
||||||
import org.matrix.android.sdk.api.session.Session
|
import org.matrix.android.sdk.api.session.Session
|
||||||
|
import org.matrix.android.sdk.api.session.room.model.Membership
|
||||||
|
import org.matrix.android.sdk.api.session.room.peeking.PeekResult
|
||||||
|
|
||||||
class SpaceInviteBottomSheetViewModel @AssistedInject constructor(
|
class SpaceInviteBottomSheetViewModel @AssistedInject constructor(
|
||||||
@Assisted private val initialState: SpaceInviteBottomSheetState,
|
@Assisted private val initialState: SpaceInviteBottomSheetState,
|
||||||
|
@ -57,6 +61,37 @@ class SpaceInviteBottomSheetViewModel @AssistedInject constructor(
|
||||||
peopleYouKnow = Success(peopleYouKnow)
|
peopleYouKnow = Success(peopleYouKnow)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (roomSummary.membership == Membership.INVITE) {
|
||||||
|
// we can try to query the room summary api to get more info?
|
||||||
|
viewModelScope.launch {
|
||||||
|
tryOrNull { session.peekRoom(roomSummary.roomId) }?.let { peekResult ->
|
||||||
|
when (peekResult) {
|
||||||
|
is PeekResult.Success -> {
|
||||||
|
setState {
|
||||||
|
copy(
|
||||||
|
summary = Success(
|
||||||
|
roomSummary.copy(
|
||||||
|
joinedMembersCount = peekResult.numJoinedMembers,
|
||||||
|
// it's also possible that the name/avatar did change since the invite..
|
||||||
|
// if it's null keep the old one as summary API might not be available
|
||||||
|
// and peek result could be null for other reasons (not peekable)
|
||||||
|
avatarUrl = peekResult.avatarUrl ?: roomSummary.avatarUrl,
|
||||||
|
displayName = peekResult.name ?: roomSummary.displayName,
|
||||||
|
topic = peekResult.topic ?: roomSummary.topic
|
||||||
|
// maybe use someMembers field later?
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue