Show popup when admin status change while on group info fragment
This commit is contained in:
parent
85a843b9ad
commit
20c0b611d0
5 changed files with 41 additions and 7 deletions
|
@ -142,9 +142,9 @@ repositories {
|
|||
url file(LinphoneSdkBuildDir + '/maven_repository/')
|
||||
}
|
||||
|
||||
maven {
|
||||
/*maven {
|
||||
url "https://linphone.org/maven_repository"
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
@ -152,7 +152,7 @@ dependencies {
|
|||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||
implementation "androidx.media:media:1.1.0"
|
||||
implementation 'androidx.fragment:fragment-ktx:1.2.4'
|
||||
implementation 'androidx.fragment:fragment-ktx:1.2.5'
|
||||
implementation 'androidx.core:core-ktx:1.3.0'
|
||||
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.2'
|
||||
implementation 'androidx.navigation:navigation-ui-ktx:2.2.2'
|
||||
|
|
|
@ -49,6 +49,7 @@ class GroupInfoFragment : Fragment() {
|
|||
private lateinit var viewModel: GroupInfoViewModel
|
||||
private lateinit var sharedViewModel: SharedMainViewModel
|
||||
private lateinit var adapter: GroupInfoParticipantsAdapter
|
||||
private var meAdminStatusChangedDialog: Dialog? = null
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
|
@ -93,8 +94,14 @@ class GroupInfoFragment : Fragment() {
|
|||
adapter.submitList(it)
|
||||
})
|
||||
|
||||
viewModel.isMeAdmin.observe(viewLifecycleOwner, Observer {
|
||||
adapter.showAdminControls(it && chatRoom != null)
|
||||
viewModel.isMeAdmin.observe(viewLifecycleOwner, Observer { isMeAdmin ->
|
||||
adapter.showAdminControls(isMeAdmin && chatRoom != null)
|
||||
})
|
||||
|
||||
viewModel.meAdminChangedEvent.observe(viewLifecycleOwner, Observer {
|
||||
it.consume { isMeAdmin ->
|
||||
showMeAdminStateChanged(isMeAdmin)
|
||||
}
|
||||
})
|
||||
|
||||
adapter.participantRemovedEvent.observe(viewLifecycleOwner, Observer {
|
||||
|
@ -191,4 +198,23 @@ class GroupInfoFragment : Fragment() {
|
|||
findNavController().navigate(R.id.action_groupInfoFragment_to_detailChatRoomFragment)
|
||||
}
|
||||
}
|
||||
|
||||
private fun showMeAdminStateChanged(isMeAdmin: Boolean) {
|
||||
meAdminStatusChangedDialog?.dismiss()
|
||||
|
||||
val message = if (isMeAdmin) {
|
||||
getString(R.string.chat_room_group_info_you_are_now_admin)
|
||||
} else {
|
||||
getString(R.string.chat_room_group_info_you_are_no_longer_admin)
|
||||
}
|
||||
val dialogViewModel = DialogViewModel(message)
|
||||
val dialog = DialogUtils.getDialog(requireContext(), dialogViewModel)
|
||||
|
||||
dialogViewModel.showOkButton({
|
||||
dialog.dismiss()
|
||||
})
|
||||
|
||||
dialog.show()
|
||||
meAdminStatusChangedDialog = dialog
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,6 +54,10 @@ class GroupInfoViewModel(val chatRoom: ChatRoom?) : ErrorReportingViewModel() {
|
|||
|
||||
val waitForChatRoomCreation = MutableLiveData<Boolean>()
|
||||
|
||||
val meAdminChangedEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
|
||||
private val listener = object : ChatRoomListenerStub() {
|
||||
override fun onStateChanged(chatRoom: ChatRoom, state: ChatRoom.State) {
|
||||
if (state == ChatRoom.State.Created) {
|
||||
|
@ -79,7 +83,9 @@ class GroupInfoViewModel(val chatRoom: ChatRoom?) : ErrorReportingViewModel() {
|
|||
}
|
||||
|
||||
override fun onParticipantAdminStatusChanged(chatRoom: ChatRoom?, eventLog: EventLog?) {
|
||||
isMeAdmin.value = chatRoom?.me?.isAdmin
|
||||
val admin = chatRoom?.me?.isAdmin ?: false
|
||||
isMeAdmin.value = admin
|
||||
meAdminChangedEvent.value = Event(admin)
|
||||
updateParticipants()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@ class DialogViewModel(val message: String, val title: String = "") : ViewModel()
|
|||
var okLabel: String = "OK"
|
||||
private var onOk: (Boolean) -> Unit = {}
|
||||
|
||||
fun showOkButton(ok: (Boolean) -> Unit, label: String) {
|
||||
fun showOkButton(ok: (Boolean) -> Unit, label: String = okLabel) {
|
||||
showOk = true
|
||||
onOk = ok
|
||||
okLabel = label
|
||||
|
|
|
@ -140,6 +140,8 @@
|
|||
<string name="chat_room_group_info_leave">Leave the group</string>
|
||||
<string name="chat_room_group_info_leave_dialog_button">Leave</string>
|
||||
<string name="chat_room_group_info_leave_dialog_message">Do you want to leave this conversation?</string>
|
||||
<string name="chat_room_group_info_you_are_now_admin">You are now admin</string>
|
||||
<string name="chat_room_group_info_you_are_no_longer_admin">You are no longer admin</string>
|
||||
<string name="chat_message_imdn_info">Delivery status</string>
|
||||
<string name="chat_message_imdn_displayed">Read</string>
|
||||
<string name="chat_message_imdn_delivered">Delivered</string>
|
||||
|
|
Loading…
Reference in a new issue