diff --git a/app/build.gradle b/app/build.gradle index 829aff55..a9241887 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,6 +26,10 @@ android { vectorDrawables.useSupportLibrary = true buildConfigField "String[]", "MANAGER_LANGUAGES", "{" + surroundWithQuotes(langs) + "}" + buildConfigField "Boolean", "ENABLE_CROWDIN_AUTH", "false" + buildConfigField "String", "CROWDIN_HASH", "\"${System.getenv('CROWDIN_HASH')}\"" + buildConfigField "String", "CROWDIN_CLIENT_ID", "\"${System.getenv('CROWDIN_CLIENT_ID')}\"" + buildConfigField "String", "CROWDIN_CLIENT_SECRET", "\"${System.getenv('CROWDIN_CLIENT_SECRET')}\"" } lintOptions { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 713adb01..57b0ceb7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,6 +6,7 @@ + diff --git a/app/src/main/java/com/vanced/manager/core/App.kt b/app/src/main/java/com/vanced/manager/core/App.kt index c1849bb3..b211ce9e 100644 --- a/app/src/main/java/com/vanced/manager/core/App.kt +++ b/app/src/main/java/com/vanced/manager/core/App.kt @@ -2,6 +2,7 @@ package com.vanced.manager.core import android.app.Application import android.content.res.Configuration +import android.util.Log import androidx.databinding.ObservableField import androidx.preference.PreferenceManager.getDefaultSharedPreferences import com.beust.klaxon.JsonObject @@ -10,6 +11,7 @@ import com.crowdin.platform.CrowdinConfig import com.crowdin.platform.data.model.AuthConfig import com.crowdin.platform.data.remote.NetworkType import com.downloader.PRDownloader +import com.vanced.manager.BuildConfig.* import com.vanced.manager.utils.InternetTools.baseUrl import com.vanced.manager.utils.JsonHelper.getJson import kotlinx.coroutines.CoroutineScope @@ -31,21 +33,21 @@ open class App: Application() { loadJson() super.onCreate() PRDownloader.initialize(this) - val clientId = prefs.getString("crowdin_client_id", "") - val clientSecret = prefs.getString("crowdin_client_secret", "") Crowdin.init(this, CrowdinConfig.Builder().apply { - withDistributionHash("3b84be9663023b0b1a22988j4s6") + withDistributionHash(CROWDIN_HASH) withNetworkType(NetworkType.WIFI) - if (clientId != "" && clientSecret != "") { + if (ENABLE_CROWDIN_AUTH) { withRealTimeUpdates() withSourceLanguage("en") - withAuthConfig(AuthConfig(clientId!!, clientSecret!!, null)) + withAuthConfig(AuthConfig(CROWDIN_CLIENT_ID, CROWDIN_CLIENT_SECRET, null)) withScreenshotEnabled() + Log.d("test", "crowdin credentials") } }.build() ) + if (prefs.getBoolean("crowdin_upload_screenshot", false)) Crowdin.registerScreenShotContentObserver(this) diff --git a/app/src/main/java/com/vanced/manager/ui/MainActivity.kt b/app/src/main/java/com/vanced/manager/ui/MainActivity.kt index 26c69693..635e814a 100644 --- a/app/src/main/java/com/vanced/manager/ui/MainActivity.kt +++ b/app/src/main/java/com/vanced/manager/ui/MainActivity.kt @@ -50,6 +50,7 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { setFinalTheme(this) super.onCreate(savedInstanceState) + binding = DataBindingUtil.setContentView(this, R.layout.activity_main) with(binding) { @@ -113,7 +114,7 @@ class MainActivity : AppCompatActivity() { } override fun attachBaseContext(newBase: Context) { - super.attachBaseContext(LanguageContextWrapper.wrap(newBase)) + super.attachBaseContext(Crowdin.wrapContext(LanguageContextWrapper.wrap(newBase))) } override fun onConfigurationChanged(newConfig: Configuration) { diff --git a/app/src/main/java/com/vanced/manager/ui/core/PreferenceSwitch.kt b/app/src/main/java/com/vanced/manager/ui/core/PreferenceSwitch.kt index 18d8b81b..65df8e07 100644 --- a/app/src/main/java/com/vanced/manager/ui/core/PreferenceSwitch.kt +++ b/app/src/main/java/com/vanced/manager/ui/core/PreferenceSwitch.kt @@ -19,8 +19,8 @@ class PreferenceSwitch @JvmOverloads constructor( ) : FrameLayout(context, attrs, defStyle, defStyleRes) { private val prefs by lazy { getDefaultSharedPreferences(context) } - private var prefKey: String = "" - private var defValue: Boolean = false + var prefKey: String = "" + var defValue: Boolean = false private var mListener: OnCheckedListener? = null init { @@ -101,7 +101,7 @@ class PreferenceSwitch @JvmOverloads constructor( } @JvmStatic - @BindingAdapter("app:switch_def_val") + @BindingAdapter("app:switch_def_value") fun setDefaultValue(view: PreferenceSwitch, newVal: Boolean) { view.defValue = newVal view.preference_switch.isChecked = view.prefs.getBoolean(view.prefKey, view.defValue) diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt index 5cc26f52..04c144fb 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt @@ -1,12 +1,17 @@ package com.vanced.manager.ui.fragments import android.content.Intent +import android.net.Uri import android.os.Build import android.os.Bundle +import android.provider.Settings +import androidx.annotation.RequiresApi import androidx.appcompat.app.AlertDialog import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceManager +import androidx.preference.SwitchPreferenceCompat +import com.crowdin.platform.Crowdin import com.vanced.manager.R import com.vanced.manager.ui.WelcomeActivity import com.vanced.manager.ui.dialogs.ManagerUpdateDialog @@ -40,6 +45,25 @@ class DevSettingsFragment: PreferenceFragmentCompat() { } + findPreference("crowdin_upload_screenshot")?.isVisible = Crowdin.isAuthorized() + findPreference("crowdin_real_time")?.isVisible = Crowdin.isAuthorized() + + findPreference("crowdin_auth")?.setOnPreferenceClickListener { + + @RequiresApi(Build.VERSION_CODES.M) + if (!Settings.canDrawOverlays(requireActivity())) { + val intent = Intent( + Settings.ACTION_MANAGE_OVERLAY_PERMISSION, + Uri.parse("package:" + requireActivity().packageName) + ) + startActivityForResult(intent, 69) + return@setOnPreferenceClickListener true + } + + Crowdin.authorize(requireActivity()) + true + } + findPreference("install_url")?.setOnPreferenceClickListener { URLChangeDialog().show(childFragmentManager.beginTransaction(), "Install URL") true @@ -58,10 +82,23 @@ class DevSettingsFragment: PreferenceFragmentCompat() { val forceUpdate: Preference? = findPreference("force_update") forceUpdate?.setOnPreferenceClickListener { - ManagerUpdateDialog(true).show(requireActivity().supportFragmentManager, "update_manager") + ManagerUpdateDialog(true).show( + requireActivity().supportFragmentManager, + "update_manager" + ) true } } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (requestCode == 69) { + @RequiresApi(23) + if (Settings.canDrawOverlays(requireActivity())) { + Crowdin.authorize(requireActivity()) + } + } + } + } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index e4273425..ea4c2278 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -42,6 +42,8 @@ android:id="@+id/firebase" android:layout_width="match_parent" android:layout_height="wrap_content" + app:switch_def_value="true" + app:switch_key="firebase" app:switch_summary="@string/firebase_summary" app:switch_title="@string/firebase_title" /> diff --git a/app/src/main/res/layout/include_about_header.xml b/app/src/main/res/layout/include_about_header.xml index 73bf2005..4c6df959 100644 --- a/app/src/main/res/layout/include_about_header.xml +++ b/app/src/main/res/layout/include_about_header.xml @@ -27,7 +27,7 @@ android:text="@string/versionName" android:textAlignment="center" android:textColor="#fff" - android:textSize="14sp" /> + android:textSize="16sp" /> diff --git a/app/src/main/res/xml/dev_settings.xml b/app/src/main/res/xml/dev_settings.xml index c6051b4b..108e3fb0 100644 --- a/app/src/main/res/xml/dev_settings.xml +++ b/app/src/main/res/xml/dev_settings.xml @@ -1,6 +1,7 @@ + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + + android:key="crowdin_upload_screenshot" + app:isPreferenceVisible="false"/> - - - - + android:key="crowdin_real_time" + app:isPreferenceVisible="false"/>