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/')
|
url file(LinphoneSdkBuildDir + '/maven_repository/')
|
||||||
}
|
}
|
||||||
|
|
||||||
maven {
|
/*maven {
|
||||||
url "https://linphone.org/maven_repository"
|
url "https://linphone.org/maven_repository"
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
@ -152,7 +152,7 @@ dependencies {
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||||
implementation "androidx.media:media: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.core:core-ktx:1.3.0'
|
||||||
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.2'
|
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.2'
|
||||||
implementation 'androidx.navigation:navigation-ui-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 viewModel: GroupInfoViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
private lateinit var sharedViewModel: SharedMainViewModel
|
||||||
private lateinit var adapter: GroupInfoParticipantsAdapter
|
private lateinit var adapter: GroupInfoParticipantsAdapter
|
||||||
|
private var meAdminStatusChangedDialog: Dialog? = null
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
|
@ -93,8 +94,14 @@ class GroupInfoFragment : Fragment() {
|
||||||
adapter.submitList(it)
|
adapter.submitList(it)
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.isMeAdmin.observe(viewLifecycleOwner, Observer {
|
viewModel.isMeAdmin.observe(viewLifecycleOwner, Observer { isMeAdmin ->
|
||||||
adapter.showAdminControls(it && chatRoom != null)
|
adapter.showAdminControls(isMeAdmin && chatRoom != null)
|
||||||
|
})
|
||||||
|
|
||||||
|
viewModel.meAdminChangedEvent.observe(viewLifecycleOwner, Observer {
|
||||||
|
it.consume { isMeAdmin ->
|
||||||
|
showMeAdminStateChanged(isMeAdmin)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.participantRemovedEvent.observe(viewLifecycleOwner, Observer {
|
adapter.participantRemovedEvent.observe(viewLifecycleOwner, Observer {
|
||||||
|
@ -191,4 +198,23 @@ class GroupInfoFragment : Fragment() {
|
||||||
findNavController().navigate(R.id.action_groupInfoFragment_to_detailChatRoomFragment)
|
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 waitForChatRoomCreation = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
|
val meAdminChangedEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||||
|
MutableLiveData<Event<Boolean>>()
|
||||||
|
}
|
||||||
|
|
||||||
private val listener = object : ChatRoomListenerStub() {
|
private val listener = object : ChatRoomListenerStub() {
|
||||||
override fun onStateChanged(chatRoom: ChatRoom, state: ChatRoom.State) {
|
override fun onStateChanged(chatRoom: ChatRoom, state: ChatRoom.State) {
|
||||||
if (state == ChatRoom.State.Created) {
|
if (state == ChatRoom.State.Created) {
|
||||||
|
@ -79,7 +83,9 @@ class GroupInfoViewModel(val chatRoom: ChatRoom?) : ErrorReportingViewModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onParticipantAdminStatusChanged(chatRoom: ChatRoom?, eventLog: EventLog?) {
|
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()
|
updateParticipants()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,7 +73,7 @@ class DialogViewModel(val message: String, val title: String = "") : ViewModel()
|
||||||
var okLabel: String = "OK"
|
var okLabel: String = "OK"
|
||||||
private var onOk: (Boolean) -> Unit = {}
|
private var onOk: (Boolean) -> Unit = {}
|
||||||
|
|
||||||
fun showOkButton(ok: (Boolean) -> Unit, label: String) {
|
fun showOkButton(ok: (Boolean) -> Unit, label: String = okLabel) {
|
||||||
showOk = true
|
showOk = true
|
||||||
onOk = ok
|
onOk = ok
|
||||||
okLabel = label
|
okLabel = label
|
||||||
|
|
|
@ -140,6 +140,8 @@
|
||||||
<string name="chat_room_group_info_leave">Leave the group</string>
|
<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_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_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_info">Delivery status</string>
|
||||||
<string name="chat_message_imdn_displayed">Read</string>
|
<string name="chat_message_imdn_displayed">Read</string>
|
||||||
<string name="chat_message_imdn_delivered">Delivered</string>
|
<string name="chat_message_imdn_delivered">Delivered</string>
|
||||||
|
|
Loading…
Reference in a new issue