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..bb3ea7b2 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
@@ -296,7 +296,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