Add a way to go to Help page from assistant

This commit is contained in:
Sylvain Berfini 2025-07-07 15:10:23 +02:00
parent bb81957aab
commit 028ece407c
10 changed files with 109 additions and 22 deletions

View file

@ -78,6 +78,14 @@ class LandingFragment : GenericFragment() {
requireActivity().finish()
}
binding.setHelpClickListener {
if (findNavController().currentDestination?.id == R.id.landingFragment) {
val action =
LandingFragmentDirections.actionLandingFragmentToHelpFragment()
findNavController().navigate(action)
}
}
binding.setRegisterClickListener {
if (viewModel.conditionsAndPrivacyPolicyAccepted) {
goToRegisterFragment()

View file

@ -66,7 +66,6 @@ import org.linphone.databinding.MainActivityBinding
import org.linphone.ui.GenericActivity
import org.linphone.ui.assistant.AssistantActivity
import org.linphone.ui.main.chat.fragment.ConversationsListFragmentDirections
import org.linphone.ui.main.help.fragment.DebugFragmentDirections
import org.linphone.utils.PasswordDialogModel
import org.linphone.ui.main.sso.fragment.SingleSignOnFragmentDirections
import org.linphone.ui.main.viewmodel.MainViewModel
@ -722,8 +721,13 @@ class MainActivity : GenericActivity() {
sharedViewModel.showConversationEvent.value = Event(conversationId)
}
val action = DebugFragmentDirections.actionDebugFragmentToConversationsListFragment()
findNavController().navigate(action)
val action = ConversationsListFragmentDirections.actionGlobalConversationsListFragment()
val options = NavOptions.Builder()
options.apply {
setPopUpTo(R.id.helpFragment, true)
setLaunchSingleTop(true)
}
findNavController().navigate(action, options.build())
} else {
val conversationId = parseShortcutIfAny(intent)
if (conversationId != null) {

View file

@ -28,22 +28,22 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import androidx.navigation.navGraphViewModels
import org.linphone.R
import org.linphone.core.tools.Log
import org.linphone.databinding.HelpDebugFragmentBinding
import org.linphone.ui.GenericActivity
import org.linphone.ui.assistant.AssistantActivity
import org.linphone.ui.fileviewer.FileViewerActivity
import org.linphone.ui.main.MainActivity
import org.linphone.ui.main.fragment.GenericMainFragment
import org.linphone.ui.main.help.viewmodel.HelpViewModel
class DebugFragment : GenericMainFragment() {
private lateinit var binding: HelpDebugFragmentBinding
val viewModel: HelpViewModel by navGraphViewModels(
R.id.main_nav_graph
)
private lateinit var viewModel: HelpViewModel
override fun onCreateView(
inflater: LayoutInflater,
@ -57,9 +57,13 @@ class DebugFragment : GenericMainFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.lifecycleOwner = viewLifecycleOwner
viewModel = ViewModelProvider(this)[HelpViewModel::class.java]
binding.viewModel = viewModel
observeToastEvents(viewModel)
viewModel.canConfigFileBeViewed.postValue(requireActivity() is MainActivity)
binding.setBackClickListener {
goBack()
}
@ -91,6 +95,13 @@ class DebugFragment : GenericMainFragment() {
viewModel.uploadDebugLogsFinishedEvent.observe(viewLifecycleOwner) {
it.consume { url ->
if (requireActivity() is AssistantActivity) {
val clipboard = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val label = "Logs upload URL"
clipboard.setPrimaryClip(ClipData.newPlainText(label, url))
return@consume
}
val appName = requireContext().getString(R.string.app_name)
val intent = Intent(Intent.ACTION_SEND)
intent.putExtra(

View file

@ -27,7 +27,6 @@ import android.view.View
import android.view.ViewGroup
import androidx.annotation.UiThread
import androidx.navigation.fragment.findNavController
import androidx.navigation.navGraphViewModels
import org.linphone.R
import org.linphone.core.tools.Log
import org.linphone.databinding.HelpFragmentBinding
@ -37,6 +36,7 @@ import org.linphone.ui.main.help.viewmodel.HelpViewModel
import org.linphone.utils.ConfirmationDialogModel
import org.linphone.utils.DialogUtils
import androidx.core.net.toUri
import androidx.lifecycle.ViewModelProvider
@UiThread
class HelpFragment : GenericMainFragment() {
@ -46,9 +46,7 @@ class HelpFragment : GenericMainFragment() {
private lateinit var binding: HelpFragmentBinding
val viewModel: HelpViewModel by navGraphViewModels(
R.id.main_nav_graph
)
private lateinit var viewModel: HelpViewModel
override fun onCreateView(
inflater: LayoutInflater,
@ -62,6 +60,8 @@ class HelpFragment : GenericMainFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.lifecycleOwner = viewLifecycleOwner
viewModel = ViewModelProvider(this)[HelpViewModel::class.java]
binding.viewModel = viewModel
observeToastEvents(viewModel)

View file

@ -62,6 +62,8 @@ class HelpViewModel
val logsUploadInProgress = MutableLiveData<Boolean>()
val canConfigFileBeViewed = MutableLiveData<Boolean>()
val newVersionAvailableEvent: MutableLiveData<Event<Pair<String, String>>> by lazy {
MutableLiveData<Event<Pair<String, String>>>()
}

View file

@ -8,6 +8,9 @@
<variable
name="backClickListener"
type="View.OnClickListener" />
<variable
name="helpClickListener"
type="View.OnClickListener" />
<variable
name="forgottenPasswordClickListener"
type="View.OnClickListener" />
@ -80,6 +83,23 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/back"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:id="@+id/help"
android:onClick="@{helpClickListener}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:text="@string/help_title"
android:textSize="14sp"
android:textColor="?attr/color_main2_500"
android:drawableStart="@drawable/question"
android:drawablePadding="5dp"
app:drawableTint="?attr/color_main2_500"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:id="@+id/no_account_yet"
@ -102,15 +122,14 @@
android:onClick="@{registerClickListener}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:layout_marginEnd="40dp"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="@string/assistant_account_register"
android:visibility="@{viewModel.hideCreateAccount ? View.GONE : View.VISIBLE}"
app:layout_constraintVertical_bias="1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/title"
app:layout_constraintBottom_toBottomOf="@id/title"/>
app:layout_constraintTop_toBottomOf="@id/help"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/header_style"

View file

@ -8,6 +8,9 @@
<variable
name="backClickListener"
type="View.OnClickListener" />
<variable
name="helpClickListener"
type="View.OnClickListener" />
<variable
name="forgottenPasswordClickListener"
type="View.OnClickListener" />
@ -60,6 +63,23 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:id="@+id/help"
android:onClick="@{helpClickListener}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:text="@string/help_title"
android:textSize="14sp"
android:textColor="?attr/color_main2_500"
android:drawableStart="@drawable/question"
android:drawablePadding="5dp"
app:drawableTint="?attr/color_main2_500"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/title"
app:layout_constraintBottom_toBottomOf="@id/title"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/header_style"
android:id="@+id/sip_identity_label"

View file

@ -291,6 +291,7 @@
android:text="@string/help_troubleshooting_show_config_file"
android:maxLines="1"
android:ellipsize="end"
android:visibility="@{viewModel.canConfigFileBeViewed ? View.VISIBLE : View.GONE, default=gone}"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/firebase_project_subtitle"/>

View file

@ -144,6 +144,14 @@
app:launchSingleTop="true"
app:popUpTo="@id/landingFragment"
app:popUpToInclusive="true"/>
<action
android:id="@+id/action_landingFragment_to_helpFragment"
app:destination="@id/helpFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:launchSingleTop="true" />
</fragment>
@ -169,4 +177,25 @@
app:enterAnim="@anim/slide_in"
app:popExitAnim="@anim/slide_out" />
<fragment
android:id="@+id/helpFragment"
android:name="org.linphone.ui.main.help.fragment.HelpFragment"
android:label="HelpFragment"
tools:layout="@layout/help_fragment">
<action
android:id="@+id/action_helpFragment_to_debugFragment"
app:destination="@id/debugFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:launchSingleTop="true" />
</fragment>
<fragment
android:id="@+id/debugFragment"
android:name="org.linphone.ui.main.help.fragment.DebugFragment"
android:label="DebugFragment"
tools:layout="@layout/help_debug_fragment"/>
</navigation>

View file

@ -236,14 +236,7 @@
android:id="@+id/debugFragment"
android:name="org.linphone.ui.main.help.fragment.DebugFragment"
android:label="DebugFragment"
tools:layout="@layout/help_debug_fragment" >
<action
android:id="@+id/action_debugFragment_to_conversationsListFragment"
app:destination="@id/conversationsListFragment"
app:launchSingleTop="true"
app:popUpTo="@id/helpFragment"
app:popUpToInclusive="true"/>
</fragment>
tools:layout="@layout/help_debug_fragment"/>
<fragment
android:id="@+id/accountSettingsFragment"