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 =