diff options
Diffstat (limited to 'app/src/main/java/dev/msfjarvis/aps/ui')
18 files changed, 104 insertions, 76 deletions
diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillDecryptActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillDecryptActivity.kt index 07ae4c42..67273110 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillDecryptActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillDecryptActivity.kt @@ -17,8 +17,6 @@ import androidx.activity.result.contract.ActivityResultContracts.StartIntentSend import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope -import com.github.ajalt.timberkt.d -import com.github.ajalt.timberkt.e import com.github.androidpasswordstore.autofillparser.AutofillAction import com.github.androidpasswordstore.autofillparser.Credentials import com.github.michaelbull.result.getOrElse @@ -31,6 +29,7 @@ import dev.msfjarvis.aps.util.autofill.AutofillPreferences import dev.msfjarvis.aps.util.autofill.AutofillResponseBuilder import dev.msfjarvis.aps.util.autofill.DirectoryStructure import dev.msfjarvis.aps.util.extensions.OPENPGP_PROVIDER +import dev.msfjarvis.aps.util.extensions.asLog import java.io.ByteArrayOutputStream import java.io.File import java.io.InputStream @@ -43,6 +42,9 @@ import kotlin.coroutines.suspendCoroutine import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import logcat.LogPriority.ERROR +import logcat.asLog +import logcat.logcat import me.msfjarvis.openpgpktx.util.OpenPgpApi import me.msfjarvis.openpgpktx.util.OpenPgpServiceConnection import org.openintents.openpgp.IOpenPgpService2 @@ -108,21 +110,21 @@ class AutofillDecryptActivity : AppCompatActivity() { val filePath = intent?.getStringExtra(EXTRA_FILE_PATH) ?: run { - e { "AutofillDecryptActivity started without EXTRA_FILE_PATH" } + logcat(ERROR) { "AutofillDecryptActivity started without EXTRA_FILE_PATH" } finish() return } val clientState = intent?.getBundleExtra(AutofillManager.EXTRA_CLIENT_STATE) ?: run { - e { "AutofillDecryptActivity started without EXTRA_CLIENT_STATE" } + logcat(ERROR) { "AutofillDecryptActivity started without EXTRA_CLIENT_STATE" } finish() return } val isSearchAction = intent?.getBooleanExtra(EXTRA_SEARCH_ACTION, true)!! val action = if (isSearchAction) AutofillAction.Search else AutofillAction.Match directoryStructure = AutofillPreferences.directoryStructure(this) - d { action.toString() } + logcat { action.toString() } lifecycleScope.launch { val credentials = decryptCredential(File(filePath)) if (credentials == null) { @@ -183,14 +185,14 @@ class AutofillDecryptActivity : AppCompatActivity() { val command = resumeIntent ?: Intent().apply { action = OpenPgpApi.ACTION_DECRYPT_VERIFY } runCatching { file.inputStream() } .onFailure { e -> - e(e) { "File to decrypt not found" } + logcat(ERROR) { e.asLog("File to decrypt not found") } return null } .onSuccess { encryptedInput -> val decryptedOutput = ByteArrayOutputStream() runCatching { executeOpenPgpApi(command, encryptedInput, decryptedOutput) } .onFailure { e -> - e(e) { "OpenPgpApi ACTION_DECRYPT_VERIFY failed" } + logcat(ERROR) { e.asLog("OpenPgpApi ACTION_DECRYPT_VERIFY failed") } return null } .onSuccess { result -> @@ -212,7 +214,7 @@ class AutofillDecryptActivity : AppCompatActivity() { ) } .getOrElse { e -> - e(e) { "Failed to parse password entry" } + logcat(ERROR) { e.asLog("Failed to parse password entry") } return null } } @@ -232,7 +234,9 @@ class AutofillDecryptActivity : AppCompatActivity() { decryptCredential(file, intentToResume) } .getOrElse { e -> - e(e) { "OpenPgpApi ACTION_DECRYPT_VERIFY failed with user interaction" } + logcat(ERROR) { + e.asLog("OpenPgpApi ACTION_DECRYPT_VERIFY failed with user interaction") + } return null } } @@ -247,14 +251,14 @@ class AutofillDecryptActivity : AppCompatActivity() { ) .show() } - e { + logcat(ERROR) { "OpenPgpApi ACTION_DECRYPT_VERIFY failed (${error.errorId}): ${error.message}" } } null } else -> { - e { "Unrecognized OpenPgpApi result: $resultCode" } + logcat(ERROR) { "Unrecognized OpenPgpApi result: $resultCode" } null } } diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillDecryptActivityV2.kt b/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillDecryptActivityV2.kt index 27a12867..bb2e6492 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillDecryptActivityV2.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillDecryptActivityV2.kt @@ -14,8 +14,6 @@ import android.view.autofill.AutofillManager import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope -import com.github.ajalt.timberkt.d -import com.github.ajalt.timberkt.e import com.github.androidpasswordstore.autofillparser.AutofillAction import com.github.androidpasswordstore.autofillparser.Credentials import com.github.michaelbull.result.getOrElse @@ -29,11 +27,15 @@ import dev.msfjarvis.aps.ui.crypto.DecryptActivityV2 import dev.msfjarvis.aps.util.autofill.AutofillPreferences import dev.msfjarvis.aps.util.autofill.AutofillResponseBuilder import dev.msfjarvis.aps.util.autofill.DirectoryStructure +import dev.msfjarvis.aps.util.extensions.asLog import java.io.File import javax.inject.Inject import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import logcat.LogPriority.ERROR +import logcat.asLog +import logcat.logcat @RequiresApi(Build.VERSION_CODES.O) @AndroidEntryPoint @@ -80,21 +82,21 @@ class AutofillDecryptActivityV2 : AppCompatActivity() { val filePath = intent?.getStringExtra(EXTRA_FILE_PATH) ?: run { - e { "AutofillDecryptActivityV2 started without EXTRA_FILE_PATH" } + logcat(ERROR) { "AutofillDecryptActivityV2 started without EXTRA_FILE_PATH" } finish() return } val clientState = intent?.getBundleExtra(AutofillManager.EXTRA_CLIENT_STATE) ?: run { - e { "AutofillDecryptActivityV2 started without EXTRA_CLIENT_STATE" } + logcat(ERROR) { "AutofillDecryptActivityV2 started without EXTRA_CLIENT_STATE" } finish() return } val isSearchAction = intent?.getBooleanExtra(EXTRA_SEARCH_ACTION, true)!! val action = if (isSearchAction) AutofillAction.Search else AutofillAction.Match directoryStructure = AutofillPreferences.directoryStructure(this) - d { action.toString() } + logcat { action.toString() } lifecycleScope.launch { val credentials = decryptCredential(File(filePath)) if (credentials == null) { @@ -121,7 +123,7 @@ class AutofillDecryptActivityV2 : AppCompatActivity() { private suspend fun decryptCredential(file: File): Credentials? { runCatching { file.inputStream() } .onFailure { e -> - e(e) { "File to decrypt not found" } + logcat(ERROR) { e.asLog("File to decrypt not found") } return null } .onSuccess { encryptedInput -> @@ -136,7 +138,7 @@ class AutofillDecryptActivityV2 : AppCompatActivity() { } } .onFailure { e -> - e(e) { "Decryption failed" } + logcat(ERROR) { e.asLog("Decryption failed") } return null } .onSuccess { result -> @@ -145,7 +147,7 @@ class AutofillDecryptActivityV2 : AppCompatActivity() { AutofillPreferences.credentialsFromStoreEntry(this, file, entry, directoryStructure) } .getOrElse { e -> - e(e) { "Failed to parse password entry" } + logcat(ERROR) { e.asLog("Failed to parse password entry") } return null } } diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillFilterActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillFilterActivity.kt index 04fb83d5..bb6d1056 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillFilterActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillFilterActivity.kt @@ -24,7 +24,6 @@ import androidx.core.widget.addTextChangedListener import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager -import com.github.ajalt.timberkt.e import com.github.androidpasswordstore.autofillparser.FormOrigin import dev.msfjarvis.aps.R import dev.msfjarvis.aps.data.password.PasswordItem @@ -39,6 +38,8 @@ import dev.msfjarvis.aps.util.viewmodel.ListMode import dev.msfjarvis.aps.util.viewmodel.SearchMode import dev.msfjarvis.aps.util.viewmodel.SearchableRepositoryAdapter import dev.msfjarvis.aps.util.viewmodel.SearchableRepositoryViewModel +import logcat.LogPriority.ERROR +import logcat.logcat @TargetApi(Build.VERSION_CODES.O) class AutofillFilterView : AppCompatActivity() { @@ -102,7 +103,7 @@ class AutofillFilterView : AppCompatActivity() { window.attributes = params if (intent?.hasExtra(AutofillManager.EXTRA_CLIENT_STATE) != true) { - e { "AutofillFilterActivity started without EXTRA_CLIENT_STATE" } + logcat(ERROR) { "AutofillFilterActivity started without EXTRA_CLIENT_STATE" } finish() return } @@ -115,7 +116,7 @@ class AutofillFilterView : AppCompatActivity() { FormOrigin.App(intent!!.getStringExtra(EXTRA_FORM_ORIGIN_APP)!!) } else -> { - e { + logcat(ERROR) { "AutofillFilterActivity started without EXTRA_FORM_ORIGIN_WEB or EXTRA_FORM_ORIGIN_APP" } finish() diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillPublisherChangedActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillPublisherChangedActivity.kt index 6ea47ea1..e37ebf5e 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillPublisherChangedActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillPublisherChangedActivity.kt @@ -17,7 +17,6 @@ import android.text.format.DateUtils import android.view.View import android.view.autofill.AutofillManager import androidx.appcompat.app.AppCompatActivity -import com.github.ajalt.timberkt.e import com.github.androidpasswordstore.autofillparser.FormOrigin import com.github.androidpasswordstore.autofillparser.computeCertificatesHash import com.github.michaelbull.result.onFailure @@ -26,7 +25,10 @@ import dev.msfjarvis.aps.R import dev.msfjarvis.aps.databinding.ActivityOreoAutofillPublisherChangedBinding import dev.msfjarvis.aps.util.autofill.AutofillMatcher import dev.msfjarvis.aps.util.autofill.AutofillPublisherChangedException +import dev.msfjarvis.aps.util.extensions.asLog import dev.msfjarvis.aps.util.extensions.viewBinding +import logcat.LogPriority.ERROR +import logcat.logcat @TargetApi(Build.VERSION_CODES.O) class AutofillPublisherChangedActivity : AppCompatActivity() { @@ -69,7 +71,7 @@ class AutofillPublisherChangedActivity : AppCompatActivity() { appPackage = intent.getStringExtra(EXTRA_APP_PACKAGE) ?: run { - e { "AutofillPublisherChangedActivity started without EXTRA_PACKAGE_NAME" } + logcat(ERROR) { "AutofillPublisherChangedActivity started without EXTRA_PACKAGE_NAME" } finish() return } @@ -117,7 +119,7 @@ class AutofillPublisherChangedActivity : AppCompatActivity() { } } .onFailure { e -> - e(e) { "Failed to retrieve package info for $appPackage" } + logcat(ERROR) { e.asLog("Failed to retrieve package info for $appPackage") } finish() } } diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillSaveActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillSaveActivity.kt index a2ed02fd..c6feec1e 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillSaveActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/autofill/AutofillSaveActivity.kt @@ -15,7 +15,6 @@ import androidx.activity.result.contract.ActivityResultContracts.StartActivityFo import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import androidx.core.os.bundleOf -import com.github.ajalt.timberkt.e import com.github.androidpasswordstore.autofillparser.AutofillAction import com.github.androidpasswordstore.autofillparser.Credentials import com.github.androidpasswordstore.autofillparser.FormOrigin @@ -26,6 +25,8 @@ import dev.msfjarvis.aps.util.autofill.AutofillPreferences import dev.msfjarvis.aps.util.autofill.AutofillResponseBuilder import dev.msfjarvis.aps.util.extensions.unsafeLazy import java.io.File +import logcat.LogPriority.ERROR +import logcat.logcat @RequiresApi(Build.VERSION_CODES.O) class AutofillSaveActivity : AppCompatActivity() { @@ -131,7 +132,7 @@ class AutofillSaveActivity : AppCompatActivity() { val clientState = intent?.getBundleExtra(AutofillManager.EXTRA_CLIENT_STATE) ?: run { - e { "AutofillDecryptActivity started without EXTRA_CLIENT_STATE" } + logcat(ERROR) { "AutofillDecryptActivity started without EXTRA_CLIENT_STATE" } finish() return@registerForActivityResult } diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/BasePgpActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/BasePgpActivity.kt index 0a114827..6920bba2 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/BasePgpActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/BasePgpActivity.kt @@ -17,9 +17,6 @@ import android.view.WindowManager import androidx.annotation.CallSuper import androidx.annotation.StringRes import androidx.appcompat.app.AppCompatActivity -import com.github.ajalt.timberkt.Timber.tag -import com.github.ajalt.timberkt.e -import com.github.ajalt.timberkt.i import com.github.michaelbull.result.getOr import com.github.michaelbull.result.runCatching import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -29,6 +26,7 @@ import dev.msfjarvis.aps.R import dev.msfjarvis.aps.injection.prefs.SettingsPreferences import dev.msfjarvis.aps.util.FeatureFlags import dev.msfjarvis.aps.util.extensions.OPENPGP_PROVIDER +import dev.msfjarvis.aps.util.extensions.asLog import dev.msfjarvis.aps.util.extensions.clipboard import dev.msfjarvis.aps.util.extensions.getString import dev.msfjarvis.aps.util.extensions.snackbar @@ -37,6 +35,9 @@ import dev.msfjarvis.aps.util.services.ClipboardService import dev.msfjarvis.aps.util.settings.PreferenceKeys import java.io.File import javax.inject.Inject +import logcat.LogPriority.ERROR +import logcat.LogPriority.INFO +import logcat.logcat import me.msfjarvis.openpgpktx.util.OpenPgpApi import me.msfjarvis.openpgpktx.util.OpenPgpServiceConnection import org.openintents.openpgp.IOpenPgpService2 @@ -82,7 +83,6 @@ open class BasePgpActivity : AppCompatActivity(), OpenPgpServiceConnection.OnBou override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE) - tag(TAG) } /** @@ -121,7 +121,7 @@ open class BasePgpActivity : AppCompatActivity(), OpenPgpServiceConnection.OnBou * super. */ override fun onError(e: Exception) { - e(e) { "Callers must handle their own exceptions" } + logcat(ERROR) { e.asLog("Callers must handle their own exceptions") } throw e } @@ -176,7 +176,7 @@ open class BasePgpActivity : AppCompatActivity(), OpenPgpServiceConnection.OnBou * @param result The intent returned by OpenKeychain */ fun getUserInteractionRequestIntent(result: Intent): IntentSender { - i { "RESULT_CODE_USER_INTERACTION_REQUIRED" } + logcat(INFO) { "RESULT_CODE_USER_INTERACTION_REQUIRED" } return result.getParcelableExtra<PendingIntent>(OpenPgpApi.RESULT_INTENT)!!.intentSender } @@ -196,8 +196,8 @@ open class BasePgpActivity : AppCompatActivity(), OpenPgpServiceConnection.OnBou } else -> { snackbar(message = getString(R.string.openpgp_error_unknown, error.message)) - e { "onError getErrorId: ${error.errorId}" } - e { "onError getMessage: ${error.message}" } + logcat(ERROR) { "onError getErrorId: ${error.errorId}" } + logcat(ERROR) { "onError getMessage: ${error.message}" } } } } diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivity.kt index 10298dca..e1ee2195 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/DecryptActivity.kt @@ -12,7 +12,6 @@ import android.view.MenuItem import androidx.activity.result.IntentSenderRequest import androidx.activity.result.contract.ActivityResultContracts.StartIntentSenderForResult import androidx.lifecycle.lifecycleScope -import com.github.ajalt.timberkt.e import com.github.michaelbull.result.onFailure import com.github.michaelbull.result.runCatching import dagger.hilt.android.AndroidEntryPoint @@ -35,6 +34,9 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import logcat.LogPriority.ERROR +import logcat.asLog +import logcat.logcat import me.msfjarvis.openpgpktx.util.OpenPgpApi import me.msfjarvis.openpgpktx.util.OpenPgpServiceConnection import org.openintents.openpgp.IOpenPgpService2 @@ -110,7 +112,7 @@ class DecryptActivity : BasePgpActivity(), OpenPgpServiceConnection.OnBound { } override fun onError(e: Exception) { - e(e) + logcat(ERROR) { e.asLog() } } /** @@ -212,7 +214,7 @@ class DecryptActivity : BasePgpActivity(), OpenPgpServiceConnection.OnBound { binding.recyclerView.adapter = adapter adapter.updateItems(items) } - .onFailure { e -> e(e) } + .onFailure { e -> logcat(ERROR) { e.asLog() } } } OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED -> { val sender = getUserInteractionRequestIntent(result) diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/GetKeyIdsActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/GetKeyIdsActivity.kt index c98ea877..b24868c9 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/GetKeyIdsActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/GetKeyIdsActivity.kt @@ -10,12 +10,14 @@ import android.os.Bundle import androidx.activity.result.IntentSenderRequest import androidx.activity.result.contract.ActivityResultContracts.StartIntentSenderForResult import androidx.lifecycle.lifecycleScope -import com.github.ajalt.timberkt.e import com.github.michaelbull.result.onFailure import com.github.michaelbull.result.runCatching import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import logcat.LogPriority.ERROR +import logcat.asLog +import logcat.logcat import me.msfjarvis.openpgpktx.util.OpenPgpApi import me.msfjarvis.openpgpktx.util.OpenPgpUtils import org.openintents.openpgp.IOpenPgpService2 @@ -43,7 +45,7 @@ class GetKeyIdsActivity : BasePgpActivity() { } override fun onError(e: Exception) { - e(e) + logcat(ERROR) { e.asLog() } } /** Get the Key ids from OpenKeychain */ @@ -63,7 +65,7 @@ class GetKeyIdsActivity : BasePgpActivity() { setResult(RESULT_OK, keyResult) finish() } - .onFailure { e -> e(e) } + .onFailure { e -> logcat(ERROR) { e.asLog() } } } OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED -> { val sender = getUserInteractionRequestIntent(result) diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/PasswordCreationActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/PasswordCreationActivity.kt index cf34ac36..947ee1ea 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/PasswordCreationActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/PasswordCreationActivity.kt @@ -20,7 +20,6 @@ import androidx.core.content.edit import androidx.core.view.isVisible import androidx.core.widget.doOnTextChanged import androidx.lifecycle.lifecycleScope -import com.github.ajalt.timberkt.e import com.github.michaelbull.result.onFailure import com.github.michaelbull.result.onSuccess import com.github.michaelbull.result.runCatching @@ -39,6 +38,7 @@ import dev.msfjarvis.aps.ui.dialogs.XkPasswordGeneratorDialogFragment import dev.msfjarvis.aps.util.autofill.AutofillPreferences import dev.msfjarvis.aps.util.autofill.DirectoryStructure import dev.msfjarvis.aps.util.crypto.GpgIdentifier +import dev.msfjarvis.aps.util.extensions.asLog import dev.msfjarvis.aps.util.extensions.base64 import dev.msfjarvis.aps.util.extensions.commitChange import dev.msfjarvis.aps.util.extensions.getString @@ -55,6 +55,9 @@ import javax.inject.Inject import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import logcat.LogPriority.ERROR +import logcat.asLog +import logcat.logcat import me.msfjarvis.openpgpktx.util.OpenPgpApi import me.msfjarvis.openpgpktx.util.OpenPgpServiceConnection @@ -520,7 +523,7 @@ class PasswordCreationActivity : BasePgpActivity(), OpenPgpServiceConnection.OnB } .onFailure { e -> if (e is IOException) { - e(e) { "Failed to write password file" } + logcat(ERROR) { e.asLog("Failed to write password file") } setResult(RESULT_CANCELED) MaterialAlertDialogBuilder(this@PasswordCreationActivity) .setTitle(getString(R.string.password_creation_file_fail_title)) @@ -529,7 +532,7 @@ class PasswordCreationActivity : BasePgpActivity(), OpenPgpServiceConnection.OnB .setPositiveButton(android.R.string.ok) { _, _ -> finish() } .show() } else { - e(e) + logcat(ERROR) { e.asLog() } } } } diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/PasswordCreationActivityV2.kt b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/PasswordCreationActivityV2.kt index 645d6c47..c2cc5b10 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/crypto/PasswordCreationActivityV2.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/crypto/PasswordCreationActivityV2.kt @@ -18,7 +18,6 @@ import androidx.core.content.edit import androidx.core.view.isVisible import androidx.core.widget.doOnTextChanged import androidx.lifecycle.lifecycleScope -import com.github.ajalt.timberkt.e import com.github.michaelbull.result.onFailure import com.github.michaelbull.result.onSuccess import com.github.michaelbull.result.runCatching @@ -35,6 +34,7 @@ import dev.msfjarvis.aps.ui.dialogs.PasswordGeneratorDialogFragment import dev.msfjarvis.aps.ui.dialogs.XkPasswordGeneratorDialogFragment import dev.msfjarvis.aps.util.autofill.AutofillPreferences import dev.msfjarvis.aps.util.autofill.DirectoryStructure +import dev.msfjarvis.aps.util.extensions.asLog import dev.msfjarvis.aps.util.extensions.base64 import dev.msfjarvis.aps.util.extensions.commitChange import dev.msfjarvis.aps.util.extensions.getString @@ -49,6 +49,9 @@ import javax.inject.Inject import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import logcat.LogPriority.ERROR +import logcat.asLog +import logcat.logcat @AndroidEntryPoint class PasswordCreationActivityV2 : BasePgpActivity() { @@ -393,7 +396,7 @@ class PasswordCreationActivityV2 : BasePgpActivity() { } .onFailure { e -> if (e is IOException) { - e(e) { "Failed to write password file" } + logcat(ERROR) { e.asLog("Failed to write password file") } setResult(RESULT_CANCELED) MaterialAlertDialogBuilder(this@PasswordCreationActivityV2) .setTitle(getString(R.string.password_creation_file_fail_title)) @@ -402,7 +405,7 @@ class PasswordCreationActivityV2 : BasePgpActivity() { .setPositiveButton(android.R.string.ok) { _, _ -> finish() } .show() } else { - e(e) + logcat(ERROR) { e.asLog() } } } } diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/dialogs/XkPasswordGeneratorDialogFragment.kt b/app/src/main/java/dev/msfjarvis/aps/ui/dialogs/XkPasswordGeneratorDialogFragment.kt index 645ab9ba..7b2297ff 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/dialogs/XkPasswordGeneratorDialogFragment.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/dialogs/XkPasswordGeneratorDialogFragment.kt @@ -16,7 +16,6 @@ import androidx.core.os.bundleOf import androidx.fragment.app.DialogFragment import androidx.fragment.app.setFragmentResult import androidx.lifecycle.lifecycleScope -import com.github.ajalt.timberkt.Timber.tag import com.github.michaelbull.result.fold import com.github.michaelbull.result.getOr import com.github.michaelbull.result.runCatching @@ -24,6 +23,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import dev.msfjarvis.aps.R import dev.msfjarvis.aps.databinding.FragmentXkpwgenBinding import dev.msfjarvis.aps.ui.crypto.PasswordCreationActivity +import dev.msfjarvis.aps.util.extensions.asLog import dev.msfjarvis.aps.util.extensions.getString import dev.msfjarvis.aps.util.pwgenxkpwd.CapsType import dev.msfjarvis.aps.util.pwgenxkpwd.PasswordBuilder @@ -31,6 +31,8 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onEach +import logcat.LogPriority.ERROR +import logcat.logcat import reactivecircus.flowbinding.android.widget.afterTextChanges import reactivecircus.flowbinding.android.widget.selectionEvents @@ -119,7 +121,7 @@ class XkPasswordGeneratorDialogFragment : DialogFragment() { success = { binding.xkPasswordText.text = it }, failure = { e -> Toast.makeText(requireActivity(), e.message, Toast.LENGTH_SHORT).show() - tag("xkpw").e(e, "failure generating xkpasswd") + logcat("xkpw", ERROR) { e.asLog("failure generating xkpasswd") } binding.xkPasswordText.text = FALLBACK_ERROR_PASS }, ) diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/git/base/BaseGitActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/git/base/BaseGitActivity.kt index b3155264..a008f6c7 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/git/base/BaseGitActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/git/base/BaseGitActivity.kt @@ -7,7 +7,6 @@ package dev.msfjarvis.aps.ui.git.base import android.content.SharedPreferences import androidx.appcompat.app.AppCompatActivity import androidx.core.content.edit -import com.github.ajalt.timberkt.d import com.github.michaelbull.result.Err import com.github.michaelbull.result.Result import com.github.michaelbull.result.andThen @@ -30,6 +29,8 @@ import dev.msfjarvis.aps.util.settings.PreferenceKeys import javax.inject.Inject import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext +import logcat.asLog +import logcat.logcat import net.schmizz.sshj.common.DisconnectReason import net.schmizz.sshj.common.SSHException import net.schmizz.sshj.transport.TransportException @@ -89,7 +90,7 @@ abstract class BaseGitActivity : ContinuationContainerActivity() { if (!isExplicitlyUserInitiatedError(error)) { gitPrefs.edit { remove(PreferenceKeys.HTTPS_PASSWORD) } sharedPrefs.edit { remove(PreferenceKeys.SSH_OPENKEYSTORE_KEYID) } - d(error) + logcat { error.asLog() } withContext(Dispatchers.Main) { MaterialAlertDialogBuilder(this@BaseGitActivity).run { setTitle(resources.getString(R.string.jgit_error_dialog_title)) diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitConfigActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitConfigActivity.kt index 8ca719eb..04014e17 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitConfigActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitConfigActivity.kt @@ -12,7 +12,6 @@ import android.util.Patterns import android.view.MenuItem import androidx.core.os.postDelayed import androidx.lifecycle.lifecycleScope -import com.github.ajalt.timberkt.e import com.github.michaelbull.result.fold import com.github.michaelbull.result.getOrElse import com.github.michaelbull.result.onFailure @@ -26,6 +25,8 @@ import dev.msfjarvis.aps.ui.git.base.BaseGitActivity import dev.msfjarvis.aps.ui.git.log.GitLogActivity import dev.msfjarvis.aps.util.extensions.viewBinding import kotlinx.coroutines.launch +import logcat.LogPriority.ERROR +import logcat.logcat import org.eclipse.jgit.lib.Constants import org.eclipse.jgit.lib.Repository import org.eclipse.jgit.lib.RepositoryState @@ -88,7 +89,7 @@ class GitConfigActivity : BaseGitActivity() { } binding.gitLog.setOnClickListener { runCatching { startActivity(Intent(this, GitLogActivity::class.java)) }.onFailure { ex -> - e(ex) { "Failed to start GitLogActivity" } + logcat(ERROR) { "Failed to start GitLogActivity\n${ex}" } } } binding.gitAbortRebase.setOnClickListener { @@ -143,7 +144,7 @@ class GitConfigActivity : BaseGitActivity() { } } .getOrElse { ex -> - e(ex) { "Error getting HEAD reference" } + logcat(ERROR) { "Error getting HEAD reference\n${ex}" } getString(R.string.git_head_missing) } } diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitServerConfigActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitServerConfigActivity.kt index 5265131b..d1e84374 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitServerConfigActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitServerConfigActivity.kt @@ -15,7 +15,6 @@ import androidx.core.os.postDelayed import androidx.core.view.isVisible import androidx.core.widget.doOnTextChanged import androidx.lifecycle.lifecycleScope -import com.github.ajalt.timberkt.e import com.github.michaelbull.result.fold import com.github.michaelbull.result.onFailure import com.github.michaelbull.result.runCatching @@ -34,6 +33,9 @@ import dev.msfjarvis.aps.util.settings.Protocol import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import logcat.LogPriority.ERROR +import logcat.asLog +import logcat.logcat /** * Activity that encompasses both the initial clone as well as editing the server config for future @@ -269,7 +271,7 @@ class GitServerConfigActivity : BaseGitActivity() { } } .onFailure { e -> - e(e) + logcat(ERROR) { e.asLog() } MaterialAlertDialogBuilder(this).setMessage(e.message).show() } lifecycleScope.launch { diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/git/log/GitLogAdapter.kt b/app/src/main/java/dev/msfjarvis/aps/ui/git/log/GitLogAdapter.kt index 1470d642..a3080fef 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/git/log/GitLogAdapter.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/git/log/GitLogAdapter.kt @@ -8,12 +8,13 @@ package dev.msfjarvis.aps.ui.git.log import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.github.ajalt.timberkt.e import dev.msfjarvis.aps.databinding.GitLogRowLayoutBinding import dev.msfjarvis.aps.util.git.GitCommit import dev.msfjarvis.aps.util.git.GitLogModel import java.text.DateFormat import java.util.Date +import logcat.LogPriority.ERROR +import logcat.logcat private fun shortHash(hash: String): String { return hash.substring(0 until 8) @@ -37,7 +38,7 @@ class GitLogAdapter : RecyclerView.Adapter<GitLogAdapter.ViewHolder>() { override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) { val commit = model.get(position) if (commit == null) { - e { "There is no git commit for view holder at position $position." } + logcat(ERROR) { "There is no git commit for view holder at position $position." } return } viewHolder.bind(commit) diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/onboarding/fragments/RepoLocationFragment.kt b/app/src/main/java/dev/msfjarvis/aps/ui/onboarding/fragments/RepoLocationFragment.kt index 8503cfbd..befe44f1 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/onboarding/fragments/RepoLocationFragment.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/onboarding/fragments/RepoLocationFragment.kt @@ -13,8 +13,6 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import androidx.core.content.edit import androidx.fragment.app.Fragment -import com.github.ajalt.timberkt.d -import com.github.ajalt.timberkt.e import com.github.michaelbull.result.onFailure import com.github.michaelbull.result.runCatching import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -33,6 +31,9 @@ import dev.msfjarvis.aps.util.extensions.viewBinding import dev.msfjarvis.aps.util.settings.PasswordSortOrder import dev.msfjarvis.aps.util.settings.PreferenceKeys import java.io.File +import logcat.LogPriority.ERROR +import logcat.asLog +import logcat.logcat class RepoLocationFragment : Fragment(R.layout.fragment_repo_location) { @@ -160,9 +161,9 @@ class RepoLocationFragment : Fragment(R.layout.fragment_repo_location) { parentFragmentManager.performTransactionWithBackStack(KeySelectionFragment.newInstance()) } .onFailure { e -> - e(e) + logcat(ERROR) { e.asLog() } if (!localDir.delete()) { - d { "Failed to delete local repository: $localDir" } + logcat { "Failed to delete local repository: $localDir" } } finish() } diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/passwords/PasswordStore.kt b/app/src/main/java/dev/msfjarvis/aps/ui/passwords/PasswordStore.kt index a44d4ed0..ba1e4ac6 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/passwords/PasswordStore.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/passwords/PasswordStore.kt @@ -25,9 +25,6 @@ import androidx.fragment.app.FragmentManager import androidx.fragment.app.commit import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope -import com.github.ajalt.timberkt.d -import com.github.ajalt.timberkt.e -import com.github.ajalt.timberkt.i import com.github.michaelbull.result.fold import com.github.michaelbull.result.onFailure import com.github.michaelbull.result.runCatching @@ -68,6 +65,9 @@ import javax.inject.Inject import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import logcat.LogPriority.ERROR +import logcat.LogPriority.INFO +import logcat.logcat const val PASSWORD_FRAGMENT_TAG = "PasswordsList" @@ -108,18 +108,18 @@ class PasswordStore : BaseGitActivity() { val target = File(requireNotNull(intentData.getStringExtra("SELECTED_FOLDER_PATH"))) val repositoryPath = PasswordRepository.getRepositoryDirectory().absolutePath if (!target.isDirectory) { - e { "Tried moving passwords to a non-existing folder." } + logcat(ERROR) { "Tried moving passwords to a non-existing folder." } return@registerForActivityResult } - d { "Moving passwords to ${intentData.getStringExtra("SELECTED_FOLDER_PATH")}" } - d { filesToMove.joinToString(", ") } + logcat { "Moving passwords to ${intentData.getStringExtra("SELECTED_FOLDER_PATH")}" } + logcat { filesToMove.joinToString(", ") } lifecycleScope.launch(Dispatchers.IO) { for (file in filesToMove) { val source = File(file) if (!source.exists()) { - e { "Tried moving something that appears non-existent." } + logcat(ERROR) { "Tried moving something that appears non-existent." } continue } val destinationFile = File(target.absolutePath + "/" + source.name) @@ -127,7 +127,7 @@ class PasswordStore : BaseGitActivity() { val sourceLongName = getLongName(requireNotNull(source.parent), repositoryPath, basename) val destinationLongName = getLongName(target.absolutePath, repositoryPath, basename) if (destinationFile.exists()) { - e { "Trying to move a file that already exists." } + logcat(ERROR) { "Trying to move a file that already exists." } withContext(Dispatchers.Main) { MaterialAlertDialogBuilder(this@PasswordStore) .setTitle(resources.getString(R.string.password_exists_title)) @@ -389,7 +389,7 @@ class PasswordStore : BaseGitActivity() { private fun checkLocalRepository(localDir: File?) { if (localDir != null && settings.getBoolean(PreferenceKeys.REPOSITORY_INITIALIZED, false)) { - d { "Check, dir: ${localDir.absolutePath}" } + logcat { "Check, dir: ${localDir.absolutePath}" } // do not push the fragment if we already have it if (getPasswordFragment() == null || settings.getBoolean(PreferenceKeys.REPO_CHANGED, false) ) { @@ -454,7 +454,7 @@ class PasswordStore : BaseGitActivity() { fun createPassword() { if (!validateState()) return val currentDir = currentDir - i { "Adding file to : ${currentDir.absolutePath}" } + logcat(INFO) { "Adding file to : ${currentDir.absolutePath}" } val intent = Intent(this, PasswordCreationActivity::class.java) intent.putExtra("FILE_PATH", currentDir.absolutePath) intent.putExtra("REPO_PATH", PasswordRepository.getRepositoryDirectory().absolutePath) @@ -632,7 +632,7 @@ class PasswordStore : BaseGitActivity() { mapOf(source to destinationFile) } if (!source.renameTo(destinationFile)) { - e { "Something went wrong while moving $source to $destinationFile." } + logcat(ERROR) { "Something went wrong while moving $source to $destinationFile." } withContext(Dispatchers.Main) { MaterialAlertDialogBuilder(this@PasswordStore) .setTitle(R.string.password_move_error_title) diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/settings/DirectorySelectionActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/settings/DirectorySelectionActivity.kt index 039b7a59..1f8873c0 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/settings/DirectorySelectionActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/settings/DirectorySelectionActivity.kt @@ -12,11 +12,11 @@ import android.provider.DocumentsContract import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import androidx.core.content.edit -import com.github.ajalt.timberkt.d import com.google.android.material.dialog.MaterialAlertDialogBuilder import dev.msfjarvis.aps.R import dev.msfjarvis.aps.util.extensions.sharedPrefs import dev.msfjarvis.aps.util.settings.PreferenceKeys +import logcat.logcat class DirectorySelectionActivity : AppCompatActivity() { @@ -25,7 +25,7 @@ class DirectorySelectionActivity : AppCompatActivity() { registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) { uri: Uri? -> if (uri == null) return@registerForActivityResult - d { "Selected repository URI is $uri" } + logcat { "Selected repository URI is $uri" } // TODO: This is fragile. Workaround until PasswordItem is backed by DocumentFile val docId = DocumentsContract.getTreeDocumentId(uri) val split = docId.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() @@ -33,7 +33,7 @@ class DirectorySelectionActivity : AppCompatActivity() { val repoPath = "${Environment.getExternalStorageDirectory()}/$path" val prefs = sharedPrefs - d { "Selected repository path is $repoPath" } + logcat { "Selected repository path is $repoPath" } if (Environment.getExternalStorageDirectory().path == repoPath) { MaterialAlertDialogBuilder(this) |
