From 3a00643416aabaa577d9cd29e9ff34447512aa2c Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Mon, 20 Jun 2022 12:20:16 +0530 Subject: [PATCH 01/15] issue_5653: show App Lounge version in SettingsFragment --- .../e/apps/settings/SettingsFragment.kt | 6 ++++++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/settings_preferences.xml | 15 ++++++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index 562ec459b..d221fbd6e 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -31,6 +31,7 @@ import coil.load import com.aurora.gplayapi.data.models.AuthData import com.google.gson.Gson import dagger.hilt.android.AndroidEntryPoint +import foundation.e.apps.BuildConfig import foundation.e.apps.MainActivity import foundation.e.apps.MainActivityViewModel import foundation.e.apps.R @@ -91,6 +92,11 @@ class SettingsFragment : PreferenceFragmentCompat() { backToMainActivity() true } + + val versionInfo = findPreference("versionInfo") + versionInfo?.apply { + summary = BuildConfig.VERSION_NAME + } } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 38407f25e..da9cc5f06 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -64,6 +64,8 @@ Show all apps Show only open-source apps Show only PWAs + About + App Lounge version Account Terms of Services Anonymous diff --git a/app/src/main/res/xml/settings_preferences.xml b/app/src/main/res/xml/settings_preferences.xml index 5e560831a..5d246ccca 100644 --- a/app/src/main/res/xml/settings_preferences.xml +++ b/app/src/main/res/xml/settings_preferences.xml @@ -16,7 +16,9 @@ ~ along with this program. If not, see . --> - + + + + + + \ No newline at end of file -- GitLab From a2e2371a3e0a4f8f46397a543a1e8ebf392e4090 Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Mon, 4 Jul 2022 18:27:51 +0530 Subject: [PATCH 02/15] issue_5653: function to copy app version to clipboard --- .../foundation/e/apps/MainActivityViewModel.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt index 4e54172e0..52b7fe00d 100644 --- a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt +++ b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt @@ -18,6 +18,8 @@ package foundation.e.apps +import android.content.ClipData +import android.content.ClipboardManager import android.content.Context import android.graphics.Bitmap import android.os.Build @@ -430,4 +432,17 @@ class MainActivityViewModel @Inject constructor( fun updateAppWarningList() { blockedAppRepository.fetchUpdateOfAppWarningList() } + + /** + * Copy App Lounge version to clipboard. + * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5653 + */ + private fun copyVersion(versionName: String, context: Context) { + // https://developer.android.com/guide/topics/text/copy-paste#Copying + (context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager).also { clipboard -> + val appVersionLabel = context.getString(R.string.app_version_label) + val clip = ClipData.newPlainText(appVersionLabel, "$appVersionLabel: $versionName") + clipboard.setPrimaryClip(clip) + } + } } -- GitLab From e99a565384db775650b2f1ee7e9960c16a1978e0 Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Mon, 4 Jul 2022 19:30:31 +0530 Subject: [PATCH 03/15] issue_5653: create class LongPressPreference.kt --- .../e/apps/settings/LongPressPreference.kt | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 app/src/main/java/foundation/e/apps/settings/LongPressPreference.kt diff --git a/app/src/main/java/foundation/e/apps/settings/LongPressPreference.kt b/app/src/main/java/foundation/e/apps/settings/LongPressPreference.kt new file mode 100644 index 000000000..48292b895 --- /dev/null +++ b/app/src/main/java/foundation/e/apps/settings/LongPressPreference.kt @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2019-2022 E FOUNDATION + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package foundation.e.apps.settings + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import androidx.preference.Preference +import androidx.preference.PreferenceViewHolder + +/** + * Custom class to enable long pressing preferences. + * Inspired from: https://www.joehxblog.com/how-to-add-a-long-click-to-an-androidx-preference + */ +class LongPressPreference : Preference { + + private var longClickListener: View.OnLongClickListener = View.OnLongClickListener { v -> true } + + constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super( + context, + attrs, + defStyle + ) + + constructor(context: Context, attrs: AttributeSet? = null) : super(context, attrs) + + override fun onBindViewHolder(holder: PreferenceViewHolder) { + super.onBindViewHolder(holder) + val itemView: View = holder.itemView + itemView.setOnLongClickListener(longClickListener) + } + + fun setOnLongClickListener(longClickBody: (view: View?) -> Boolean) { + this.longClickListener = View.OnLongClickListener { v -> longClickBody(v) } + } +} \ No newline at end of file -- GitLab From 40c6c4ab9294db2a7c3b2d2f3f2ff7e43652b6f5 Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Mon, 4 Jul 2022 19:31:04 +0530 Subject: [PATCH 04/15] issue_5653: use class LongPressPreference in layout --- .../main/java/foundation/e/apps/settings/SettingsFragment.kt | 2 +- app/src/main/res/xml/settings_preferences.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index d221fbd6e..4849cf0ed 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -93,7 +93,7 @@ class SettingsFragment : PreferenceFragmentCompat() { true } - val versionInfo = findPreference("versionInfo") + val versionInfo = findPreference("versionInfo") versionInfo?.apply { summary = BuildConfig.VERSION_NAME } diff --git a/app/src/main/res/xml/settings_preferences.xml b/app/src/main/res/xml/settings_preferences.xml index 5d246ccca..9bb9435d9 100644 --- a/app/src/main/res/xml/settings_preferences.xml +++ b/app/src/main/res/xml/settings_preferences.xml @@ -70,7 +70,7 @@ - Date: Mon, 4 Jul 2022 19:32:26 +0530 Subject: [PATCH 05/15] issue_5653: create method getSystemProperty() --- .../java/foundation/e/apps/MainActivityViewModel.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt index 52b7fe00d..428956682 100644 --- a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt +++ b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt @@ -18,6 +18,7 @@ package foundation.e.apps +import android.annotation.SuppressLint import android.content.ClipData import android.content.ClipboardManager import android.content.Context @@ -445,4 +446,15 @@ class MainActivityViewModel @Inject constructor( clipboard.setPrimaryClip(clip) } } + + @SuppressLint("PrivateApi") + fun getSystemProperty(key: String?): String? { + var value: String? = null + try { + value = Class.forName("android.os.SystemProperties") + .getMethod("get", String::class.java).invoke(null, key) as String + } catch (e: java.lang.Exception) { + } + return value + } } -- GitLab From c296a21971598397052f5d6c745b6cd7ed23f310 Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Mon, 4 Jul 2022 19:32:49 +0530 Subject: [PATCH 06/15] issue_5653: create new strings --- app/src/main/res/values/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index da9cc5f06..c59d18729 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -66,6 +66,8 @@ Show only PWAs About App Lounge version + /e/ OS version + Copied Account Terms of Services Anonymous -- GitLab From 3be4c7e638fe5343d3cd04a5070d219d747f60d3 Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Mon, 4 Jul 2022 19:35:09 +0530 Subject: [PATCH 07/15] issue_5653: modify copyVersion() to include /e/ os version --- .../java/foundation/e/apps/MainActivityViewModel.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt index 428956682..49d195f76 100644 --- a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt +++ b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt @@ -438,11 +438,17 @@ class MainActivityViewModel @Inject constructor( * Copy App Lounge version to clipboard. * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5653 */ - private fun copyVersion(versionName: String, context: Context) { + fun copyVersion(context: Context) { // https://developer.android.com/guide/topics/text/copy-paste#Copying (context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager).also { clipboard -> val appVersionLabel = context.getString(R.string.app_version_label) - val clip = ClipData.newPlainText(appVersionLabel, "$appVersionLabel: $versionName") + val versionName = BuildConfig.VERSION_NAME + val osVersion = getSystemProperty("ro.lineage.version") + var contents = "$appVersionLabel: $versionName" + if (osVersion != null) { + contents += "\n${context.getString(R.string.os_version)}: $osVersion" + } + val clip = ClipData.newPlainText(appVersionLabel, contents) clipboard.setPrimaryClip(clip) } } -- GitLab From f13be48c52b66807c8e42c8f61bf208f6712cd80 Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Mon, 4 Jul 2022 19:37:04 +0530 Subject: [PATCH 08/15] issue_5653: setup long click listener to versionInfo in SettingsFragment --- .../java/foundation/e/apps/settings/SettingsFragment.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index 4849cf0ed..6e7914fbb 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -22,6 +22,7 @@ import android.content.Intent import android.os.Bundle import android.util.Log import android.view.View +import android.widget.Toast import androidx.fragment.app.viewModels import androidx.navigation.findNavController import androidx.preference.Preference @@ -96,6 +97,13 @@ class SettingsFragment : PreferenceFragmentCompat() { val versionInfo = findPreference("versionInfo") versionInfo?.apply { summary = BuildConfig.VERSION_NAME + setOnLongClickListener { + this@SettingsFragment.context?.let { context -> + mainActivityViewModel.copyVersion(context) + Toast.makeText(context, R.string.copied, Toast.LENGTH_SHORT).show() + } + true + } } } -- GitLab From 8958fc3df0fcbdc812760c6e7fee10dc39145102 Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Mon, 4 Jul 2022 21:40:06 +0530 Subject: [PATCH 09/15] issue_5653: log exception of getSystemProperty() --- app/src/main/java/foundation/e/apps/MainActivityViewModel.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt index 49d195f76..cb9373d62 100644 --- a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt +++ b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt @@ -460,6 +460,7 @@ class MainActivityViewModel @Inject constructor( value = Class.forName("android.os.SystemProperties") .getMethod("get", String::class.java).invoke(null, key) as String } catch (e: java.lang.Exception) { + e.printStackTrace() } return value } -- GitLab From 65167256d60e9177a2321e60bf4a580513d47ffa Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Mon, 4 Jul 2022 21:43:50 +0530 Subject: [PATCH 10/15] issue_5653: move copyVersion() and getSystemProperty() to CommonUtilsModule --- .../e/apps/MainActivityViewModel.kt | 34 ------------------ .../e/apps/settings/SettingsFragment.kt | 3 +- .../e/apps/utils/modules/CommonUtilsModule.kt | 36 +++++++++++++++++++ 3 files changed, 38 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt index cb9373d62..4e54172e0 100644 --- a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt +++ b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt @@ -18,9 +18,6 @@ package foundation.e.apps -import android.annotation.SuppressLint -import android.content.ClipData -import android.content.ClipboardManager import android.content.Context import android.graphics.Bitmap import android.os.Build @@ -433,35 +430,4 @@ class MainActivityViewModel @Inject constructor( fun updateAppWarningList() { blockedAppRepository.fetchUpdateOfAppWarningList() } - - /** - * Copy App Lounge version to clipboard. - * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5653 - */ - fun copyVersion(context: Context) { - // https://developer.android.com/guide/topics/text/copy-paste#Copying - (context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager).also { clipboard -> - val appVersionLabel = context.getString(R.string.app_version_label) - val versionName = BuildConfig.VERSION_NAME - val osVersion = getSystemProperty("ro.lineage.version") - var contents = "$appVersionLabel: $versionName" - if (osVersion != null) { - contents += "\n${context.getString(R.string.os_version)}: $osVersion" - } - val clip = ClipData.newPlainText(appVersionLabel, contents) - clipboard.setPrimaryClip(clip) - } - } - - @SuppressLint("PrivateApi") - fun getSystemProperty(key: String?): String? { - var value: String? = null - try { - value = Class.forName("android.os.SystemProperties") - .getMethod("get", String::class.java).invoke(null, key) as String - } catch (e: java.lang.Exception) { - e.printStackTrace() - } - return value - } } diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index 6e7914fbb..e63bc0d8f 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -40,6 +40,7 @@ import foundation.e.apps.databinding.CustomPreferenceBinding import foundation.e.apps.setup.signin.SignInViewModel import foundation.e.apps.updates.manager.UpdatesWorkManager import foundation.e.apps.utils.enums.User +import foundation.e.apps.utils.modules.CommonUtilsModule import javax.inject.Inject @AndroidEntryPoint @@ -99,7 +100,7 @@ class SettingsFragment : PreferenceFragmentCompat() { summary = BuildConfig.VERSION_NAME setOnLongClickListener { this@SettingsFragment.context?.let { context -> - mainActivityViewModel.copyVersion(context) + CommonUtilsModule.copyVersion(context) Toast.makeText(context, R.string.copied, Toast.LENGTH_SHORT).show() } true diff --git a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt index 8b2b6e000..0101dd355 100644 --- a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt +++ b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt @@ -18,6 +18,9 @@ package foundation.e.apps.utils.modules +import android.annotation.SuppressLint +import android.content.ClipData +import android.content.ClipboardManager import android.content.Context import android.net.ConnectivityManager import android.net.NetworkCapabilities @@ -34,6 +37,8 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent +import foundation.e.apps.BuildConfig +import foundation.e.apps.R import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob @@ -162,4 +167,35 @@ object CommonUtilsModule { fun getIOCoroutineScope(): CoroutineScope { return CoroutineScope(SupervisorJob() + Dispatchers.IO) } + + /** + * Copy App Lounge version to clipboard. + * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5653 + */ + fun copyVersion(context: Context) { + // https://developer.android.com/guide/topics/text/copy-paste#Copying + (context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager).also { clipboard -> + val appVersionLabel = context.getString(R.string.app_version_label) + val versionName = BuildConfig.VERSION_NAME + val osVersion = getSystemProperty("ro.lineage.version") + var contents = "$appVersionLabel: $versionName" + if (osVersion != null) { + contents += "\n${context.getString(R.string.os_version)}: $osVersion" + } + val clip = ClipData.newPlainText(appVersionLabel, contents) + clipboard.setPrimaryClip(clip) + } + } + + @SuppressLint("PrivateApi") + fun getSystemProperty(key: String?): String? { + var value: String? = null + try { + value = Class.forName("android.os.SystemProperties") + .getMethod("get", String::class.java).invoke(null, key) as String + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + return value + } } -- GitLab From 2fa016dd81dd3b2c790f994ac13263194b8fae00 Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Tue, 2 Aug 2022 20:57:37 +0530 Subject: [PATCH 11/15] issue_5653: DI ClipboardManager --- .../foundation/e/apps/utils/modules/CommonUtilsModule.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt index 0101dd355..6e2e3f07b 100644 --- a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt +++ b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt @@ -168,6 +168,12 @@ object CommonUtilsModule { return CoroutineScope(SupervisorJob() + Dispatchers.IO) } + @Singleton + @Provides + fun provideClipboardService(@ApplicationContext context: Context): ClipboardManager { + return context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + } + /** * Copy App Lounge version to clipboard. * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5653 -- GitLab From 1bdf25731d9f709f09d5621ebff54707e01d8f15 Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Tue, 2 Aug 2022 22:45:44 +0530 Subject: [PATCH 12/15] issue_5653: Get clipboard manager from DI. Generalise utils function copyVersion() -> copyTextToClipboard() --- .../e/apps/settings/SettingsFragment.kt | 21 ++++++++++++++++--- .../e/apps/utils/modules/CommonUtilsModule.kt | 21 +++++++------------ 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index e63bc0d8f..bb975880b 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -18,6 +18,7 @@ package foundation.e.apps.settings +import android.content.ClipboardManager import android.content.Intent import android.os.Bundle import android.util.Log @@ -54,6 +55,9 @@ class SettingsFragment : PreferenceFragmentCompat() { @Inject lateinit var gson: Gson + @Inject + lateinit var clipboardManager: ClipboardManager + companion object { private const val TAG = "SettingsFragment" } @@ -99,10 +103,21 @@ class SettingsFragment : PreferenceFragmentCompat() { versionInfo?.apply { summary = BuildConfig.VERSION_NAME setOnLongClickListener { - this@SettingsFragment.context?.let { context -> - CommonUtilsModule.copyVersion(context) - Toast.makeText(context, R.string.copied, Toast.LENGTH_SHORT).show() + + val osVersion = CommonUtilsModule.getSystemProperty("ro.lineage.version") + val appVersionLabel = getString(R.string.app_version_label) + var contents = "$appVersionLabel: $summary" + if (osVersion != null) { + contents += "\n${context.getString(R.string.os_version)}: $osVersion" } + + CommonUtilsModule.copyTextToClipboard( + clipboardManager, + appVersionLabel, + contents + ) + Toast.makeText(context, R.string.copied, Toast.LENGTH_SHORT).show() + true } } diff --git a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt index 6e2e3f07b..25adbe485 100644 --- a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt +++ b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt @@ -175,22 +175,17 @@ object CommonUtilsModule { } /** - * Copy App Lounge version to clipboard. + * Copy anything to system clipboard. * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5653 */ - fun copyVersion(context: Context) { + fun copyTextToClipboard( + clipboard: ClipboardManager, + label: String, + text: String, + ) { // https://developer.android.com/guide/topics/text/copy-paste#Copying - (context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager).also { clipboard -> - val appVersionLabel = context.getString(R.string.app_version_label) - val versionName = BuildConfig.VERSION_NAME - val osVersion = getSystemProperty("ro.lineage.version") - var contents = "$appVersionLabel: $versionName" - if (osVersion != null) { - contents += "\n${context.getString(R.string.os_version)}: $osVersion" - } - val clip = ClipData.newPlainText(appVersionLabel, contents) - clipboard.setPrimaryClip(clip) - } + val clip = ClipData.newPlainText(label, text) + clipboard.setPrimaryClip(clip) } @SuppressLint("PrivateApi") -- GitLab From df3074c542dae041adfd0f68a607b721cbf3aec5 Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Wed, 3 Aug 2022 00:24:13 +0530 Subject: [PATCH 13/15] issue_5653: resolve conflicts --- app/build.gradle | 3 +++ .../main/java/foundation/e/apps/settings/SettingsFragment.kt | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 09d7acdd5..a4fbe95e0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -116,6 +116,9 @@ dependencies { implementation "androidx.viewpager2:viewpager2:1.0.0" implementation "androidx.recyclerview:recyclerview:1.2.1" + //logger + implementation 'com.jakewharton.timber:timber:5.0.1' + // Retrofit def retrofit_version = "2.9.0" implementation "com.squareup.retrofit2:retrofit:$retrofit_version" diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index bb975880b..4e642c7d7 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -37,11 +37,12 @@ import foundation.e.apps.BuildConfig import foundation.e.apps.MainActivity import foundation.e.apps.MainActivityViewModel import foundation.e.apps.R +import foundation.e.apps.utils.modules.CommonUtilsModule import foundation.e.apps.databinding.CustomPreferenceBinding import foundation.e.apps.setup.signin.SignInViewModel import foundation.e.apps.updates.manager.UpdatesWorkManager import foundation.e.apps.utils.enums.User -import foundation.e.apps.utils.modules.CommonUtilsModule +import timber.log.Timber import javax.inject.Inject @AndroidEntryPoint -- GitLab From 69922cbbad388c9ee54cc4a425ed5843e575d108 Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Wed, 3 Aug 2022 14:50:58 +0530 Subject: [PATCH 14/15] issue_5653: move copyTextToClipboard() and getSystemProperty() to a separate utils class --- .../e/apps/settings/SettingsFragment.kt | 6 +-- .../utils/modules/CommonUtilsFunctions.kt | 51 +++++++++++++++++++ .../e/apps/utils/modules/CommonUtilsModule.kt | 26 ---------- 3 files changed, 54 insertions(+), 29 deletions(-) create mode 100644 app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsFunctions.kt diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index 4e642c7d7..fc9b6fb11 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -37,7 +37,7 @@ import foundation.e.apps.BuildConfig import foundation.e.apps.MainActivity import foundation.e.apps.MainActivityViewModel import foundation.e.apps.R -import foundation.e.apps.utils.modules.CommonUtilsModule +import foundation.e.apps.utils.modules.CommonUtilsFunctions import foundation.e.apps.databinding.CustomPreferenceBinding import foundation.e.apps.setup.signin.SignInViewModel import foundation.e.apps.updates.manager.UpdatesWorkManager @@ -105,14 +105,14 @@ class SettingsFragment : PreferenceFragmentCompat() { summary = BuildConfig.VERSION_NAME setOnLongClickListener { - val osVersion = CommonUtilsModule.getSystemProperty("ro.lineage.version") + val osVersion = CommonUtilsFunctions.getSystemProperty("ro.lineage.version") val appVersionLabel = getString(R.string.app_version_label) var contents = "$appVersionLabel: $summary" if (osVersion != null) { contents += "\n${context.getString(R.string.os_version)}: $osVersion" } - CommonUtilsModule.copyTextToClipboard( + CommonUtilsFunctions.copyTextToClipboard( clipboardManager, appVersionLabel, contents diff --git a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsFunctions.kt b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsFunctions.kt new file mode 100644 index 000000000..5253d57ae --- /dev/null +++ b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsFunctions.kt @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2019-2022 E FOUNDATION + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package foundation.e.apps.utils.modules + +import android.annotation.SuppressLint +import android.content.ClipData +import android.content.ClipboardManager + +object CommonUtilsFunctions { + + /** + * Copy anything to system clipboard. + * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5653 + */ + fun copyTextToClipboard( + clipboard: ClipboardManager, + label: String, + text: String, + ) { + // https://developer.android.com/guide/topics/text/copy-paste#Copying + val clip = ClipData.newPlainText(label, text) + clipboard.setPrimaryClip(clip) + } + + @SuppressLint("PrivateApi") + fun getSystemProperty(key: String?): String? { + var value: String? = null + try { + value = Class.forName("android.os.SystemProperties") + .getMethod("get", String::class.java).invoke(null, key) as String + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + return value + } +} \ No newline at end of file diff --git a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt index 25adbe485..5cb06f511 100644 --- a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt +++ b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsModule.kt @@ -173,30 +173,4 @@ object CommonUtilsModule { fun provideClipboardService(@ApplicationContext context: Context): ClipboardManager { return context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager } - - /** - * Copy anything to system clipboard. - * Issue: https://gitlab.e.foundation/e/backlog/-/issues/5653 - */ - fun copyTextToClipboard( - clipboard: ClipboardManager, - label: String, - text: String, - ) { - // https://developer.android.com/guide/topics/text/copy-paste#Copying - val clip = ClipData.newPlainText(label, text) - clipboard.setPrimaryClip(clip) - } - - @SuppressLint("PrivateApi") - fun getSystemProperty(key: String?): String? { - var value: String? = null - try { - value = Class.forName("android.os.SystemProperties") - .getMethod("get", String::class.java).invoke(null, key) as String - } catch (e: java.lang.Exception) { - e.printStackTrace() - } - return value - } } -- GitLab From 2b1475d72d62e568a809b012c8d4b8e763b333cf Mon Sep 17 00:00:00 2001 From: SayantanRC Date: Wed, 3 Aug 2022 14:59:38 +0530 Subject: [PATCH 15/15] issue_5653: replace os version check from just null check to isNullOrBlank check --- .../main/java/foundation/e/apps/settings/SettingsFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt index fc9b6fb11..4f632a755 100644 --- a/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +++ b/app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt @@ -108,7 +108,7 @@ class SettingsFragment : PreferenceFragmentCompat() { val osVersion = CommonUtilsFunctions.getSystemProperty("ro.lineage.version") val appVersionLabel = getString(R.string.app_version_label) var contents = "$appVersionLabel: $summary" - if (osVersion != null) { + if (!osVersion.isNullOrBlank()) { contents += "\n${context.getString(R.string.os_version)}: $osVersion" } -- GitLab