diff --git a/app/build.gradle b/app/build.gradle index 3a2ef5b0a..743c506a3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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' diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/GroupInfoFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/GroupInfoFragment.kt index 2cd186b44..7ce8324ee 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/GroupInfoFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/GroupInfoFragment.kt @@ -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 + } } diff --git a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoViewModel.kt b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoViewModel.kt index e46323c2a..dde83991b 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/GroupInfoViewModel.kt @@ -54,6 +54,10 @@ class GroupInfoViewModel(val chatRoom: ChatRoom?) : ErrorReportingViewModel() { val waitForChatRoomCreation = MutableLiveData() + val meAdminChangedEvent: MutableLiveData> by lazy { + MutableLiveData>() + } + 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() } } diff --git a/app/src/main/java/org/linphone/activities/main/viewmodels/DialogViewModel.kt b/app/src/main/java/org/linphone/activities/main/viewmodels/DialogViewModel.kt index ded7e54f8..4d39bc07d 100644 --- a/app/src/main/java/org/linphone/activities/main/viewmodels/DialogViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/viewmodels/DialogViewModel.kt @@ -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 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e28bd39f0..8e9991554 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -140,6 +140,8 @@ Leave the group Leave Do you want to leave this conversation? + You are now admin + You are no longer admin Delivery status Read Delivered