diff --git a/app/src/main/java/xyz/quaver/pupil/Pupil.kt b/app/src/main/java/xyz/quaver/pupil/Pupil.kt index 54b1b78c..1a723eec 100644 --- a/app/src/main/java/xyz/quaver/pupil/Pupil.kt +++ b/app/src/main/java/xyz/quaver/pupil/Pupil.kt @@ -31,10 +31,12 @@ import com.google.android.gms.common.GooglePlayServicesNotAvailableException import com.google.android.gms.common.GooglePlayServicesRepairableException import com.google.android.gms.security.ProviderInstaller import com.google.firebase.analytics.FirebaseAnalytics +import com.google.firebase.crashlytics.FirebaseCrashlytics import xyz.quaver.proxy import xyz.quaver.pupil.util.Histories import xyz.quaver.pupil.util.getProxy import java.io.File +import java.util.* class Pupil : MultiDexApplication() { @@ -48,6 +50,16 @@ class Pupil : MultiDexApplication() { override fun onCreate() { val preference = PreferenceManager.getDefaultSharedPreferences(this) + val userID = + if (preference.getString("user_id", "").isNullOrEmpty()) { + UUID.randomUUID().toString().also { + preference.edit().putString("user_id", it).apply() + } + } else + preference.getString("user_id", "") ?: "" + + FirebaseCrashlytics.getInstance().setUserId(userID) + proxy = getProxy(this) try { diff --git a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt index 29eb39b3..d975355d 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt @@ -19,11 +19,11 @@ package xyz.quaver.pupil.ui.fragment import android.Manifest -import android.content.Intent -import android.content.SharedPreferences +import android.content.* import android.content.pm.PackageManager import android.os.Build import android.os.Bundle +import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatDelegate import androidx.core.app.ActivityCompat @@ -53,11 +53,7 @@ class SettingsFragment : Preference.OnPreferenceChangeListener, SharedPreferences.OnSharedPreferenceChangeListener { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - PreferenceManager.getDefaultSharedPreferences(requireContext()).registerOnSharedPreferenceChangeListener(this) - } + lateinit var sharedPreference: SharedPreferences override fun onResume() { super.onResume() @@ -202,6 +198,12 @@ class SettingsFragment : activity?.startActivityForResult(intent, REQUEST_IMPORT_OLD_GALLERIES_OLD) } } + "user_id" -> { + (context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager).setPrimaryClip( + ClipData.newPlainText("user_id", sharedPreference.getString("user_id", "")) + ) + Toast.makeText(context, R.string.settings_user_id_toast, Toast.LENGTH_SHORT).show() + } else -> return false } } @@ -247,6 +249,9 @@ class SettingsFragment : override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.root_preferences, rootKey) + sharedPreference = PreferenceManager.getDefaultSharedPreferences(requireContext()) + sharedPreference.registerOnSharedPreferenceChangeListener(this) + initPreferences() } @@ -293,7 +298,7 @@ class SettingsFragment : onPreferenceClickListener = this@SettingsFragment } "default_query" -> { - summary = PreferenceManager.getDefaultSharedPreferences(requireContext()).getString("default_query", "") ?: "" + summary = sharedPreference.getString("default_query", "") ?: "" onPreferenceClickListener = this@SettingsFragment } @@ -337,6 +342,10 @@ class SettingsFragment : "old_import_galleries" -> { onPreferenceClickListener = this@SettingsFragment } + "user_id" -> { + summary = sharedPreference.getString("user_id", "") + onPreferenceClickListener = this@SettingsFragment + } } } diff --git a/app/src/main/java/xyz/quaver/pupil/util/download/Cache.kt b/app/src/main/java/xyz/quaver/pupil/util/download/Cache.kt index 3b78315b..deb4c25c 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/download/Cache.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/download/Cache.kt @@ -259,8 +259,12 @@ class Cache(context: Context) : ContextWrapper(context) { it.createNewFile() } - FileOutputStream(cache).use { - it.write(data) + try { + FileOutputStream(cache).use { + it.write(data) + } + } catch (e: Exception) { + cache.delete() } } diff --git a/app/src/main/java/xyz/quaver/pupil/util/download/DownloadWorker.kt b/app/src/main/java/xyz/quaver/pupil/util/download/DownloadWorker.kt index 63226ab6..587a51c8 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/download/DownloadWorker.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/download/DownloadWorker.kt @@ -151,7 +151,13 @@ class DownloadWorker private constructor(context: Context) : ContextWrapper(cont val interceptor = Interceptor { chain -> val request = chain.request() - val response = chain.proceed(request) + var response = chain.proceed(request) + + var retry = 5 + while (!response.isSuccessful && retry > 0) { + response = chain.proceed(request) + retry-- + } response.newBuilder() .body(response.body()?.let { @@ -296,7 +302,7 @@ class DownloadWorker private constructor(context: Context) : ContextWrapper(cont val callback = object : Callback { override fun onFailure(call: Call, e: IOException) { Log.i("PUPILD", "FAIL ${call.request().tag()} (${e.message})") - if (e.message != "Canceled") + if (e.message?.contains("cancel", true) != true) FirebaseCrashlytics.getInstance().recordException(e) progress[galleryID]?.set(i, Float.NaN) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 3ad95d3d..067f2789 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -148,4 +148,6 @@ キャッシュを使用しないため、ダウンロードできません (Korean only) (Korean only) + ユーザーID + ユーザーIDをクリップボードにコピーしました \ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index d7c72021..d036521d 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -148,4 +148,6 @@ 캐시를 활성화 해야 다운로드를 진행할 수 있습니다 아청법 대응 옵션 추가 경찰서 정모 확률을 줄여보고자 캐시 비활성화/태그 필터를 추가하였습니다. 적용하시겠습니까? + 유저 ID + 유저 ID를 클립보드에 복사했습니다 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 96ba80c2..7a2109f6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -183,6 +183,8 @@ Restore failed %1$d entries restored Import old galleries + User ID + User ID is copied to clipboard diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 234899ce..dff10800 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -107,6 +107,10 @@ app:key="old_import_galleries" app:title="@string/settings_import_old_galleries"/> + + - + \ No newline at end of file