diff --git a/app/src/main/java/jp/juggler/subwaytooter/util/PostImpl.kt b/app/src/main/java/jp/juggler/subwaytooter/util/PostImpl.kt
index 43dc016c..6ca853c7 100644
--- a/app/src/main/java/jp/juggler/subwaytooter/util/PostImpl.kt
+++ b/app/src/main/java/jp/juggler/subwaytooter/util/PostImpl.kt
@@ -607,7 +607,19 @@ class PostImpl(
status != null ->
PostResult.Normal(account, status)
- else -> error(result.error ?: "(result.error is null)")
+ else -> {
+ val e = result.error
+ error(
+ when {
+ e.isNullOrBlank() -> "(missing result.error)"
+
+ e.contains("HTTP 404") ->
+ "$e\n${activity.getString(R.string.post_404_desc)}"
+
+ else -> e
+ }
+ )
+ }
}
}
}
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index e8d2b42a..dac02264 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -1289,4 +1289,5 @@
可能ならWebPフォーマットを使う
詳細
絵文字の詳細
-
\ 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 500c54ee..75a727d9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1300,4 +1300,5 @@
Use WebP format if server accepts.
Detail
Emoji detail
+ (Or, you reply to follower-only post from other account)
diff --git a/base/src/main/java/jp/juggler/util/log/ToastUtils.kt b/base/src/main/java/jp/juggler/util/log/ToastUtils.kt
index 04b4f742..8fc534de 100644
--- a/base/src/main/java/jp/juggler/util/log/ToastUtils.kt
+++ b/base/src/main/java/jp/juggler/util/log/ToastUtils.kt
@@ -108,7 +108,7 @@ internal fun showToastImpl(
context: Context,
bLong: Boolean,
message: String,
- forceToast:Boolean = false,
+ forceToast: Boolean = false,
): Boolean {
runOnMainLooper {
if (!forceToast && (message.length >= 32 || message.count { it == '\n' } > 1)) {
@@ -154,8 +154,8 @@ internal fun showToastImpl(
fun Context.showToast(
bLong: Boolean,
caption: String?,
- forceToast:Boolean = false,
-): Boolean = showToastImpl(this, bLong, caption ?: "(null)" ,forceToast = forceToast)
+ forceToast: Boolean = false,
+): Boolean = showToastImpl(this, bLong, caption ?: "(null)", forceToast = forceToast)
fun Context.showToast(ex: Throwable, caption: String? = null): Boolean =
showToastImpl(this, true, ex.withCaption(caption))
@@ -188,23 +188,26 @@ fun AppCompatActivity.showError(ex: Throwable, caption: String? = null) {
if (ex is CancellationException) return
try {
- AlertDialog.Builder(this)
- .setTitle("error")
- .setMessage(
- listOf(
- caption,
- when (ex) {
- is IllegalStateException -> null
- else -> ex.javaClass.simpleName
- },
- ex.message,
- )
- .filter { !it.isNullOrBlank() }
- .joinToString("\n")
- )
+ val text = listOf(
+ caption,
+ when (ex) {
+ is IllegalStateException -> null
+ else -> ex.javaClass.simpleName
+ },
+ ex.message,
+ )
+ .filter { !it.isNullOrBlank() }
+ .joinToString("\n")
+ if (text.isNotEmpty()) {
+ AlertDialog.Builder(this)
+ .setMessage(text)
+ .setPositiveButton(android.R.string.ok, null)
+ .show()
+ return
+ }
} catch (ignored: Throwable) {
- showToast(ex, caption)
}
+ showToast(ex, caption)
}
fun Context.errorString(@StringRes stringId: Int, vararg args: Any?): Nothing =