log.traceとlog.eをまとめる。log.eの説明文を省略できないようにする。

This commit is contained in:
tateisu 2022-12-27 11:54:52 +09:00
parent d58719ceb5
commit fde7582f04
122 changed files with 498 additions and 605 deletions

3
.gitignore vendored
View File

@ -130,3 +130,6 @@ _Emoji/*.txt
detektReport/
.idea/deploymentTargetDropDown.xml
app/detekt-*.xml

View File

@ -84,7 +84,7 @@ class ActAbout : AppCompatActivity() {
?.text = getString(R.string.version_is, pInfo.versionName)
}
} catch (ex: Throwable) {
log.trace(ex, "can't get app version.")
log.e(ex, "can't get app version.")
}
fun setButton(btnId: Int, caption: String, onClick: () -> Unit) {

View File

@ -1296,7 +1296,7 @@ class ActAccountSetting : AppCompatActivity(),
val intent = intentGetContent(false, getString(R.string.pick_image), arrayOf("image/*"))
arAddAttachment.launch(intent)
} catch (ex: Throwable) {
log.trace(ex, "performAttachment failed.")
log.e(ex, "performAttachment failed.")
showToast(ex, "performAttachment failed.")
}
}
@ -1318,7 +1318,7 @@ class ActAccountSetting : AppCompatActivity(),
state.propName = propName
arCameraImage.launch(intent)
} catch (ex: Throwable) {
log.trace(ex, "opening camera app failed.")
log.e(ex, "opening camera app failed.")
showToast(ex, "opening camera app failed.")
}
}
@ -1386,7 +1386,7 @@ class ActAccountSetting : AppCompatActivity(),
}
}
} catch (ex: Throwable) {
log.trace(ex, "Resizing image failed.")
log.e(ex, "Resizing image failed.")
showToast(ex, "Resizing image failed.")
}

View File

@ -908,7 +908,7 @@ class ActAppSetting : AppCompatActivity(), ColorPickerDialogListener, View.OnCli
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "parseFontSize failed.")
}
return Float.NaN
@ -945,7 +945,7 @@ class ActAppSetting : AppCompatActivity(), ColorPickerDialogListener, View.OnCli
return
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "showTimelineFont failed.")
}
// fallback
@ -994,7 +994,7 @@ class ActAppSetting : AppCompatActivity(), ColorPickerDialogListener, View.OnCli
return file
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "saveTimelineFont failed.")
showToast(ex, "saveTimelineFont failed.")
return null
}
@ -1170,7 +1170,7 @@ class ActAppSetting : AppCompatActivity(), ColorPickerDialogListener, View.OnCli
.show()
if (!rv) showToast(true, "share target app is not installed.")
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "openCustomShareChooser failed.")
showToast(ex, "openCustomShareChooser failed.")
}
}
@ -1206,7 +1206,7 @@ class ActAppSetting : AppCompatActivity(), ColorPickerDialogListener, View.OnCli
.show()
if (!rv) showToast(true, "share target app is not installed.")
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "openCustomShareChooser failed.")
showToast(ex, "openCustomShareChooser failed.")
}
}

View File

@ -129,7 +129,7 @@ class ActCallback : AppCompatActivity() {
copyExtraTexts(dst, src)
return dst
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "remake failed. src=$src")
}
}
} else if (Intent.ACTION_SEND == action) {
@ -144,7 +144,7 @@ class ActCallback : AppCompatActivity() {
copyExtraTexts(dst, src)
return dst
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "remake failed. src=$src")
}
} else if (Intent.ACTION_SEND_MULTIPLE == action) {
val listUri = src.getStreamUriListExtra()
@ -156,7 +156,7 @@ class ActCallback : AppCompatActivity() {
val uri = saveToCache(uriOriginal)
listDst.add(uri)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "remake failed. src=$src")
}
}
}
@ -182,7 +182,7 @@ class ActCallback : AppCompatActivity() {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "remake failed. src=$src")
}
return null
@ -230,11 +230,11 @@ class ActCallback : AppCompatActivity() {
f.delete()
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "sweepOldCache: delete item failed.")
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "sweepOldCache failed.")
}
}

View File

@ -270,7 +270,7 @@ class ActColumnCustomize : AppCompatActivity(), View.OnClickListener, ColorPicke
resultUri = fileUri.toString()
TootApiResult()
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't update background image.")
TootApiResult(ex.withCaption("can't update background image."))
}
}?.let { result ->
@ -426,7 +426,7 @@ class ActColumnCustomize : AppCompatActivity(), View.OnClickListener, ColorPicke
lastImageBitmap?.recycle()
lastImageBitmap = null
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "closeBitmaps failed.")
}
}
@ -453,7 +453,7 @@ class ActColumnCustomize : AppCompatActivity(), View.OnClickListener, ColorPicke
lastImageUri = url
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadImage failed.")
}
}
}

View File

@ -145,11 +145,11 @@ class ActColumnList : AppCompatActivity() {
item.setOldSelection(true)
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "restoreData: item decode failed.")
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "restoreData failed.")
}
listAdapter.itemList = tmpList

View File

@ -3,12 +3,17 @@ package jp.juggler.subwaytooter
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import android.widget.*
import android.widget.BaseAdapter
import android.widget.ImageView
import android.widget.ListView
import android.widget.TextView
import jp.juggler.subwaytooter.global.appDispatchers
import jp.juggler.subwaytooter.util.AsyncActivity
import jp.juggler.util.LogCategory
import jp.juggler.util.asciiPattern
import kotlinx.coroutines.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class ActDrawableList : AsyncActivity(), CoroutineScope {
@ -60,7 +65,7 @@ class ActDrawableList : AsyncActivity(), CoroutineScope {
drawableList.addAll(list)
adapter.notifyDataSetChanged()
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "load failed.")
}
}

View File

@ -14,8 +14,8 @@ import com.woxthebox.draglistview.swipe.ListSwipeItem
import jp.juggler.subwaytooter.api.entity.Acct
import jp.juggler.subwaytooter.table.FavMute
import jp.juggler.util.LogCategory
import jp.juggler.util.backPressed
import jp.juggler.util.attrColor
import jp.juggler.util.backPressed
class ActFavMute : AppCompatActivity() {
@ -116,7 +116,7 @@ class ActFavMute : AppCompatActivity() {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadData failed.")
}
listAdapter.itemList = tmpList

View File

@ -122,7 +122,7 @@ class ActHighlightWordList : AppCompatActivity(), View.OnClickListener {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadData failed.")
}
listAdapter.itemList = tmpList
@ -268,7 +268,7 @@ class ActHighlightWordList : AppCompatActivity(), View.OnClickListener {
try {
r.stop()
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "stopLastRingtone failed.")
} finally {
lastRingtone = null
}
@ -292,7 +292,7 @@ class ActHighlightWordList : AppCompatActivity(), View.OnClickListener {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "tryRingTone failed.")
}
return false

View File

@ -158,7 +158,7 @@ class ActLanguageFilter : AppCompatActivity(), View.OnClickListener {
return
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "restore failed.")
}
}
load(column.languageFilter)

View File

@ -447,7 +447,7 @@ class ActMain : AppCompatActivity(),
try {
SavedAccount.sweepBuggieData()
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex,"sweepBuggieData failed.")
}
}

View File

@ -537,7 +537,7 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener {
Bitmap.createBitmap(dstSizeInt.x, dstSizeInt.y, Bitmap.Config.ARGB_8888)
?: return Pair(bitmap1, "createBitmap returns null")
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "createBitmap failed.")
return Pair(bitmap1, ex.withCaption("createBitmap failed."))
}
@ -548,8 +548,8 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener {
Paint().apply { isFilterBitmap = true }
)
} catch (ex: Throwable) {
log.trace(ex)
bitmap2.recycle()
log.e(ex, "drawBitmap failed.")
return Pair(bitmap1, ex.withCaption("drawBitmap failed."))
}
@ -698,30 +698,13 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener {
download_history_list.addLast(DownloadHistory(now, url))
}
var fileName: String? = null
try {
val pathSegments = url.toUri().pathSegments
if (pathSegments != null) {
val size = pathSegments.size
for (i in size - 1 downTo 0) {
val s = pathSegments[i]
if (s?.isNotEmpty() == true) {
fileName = s
break
}
}
}
} catch (ex: Throwable) {
log.trace(ex)
}
if (fileName == null) {
fileName = url
.replaceFirst("https?://".asciiPattern(), "")
.replaceAll("[^.\\w\\d]+".asciiPattern(), "-")
}
if (fileName.length >= 20) fileName = fileName.substring(fileName.length - 20)
val fileName = (
url.mayUri()?.pathSegments?.findLast { !it.isNullOrBlank() }
?: url
.replaceFirst("https?://".asciiPattern(), "")
.replaceAll("[^.\\w\\d]+".asciiPattern(), "-")
)
.take(20)
val request = DownloadManager.Request(url.toUri())
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName)

View File

@ -13,8 +13,8 @@ import com.woxthebox.draglistview.swipe.ListSwipeHelper
import com.woxthebox.draglistview.swipe.ListSwipeItem
import jp.juggler.subwaytooter.table.MutedApp
import jp.juggler.util.LogCategory
import jp.juggler.util.backPressed
import jp.juggler.util.attrColor
import jp.juggler.util.backPressed
class ActMutedApp : AppCompatActivity() {
@ -116,7 +116,7 @@ class ActMutedApp : AppCompatActivity() {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadData failed.")
}
listAdapter.itemList = tmpList

View File

@ -13,8 +13,8 @@ import com.woxthebox.draglistview.swipe.ListSwipeHelper
import com.woxthebox.draglistview.swipe.ListSwipeItem
import jp.juggler.subwaytooter.table.UserRelation
import jp.juggler.util.LogCategory
import jp.juggler.util.backPressed
import jp.juggler.util.attrColor
import jp.juggler.util.backPressed
class ActMutedPseudoAccount : AppCompatActivity() {
@ -115,7 +115,7 @@ class ActMutedPseudoAccount : AppCompatActivity() {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadData failed.")
}
listAdapter.itemList = tmpList

View File

@ -13,8 +13,8 @@ import com.woxthebox.draglistview.swipe.ListSwipeHelper
import com.woxthebox.draglistview.swipe.ListSwipeItem
import jp.juggler.subwaytooter.table.MutedWord
import jp.juggler.util.LogCategory
import jp.juggler.util.backPressed
import jp.juggler.util.attrColor
import jp.juggler.util.backPressed
class ActMutedWord : AppCompatActivity() {
@ -115,7 +115,7 @@ class ActMutedWord : AppCompatActivity() {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadData failed.")
}
listAdapter.itemList = tmpList

View File

@ -20,10 +20,10 @@ class ActOSSLicense : AppCompatActivity() {
App1.initEdgeToEdge(this)
try {
val tv = findViewById<TextView>(R.id.tvText)
tv.text = loadRawResource(R.raw.oss_license).decodeUTF8()
findViewById<TextView>(R.id.tvText)
?.text = loadRawResource(R.raw.oss_license).decodeUTF8()
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't show license text.")
}
}
}

View File

@ -189,7 +189,7 @@ class ActPost : AppCompatActivity(),
} catch (ex: Throwable) {
when (ex) {
is CancellationException, is ClosedReceiveChannelException -> Unit
else -> log.trace(ex)
else -> log.e(ex, "can't show media progress.")
}
}
}
@ -206,7 +206,7 @@ class ActPost : AppCompatActivity(),
try {
progressChannel.close()
} catch (ex: Throwable) {
log.e(ex)
log.e(ex, "progressChannel close failed.")
}
completionHelper.onDestroy()
attachmentUploader.onActivityDestroy()
@ -243,7 +243,6 @@ class ActPost : AppCompatActivity(),
if (!isPostComplete) saveDraft()
}
override fun onClick(v: View) {
refActPost = WeakReference(this)
when (v.id) {
@ -291,7 +290,7 @@ class ActPost : AppCompatActivity(),
try {
progressChannel.send(Unit)
} catch (ex: Throwable) {
log.w(ex)
log.w(ex, "progressChannel send failed.")
}
}
}

View File

@ -25,6 +25,7 @@ class ActText : AppCompatActivity() {
internal val log = LogCategory("ActText")
internal const val RESULT_SEARCH_MSP = RESULT_FIRST_USER + 1
// internal const val RESULT_SEARCH_TS = RESULT_FIRST_USER + 2
internal const val RESULT_SEARCH_NOTESTOCK = RESULT_FIRST_USER + 3
@ -152,7 +153,7 @@ class ActText : AppCompatActivity() {
intent.putExtra(Intent.EXTRA_TEXT, it)
startActivity(intent)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "send failed.")
showToast(ex, "send failed.")
}
}
@ -167,7 +168,7 @@ class ActText : AppCompatActivity() {
startActivity(intent)
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "search failed.")
showToast(ex, "search failed.")
}
}
@ -181,7 +182,8 @@ class ActText : AppCompatActivity() {
setResult(resultCode, data)
finish()
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "searchToot failed.")
showToast(ex, "searchToot failed.")
}
}
}
@ -193,7 +195,7 @@ class ActText : AppCompatActivity() {
App1.getAppState(this).onMuteUpdated()
showToast(false, R.string.word_was_muted)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "muteWord failed.")
showToast(ex, "muteWord failed.")
}
}

View File

@ -328,7 +328,7 @@ class App1 : Application() {
try {
appStateX?.sound(item)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "sound failed.")
// java.lang.NoSuchFieldError:
// at jp.juggler.subwaytooter.App1$Companion.sound (App1.kt:544)
// at jp.juggler.subwaytooter.column.Column$startRefresh$task$1.onPostExecute (Column.kt:2432)
@ -352,7 +352,7 @@ class App1 : Application() {
// エラー処理
val catcher = GlideExecutor.UncaughtThrowableStrategy { ex ->
log.trace(ex)
log.e(ex, "glide uncaught error.")
}
builder.setDiskCacheExecutor(
GlideExecutor.newDiskCacheBuilder()

View File

@ -87,7 +87,7 @@ class AppState(
tmpFile.delete() // ignore return value
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "saveColumnList failed.")
context.showToast(ex, "saveColumnList failed.")
}
}
@ -101,7 +101,7 @@ class AppState(
}
} catch (ignored: FileNotFoundException) {
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadColumnList failed.")
context.showToast(ex, "loadColumnList failed.")
}
return null
@ -252,7 +252,6 @@ class AppState(
(++utteranceIdSeed).toString() // String utteranceId
)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "proc_flushSpeechQueue catch exception.")
restartTTS()
}
@ -274,7 +273,7 @@ class AppState(
ColumnEncoder.encode(column, dst, index)
dst
} catch (ex: JsonException) {
log.trace(ex)
log.e(ex, "encodeColumnList: encode failed at $index.")
null
}
}.toJsonArray()
@ -288,11 +287,11 @@ class AppState(
fun loadColumnList() {
val list = loadColumnList(context, FILE_COLUMN_LIST)
?.objectList()
?.mapNotNull { src ->
?.mapIndexedNotNull { index, src ->
try {
Column(this, src)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadColumnList: decode column failed at $index")
null
}
}
@ -317,7 +316,7 @@ class AppState(
} catch (ex: Throwable) {
// クラッシュレポートによると状態が悪いとダメらしい
// java.lang.IllegalStateException
log.trace(ex)
log.e(ex, "loadColumnList failed.")
}
}
@ -423,7 +422,6 @@ class AppState(
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "TextToSpeech.getVoices raises exception.")
}
@ -552,12 +550,11 @@ class AppState(
}
private fun stopLastRingtone() {
val r = lastRingtone?.get()
if (r != null) {
lastRingtone?.get()?.let { r ->
try {
r.stop()
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "stopLastRingtone failed.")
} finally {
lastRingtone = null
}
@ -584,7 +581,7 @@ class AppState(
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "tryRingtone failed.")
}
return false
}

View File

@ -40,7 +40,7 @@ class MyFirebaseMessagingService : FirebaseMessagingService() {
PrefDevice.from(this).edit().putString(PrefDevice.KEY_DEVICE_TOKEN, token).apply()
restartAllWorker(this)
} catch (ex: Throwable) {
log.trace(ex, "onNewToken failed")
log.e(ex, "onNewToken failed")
}
}
@ -93,7 +93,7 @@ class MyFirebaseMessagingService : FirebaseMessagingService() {
log.i(text)
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "check failed. accountDbId=$accountDbId")
}
}
}

View File

@ -12,6 +12,8 @@ import jp.juggler.util.LogCategory
import jp.juggler.util.jsonObject
import jp.juggler.util.showToast
private val log = LogCategory("ActionUtils")
// 疑似アカウントを作成する
// 既に存在する場合は再利用する
// 実アカウントを返すことはない
@ -20,18 +22,18 @@ internal suspend fun AppCompatActivity.addPseudoAccount(
instanceInfoArg: TootInstance? = null,
): SavedAccount? {
suspend fun AppCompatActivity.getInstanceInfo(): TootInstance? {
var resultTi: TootInstance? = null
val result = runApiTask(host) { client ->
val (instance, instanceResult) = TootInstance.get(client)
resultTi = instance
instanceResult
}
result?.error?.let { showToast(true, it) }
return resultTi
}
try {
suspend fun AppCompatActivity.getInstanceInfo(): TootInstance? {
var resultTi: TootInstance? = null
val result = runApiTask(host) { client ->
val (instance, instanceResult) = TootInstance.get(client)
resultTi = instance
instanceResult
}
result?.error?.let { showToast(true, it) }
return resultTi
}
val acct = Acct.parse("?", host)
var account = SavedAccount.loadAccountByAcct(this, acct.ascii)
@ -70,12 +72,10 @@ internal suspend fun AppCompatActivity.addPseudoAccount(
account.saveSetting()
return account
} catch (ex: Throwable) {
val log = LogCategory("addPseudoAccount")
log.trace(ex)
log.e(ex, "failed.")
log.e(ex, "addPseudoAccount failed.")
showToast(ex, "addPseudoAccount failed.")
return null
}
return null
}
internal fun SavedAccount.saveUserRelation(src: TootRelationShip?): UserRelation? {

View File

@ -247,10 +247,11 @@ private fun appServerUnregister(context: Context, account: SavedAccount) {
)
val response = call.await()
log.e("appServerUnregister: $response")
if(!response.isSuccessful){
log.e("appServerUnregister: $response")
}
} catch (ex: Throwable) {
log.trace(ex, "appServerUnregister failed.")
log.e(ex, "appServerUnregister failed.")
}
}
}
@ -340,7 +341,7 @@ suspend fun Context.accountListWithFilter(
try {
if (check(client, it)) it else null
} catch (ex: Throwable) {
log.trace(ex, "accountListWithFilter failed.")
log.e(ex, "accountListWithFilter failed.")
null
}
}

View File

@ -261,7 +261,7 @@ fun ActMain.quoteName(who: TootAccount) {
sv = String.format(Locale.getDefault(), fmt, sv)
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "quoteName failed.")
}
openPost(sv)
}

View File

@ -127,7 +127,7 @@ fun ActMain.tagDialog(
d.show(activity, tagWithSharp)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "tagDialog failed.")
}
}
}

View File

@ -50,7 +50,7 @@ fun ActMain.onBackPressedImpl() {
try {
appState.column(env.pager.currentItem)?.addTo(visibleColumnList)
} catch (ex: Throwable) {
log.w(ex)
log.e(ex, "getClosableColumnList failed.")
}
}, { env ->
visibleColumnList.addAll(env.visibleColumns)
@ -153,7 +153,7 @@ fun ActMain.onMyClickableSpanClickedImpl(viewClicked: View, span: MyClickableSpa
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't create hashtagList")
}
}

View File

@ -388,7 +388,7 @@ fun ActMain.resizeColumnWidth(views: ActMainTabletViews) {
columnWMinDp = iv
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't parse spColumnWidth. $sv")
}
}

View File

@ -11,8 +11,8 @@ import jp.juggler.subwaytooter.appsetting.AppDataExporter
import jp.juggler.subwaytooter.column.Column
import jp.juggler.subwaytooter.notification.setImportProtector
import jp.juggler.util.LogCategory
import jp.juggler.util.runOnMainLooper
import jp.juggler.util.launchProgress
import jp.juggler.util.runOnMainLooper
import jp.juggler.util.showToast
import java.io.File
import java.io.FileInputStream
@ -100,8 +100,8 @@ fun ActMain.importAppData(uri: Uri) {
}
}
} catch (ex: Throwable) {
log.trace(ex)
if (zipEntryCount != 0) {
log.e(ex, "importAppData failed.")
showToast(ex, "importAppData failed.")
}
}

View File

@ -39,7 +39,7 @@ fun ActMain.handleIntentUri(uri: Uri) {
else -> handleOtherUri(uri)
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "handleIntentUri failed.")
showToast(ex, "handleIntentUri failed.")
}
}
@ -138,7 +138,7 @@ fun ActMain.handleOtherUri(uri: Uri): Boolean {
startActivity(chooser)
return true
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't open app to handle intent.")
}
AlertDialog.Builder(this)
@ -188,7 +188,7 @@ private fun ActMain.handleNotificationClick(uri: Uri, dataIdString: String) {
// 通知を読み直す
if (!column.bInitialLoading) column.startLoading()
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "handleNotificationClick failed.")
}
}
@ -227,7 +227,7 @@ private fun ActMain.handleOAuth2Callback(uri: Uri) {
resultSavedAccount = sa
client.account = sa
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "handleOAuth2Callback failed.")
return@runApiTask TootApiResult(ex.withCaption("invalid state"))
}
}
@ -279,7 +279,7 @@ private fun ActMain.handleOAuth2Callback(uri: Uri) {
resultSavedAccount = sa
client.account = sa
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "handleOAuth2Callback failed.")
return@runApiTask TootApiResult(ex.withCaption("invalid state"))
}

View File

@ -25,47 +25,47 @@ import kotlin.math.max
private val log = LogCategory("ActMainStyle")
private fun ActMain.dpToPx(dp: Float) =
(dp * density + 0.5f).toInt()
// initUIから呼ばれる
fun ActMain.reloadFonts() {
var sv = PrefS.spTimelineFont(pref)
if (sv.isNotEmpty()) {
ActMain.timelineFont = PrefS.spTimelineFont(pref).notEmpty()?.let {
try {
ActMain.timelineFont = Typeface.createFromFile(sv)
Typeface.createFromFile(it)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "timelineFont load failed")
null
}
}
} ?: Typeface.DEFAULT
sv = PrefS.spTimelineFontBold(pref)
if (sv.isNotEmpty()) {
ActMain.timelineFontBold = PrefS.spTimelineFontBold(pref).notEmpty()?.let {
try {
ActMain.timelineFontBold = Typeface.createFromFile(sv)
Typeface.createFromFile(it)
} catch (ex: Throwable) {
log.trace(ex)
}
} else {
try {
ActMain.timelineFontBold = Typeface.create(ActMain.timelineFont, Typeface.BOLD)
} catch (ex: Throwable) {
log.trace(ex)
}
}
}
private fun ActMain.parseIconSize(stringPref: StringPref, minDp: Float = 1f): Int {
var iconSizeDp = stringPref.defVal.toFloat()
try {
val sv = stringPref(pref)
val fv = if (sv.isEmpty()) Float.NaN else sv.toFloat()
if (fv.isFinite() && fv >= minDp) {
iconSizeDp = fv
log.e(ex, "timelineFontBold load failed")
null
}
} ?: try {
Typeface.create(ActMain.timelineFont, Typeface.BOLD)
} catch (ex: Throwable) {
log.trace(ex)
}
return (0.5f + iconSizeDp * density).toInt()
log.e(ex, "timelineFontBold create from timelineFont failed")
null
} ?: Typeface.DEFAULT_BOLD
}
private fun ActMain.parseIconSize(stringPref: StringPref, minDp: Float = 1f) =
dpToPx(
try {
stringPref(pref)
.toFloatOrNull()
?.takeIf { it.isFinite() && it >= minDp }
} catch (ex: Throwable) {
log.e(ex, "parseIconSize failed.")
null
} ?: stringPref.defVal.toFloat()
)
// initUIから呼ばれる
fun ActMain.reloadIconSize() {
avatarIconSize = parseIconSize(PrefS.spAvatarIconSize)
@ -85,53 +85,38 @@ fun ActMain.reloadIconSize() {
// initUIから呼ばれる
fun ActMain.reloadRoundRatio() {
var roundRatio = 33f
try {
if (PrefB.bpDontRound(pref)) {
roundRatio = 0f
} else {
val sv = PrefS.spRoundRatio(pref)
if (sv.isNotEmpty()) {
val fv = sv.toFloat()
if (fv.isFinite()) {
roundRatio = fv
}
}
}
} catch (ex: Throwable) {
log.trace(ex)
val sizeDp = when {
PrefB.bpDontRound(pref) -> 0f
else -> PrefS.spRoundRatio(pref)
.toFloatOrNull()
?.takeIf { it.isFinite() }
?: 33f
}
Styler.round_ratio = clipRange(0f, 1f, roundRatio / 100f) * 0.5f
Styler.round_ratio = clipRange(0f, 1f, sizeDp / 100f) * 0.5f
}
// initUI から呼ばれる
fun ActMain.reloadBoostAlpha() {
var boostAlpha = 0.8f
try {
val f = (PrefS.spBoostAlpha.toInt(pref).toFloat() + 0.5f) / 100f
boostAlpha = when {
f >= 1f -> 1f
f < 0f -> 0.66f
else -> f
}
} catch (ex: Throwable) {
log.trace(ex)
}
Styler.boostAlpha = boostAlpha
Styler.boostAlpha = PrefS.spBoostAlpha(pref)
.toIntOrNull()
?.toFloat()
?.let { (it + 0.5f) / 100f }
?.let {
when {
it >= 1f -> 1f
it < 0f -> 0.66f
else -> it
}
} ?: 0.8f
}
fun ActMain.reloadMediaHeight() {
var mediaThumbHeightDp = 64
val sv = PrefS.spMediaThumbHeight(pref)
if (sv.isNotEmpty()) {
try {
val iv = Integer.parseInt(sv)
if (iv >= 32) mediaThumbHeightDp = iv
} catch (ex: Throwable) {
log.trace(ex)
}
}
appState.mediaThumbHeight = (0.5f + mediaThumbHeightDp * density).toInt()
appState.mediaThumbHeight = dpToPx(
PrefS.spMediaThumbHeight(pref)
.toFloatOrNull()
?.takeIf { it >= 32f }
?: 64f
)
}
private fun Float.clipFontSize(): Float =
@ -146,21 +131,13 @@ fun ActMain.reloadTextSize() {
timelineSpacing = if (fv != null && fv.isFinite() && fv != 0f) fv else null
}
fun ActMain.loadColumnMin(density: Float): Int {
var x = ActMain.COLUMN_WIDTH_MIN_DP.toFloat()
val sv = PrefS.spColumnWidth(pref)
if (sv.isNotEmpty()) {
try {
val fv = sv.toFloat()
if (fv.isFinite() && fv >= 100f) {
x = fv
}
} catch (ex: Throwable) {
log.trace(ex)
}
}
return (0.5f + x * density).toInt()
}
fun ActMain.loadColumnMin() =
dpToPx(
PrefS.spColumnWidth(pref)
.toFloatOrNull()
?.takeIf { it.isFinite() && it >= 100f }
?: ActMain.COLUMN_WIDTH_MIN_DP.toFloat()
)
fun ActMain.justifyWindowContentPortrait() {
when (PrefI.ipJustifyWindowContentPortrait(pref)) {
@ -183,7 +160,7 @@ fun ActMain.justifyWindowContentPortrait() {
PrefI.JWCP_END -> {
val iconW = (ActMain.stripIconSize * 1.5f + 0.5f).toInt()
val borderWidth = (1f * density + 0.5f).toInt()
val borderWidth = dpToPx(1f)
val padding = resources.displayMetrics.widthPixels / 2 - iconW - borderWidth
fun ViewGroup.addViewAfterFirst(v: View) = addView(v, 1)

View File

@ -21,7 +21,7 @@ inline fun <R : Any?> ActMain.phoneTab(codePhone: (ActMainPhoneViews) -> R, code
}
fun ActMain.initPhoneTablet() {
val columnWMin = loadColumnMin(density)
val columnWMin = loadColumnMin()
val sw = resources.displayMetrics.widthPixels
val tmpPhonePager: MyViewPager = findViewById(R.id.viewPager)
val tmpTabletPager: RecyclerView = findViewById(R.id.rvPager)

View File

@ -531,7 +531,7 @@ class SideMenuAdapter(
}
}
} catch (ex: Throwable) {
log.w(ex)
log.w(ex,"getTimeZoneString failed.")
return "(incorrect TimeZone)"
}
}

View File

@ -98,7 +98,7 @@ internal fun ActPost.setAccountWithVisibilityConversion(a: SavedAccount) {
states.visibility = a.visibility
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "setAccountWithVisibilityConversion failed.")
}
showVisibility()
showQuotedRenote()

View File

@ -34,11 +34,11 @@ fun ActPost.decodeAttachments(sv: String) {
try {
attachmentList.add(PostAttachment(TootAttachment.decodeJson(it)))
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't parse TootAttachment.")
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "decodeAttachments failed.")
}
}

View File

@ -66,7 +66,7 @@ private suspend fun checkExist(url: String?): Boolean {
log.e(TootApiClient.formatResponse(response, "check_exist failed."))
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "checkExist failed.")
}
return false
}
@ -126,7 +126,7 @@ fun ActPost.saveDraft() {
PostDraft.save(System.currentTimeMillis(), json)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "saveDraft failed.")
}
}
@ -221,7 +221,7 @@ fun ActPost.restoreDraft(draft: JsonObject) {
}
}
} catch (ex: JsonException) {
log.trace(ex)
log.e(ex, "can't parse tmpAttachmentList.")
}
"OK"
@ -346,7 +346,7 @@ fun ActPost.initializeFromRedraftStatus(account: SavedAccount, jsonText: String)
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't initialize attachments from redraft.")
}
}
@ -413,7 +413,7 @@ fun ActPost.initializeFromRedraftStatus(account: SavedAccount, jsonText: String)
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "initializeFromRedraftStatus failed.")
}
}
@ -441,7 +441,7 @@ fun ActPost.initializeFromEditStatus(account: SavedAccount, jsonText: String) {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't initialize attachments from edit status")
}
}
@ -508,6 +508,6 @@ fun ActPost.initializeFromEditStatus(account: SavedAccount, jsonText: String) {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "initializeFromEditStatus failed.")
}
}

View File

@ -261,7 +261,7 @@ fun ActPost.initializeFromSharedIntent(sharedIntent: Intent) {
appendContentText(sharedIntent)
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex,"initializeFromSharedIntent failed.")
}
}

View File

@ -100,7 +100,7 @@ fun ActPost.openMushroom() {
arMushroom.launch(chooser)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "openMushroom failed.")
showRecommendedPlugin(getString(R.string.plugin_not_installed))
}
}

View File

@ -138,10 +138,10 @@ fun ActPost.initializeFromReplyStatus(account: SavedAccount, jsonText: String) {
states.visibility = sample
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "initializeFromReplyStatus: can't initialize visibility.")
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "initializeFromReplyStatus failed.")
}
}

View File

@ -72,6 +72,6 @@ fun ActPost.initializeFromScheduledStatus(account: SavedAccount, jsonText: Strin
this.attachmentList.addAll(it)
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "initializeFromScheduledStatus failed.")
}
}

View File

@ -358,7 +358,7 @@ class TootApiClient(
readBodyBytes(result, progressPath, jsonErrorParser)
?: return if (isApiCancelled()) null else result
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "parseBytes failed.")
result.parseErrorResponse(result.bodyString ?: NO_INFORMATION)
}
return result
@ -375,7 +375,7 @@ class TootApiClient(
result.data = bodyString
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "parseString failed.")
result.parseErrorResponse(result.bodyString ?: NO_INFORMATION)
}
return result
@ -388,55 +388,64 @@ class TootApiClient(
progressPath: String? = null,
jsonErrorParser: (json: JsonObject) -> String? = DEFAULT_JSON_ERROR_PARSER,
): TootApiResult? {
val response = result.response!! // nullにならないはず
try {
var bodyString = readBodyString(result, progressPath, jsonErrorParser)
?: return if (isApiCancelled()) null else result
if (bodyString.isEmpty()) {
when {
bodyString == null ->
return if (isApiCancelled()) null else result
// 204 no content は 空オブジェクトと解釈する
result.data = JsonObject()
} else if (reStartJsonArray.matcher(bodyString).find()) {
result.data = bodyString.decodeJsonArray()
} else if (reStartJsonObject.matcher(bodyString).find()) {
val json = bodyString.decodeJsonObject()
val errorMessage = jsonErrorParser(json)
if (errorMessage != null) {
result.error = errorMessage
} else {
result.data = json
}
} else {
// HTMLならタグを除去する
val ct = response.body?.contentType()
if (ct?.subtype == "html") {
val decoded = DecodeOptions().decodeHTML(bodyString).toString()
.replace("""[\s ]+""".toRegex(), " ")
bodyString = decoded
bodyString.isEmpty() -> {
result.data = JsonObject()
}
val sb = StringBuilder()
.append(context.getString(R.string.response_not_json))
.append(' ')
.append(bodyString)
reStartJsonArray.matcher(bodyString).find() -> {
result.data = bodyString.decodeJsonArray()
}
if (sb.isNotEmpty()) sb.append(' ')
sb.append("(HTTP ").append(response.code.toString())
reStartJsonObject.matcher(bodyString).find() -> {
val json = bodyString.decodeJsonObject()
val errorMessage = jsonErrorParser(json)
if (errorMessage != null) {
result.error = errorMessage
} else {
result.data = json
}
}
val message = response.message
if (message.isNotEmpty()) sb.append(' ').append(message)
else -> {
val response = result.response!! // nullにならないはず
sb.append(")")
// HTMLならタグを除去する
val ct = response.body?.contentType()
if (ct?.subtype == "html") {
val decoded = DecodeOptions().decodeHTML(bodyString).toString()
.replace("""[\s ]+""".toRegex(), " ")
bodyString = decoded
}
val url = response.request.url.toString()
if (url.isNotEmpty()) sb.append(' ').append(url)
val sb = StringBuilder()
.append(context.getString(R.string.response_not_json))
.append(' ')
.append(bodyString)
result.error = sb.toString()
if (sb.isNotEmpty()) sb.append(' ')
sb.append("(HTTP ").append(response.code.toString())
val message = response.message
if (message.isNotEmpty()) sb.append(' ').append(message)
sb.append(")")
val url = response.request.url.toString()
if (url.isNotEmpty()) sb.append(' ').append(url)
result.error = sb.toString()
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "parseJson failed.")
result.parseErrorResponse(result.bodyString ?: NO_INFORMATION)
}
return result
@ -1254,7 +1263,7 @@ class TootApiClient(
return Pair(null, null)
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "webSocket failed.")
result.error =
"${result.caption}: ${ex.withCaption(context.resources, R.string.network_error)}"
}

View File

@ -66,7 +66,7 @@ open class TootApiResult(
}
constructor(response: Response, error: String)
: this(0, error, response)
: this(0, error, response)
constructor(response: Response, bodyString: String, data: Any?) : this(
0,
@ -167,7 +167,7 @@ open class TootApiResult(
sb.append(' ').append(caption)
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "parseErrorResponse failed.")
}
this.error = sb.toString().replace("\n+".toRegex(), "\n")

View File

@ -24,7 +24,7 @@ class APAttachment(jsonArray: JsonArray?) {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "APAttachment ctor failed.")
}
}
}

View File

@ -6,7 +6,6 @@ import jp.juggler.util.JsonArray
import jp.juggler.util.JsonObject
import jp.juggler.util.LogCategory
import jp.juggler.util.cast
import java.util.*
class APTag(parser: TootParser, jsonArray: JsonArray?) {
@ -61,7 +60,7 @@ class APTag(parser: TootParser, jsonArray: JsonArray?) {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "APTag ctor failed.")
}
}
}

View File

@ -23,7 +23,6 @@ inline fun <reified T> parseItem(
return try {
factory(src)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "${T::class.simpleName} parse failed.")
null
}
@ -156,7 +155,6 @@ inline fun <reified V> parseProfileEmoji2(
val item = try {
factory(v, key)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "parseProfileEmoji2 failed.")
null
}
@ -180,7 +178,6 @@ inline fun <P, reified T> parseItem(
return try {
factory(parser, src)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "${T::class.simpleName} parse failed.")
null
}
@ -196,7 +193,6 @@ inline fun <reified T> parseItem(
return try {
factory(serviceType, src)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "${T::class.simpleName} parse failed.")
null
}

View File

@ -675,7 +675,6 @@ open class TootAccount(parser: TootParser, src: JsonObject) : HostAndDomain {
return try {
Source(src)
} catch (ex: Throwable) {
log.trace(ex)
log.e("parseSource failed.")
null
}

View File

@ -45,7 +45,6 @@ class TootFilter(src: JsonObject) : TimelineItem() {
try {
result.add(TootFilter(it))
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "TootFilter parse failed.")
}
}

View File

@ -435,12 +435,12 @@ class TootInstance(parser: TootParser, src: JsonObject) {
handleRequest(req)
}
} catch (ex: Throwable) {
log.trace(ex, "handleRequest failed.")
log.e(ex, "handleRequest failed.")
tiError(ex.withCaption("handleRequest failed."))
}
runCatching { req.cont.resumeWith(Result.success(r)) }
} catch (ex: Throwable) {
log.trace(ex, "requestQueue.take failed.")
log.e(ex, "requestQueue.take failed.")
delay(3000L)
}
}

View File

@ -52,8 +52,9 @@ object TootPayload {
// 2022/3/19 fedibird.com から来る? 投稿の編集らしい?
"status.update",
// 2017/8/24 18:37 mastodon.juggler.jpでここを通った
"update" -> parser.status(src)
// 2017/8/24 18:37 mastodon.juggler.jpでここを通った
"update",
-> parser.status(src)
// 2017/8/24 18:37 mastodon.juggler.jpでここを通った
"notification" -> parser.notification(src)
@ -86,7 +87,7 @@ object TootPayload {
// ここを通るケースはまだ確認できていない
log.e("unknown payload(3). message=$parentText")
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "parsePayload failed.")
}
return null

View File

@ -297,7 +297,7 @@ class TootPolls(
src
)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex,"parse failed.")
null
}
}

View File

@ -565,7 +565,7 @@ class TootStatus(parser: TootParser, src: JsonObject) : TimelineItem() {
it
)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "TootStatus ctor failed. enquete (NoteStock)")
null
}
}
@ -799,7 +799,7 @@ class TootStatus(parser: TootParser, src: JsonObject) : TimelineItem() {
)
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "TootStatus ctor failed. enquete")
null
}
}

View File

@ -1,5 +1,7 @@
package jp.juggler.subwaytooter.api.entity
import jp.juggler.util.LogCategory
enum class TootVisibility(
val id: Int,
val order: Int, // 公開範囲の広い方とWeb設定に合わせる方が大きい
@ -105,6 +107,7 @@ enum class TootVisibility(
}
companion object {
private val log = LogCategory("TootVisivbility")
fun parseMastodon(a: String?): TootVisibility? {
for (v in values()) {
@ -162,7 +165,7 @@ enum class TootVisibility(
currentVisibility.order > maxVisibility.order
}
} catch (ex: Throwable) {
TootStatus.log.trace(ex)
log.e(ex, "isVisibilitySpoilRequired failed.")
false
}
}

View File

@ -235,7 +235,6 @@ object AppDataExporter {
reader.endArray()
db.execSQL("COMMIT TRANSACTION")
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "importTable failed.")
try {
db.execSQL("ROLLBACK TRANSACTION")
@ -343,7 +342,6 @@ object AppDataExporter {
try {
result.add(Column(appState, item))
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "column load failed.")
throw ex
}
@ -436,7 +434,7 @@ object AppDataExporter {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "saveBackgroundImage failed.")
}
}
@ -470,7 +468,7 @@ object AppDataExporter {
column.columnBgImage = Uri.fromFile(file).toString()
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "restoreBackgroundImage failed.")
}
return true

View File

@ -195,7 +195,7 @@ fun Column.removeNotifications() {
try {
onNotificationCleared(context, accessInfo.db_id)
} catch (ex: Throwable) {
log.trace(ex, "onNotificationCleared failed.")
log.e(ex, "onNotificationCleared failed.")
}
}
}

View File

@ -167,7 +167,7 @@ fun Column.initFilter() {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex,"initFilter failed.")
}
}

View File

@ -175,7 +175,7 @@ object ColumnSpec {
else -> true
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "isSameSpec failed.")
false
}
}

View File

@ -108,7 +108,7 @@ fun Column.mergeStreamingMessage() {
} catch (ex: Throwable) {
// IDを取得できないタイプのオブジェクトだった
// ストリームに来るのは通知かステータスだから、多分ここは通らない
log.trace(ex)
log.e(ex, "mergeStreamingMessage failed.")
}
}

View File

@ -9,7 +9,6 @@ import jp.juggler.subwaytooter.columnviewholder.setListItemTop
import jp.juggler.subwaytooter.notification.injectData
import jp.juggler.subwaytooter.pref.PrefI
import jp.juggler.util.*
import java.lang.StringBuilder
@Suppress("ClassNaming")
class ColumnTask_Gap(
@ -56,7 +55,7 @@ class ColumnTask_Gap(
try {
column.updateRelation(client, listTmp, column.whoAccount, parser)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "updateRelation failed.")
}
ctClosed.set(true)
@ -924,7 +923,7 @@ class ColumnTask_Gap(
val (apiResult, searchResult) = client.requestMastodonSearch(
parser,
q= column.searchQuery,
q = column.searchQuery,
resolve = column.searchResolve,
extra = "type=$type&offset=$offset",
)

View File

@ -66,7 +66,7 @@ class ColumnTask_Loading(
try {
column.updateRelation(client, listTmp, column.whoAccount, parser)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "updateRelation failed.")
}
ctClosed.set(true)
runOnMainLooperDelayed(333L) {
@ -1222,7 +1222,7 @@ class ColumnTask_Loading(
val (apiResult, searchResult) = client.requestMastodonSearch(
parser,
q=column.searchQuery,
q = column.searchQuery,
resolve = column.searchResolve,
)
if (searchResult != null) {

View File

@ -63,7 +63,7 @@ class ColumnTask_Refresh(
try {
column.updateRelation(client, listTmp, column.whoAccount, parser)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "updateRelation failed.")
}
ctClosed.set(true)
runOnMainLooperDelayed(333L) {

View File

@ -348,7 +348,7 @@ class ColumnViewHolder(
v.typeface = ActMain.timelineFont
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't change typeface.")
}
}

View File

@ -19,6 +19,8 @@ import org.jetbrains.anko.backgroundColor
import org.jetbrains.anko.bottomPadding
import org.jetbrains.anko.topPadding
private val log = LogCategory("ColumnViewHolderLifeCycle")
fun ColumnViewHolder.closeBitmaps() {
try {
ivColumnBackgroundImage.visibility = View.GONE
@ -32,7 +34,7 @@ fun ColumnViewHolder.closeBitmaps() {
lastImageUri = null
} catch (ex: Throwable) {
ColumnViewHolder.log.trace(ex)
log.e(ex, "closeBitmaps failed.")
}
}
@ -71,12 +73,12 @@ fun ColumnViewHolder.loadBackgroundImage(iv: ImageView, url: String?) {
},
)
} catch (ex: Throwable) {
ColumnViewHolder.log.trace(ex)
log.e(ex, "createResizedBitmap failed.")
null
}
}
} catch (ex: Throwable) {
ColumnViewHolder.log.w(ex, "loadBackgroundImage failed.")
log.w(ex, "loadBackgroundImage failed.")
null
}
if (bitmap != null) {
@ -90,7 +92,7 @@ fun ColumnViewHolder.loadBackgroundImage(iv: ImageView, url: String?) {
}
}
} catch (ex: Throwable) {
ColumnViewHolder.log.trace(ex)
log.e(ex, "loadBackgroundImage failed.")
}
}

View File

@ -12,9 +12,12 @@ import jp.juggler.subwaytooter.column.toAdapterIndex
import jp.juggler.subwaytooter.column.toListIndex
import jp.juggler.subwaytooter.util.ScrollPosition
import jp.juggler.subwaytooter.view.ListDivider
import jp.juggler.util.LogCategory
import jp.juggler.util.abs
import java.io.Closeable
private val log = LogCategory("ColumnViewHolderLoading")
private class ErrorFlickListener(
private val cvh: ColumnViewHolder,
) : View.OnTouchListener, GestureDetector.OnGestureListener {
@ -232,8 +235,7 @@ fun ColumnViewHolder.setScrollPosition(sp: ScrollPosition, deltaDp: Float = 0f)
val state = ColumnViewHolder.fieldState.get(listView) as RecyclerView.State
listLayoutManager.scrollVerticallyBy(dy, recycler, state)
} catch (ex: Throwable) {
ColumnViewHolder.log.trace(ex)
ColumnViewHolder.log.e("can't access field in class ${RecyclerView::class.java.simpleName}")
log.e("can't access field in class ${RecyclerView::class.java.simpleName}")
}
}, 20L)
}

View File

@ -7,12 +7,11 @@ import android.view.animation.AlphaAnimation
import android.view.animation.Animation
import jp.juggler.subwaytooter.R
import jp.juggler.subwaytooter.column.*
import jp.juggler.util.AdapterChange
import jp.juggler.util.isEnabledAlpha
import jp.juggler.util.notZero
import jp.juggler.util.vg
import jp.juggler.util.*
import org.jetbrains.anko.textColor
private val log = LogCategory("ColumnViewHolderShow")
// カラムヘッダなど、負荷が低い部分の表示更新
fun ColumnViewHolder.showColumnHeader() {
activity.handler.removeCallbacks(procShowColumnHeader)
@ -85,14 +84,14 @@ fun ColumnViewHolder.showColumnCloseButton() {
internal fun ColumnViewHolder.showContent(
reason: String,
changeList: List<AdapterChange>? = null,
reset: Boolean = false
reset: Boolean = false,
) {
// クラッシュレポートにadapterとリストデータの状態不整合が多かったので、
// とりあえずリストデータ変更の通知だけは最優先で行っておく
try {
statusAdapter?.notifyChange(reason, changeList, reset)
} catch (ex: Throwable) {
ColumnViewHolder.log.trace(ex)
log.e(ex, "notifyChange failed.")
}
showColumnHeader()

View File

@ -13,7 +13,7 @@ import jp.juggler.util.scan
abstract class ViewHolderHeaderBase(
val activity: ActMain,
val viewRoot: View
val viewRoot: View,
) : RecyclerView.ViewHolder(viewRoot) {
companion object {
@ -29,16 +29,18 @@ abstract class ViewHolderHeaderBase(
if (v is Button) {
// ボタンは太字なので触らない
} else if (v is TextView) {
v.typeface = ActMain.timelineFont
if (!activity.timelineFontSizeSp.isNaN()) {
v.textSize = activity.timelineFontSizeSp
}
val fv = activity.timelineSpacing
if (fv != null) v.setLineSpacing(0f, fv)
v.typeface = ActMain.timelineFont
activity.timelineFontSizeSp
.takeIf { it.isFinite() }
?.let { v.textSize = it }
activity.timelineSpacing
?.let { v.setLineSpacing(0f, it) }
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't initialize text styles.")
}
}
}

View File

@ -128,7 +128,7 @@ class DlgDraftPicker : AdapterView.OnItemClickListener, AdapterView.OnItemLongCl
} catch (ignored: CancellationException) {
return@launchMain
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "failed to loading drafts.")
activity.showToast(ex, "failed to loading drafts.")
return@launchMain
}

View File

@ -135,7 +135,7 @@ private class EmojiPicker(
items.clear()
items.addAll(newItems)
} catch (ex: Throwable) {
log.w(ex)
log.w(ex, "loadRecents failed.")
}
}
@ -175,13 +175,13 @@ private class EmojiPicker(
val sv = list.toJsonArray().toString()
appPref.edit().put(PrefS.spEmojiPickerRecent, sv).apply()
} catch (ex: Throwable) {
log.e(ex)
log.e(ex, "can't save spEmojiPickerRecent")
}
// カテゴリ内のPickerItemの更新
try {
list.loadRecents()
} catch (ex: Throwable) {
log.e(ex)
log.e(ex, "loadRecents failed.")
}
}
}
@ -506,7 +506,7 @@ private class EmojiPicker(
try {
addAll(createCustomEmojiCategories())
} catch (ex: Throwable) {
log.w(ex)
log.w(ex, "createCustomEmojiCategories failed.")
}
val categories = mutableListOf(
@ -728,7 +728,7 @@ private class EmojiPicker(
else -> log.w("handleTouch else $ev")
}
} catch (ex: Throwable) {
log.trace(ex, "handleTouch failed. ev=$ev, wasIntercept=$wasIntercept")
log.e(ex, "handleTouch failed. ev=$ev, wasIntercept=$wasIntercept")
wasIntercept
}

View File

@ -140,7 +140,7 @@ object LoginForm {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't load server list.")
}
}.toList().sorted()

View File

@ -1,10 +1,7 @@
package jp.juggler.subwaytooter.itemviewholder
import android.app.AlertDialog
import android.text.method.ScrollingMovementMethod
import android.view.View
import android.widget.EditText
import android.widget.TextView
import jp.juggler.subwaytooter.ActMain
import jp.juggler.subwaytooter.ActMediaViewer
import jp.juggler.subwaytooter.R
@ -17,9 +14,10 @@ import jp.juggler.subwaytooter.pref.PrefB
import jp.juggler.subwaytooter.table.ContentWarning
import jp.juggler.subwaytooter.table.MediaShown
import jp.juggler.subwaytooter.util.openCustomTab
import jp.juggler.subwaytooter.view.MyTextView
import jp.juggler.util.*
private val log = LogCategory("ItemViewHolderActions")
val defaultBoostedAction: ItemViewHolder.() -> Unit = {
val pos = activity.nextPosition(column)
val notification = (item as? TootNotification)
@ -234,7 +232,7 @@ private fun ItemViewHolder.clickMedia(i: Int) {
}
}
} catch (ex: Throwable) {
ItemViewHolder.log.trace(ex)
log.e(ex, "clickMedia failed.")
}
}

View File

@ -37,6 +37,8 @@ import org.jetbrains.anko.backgroundColor
import org.jetbrains.anko.textColor
import kotlin.math.max
private val log = LogCategory("ItemViewHolderShow")
@SuppressLint("ClickableViewAccessibility")
fun ItemViewHolder.bind(
listAdapter: ItemListAdapter,
@ -58,11 +60,7 @@ fun ItemViewHolder.bind(
try {
when (v) {
// ボタンは太字なので触らない
is CountImageButton -> {
}
// ボタンは太字なので触らない
is Button -> {
}
is Button, is CountImageButton -> Unit
is TextView -> v.typeface = when {
v === tvName ||
@ -78,7 +76,7 @@ fun ItemViewHolder.bind(
}
}
} catch (ex: Throwable) {
ItemViewHolder.log.trace(ex)
log.e(ex, "can't change font.")
}
}
@ -101,7 +99,7 @@ fun ItemViewHolder.bind(
activity.closePopup()
statusShowing?.let { status ->
val popup =
StatusButtonsPopup(activity, column, bSimpleList, this@bind)
StatusButtonsPopup(activity, column, true, this@bind)
activity.popupStatusButtons = popup
popup.show(
listAdapter.columnVh.listView,
@ -781,7 +779,7 @@ fun ItemViewHolder.showScheduled(item: TootScheduled) {
btnShowMedia.visibility = if (!isShown) View.VISIBLE else View.GONE
llMedia.visibility = if (!isShown) View.GONE else View.VISIBLE
repeat(ItemViewHolder.MEDIA_VIEW_COUNT){idx->
repeat(ItemViewHolder.MEDIA_VIEW_COUNT) { idx ->
setMedia(mediaAttachments, idx)
}

View File

@ -21,6 +21,8 @@ import jp.juggler.util.*
import org.jetbrains.anko.backgroundColor
import org.jetbrains.anko.textColor
private val log = LogCategory("ItemViewHolderShowStatus")
fun ItemViewHolder.showStatusOrReply(
item: TootStatus,
colorBgArg: Int = 0,
@ -280,7 +282,7 @@ private fun ItemViewHolder.showOpenSticker(who: TootAccount) {
llOpenSticker.visibility = View.VISIBLE
llOpenSticker.requestLayout()
} catch (ex: Throwable) {
ItemViewHolder.log.trace(ex)
log.e(ex, "showOpenSticker failed.")
}
}
@ -406,7 +408,7 @@ fun ItemViewHolder.setMedia(
// tv.textSize = activity.timeline_font_size_sp
// }
// tv.setTextColor(content_color)
it.setTag(R.id.text,desc)
it.setTag(R.id.text, desc)
it.text = activity.getString(
R.string.media_description,
idx + 1,

View File

@ -76,8 +76,7 @@ object MisskeyMarkdownDecoder {
// 末尾の空白を取り除く
this.removeEndWhitespaces()
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "decodeMarkdown failed")
log.e(ex, "decodeMarkdown failed.")
} finally {
options.enlargeCustomEmoji = save
}

View File

@ -75,13 +75,13 @@ class CheckerWakeLocks(contextArg: Context) {
@SuppressLint("WakelockTimeout")
fun acquireWakeLocks() {
PollingChecker.log.d("acquire power lock...")
log.d("acquire power lock...")
try {
if (!powerLock.isHeld) {
powerLock.acquire()
}
} catch (ex: Throwable) {
PollingChecker.log.trace(ex)
log.e(ex, "can't update powerLock.")
}
try {
@ -89,18 +89,18 @@ class CheckerWakeLocks(contextArg: Context) {
wifiLock.acquire()
}
} catch (ex: Throwable) {
PollingChecker.log.trace(ex)
log.e(ex, "can't update wifiLock.")
}
}
fun releasePowerLocks() {
PollingChecker.log.d("release power lock...")
log.d("release power lock...")
try {
if (powerLock.isHeld) {
powerLock.release()
}
} catch (ex: Throwable) {
PollingChecker.log.trace(ex)
log.e(ex, "can't release powerLock.")
}
try {
@ -108,7 +108,7 @@ class CheckerWakeLocks(contextArg: Context) {
wifiLock.release()
}
} catch (ex: Throwable) {
PollingChecker.log.trace(ex)
log.e(ex, "can't release wifiLock.")
}
}

View File

@ -1,6 +1,5 @@
package jp.juggler.subwaytooter.notification
import android.annotation.TargetApi
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
@ -10,7 +9,6 @@ object NotificationHelper {
private val log = LogCategory("NotificationHelper")
@TargetApi(26)
fun createNotificationChannel(
context: Context,
channelId: String, // id
@ -18,24 +16,21 @@ object NotificationHelper {
description: String?, // The user-visible description of the channel.
importance: Int,
): NotificationChannel {
val notification_manager =
val notificationManager =
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager?
?: throw NotImplementedError("missing NotificationManager system service")
var channel: NotificationChannel? = null
try {
channel = notification_manager.getNotificationChannel(channelId)
val channel = try {
notificationManager.getNotificationChannel(channelId)!!
} catch (ex: Throwable) {
log.trace(ex)
}
log.e(ex, "getNotificationChannel failed.")
null
} ?: NotificationChannel(channelId, name, importance)
if (channel == null) {
channel = NotificationChannel(channelId, name, importance)
}
channel.name = name
channel.importance = importance
if (description != null) channel.description = description
notification_manager.createNotificationChannel(channel)
description?.let { channel.description = it }
notificationManager.createNotificationChannel(channel)
return channel
}
}

View File

@ -61,7 +61,7 @@ class PollingChecker(
try {
c.checkJob.cancel()
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "checkJob.cancel failed.")
}
}
}

View File

@ -178,7 +178,7 @@ fun restartAllWorker(context: Context) {
App1.prepare(context, "restartAllWorker")
PollingWorker2.enqueuePolling(context)
} catch (ex: Throwable) {
log.trace(ex, "restartAllWorker failed.")
log.e(ex, "restartAllWorker failed.")
}
}
}
@ -233,7 +233,7 @@ fun checkNotificationImmediate(
log.i("(Immediate)[${account.acct.pretty}]${state.desc}")
}
} catch (ex: Throwable) {
log.trace(ex, "checkNotificationImmediate failed.")
log.e(ex, "checkNotificationImmediate failed.")
}
}
}
@ -290,7 +290,7 @@ suspend fun checkNoticifationAll(
}
progress(tmpMap)
} catch (ex: Throwable) {
log.trace(ex, "updateStatus")
log.e(ex, "updateStatus")
}
}
@ -308,7 +308,7 @@ suspend fun checkNoticifationAll(
) { a, s -> updateStatus(a, s) }
updateStatus(sa, PollingState.Complete)
} catch (ex: Throwable) {
log.trace(ex, "updateStatus failed.")
log.e(ex, "updateStatus failed.")
val s = when (ex) {
is CancellationException -> PollingState.Cancelled
else -> PollingState.Error
@ -323,7 +323,7 @@ suspend fun checkNoticifationAll(
val tmpMap = statusMap.trans()
progress(tmpMap)
} catch (ex: Throwable) {
log.trace(ex, "checkNoticifationAll failed.")
log.e(ex, "checkNoticifationAll failed.")
}
if (timeoutAccounts.isNotEmpty()) {
@ -352,7 +352,7 @@ fun checkNotificationImmediateAll(context: Context, onlySubscription: Boolean =
onlySubscription = onlySubscription
)
} catch (ex: Throwable) {
log.trace(ex, "checkNotificationImmediateAll failed.")
log.e(ex, "checkNotificationImmediateAll failed.")
}
}
}
@ -396,7 +396,7 @@ fun recycleClickedNotification(context: Context, uri: Uri) {
NotificationTracking.updateRead(dbId, typeName)
}
} catch (ex: Throwable) {
log.trace(ex, "recycleClickedNotification failed.")
log.e(ex, "recycleClickedNotification failed.")
}
}
}

View File

@ -101,8 +101,8 @@ class PollingWorker2(
private suspend fun showMessage(text: String) =
CheckerNotification.showMessage(applicationContext, text) {
try {
if(!isAppForehround()) error("app is not foreground.")
setForegroundAsync(ForegroundInfo(NOTIFICATION_ID_POLLING_WORKER,it))
if (!isAppForehround()) error("app is not foreground.")
setForegroundAsync(ForegroundInfo(NOTIFICATION_ID_POLLING_WORKER, it))
.await()
} catch (ex: Throwable) {
log.e(ex, "showMessage failed.")
@ -145,10 +145,9 @@ class PollingWorker2(
try {
workImpl()
} catch (ex: Throwable) {
if (ex is CancellationException) {
log.e("doWork cancelled.")
} else {
log.trace(ex, "doWork failed.")
when (ex) {
is CancellationException -> log.e("doWork cancelled.")
else -> log.e(ex, "doWork failed.")
}
}
return Result.success()

View File

@ -210,7 +210,7 @@ class PushSubscriptionHelper(
val deviceId = try {
loadFirebaseMessagingToken(context)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadFirebaseMessagingToken failed.")
return when (ex) {
is CancellationException -> null
else -> TootApiResult(error = context.getString(R.string.missing_fcm_device_id))
@ -229,7 +229,7 @@ class PushSubscriptionHelper(
deviceId
) { a, s -> log.i("[${a.acct.pretty}]${s.desc}") }
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadInstallId failed.")
return when (ex) {
is CancellationException -> null
else -> TootApiResult(error = context.getString(R.string.missing_install_id))
@ -321,7 +321,7 @@ class PushSubscriptionHelper(
val deviceId = try {
loadFirebaseMessagingToken(context)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadFirebaseMessagingToken failed.")
return when (ex) {
is CancellationException -> null
else -> TootApiResult(error = context.getString(R.string.missing_fcm_device_id))
@ -336,7 +336,7 @@ class PushSubscriptionHelper(
deviceId
) { a, s -> log.i("[${a.acct.pretty}]${s.desc}") }
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadInstallId failed.")
return when (ex) {
is CancellationException -> null
else -> TootApiResult(error = context.getString(R.string.missing_install_id))

View File

@ -58,7 +58,7 @@ object NotestockHelper {
if (src !is JsonObject) continue
add(TootStatus(parser, src))
} catch (ex: Throwable) {
TootStatus.log.trace(ex)
log.e(ex,"parse item failed.")
}
}
}

View File

@ -68,7 +68,7 @@ object TootsearchHelper {
val source = src.cast<JsonObject>()?.jsonObject("_source") ?: continue
add(TootStatus(parser, source))
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex,"parse item failed.")
}
}
}

View File

@ -40,7 +40,7 @@ class SvgEmojiSpan internal constructor(
else -> try {
SVG.getFromAsset(assetsManager, assetsName)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "SVG.getFromAsset failed.")
null
}
}
@ -173,7 +173,7 @@ class SvgEmojiSpan internal constructor(
Bitmap.createBitmap(dstSizeInt, dstSizeInt, Bitmap.Config.ARGB_8888)
?.also { renderBitmap(it, svg, dstSize) }
} catch (ex: Throwable) {
log.trace(ex, "bitmap allocation failed!")
log.e(ex, "bitmap allocation failed.")
null
}
}

View File

@ -15,7 +15,6 @@ import okhttp3.WebSocket
import okhttp3.WebSocketListener
import java.net.ProtocolException
import java.net.SocketException
import java.util.*
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.atomic.AtomicBoolean
import java.util.concurrent.atomic.AtomicReference
@ -145,7 +144,7 @@ class StreamConnection(
try {
if (!it.isDispose.get()) it.onStatusRemoved(timelineHost, id)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "onStatusRemoved failed.")
}
}
}
@ -277,7 +276,7 @@ class StreamConnection(
column.replaceStatus(payload.id, payload.json)
}
} catch (ex: Throwable) {
log.e(ex)
log.e(ex, "replaceStatus failed.")
}
}
}
@ -325,8 +324,7 @@ class StreamConnection(
else -> handleMastodonMessage(obj, text)
}
} catch (ex: Throwable) {
log.trace(ex)
log.e("$name onMessage error. data=$text")
log.e(ex, "$name onMessage error. data=$text")
}
}
}

View File

@ -44,7 +44,7 @@ class StreamGroup(val spec: StreamSpec) {
}
dst.refCallback.get()?.let { block(it) }
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "eachCallback failed.")
}
}
}

View File

@ -163,7 +163,7 @@ class StreamManager(val appState: AppState) {
} catch (_: ClosedReceiveChannelException) {
// 発生しない
} catch (ex: Throwable) {
log.trace(ex, "error.")
log.e(ex, "queue item handling failed.")
}
}
}

View File

@ -66,7 +66,6 @@ class AcctColor {
appDatabase.replace(table, null, cv)
mMemoryCache.remove(key)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "save failed.")
}
}
@ -153,7 +152,6 @@ class AcctColor {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "load failed.")
}

View File

@ -72,7 +72,6 @@ object AcctSet : TableCompanion {
}
bOK = true
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "saveList failed.")
}
@ -82,7 +81,6 @@ object AcctSet : TableCompanion {
db.execSQL("ROLLBACK TRANSACTION")
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "saveList failed.")
}
}
@ -125,7 +123,6 @@ object AcctSet : TableCompanion {
return dst
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "searchPrefix failed.")
}

View File

@ -68,23 +68,16 @@ object FavMute : TableCompanion {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "acctSet load failed.")
}
}
fun contains(acct: Acct): Boolean {
var found = false
fun contains(acct: Acct): Boolean =
try {
appDatabase.query(table, null, "$COL_ACCT=?", arrayOf(acct.ascii), null, null, null)
.use { cursor ->
while (cursor.moveToNext()) {
found = true
}
}
?.use { it.moveToNext() }
} catch (ex: Throwable) {
log.trace(ex)
}
return found
}
log.e(ex, "contains failed.")
null
} ?: false
}

View File

@ -63,7 +63,7 @@ class HighlightWord {
try {
db.execSQL("alter table $table add column $COL_SPEECH integer default 0")
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't add $COL_SPEECH")
}
}
}
@ -77,9 +77,8 @@ class HighlightWord {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "load failed.")
}
return null
}
@ -93,14 +92,13 @@ class HighlightWord {
null,
null,
null
)
.use { cursor ->
if (cursor.moveToNext()) {
return HighlightWord(cursor)
}
).use { cursor ->
if (cursor.moveToNext()) {
return HighlightWord(cursor)
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "load failed. id=$id")
}
return null
@ -123,7 +121,7 @@ class HighlightWord {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "nameSet failed.")
}
return if (dst.isEmpty) null else dst
@ -152,7 +150,7 @@ class HighlightWord {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "hasTextToSpeechHighlightWord failed.")
}
hasTextToSpeechHighlightWordCache.set(cached)
}

View File

@ -6,7 +6,6 @@ import android.database.sqlite.SQLiteDatabase
import jp.juggler.subwaytooter.global.appDatabase
import jp.juggler.util.LogCategory
import jp.juggler.util.TableCompanion
import java.util.*
object MutedApp : TableCompanion {
@ -102,7 +101,7 @@ object MutedApp : TableCompanion {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "nameSet failed.")
}
return dst

View File

@ -100,7 +100,7 @@ object MutedWord : TableCompanion {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "nameSet failed.")
}
return dst

View File

@ -170,9 +170,9 @@ class NotificationCache(private val account_db_id: Long) {
} catch (ex: Throwable) {
if (ex.message?.contains("empty cursor") == true) {
// アカウント追加直後に起きるはず
log.w(ex, "load failed.")
log.w(ex, "empty cursor. (maybe first loading)")
} else {
log.trace(ex, "load failed.")
log.e(ex, "load failed.")
}
}
}
@ -294,7 +294,7 @@ class NotificationCache(private val account_db_id: Long) {
item[KEY_TIME_CREATED_AT] = parseNotificationTime(account, item)
data.add(item)
} catch (ex: Throwable) {
log.trace(ex, "${account.acct} parseNotificationTime failed.")
log.e(ex, "${account.acct} parseNotificationTime failed.")
}
}
@ -305,7 +305,7 @@ class NotificationCache(private val account_db_id: Long) {
onError(result)
}
} catch (ex: Throwable) {
log.trace(ex, "${account.acct} requestAsync failed.")
log.e(ex, "${account.acct} requestAsync failed.")
} finally {
save()
}
@ -326,7 +326,7 @@ class NotificationCache(private val account_db_id: Long) {
data.addAll(jsonList)
normalize(account)
} catch (ex: Throwable) {
log.trace(ex, "inject failed.")
log.e(ex, "inject failed.")
} finally {
save()
}

View File

@ -150,7 +150,7 @@ class NotificationTracking {
try {
db.execSQL("drop table if exists $table")
} catch (ex: Throwable) {
log.trace(ex, "delete DB failed.")
log.e(ex, "delete DB failed.")
}
onDBCreate(db)
return
@ -165,19 +165,19 @@ class NotificationTracking {
try {
db.execSQL("drop index if exists ${table}_a")
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "drop index failed.")
}
try {
db.execSQL("alter table $table add column $COL_NOTIFICATION_TYPE text default ''")
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't add $COL_NOTIFICATION_TYPE")
}
try {
db.execSQL(
"create unique index if not exists ${table}_b on $table ($COL_ACCOUNT_DB_ID,$COL_NOTIFICATION_TYPE)"
)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't add index.")
}
}
}
@ -189,7 +189,7 @@ class NotificationTracking {
private fun <K : Any, V : Any> ConcurrentHashMap<K, V>.getOrCreate(
key: K,
creator: () -> V
creator: () -> V,
): V {
var v = this[key]
if (v == null) v = creator().also { this[key] = it }
@ -205,7 +205,7 @@ class NotificationTracking {
private fun saveCache(
accountDbId: Long,
notificationType: String,
nt: NotificationTracking
nt: NotificationTracking,
) {
cache.getOrCreate(accountDbId) {
ConcurrentHashMap<String, NotificationTracking>()
@ -275,7 +275,7 @@ class NotificationTracking {
}
}
} catch (ex: Throwable) {
log.trace(ex, "load failed.")
log.e(ex, "load failed.")
} finally {
dst.dirty = false
}

View File

@ -105,7 +105,7 @@ class PostDraft {
}
}
} catch (ex: Throwable) {
log.trace(ex, "hasDraft failed.")
log.e(ex, "hasDraft failed.")
}
return false
}
@ -124,7 +124,7 @@ class PostDraft {
"$COL_TIME_SAVE desc"
)
} catch (ex: Throwable) {
log.trace(ex, "createCursor failed.")
log.e(ex, "createCursor failed.")
null
}
@ -141,7 +141,7 @@ class PostDraft {
dst.json = try {
cursor.getString(colIdx.idx_json).decodeJsonObject()
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadFromCursor failed.")
JsonObject()
}
}

View File

@ -203,7 +203,7 @@ class SavedAccount(
?.entries
?.forEach { extraJson[it.key] = it.value }
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "ctor failed.")
}
}
@ -217,7 +217,7 @@ class SavedAccount(
try {
appDatabase.delete(table, "$COL_ID=?", arrayOf(db_id.toString()))
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "SavedAccount.delete failed.")
errorEx(ex, "SavedAccount.delete failed.")
}
}
@ -513,7 +513,7 @@ class SavedAccount(
try {
db.execSQL("drop table if exists $table")
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "can't delete table $table.")
}
}
@ -564,7 +564,6 @@ class SavedAccount(
return try {
SavedAccount(context, cursor)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "parse failed.")
null
}
@ -588,7 +587,7 @@ class SavedAccount(
put(COL_MISSKEY_VERSION, misskeyVersion)
}.let { appDatabase.insert(table, null, it) }
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "SavedAccount.insert failed.")
errorEx(ex, "SavedAccount.insert failed.")
}
}
@ -623,7 +622,6 @@ class SavedAccount(
log.e("moveToFirst failed. db_id=$dbId")
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadAccount failed.")
}
@ -647,7 +645,6 @@ class SavedAccount(
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadAccountList failed.")
context.showToast(
true,
@ -675,7 +672,6 @@ class SavedAccount(
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadByTag failed.")
errorEx(ex, "SavedAccount.loadByTag failed.")
}
@ -700,7 +696,6 @@ class SavedAccount(
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "loadAccountByAcct failed.")
}
@ -725,7 +720,6 @@ class SavedAccount(
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "hasNonPseudoAccount failed.")
}
@ -742,7 +736,6 @@ class SavedAccount(
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "getCount failed.")
errorEx(ex, "SavedAccount.getCount failed.")
}
@ -832,7 +825,6 @@ class SavedAccount(
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "sweepBuggieData failed.")
}
@ -840,7 +832,6 @@ class SavedAccount(
try {
appDatabase.delete(table, "$COL_ID=?", arrayOf(it.toString()))
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "sweepBuggieData failed.")
}
}
@ -936,7 +927,7 @@ class SavedAccount(
}
return TootApiResult()
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "account confirmation failed.")
return TootApiResult(ex.withCaption("account confirmation failed."))
}
}

View File

@ -62,7 +62,6 @@ object SubscriptionServerKey : TableCompanion {
}
} catch (ex: Throwable) {
log.e(ex, "query failed.")
log.trace(ex)
}
return null
}
@ -75,7 +74,6 @@ object SubscriptionServerKey : TableCompanion {
appDatabase.replace(table, null, cv)
} catch (ex: Throwable) {
log.e(ex, "save failed.")
log.trace(ex)
}
}
}

View File

@ -5,7 +5,6 @@ import android.database.sqlite.SQLiteDatabase
import jp.juggler.subwaytooter.global.appDatabase
import jp.juggler.util.LogCategory
import jp.juggler.util.TableCompanion
import java.util.*
object TagSet : TableCompanion {
@ -77,13 +76,12 @@ object TagSet : TableCompanion {
db.execSQL("BEGIN TRANSACTION")
try {
for (i in 0 until length) {
val acct = srcList[i + offset] ?: continue
val acct = srcList.elementAtOrNull(i + offset) ?: continue
cv.put(COL_TAG, acct)
db.replace(table, null, cv)
}
bOK = true
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "saveList failed.")
}
@ -93,7 +91,6 @@ object TagSet : TableCompanion {
db.execSQL("ROLLBACK TRANSACTION")
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "saveList failed.")
}
}
@ -137,7 +134,6 @@ object TagSet : TableCompanion {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "searchPrefix failed.")
}

View File

@ -174,7 +174,6 @@ class UserRelation {
}
true
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "saveList failed.")
false
}
@ -228,7 +227,6 @@ class UserRelation {
}
true
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "saveList failed.")
false
}
@ -262,7 +260,6 @@ class UserRelation {
}
true
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "saveListMisskeyRelationApi failed.")
false
}
@ -321,7 +318,6 @@ class UserRelation {
}
}
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "load failed.")
}
return UserRelation()
@ -369,7 +365,7 @@ class UserRelation {
try {
appDatabase.delete(table, "$COL_ID=$rowId", null)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex,"deletePseudo failed. rowId=$rowId")
}
}
}

View File

@ -113,8 +113,8 @@ fun Activity.openBrowser(uri: Uri?) {
Intent(Intent.ACTION_VIEW, uri).apply { addCategory(Intent.CATEGORY_BROWSABLE) }
)
} catch (ex: Throwable) {
log.trace(ex)
showToast(ex, "can't open. ${intent.data}")
log.e(ex, "openBrowser failed. uri=$uri")
showToast(ex, "openBrowser failed. uri=$uri")
}
}
@ -173,9 +173,9 @@ fun Activity.openCustomTab(url: String?, pref: SharedPreferences = pref()) {
// Chromeがないようなのでcomponent指定なしでリトライ
startCustomTabIntent(null)
} catch (ex: Throwable) {
log.trace(ex)
val scheme = url.mayUri()?.scheme ?: url
showToast(true, "can't open browser app for $scheme")
val errMsg = "can't open browser app for ${url.mayUri()?.scheme?.notBlank() ?: url}"
log.e(ex, errMsg)
showToast(true, errMsg)
}
}
@ -345,7 +345,6 @@ fun openCustomTab(
activity.openCustomTab(url)
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, "openCustomTab failed. $url")
}
}

View File

@ -175,8 +175,8 @@ class AttachmentPicker(
val intent = intentGetContent(true, activity.getString(titleId), mimeTypes)
arAttachmentChooser.launch(intent)
} catch (ex: Throwable) {
log.trace(ex)
activity.showToast(ex, "ACTION_GET_CONTENT failed.")
log.e(ex, "openAttachmentChooser failed.")
activity.showToast(ex, "openAttachmentChooser failed.")
}
}
@ -198,8 +198,8 @@ class AttachmentPicker(
arCamera.launch(intent)
} catch (ex: Throwable) {
log.trace(ex)
activity.showToast(ex, "opening camera app failed.")
log.e(ex, "performCamera failed.")
activity.showToast(ex, "performCamera failed.")
}
}
@ -207,7 +207,7 @@ class AttachmentPicker(
try {
arCapture.launch(Intent(action))
} catch (ex: Throwable) {
log.trace(ex)
log.e(ex, errorCaption)
activity.showToast(ex, errorCaption)
}
}
@ -230,8 +230,8 @@ class AttachmentPicker(
arrayOf("image/*"))
)
} catch (ex: Throwable) {
log.trace(ex)
activity.showToast(ex, "ACTION_GET_CONTENT failed.")
log.e(ex, "openCustomThumbnail failed.")
activity.showToast(ex, "openCustomThumbnail failed.")
}
}
}

View File

@ -246,7 +246,7 @@ class AttachmentUploader(
channel = null
}
} catch (ex: Throwable) {
log.e(ex)
log.e(ex, "can't close channel.")
}
}
@ -939,7 +939,7 @@ class AttachmentUploader(
}
}
} catch (ex: Throwable) {
log.trace(ex, "setAttachmentDescription failed.")
log.e(ex, "setAttachmentDescription failed.")
TootApiResult(ex.withCaption("setAttachmentDescription failed."))
}
return Pair(result, resultAttachment)

Some files were not shown because too many files have changed in this diff Show More