From 35155e55841bc87b2c0e0dc577e1433041b44bc5 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Sun, 9 Jan 2022 17:50:22 +0530 Subject: Make PGPainless backend feature flag runtime configurable (#1654) * Make feature flags runtime configurable * Add a settings entry for PGPainless feature flag * Add changelog entry --- .../util/autofill/Api30AutofillResponseBuilder.kt | 20 +++++++++++++++++--- .../aps/util/autofill/AutofillResponseBuilder.kt | 20 +++++++++++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) (limited to 'app/src/main/java/dev/msfjarvis/aps/util/autofill') diff --git a/app/src/main/java/dev/msfjarvis/aps/util/autofill/Api30AutofillResponseBuilder.kt b/app/src/main/java/dev/msfjarvis/aps/util/autofill/Api30AutofillResponseBuilder.kt index fd8faa7f..22f2db85 100644 --- a/app/src/main/java/dev/msfjarvis/aps/util/autofill/Api30AutofillResponseBuilder.kt +++ b/app/src/main/java/dev/msfjarvis/aps/util/autofill/Api30AutofillResponseBuilder.kt @@ -19,13 +19,17 @@ import com.github.androidpasswordstore.autofillparser.AutofillAction import com.github.androidpasswordstore.autofillparser.FillableForm import com.github.androidpasswordstore.autofillparser.fillWith import com.github.michaelbull.result.fold +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject import dev.msfjarvis.aps.autofill.oreo.ui.AutofillSmsActivity import dev.msfjarvis.aps.ui.autofill.AutofillDecryptActivity import dev.msfjarvis.aps.ui.autofill.AutofillDecryptActivityV2 import dev.msfjarvis.aps.ui.autofill.AutofillFilterView import dev.msfjarvis.aps.ui.autofill.AutofillPublisherChangedActivity import dev.msfjarvis.aps.ui.autofill.AutofillSaveActivity -import dev.msfjarvis.aps.util.FeatureFlags +import dev.msfjarvis.aps.util.features.Feature +import dev.msfjarvis.aps.util.features.Features import java.io.File import logcat.LogPriority.ERROR import logcat.asLog @@ -33,7 +37,17 @@ import logcat.logcat /** Implements [AutofillResponseBuilder]'s methods for API 30 and above */ @RequiresApi(Build.VERSION_CODES.R) -class Api30AutofillResponseBuilder(form: FillableForm) { +class Api30AutofillResponseBuilder +@AssistedInject +constructor( + @Assisted form: FillableForm, + private val features: Features, +) { + + @AssistedFactory + interface Factory { + fun create(form: FillableForm): Api30AutofillResponseBuilder + } private val formOrigin = form.formOrigin private val scenario = form.scenario @@ -73,7 +87,7 @@ class Api30AutofillResponseBuilder(form: FillableForm) { if (!scenario.hasFieldsToFillOn(AutofillAction.Match)) return null val metadata = makeFillMatchMetadata(context, file) val intentSender = - if (FeatureFlags.ENABLE_PGP_V2_BACKEND) { + if (features.isEnabled(Feature.EnablePGPainlessBackend)) { AutofillDecryptActivityV2.makeDecryptFileIntentSender(file, context) } else { AutofillDecryptActivity.makeDecryptFileIntentSender(file, context) diff --git a/app/src/main/java/dev/msfjarvis/aps/util/autofill/AutofillResponseBuilder.kt b/app/src/main/java/dev/msfjarvis/aps/util/autofill/AutofillResponseBuilder.kt index 723347f2..5c1c91d6 100644 --- a/app/src/main/java/dev/msfjarvis/aps/util/autofill/AutofillResponseBuilder.kt +++ b/app/src/main/java/dev/msfjarvis/aps/util/autofill/AutofillResponseBuilder.kt @@ -19,20 +19,34 @@ import com.github.androidpasswordstore.autofillparser.Credentials import com.github.androidpasswordstore.autofillparser.FillableForm import com.github.androidpasswordstore.autofillparser.fillWith import com.github.michaelbull.result.fold +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject import dev.msfjarvis.aps.autofill.oreo.ui.AutofillSmsActivity import dev.msfjarvis.aps.ui.autofill.AutofillDecryptActivity import dev.msfjarvis.aps.ui.autofill.AutofillDecryptActivityV2 import dev.msfjarvis.aps.ui.autofill.AutofillFilterView import dev.msfjarvis.aps.ui.autofill.AutofillPublisherChangedActivity import dev.msfjarvis.aps.ui.autofill.AutofillSaveActivity -import dev.msfjarvis.aps.util.FeatureFlags +import dev.msfjarvis.aps.util.features.Feature +import dev.msfjarvis.aps.util.features.Features import java.io.File import logcat.LogPriority.ERROR import logcat.asLog import logcat.logcat @RequiresApi(Build.VERSION_CODES.O) -class AutofillResponseBuilder(form: FillableForm) { +class AutofillResponseBuilder +@AssistedInject +constructor( + @Assisted form: FillableForm, + private val features: Features, +) { + + @AssistedFactory + interface Factory { + fun create(form: FillableForm): AutofillResponseBuilder + } private val formOrigin = form.formOrigin private val scenario = form.scenario @@ -61,7 +75,7 @@ class AutofillResponseBuilder(form: FillableForm) { if (!scenario.hasFieldsToFillOn(AutofillAction.Match)) return null val metadata = makeFillMatchMetadata(context, file) val intentSender = - if (FeatureFlags.ENABLE_PGP_V2_BACKEND) { + if (features.isEnabled(Feature.EnablePGPainlessBackend)) { AutofillDecryptActivityV2.makeDecryptFileIntentSender(file, context) } else { AutofillDecryptActivity.makeDecryptFileIntentSender(file, context) -- cgit v1.2.3