diff options
Diffstat (limited to 'app/src/main/java')
17 files changed, 45 insertions, 52 deletions
diff --git a/app/src/main/java/app/passwordstore/Application.kt b/app/src/main/java/app/passwordstore/Application.kt index 60b58cc1..dbeb4ffb 100644 --- a/app/src/main/java/app/passwordstore/Application.kt +++ b/app/src/main/java/app/passwordstore/Application.kt @@ -4,13 +4,13 @@ */ package app.passwordstore +import android.app.UiModeManager import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter import android.content.SharedPreferences import android.os.StrictMode -import androidx.appcompat.app.AppCompatDelegate.* import app.passwordstore.data.crypto.PGPPassphraseCache import app.passwordstore.injection.context.FilesDirPath import app.passwordstore.injection.prefs.SettingsPreferences @@ -23,7 +23,6 @@ import app.passwordstore.util.settings.GitSettings import app.passwordstore.util.settings.PreferenceKeys import app.passwordstore.util.settings.removeSecurityCryptoData import app.passwordstore.util.settings.runMigrations -import com.google.android.material.color.DynamicColors import dagger.hilt.android.HiltAndroidApp import java.util.concurrent.Executors import javax.inject.Inject @@ -64,7 +63,6 @@ class Application : android.app.Application(), SharedPreferences.OnSharedPrefere removeSecurityCryptoData(this, prefs) runMigrations(filesDirPath, prefs, gitSettings) proxyUtils.setDefaultProxy() - DynamicColors.applyToActivitiesIfAvailable(this) setupScreenOffHandler() } @@ -112,14 +110,14 @@ class Application : android.app.Application(), SharedPreferences.OnSharedPrefere } private fun setNightMode() { - setDefaultNightMode( - when (prefs.getString(PreferenceKeys.APP_THEME) ?: getString(R.string.app_theme_def)) { - "light" -> MODE_NIGHT_NO - "dark" -> MODE_NIGHT_YES - "follow_system" -> MODE_NIGHT_FOLLOW_SYSTEM - else -> MODE_NIGHT_AUTO_BATTERY - } - ) + getSystemService(UiModeManager::class.java) + .setApplicationNightMode( + when (prefs.getString(PreferenceKeys.APP_THEME) ?: getString(R.string.app_theme_def)) { + "light" -> UiModeManager.MODE_NIGHT_NO + "dark" -> UiModeManager.MODE_NIGHT_YES + else -> UiModeManager.MODE_NIGHT_AUTO + } + ) } companion object { diff --git a/app/src/main/java/app/passwordstore/ui/autofill/AutofillDecryptActivity.kt b/app/src/main/java/app/passwordstore/ui/autofill/AutofillDecryptActivity.kt index 6354359f..3b62de4c 100644 --- a/app/src/main/java/app/passwordstore/ui/autofill/AutofillDecryptActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/autofill/AutofillDecryptActivity.kt @@ -15,7 +15,6 @@ import android.view.autofill.AutofillManager import android.widget.Toast import androidx.activity.compose.setContent import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult -import androidx.appcompat.app.AppCompatActivity import androidx.compose.material3.AlertDialog import androidx.compose.material3.Text import androidx.compose.material3.TextButton @@ -24,6 +23,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.res.stringResource import androidx.core.content.edit +import androidx.fragment.app.FragmentActivity import androidx.lifecycle.lifecycleScope import app.passwordstore.Application.Companion.screenWasOff import app.passwordstore.R @@ -70,7 +70,7 @@ import logcat.logcat * FLAG_SECURE window shows only the "no keys" and passphrase dialogs. */ @AndroidEntryPoint -class AutofillDecryptActivity : AppCompatActivity() { +class AutofillDecryptActivity : FragmentActivity() { @SettingsPreferences @Inject lateinit var settings: SharedPreferences @Inject lateinit var repository: CryptoRepository diff --git a/app/src/main/java/app/passwordstore/ui/autofill/AutofillFilterView.kt b/app/src/main/java/app/passwordstore/ui/autofill/AutofillFilterView.kt index 86c2d51d..474005b5 100644 --- a/app/src/main/java/app/passwordstore/ui/autofill/AutofillFilterView.kt +++ b/app/src/main/java/app/passwordstore/ui/autofill/AutofillFilterView.kt @@ -13,13 +13,13 @@ import android.view.autofill.AutofillManager import androidx.activity.compose.setContent import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult import androidx.activity.viewModels -import androidx.appcompat.app.AppCompatActivity import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue +import androidx.fragment.app.FragmentActivity import androidx.lifecycle.compose.collectAsStateWithLifecycle import app.passwordstore.R import app.passwordstore.data.repo.PasswordRepository @@ -43,7 +43,7 @@ import logcat.LogPriority.ERROR import logcat.logcat @AndroidEntryPoint -class AutofillFilterView : AppCompatActivity() { +class AutofillFilterView : FragmentActivity() { @Inject lateinit var dispatcherProvider: DispatcherProvider @@ -128,7 +128,6 @@ class AutofillFilterView : AppCompatActivity() { return } } - supportActionBar?.hide() setResult(RESULT_CANCELED) val isWeb = formOrigin is FormOrigin.Web diff --git a/app/src/main/java/app/passwordstore/ui/autofill/AutofillPublisherChangedActivity.kt b/app/src/main/java/app/passwordstore/ui/autofill/AutofillPublisherChangedActivity.kt index b0dd5dd9..74637ca1 100644 --- a/app/src/main/java/app/passwordstore/ui/autofill/AutofillPublisherChangedActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/autofill/AutofillPublisherChangedActivity.kt @@ -14,8 +14,8 @@ import android.service.autofill.FillResponse import android.text.format.DateUtils import android.view.autofill.AutofillManager import androidx.activity.compose.setContent -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.IntentCompat +import androidx.fragment.app.FragmentActivity import app.passwordstore.R import app.passwordstore.ui.compose.theme.APSTheme import app.passwordstore.util.autofill.AutofillMatcher @@ -30,7 +30,7 @@ import com.github.michaelbull.result.runCatching import logcat.LogPriority.ERROR import logcat.logcat -class AutofillPublisherChangedActivity : AppCompatActivity() { +class AutofillPublisherChangedActivity : FragmentActivity() { companion object { @@ -74,7 +74,6 @@ class AutofillPublisherChangedActivity : AppCompatActivity() { finish() return } - supportActionBar?.hide() val (packageInfo, appInfo, hash) = runCatching { Triple( diff --git a/app/src/main/java/app/passwordstore/ui/autofill/AutofillSaveActivity.kt b/app/src/main/java/app/passwordstore/ui/autofill/AutofillSaveActivity.kt index dde6a7ae..2ed0adef 100644 --- a/app/src/main/java/app/passwordstore/ui/autofill/AutofillSaveActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/autofill/AutofillSaveActivity.kt @@ -12,8 +12,8 @@ import android.os.Bundle import android.view.WindowManager import android.view.autofill.AutofillManager import androidx.activity.compose.setContent -import androidx.appcompat.app.AppCompatActivity import androidx.core.os.bundleOf +import androidx.fragment.app.FragmentActivity import app.passwordstore.data.passfile.PasswordEntry import app.passwordstore.ui.compose.theme.APSTheme import app.passwordstore.ui.editor.EditorDestination @@ -39,7 +39,7 @@ import logcat.logcat * password, fills it in. */ @AndroidEntryPoint -class AutofillSaveActivity : AppCompatActivity() { +class AutofillSaveActivity : FragmentActivity() { companion object { diff --git a/app/src/main/java/app/passwordstore/ui/git/base/BaseGitActivity.kt b/app/src/main/java/app/passwordstore/ui/git/base/BaseGitActivity.kt index fb29b810..f7181c4e 100644 --- a/app/src/main/java/app/passwordstore/ui/git/base/BaseGitActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/git/base/BaseGitActivity.kt @@ -5,8 +5,8 @@ package app.passwordstore.ui.git.base import android.content.SharedPreferences -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.edit +import androidx.fragment.app.FragmentActivity import app.passwordstore.R import app.passwordstore.injection.prefs.GitPreferences import app.passwordstore.ui.prompts.prompts @@ -36,11 +36,11 @@ import net.schmizz.sshj.transport.TransportException import net.schmizz.sshj.userauth.UserAuthException /** - * Abstract [AppCompatActivity] that holds some information that is commonly shared across + * Abstract [FragmentActivity] that holds some information that is commonly shared across * git-related tasks and makes sense to be held here. */ @AndroidEntryPoint -abstract class BaseGitActivity : AppCompatActivity() { +abstract class BaseGitActivity : FragmentActivity() { /** Enum of possible Git operations than can be run through [launchGitOperation]. */ enum class GitOp { diff --git a/app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt b/app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt index c0af5742..54aaf9de 100644 --- a/app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt @@ -9,8 +9,8 @@ import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Looper -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.edit +import androidx.fragment.app.FragmentActivity import app.passwordstore.data.repo.PasswordRepository import app.passwordstore.util.auth.BiometricAuthenticator import app.passwordstore.util.auth.BiometricAuthenticator.Result @@ -19,7 +19,7 @@ import app.passwordstore.util.settings.PreferenceKeys import java.io.File @SuppressLint("CustomSplashScreen") -class LaunchActivity : AppCompatActivity() { +class LaunchActivity : FragmentActivity() { private var prompted = false diff --git a/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt b/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt index 7ef4f906..f3d7d3a0 100644 --- a/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt @@ -71,8 +71,8 @@ import kotlinx.serialization.Serializable /** * Single-activity host for the Compose UI. Not exported: it is only started by [LaunchActivity], * after its biometric gate and path check, and by the app itself through [setupIntent]. Extends - * [BaseGitActivity] (an AppCompatActivity, so also the FragmentActivity BiometricPrompt needs) - * because the git operations require one; it hosts no fragments. + * [BaseGitActivity] (a FragmentActivity, which BiometricPrompt needs) because the git operations + * require one; it hosts no fragments. */ @AndroidEntryPoint class MainActivity : BaseGitActivity() { diff --git a/app/src/main/java/app/passwordstore/util/git/operation/BreakOutOfDetached.kt b/app/src/main/java/app/passwordstore/util/git/operation/BreakOutOfDetached.kt index 126b2be5..a08f2a35 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/BreakOutOfDetached.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/BreakOutOfDetached.kt @@ -4,7 +4,7 @@ */ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import app.passwordstore.R import app.passwordstore.data.repo.PasswordRepository import app.passwordstore.ui.prompts.prompts @@ -14,7 +14,7 @@ import org.eclipse.jgit.api.RebaseCommand import org.eclipse.jgit.api.ResetCommand import org.eclipse.jgit.lib.RepositoryState -class BreakOutOfDetached(callingActivity: AppCompatActivity) : GitOperation(callingActivity) { +class BreakOutOfDetached(callingActivity: FragmentActivity) : GitOperation(callingActivity) { private val merging = repository.repositoryState == RepositoryState.MERGING private val localBranch = PasswordRepository.getCurrentBranch() diff --git a/app/src/main/java/app/passwordstore/util/git/operation/CloneOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/CloneOperation.kt index 0386f674..0d74835f 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/CloneOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/CloneOperation.kt @@ -4,7 +4,7 @@ */ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import org.eclipse.jgit.api.Git import org.eclipse.jgit.api.GitCommand @@ -14,7 +14,7 @@ import org.eclipse.jgit.api.GitCommand * @param uri URL to clone the repository from * @param callingActivity the calling activity */ -class CloneOperation(callingActivity: AppCompatActivity, uri: String) : +class CloneOperation(callingActivity: FragmentActivity, uri: String) : GitOperation(callingActivity) { override val commands: Array<GitCommand<out Any>> = diff --git a/app/src/main/java/app/passwordstore/util/git/operation/GcOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/GcOperation.kt index c1487fbf..64467f3e 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/GcOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/GcOperation.kt @@ -5,7 +5,7 @@ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import org.eclipse.jgit.api.GitCommand import org.eclipse.jgit.internal.storage.file.FileRepository import org.eclipse.jgit.internal.storage.file.GC @@ -14,7 +14,7 @@ import org.eclipse.jgit.internal.storage.file.GC * Run an aggressive garbage collection job on the repository, expiring every loose object to * achieve the best compression. */ -class GcOperation(callingActivity: AppCompatActivity) : GitOperation(callingActivity) { +class GcOperation(callingActivity: FragmentActivity) : GitOperation(callingActivity) { override val requiresAuth: Boolean = false override val commands: Array<GitCommand<out Any>> = diff --git a/app/src/main/java/app/passwordstore/util/git/operation/GitOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/GitOperation.kt index a4bc33df..f4ed7cd1 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/GitOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/GitOperation.kt @@ -5,7 +5,6 @@ package app.passwordstore.util.git.operation import android.widget.Toast -import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.FragmentActivity import app.passwordstore.R import app.passwordstore.data.repo.PasswordRepository @@ -64,8 +63,6 @@ abstract class GitOperation(protected val callingActivity: FragmentActivity) { EntryPointAccessors.fromApplication<GitOperationEntryPoint>(callingActivity) protected val repository = PasswordRepository.repository!! protected val git = Git(repository) - private val authActivity - get() = callingActivity as AppCompatActivity private class HttpsCredentialsProvider(private val passwordFinder: PasswordFinder) : CredentialsProvider() { @@ -170,7 +167,7 @@ abstract class GitOperation(protected val callingActivity: FragmentActivity) { } when (result) { is Success -> { - registerAuthProviders(SshAuthMethod.SshKey(authActivity)) + registerAuthProviders(SshAuthMethod.SshKey(callingActivity)) } is CanceledByUser -> { return Err(SSHException(DisconnectReason.AUTH_CANCELLED_BY_USER)) @@ -190,7 +187,7 @@ abstract class GitOperation(protected val callingActivity: FragmentActivity) { } } } else { - registerAuthProviders(SshAuthMethod.SshKey(authActivity)) + registerAuthProviders(SshAuthMethod.SshKey(callingActivity)) } } else { onMissingSshKeyFile() @@ -208,7 +205,7 @@ abstract class GitOperation(protected val callingActivity: FragmentActivity) { hiltEntryPoint.dispatcherProvider(), ) ) - registerAuthProviders(SshAuthMethod.Password(authActivity), httpsCredentialProvider) + registerAuthProviders(SshAuthMethod.Password(callingActivity), httpsCredentialProvider) } AuthMode.None -> {} } diff --git a/app/src/main/java/app/passwordstore/util/git/operation/PullOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/PullOperation.kt index 1966c4ab..4738d7ee 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/PullOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/PullOperation.kt @@ -4,10 +4,10 @@ */ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import org.eclipse.jgit.api.GitCommand -class PullOperation(callingActivity: AppCompatActivity, rebase: Boolean) : +class PullOperation(callingActivity: FragmentActivity, rebase: Boolean) : GitOperation(callingActivity) { /** diff --git a/app/src/main/java/app/passwordstore/util/git/operation/PushOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/PushOperation.kt index e013b401..a998cda5 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/PushOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/PushOperation.kt @@ -4,10 +4,10 @@ */ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import org.eclipse.jgit.api.GitCommand -class PushOperation(callingActivity: AppCompatActivity) : GitOperation(callingActivity) { +class PushOperation(callingActivity: FragmentActivity) : GitOperation(callingActivity) { override val commands: Array<GitCommand<out Any>> = arrayOf(git.push().setPushAll().setRemote("origin")) diff --git a/app/src/main/java/app/passwordstore/util/git/operation/ResetToRemoteOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/ResetToRemoteOperation.kt index 7ca1282b..904c62ee 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/ResetToRemoteOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/ResetToRemoteOperation.kt @@ -4,12 +4,12 @@ */ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import org.eclipse.jgit.api.CreateBranchCommand.SetupUpstreamMode.TRACK import org.eclipse.jgit.api.GitCommand import org.eclipse.jgit.api.ResetCommand -class ResetToRemoteOperation(callingActivity: AppCompatActivity, remoteBranch: String) : +class ResetToRemoteOperation(callingActivity: FragmentActivity, remoteBranch: String) : GitOperation(callingActivity) { override val commands: Array<GitCommand<out Any>> = diff --git a/app/src/main/java/app/passwordstore/util/git/operation/SyncOperation.kt b/app/src/main/java/app/passwordstore/util/git/operation/SyncOperation.kt index 25078e8a..c598b829 100644 --- a/app/src/main/java/app/passwordstore/util/git/operation/SyncOperation.kt +++ b/app/src/main/java/app/passwordstore/util/git/operation/SyncOperation.kt @@ -4,10 +4,10 @@ */ package app.passwordstore.util.git.operation -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import org.eclipse.jgit.api.GitCommand -class SyncOperation(callingActivity: AppCompatActivity, rebase: Boolean) : +class SyncOperation(callingActivity: FragmentActivity, rebase: Boolean) : GitOperation(callingActivity) { override val commands: Array<GitCommand<out Any>> = diff --git a/app/src/main/java/app/passwordstore/util/git/sshj/SshjSessionFactory.kt b/app/src/main/java/app/passwordstore/util/git/sshj/SshjSessionFactory.kt index ceae70bb..631e416f 100644 --- a/app/src/main/java/app/passwordstore/util/git/sshj/SshjSessionFactory.kt +++ b/app/src/main/java/app/passwordstore/util/git/sshj/SshjSessionFactory.kt @@ -5,7 +5,7 @@ package app.passwordstore.util.git.sshj import android.util.Base64 -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity import app.passwordstore.ui.prompts.Prompts import app.passwordstore.ui.prompts.prompts import app.passwordstore.util.coroutines.DispatcherProvider @@ -44,16 +44,16 @@ import org.eclipse.jgit.transport.SshSessionFactory import org.eclipse.jgit.transport.URIish import org.eclipse.jgit.util.FS -sealed class SshAuthMethod(val activity: AppCompatActivity) { +sealed class SshAuthMethod(val activity: FragmentActivity) { /** * The activity's [Prompts], taken while it is alive: the SSH thread reads it later, and asking an * activity that was finished meanwhile for it would create one nothing draws. */ val prompts = activity.prompts - class Password(activity: AppCompatActivity) : SshAuthMethod(activity) + class Password(activity: FragmentActivity) : SshAuthMethod(activity) - class SshKey(activity: AppCompatActivity) : SshAuthMethod(activity) + class SshKey(activity: FragmentActivity) : SshAuthMethod(activity) } abstract class InteractivePasswordFinder(private val dispatcherProvider: DispatcherProvider) : |
