diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index f73cf7ffe..b8cc02bf0 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -137,9 +137,13 @@ class CorePreferences @UiThread constructor(private val context: Context) { val defaultDomain: String get() = config.getString("app", "default_domain", "sip.linphone.org")!! + @get:AnyThread + val configFile: String + get() = ".linphonerc" + @get:AnyThread val configPath: String - get() = context.filesDir.absolutePath + "/.linphonerc" + get() = context.filesDir.absolutePath + "/" + configFile @get:AnyThread val factoryConfigPath: String diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt index 9ea387264..4e001a898 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt @@ -236,7 +236,8 @@ class ConversationsListFragment : AbstractTopBarFragment() { ) } else { ConversationsListFragmentDirections.actionConversationsListFragmentToFileViewerFragment( - path + path, + null ) } findNavController().navigate(action) diff --git a/app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/FileViewerFragment.kt b/app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/FileViewerFragment.kt index 2bae4b2ff..c49d7d470 100644 --- a/app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/FileViewerFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/FileViewerFragment.kt @@ -75,8 +75,11 @@ class FileViewerFragment : GenericFragment() { binding.viewModel = viewModel val path = args.path - Log.i("$TAG Path argument is [$path]") - viewModel.loadFile(path) + val preLoadedContent = args.content + Log.i( + "$TAG Path argument is [$path], pre loaded text content is ${if (preLoadedContent.isNullOrEmpty()) "not available" else "available, using it"}" + ) + viewModel.loadFile(path, preLoadedContent) binding.setBackClickListener { goBack() diff --git a/app/src/main/java/org/linphone/ui/main/file_media_viewer/viewmodel/FileViewModel.kt b/app/src/main/java/org/linphone/ui/main/file_media_viewer/viewmodel/FileViewModel.kt index 1cc17b7f5..a31849c3d 100644 --- a/app/src/main/java/org/linphone/ui/main/file_media_viewer/viewmodel/FileViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/file_media_viewer/viewmodel/FileViewModel.kt @@ -84,13 +84,21 @@ class FileViewModel @UiThread constructor() : ViewModel() { } @UiThread - fun loadFile(file: String) { + fun loadFile(file: String, content: String? = null) { fullScreenMode.value = true filePath = file val name = FileUtils.getNameFromFilePath(file) fileName.value = name + if (!content.isNullOrEmpty()) { + isText.value = true + text.postValue(content) + Log.i("$TAG Using pre-loaded content as PlainText") + fileReadyEvent.postValue(Event(true)) + return + } + val extension = FileUtils.getExtensionFromFileName(name) val mime = FileUtils.getMimeTypeFromExtension(extension) when (FileUtils.getMimeType(mime)) { diff --git a/app/src/main/java/org/linphone/ui/main/help/fragment/DebugFragment.kt b/app/src/main/java/org/linphone/ui/main/help/fragment/DebugFragment.kt index 1f1e140c9..f8ec26365 100644 --- a/app/src/main/java/org/linphone/ui/main/help/fragment/DebugFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/help/fragment/DebugFragment.kt @@ -25,7 +25,9 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.navigation.fragment.findNavController import androidx.navigation.navGraphViewModels +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R import org.linphone.core.tools.Log import org.linphone.databinding.HelpDebugFragmentBinding @@ -110,5 +112,17 @@ class DebugFragment : GenericFragment() { ) } } + + viewModel.showConfigFileEvent.observe(viewLifecycleOwner) { + it.consume { content -> + if (findNavController().currentDestination?.id == R.id.debugFragment) { + val action = DebugFragmentDirections.actionDebugFragmentToFileViewerFragment( + corePreferences.configFile, + content + ) + findNavController().navigate(action) + } + } + } } } diff --git a/app/src/main/java/org/linphone/ui/main/help/viewmodel/HelpViewModel.kt b/app/src/main/java/org/linphone/ui/main/help/viewmodel/HelpViewModel.kt index 10bc2c89e..fbb985424 100644 --- a/app/src/main/java/org/linphone/ui/main/help/viewmodel/HelpViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/help/viewmodel/HelpViewModel.kt @@ -72,6 +72,10 @@ class HelpViewModel @UiThread constructor() : ViewModel() { MutableLiveData>() } + val showConfigFileEvent: MutableLiveData> by lazy { + MutableLiveData>() + } + private val coreListener = object : CoreListenerStub() { @WorkerThread override fun onVersionUpdateCheckResultReceived( @@ -173,4 +177,13 @@ class HelpViewModel @UiThread constructor() : ViewModel() { core.checkForUpdate(currentVersion) } } + + @UiThread + fun showConfigFile() { + coreContext.postOnCoreThread { core -> + Log.i("$TAG Dumping & displaying Core's config") + val config = core.config.dump() + showConfigFileEvent.postValue(Event(config)) + } + } } diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/CardDavViewModel.kt b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/CardDavViewModel.kt index 0831cb718..d11d3d848 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/CardDavViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/CardDavViewModel.kt @@ -81,6 +81,11 @@ class CardDavViewModel : ViewModel() { syncInProgress.postValue(false) val icon = R.drawable.x showErrorToastEvent.postValue(Event(Pair(icon, message.orEmpty()))) + if (isEdit.value == false) { + Log.e("$TAG Synchronization failed, removing Friend list from Core") + friendList.removeListener(this) + coreContext.core.removeFriendList(friendList) + } } else -> {} } diff --git a/app/src/main/res/layout/help_debug_fragment.xml b/app/src/main/res/layout/help_debug_fragment.xml index f8ec06ca0..fa153da68 100644 --- a/app/src/main/res/layout/help_debug_fragment.xml +++ b/app/src/main/res/layout/help_debug_fragment.xml @@ -207,6 +207,27 @@ app:layout_constraintStart_toEndOf="@id/sdk_version_icon" app:layout_constraintEnd_toEndOf="parent" /> + + \ No newline at end of file diff --git a/app/src/main/res/navigation/main_nav_graph.xml b/app/src/main/res/navigation/main_nav_graph.xml index a5a51cf1a..d6f283276 100644 --- a/app/src/main/res/navigation/main_nav_graph.xml +++ b/app/src/main/res/navigation/main_nav_graph.xml @@ -208,6 +208,12 @@ app:launchSingleTop="true" app:popUpTo="@id/helpFragment" app:popUpToInclusive="true"/> + + Partager le lien vers journaux avec… Les journaux ont été nettoyés Echec à l\'envoi des journaux + Afficher la configuration Paramètres Securité diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2d6f80854..246b47123 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -228,6 +228,7 @@ Share debug logs link using… Debug logs have been cleaned Failed to upload debug logs + Show configuration Settings