Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51d5f42e8b | ||
|
|
8d8c5ace61 | ||
|
|
4bb6b8ccc9 | ||
|
|
6bebd36e83 | ||
|
|
edc7053e50 | ||
|
|
55e6ef5f78 | ||
|
|
9781d7a5dc | ||
|
|
b83cf87cd8 | ||
|
|
430864512d |
@@ -2,7 +2,7 @@
|
|||||||
*Pupil, Hitomi.la viewer for Android*
|
*Pupil, Hitomi.la viewer for Android*
|
||||||
|
|
||||||

|

|
||||||
[](https://github.com/tom5079/Pupil/releases/download/5.2.14/Pupil-v5.2.14.apk)
|
[](https://github.com/tom5079/Pupil/releases/download/5.2.17/Pupil-v5.2.17.apk)
|
||||||
[](https://discord.gg/Stj4b5v)
|
[](https://discord.gg/Stj4b5v)
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ android {
|
|||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 31
|
targetSdkVersion 31
|
||||||
versionCode 69
|
versionCode 69
|
||||||
versionName "5.2.15"
|
versionName "5.2.18"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
vectorDrawables.useSupportLibrary = true
|
vectorDrawables.useSupportLibrary = true
|
||||||
}
|
}
|
||||||
|
|||||||
2
app/proguard-rules.pro
vendored
2
app/proguard-rules.pro
vendored
@@ -33,4 +33,4 @@
|
|||||||
}
|
}
|
||||||
-keep class xyz.quaver.pupil.ui.fragment.ManageFavoritesFragment
|
-keep class xyz.quaver.pupil.ui.fragment.ManageFavoritesFragment
|
||||||
-keep class xyz.quaver.pupil.ui.fragment.ManageStorageFragment
|
-keep class xyz.quaver.pupil.ui.fragment.ManageStorageFragment
|
||||||
-keep class com.hippo.quickjs.** { *; }
|
-keep class xyz.quaver.pupil.** { *; }
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
"filters": [],
|
"filters": [],
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"versionCode": 69,
|
"versionCode": 69,
|
||||||
"versionName": "5.2.15",
|
"versionName": "5.2.18",
|
||||||
"outputFile": "app-release.apk"
|
"outputFile": "app-release.apk"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import android.app.NotificationChannel
|
|||||||
import android.app.NotificationManager
|
import android.app.NotificationManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.pm.ApplicationInfo
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.webkit.*
|
import android.webkit.*
|
||||||
@@ -46,8 +45,6 @@ import kotlinx.coroutines.flow.asSharedFlow
|
|||||||
import okhttp3.*
|
import okhttp3.*
|
||||||
import xyz.quaver.io.FileX
|
import xyz.quaver.io.FileX
|
||||||
import xyz.quaver.pupil.hitomi.evaluationContext
|
import xyz.quaver.pupil.hitomi.evaluationContext
|
||||||
import xyz.quaver.pupil.types.JavascriptConsoleException
|
|
||||||
import xyz.quaver.pupil.types.JavascriptOnErrorException
|
|
||||||
import xyz.quaver.pupil.types.Tag
|
import xyz.quaver.pupil.types.Tag
|
||||||
import xyz.quaver.pupil.util.*
|
import xyz.quaver.pupil.util.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -166,8 +163,8 @@ fun initWebView(context: Context) {
|
|||||||
error: WebResourceError?
|
error: WebResourceError?
|
||||||
) {
|
) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
FirebaseCrashlytics.getInstance().recordException(
|
FirebaseCrashlytics.getInstance().log(
|
||||||
JavascriptOnErrorException("onReceivedError: ${error?.description}")
|
"onReceivedError: ${error?.description}"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -175,8 +172,8 @@ fun initWebView(context: Context) {
|
|||||||
|
|
||||||
webChromeClient = object: WebChromeClient() {
|
webChromeClient = object: WebChromeClient() {
|
||||||
override fun onConsoleMessage(consoleMessage: ConsoleMessage?): Boolean {
|
override fun onConsoleMessage(consoleMessage: ConsoleMessage?): Boolean {
|
||||||
FirebaseCrashlytics.getInstance().recordException(
|
FirebaseCrashlytics.getInstance().log(
|
||||||
JavascriptConsoleException("onConsoleMessage: ${consoleMessage?.message()} (${consoleMessage?.sourceId()}:${consoleMessage?.lineNumber()})")
|
"onConsoleMessage: ${consoleMessage?.message()} (${consoleMessage?.sourceId()}:${consoleMessage?.lineNumber()})"
|
||||||
)
|
)
|
||||||
|
|
||||||
return super.onConsoleMessage(consoleMessage)
|
return super.onConsoleMessage(consoleMessage)
|
||||||
@@ -195,9 +192,8 @@ fun initWebView(context: Context) {
|
|||||||
CoroutineScope(Dispatchers.Unconfined).launch {
|
CoroutineScope(Dispatchers.Unconfined).launch {
|
||||||
_webViewFlow.emit(uid to null)
|
_webViewFlow.emit(uid to null)
|
||||||
}
|
}
|
||||||
Toast.makeText(context, message, Toast.LENGTH_LONG).show()
|
FirebaseCrashlytics.getInstance().log(
|
||||||
FirebaseCrashlytics.getInstance().recordException(
|
"onError: $message"
|
||||||
JavascriptOnErrorException(message)
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}, "Callback")
|
}, "Callback")
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ suspend fun WebView.evaluate(script: String): String = coroutineScope {
|
|||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
suspend fun WebView.evaluatePromise(
|
suspend fun WebView.evaluatePromise(
|
||||||
script: String,
|
script: String,
|
||||||
then: String = ".then(result => Callback.onResult(%uid, JSON.stringify(result))).catch(err => { console.err(err); Callback.onError(%uid, JSON.stringify(err)); })"
|
then: String = ".then(result => Callback.onResult(%uid, JSON.stringify(result))).catch(err => Callback.onError(%uid, JSON.stringify(err)))"
|
||||||
): String = coroutineScope {
|
): String = coroutineScope {
|
||||||
var result: String? = null
|
var result: String? = null
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ suspend fun getSuggestionsForQuery(query: String) : List<Suggestion> {
|
|||||||
then = """
|
then = """
|
||||||
.then(r => {
|
.then(r => {
|
||||||
let [results, results_serial] = r;
|
let [results, results_serial] = r;
|
||||||
console.log(results_serial, r, search_serial);
|
|
||||||
if (search_serial !== results_serial) {
|
if (search_serial !== results_serial) {
|
||||||
Callback.onResult(%uid, '[]');
|
Callback.onResult(%uid, '[]');
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -18,5 +18,4 @@
|
|||||||
|
|
||||||
package xyz.quaver.pupil.types
|
package xyz.quaver.pupil.types
|
||||||
|
|
||||||
class JavascriptConsoleException(message: String?): Exception(message)
|
class SendLogException : Exception()
|
||||||
class JavascriptOnErrorException(message: String?): Exception(message)
|
|
||||||
@@ -26,6 +26,7 @@ import androidx.activity.result.contract.ActivityResultContracts
|
|||||||
import androidx.appcompat.app.AppCompatDelegate
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
import androidx.preference.*
|
import androidx.preference.*
|
||||||
import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
|
import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
|
||||||
|
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@@ -36,6 +37,7 @@ import xyz.quaver.pupil.R
|
|||||||
import xyz.quaver.pupil.client
|
import xyz.quaver.pupil.client
|
||||||
import xyz.quaver.pupil.clientBuilder
|
import xyz.quaver.pupil.clientBuilder
|
||||||
import xyz.quaver.pupil.clientHolder
|
import xyz.quaver.pupil.clientHolder
|
||||||
|
import xyz.quaver.pupil.types.SendLogException
|
||||||
import xyz.quaver.pupil.ui.LockActivity
|
import xyz.quaver.pupil.ui.LockActivity
|
||||||
import xyz.quaver.pupil.ui.SettingsActivity
|
import xyz.quaver.pupil.ui.SettingsActivity
|
||||||
import xyz.quaver.pupil.ui.dialog.*
|
import xyz.quaver.pupil.ui.dialog.*
|
||||||
@@ -107,6 +109,7 @@ class SettingsFragment :
|
|||||||
ProxyDialogFragment().show(parentFragmentManager, "Proxy Dialog")
|
ProxyDialogFragment().show(parentFragmentManager, "Proxy Dialog")
|
||||||
}
|
}
|
||||||
"user_id" -> {
|
"user_id" -> {
|
||||||
|
FirebaseCrashlytics.getInstance().recordException(SendLogException())
|
||||||
(context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager).setPrimaryClip(
|
(context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager).setPrimaryClip(
|
||||||
ClipData.newPlainText("user_id", Preferences.get<String>("user_id"))
|
ClipData.newPlainText("user_id", Preferences.get<String>("user_id"))
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user