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"/>