From f30dd0d19a8ef13ebc17c95c6c48f245e1676812 Mon Sep 17 00:00:00 2001 From: Norbel AMBANUMBEN Date: Wed, 24 Jan 2024 16:13:54 +0100 Subject: [PATCH] Updated Overview activity to display proprt review button --- .../ooniprobe/activity/MainActivity.java | 11 ++-- .../ooniprobe/activity/OverviewActivity.java | 65 +++++++------------ .../activity/ReviewUpdatesAbstractActivity.kt | 4 +- app/src/main/res/layout/activity_overview.xml | 20 +++--- 4 files changed, 44 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/org/openobservatory/ooniprobe/activity/MainActivity.java b/app/src/main/java/org/openobservatory/ooniprobe/activity/MainActivity.java index b214bcee7..a5352df75 100644 --- a/app/src/main/java/org/openobservatory/ooniprobe/activity/MainActivity.java +++ b/app/src/main/java/org/openobservatory/ooniprobe/activity/MainActivity.java @@ -3,7 +3,6 @@ import static org.openobservatory.ooniprobe.common.service.RunTestService.CHANNEL_ID; import android.Manifest; -import android.app.Activity; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -13,7 +12,6 @@ import android.os.Bundle; import android.os.PowerManager; import android.provider.Settings; - import android.view.View; import androidx.activity.result.ActivityResultLauncher; @@ -36,7 +34,12 @@ import org.openobservatory.ooniprobe.R; import org.openobservatory.ooniprobe.activity.adddescriptor.AddDescriptorActivity; import org.openobservatory.ooniprobe.activity.reviewdescriptorupdates.ReviewDescriptorUpdatesActivity; -import org.openobservatory.ooniprobe.common.*; +import org.openobservatory.ooniprobe.common.Application; +import org.openobservatory.ooniprobe.common.NotificationUtility; +import org.openobservatory.ooniprobe.common.PreferenceManager; +import org.openobservatory.ooniprobe.common.TaskExecutor; +import org.openobservatory.ooniprobe.common.TestDescriptorManager; +import org.openobservatory.ooniprobe.common.ThirdPartyServices; import org.openobservatory.ooniprobe.common.service.ServiceUtil; import org.openobservatory.ooniprobe.common.worker.AutoUpdateDescriptorsWorker; import org.openobservatory.ooniprobe.common.worker.ManualUpdateDescriptorsWorker; @@ -177,7 +180,7 @@ private void scheduleWorkers() { ); // TODO(aanorbel): add rules before checking updates fetchManualUpdate(); - registerReviewLauncher(binding.bottomNavigation); + registerReviewLauncher(binding.bottomNavigation, () -> null); } public void fetchManualUpdate() { diff --git a/app/src/main/java/org/openobservatory/ooniprobe/activity/OverviewActivity.java b/app/src/main/java/org/openobservatory/ooniprobe/activity/OverviewActivity.java index fd1b46135..15eaf2571 100644 --- a/app/src/main/java/org/openobservatory/ooniprobe/activity/OverviewActivity.java +++ b/app/src/main/java/org/openobservatory/ooniprobe/activity/OverviewActivity.java @@ -38,9 +38,6 @@ import org.openobservatory.ooniprobe.common.ReadMorePlugin; import org.openobservatory.ooniprobe.common.worker.ManualUpdateDescriptorsWorker; import org.openobservatory.ooniprobe.databinding.ActivityOverviewBinding; -import org.openobservatory.ooniprobe.fragment.dynamicprogressbar.OONIRunDynamicProgressBar; -import org.openobservatory.ooniprobe.fragment.dynamicprogressbar.OnActionListener; -import org.openobservatory.ooniprobe.fragment.dynamicprogressbar.ProgressType; import org.openobservatory.ooniprobe.model.database.InstalledDescriptor; import org.openobservatory.ooniprobe.model.database.Result; import org.openobservatory.ooniprobe.model.database.TestDescriptor; @@ -162,7 +159,10 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { } setUpOnCLickListeners(); - registerReviewLauncher(binding.progressFragment); + registerReviewLauncher(binding.progressFragment, () -> { + binding.reviewUpdates.setVisibility(View.GONE); + return null; + }); } private void selectAllBtnStatusObserver(String selectAllBtnStatus) { @@ -196,8 +196,6 @@ private void setUpOnCLickListeners() { binding.automaticUpdatesSwitch.setOnCheckedChangeListener((compoundButton, isChecked) -> viewModel.automaticUpdatesSwitchClicked(isChecked)); if (descriptor instanceof InstalledDescriptor) { binding.swipeRefresh.setOnRefreshListener(() -> { - binding.swipeRefresh.setRefreshing(false); - Data.Builder data = new Data.Builder(); data.putLongArray(ManualUpdateDescriptorsWorker.KEY_DESCRIPTOR_IDS, new long[]{Objects.requireNonNull(descriptor.getDescriptor()).getRunId()}); OneTimeWorkRequest manualWorkRequest = new OneTimeWorkRequest.Builder(ManualUpdateDescriptorsWorker.class) @@ -239,44 +237,25 @@ private void setUpOnCLickListeners() { */ private void onManualUpdatesFetchComplete(WorkInfo workInfo) { if (workInfo != null) { - binding.reviewUpdateNotificationFragment.setVisibility(View.VISIBLE); switch (workInfo.getState()) { - case SUCCEEDED -> getSupportFragmentManager() - .beginTransaction() - .add( - R.id.review_update_notification_fragment, - OONIRunDynamicProgressBar.newInstance(ProgressType.REVIEW_LINK, new OnActionListener() { - @Override - public void onActionButtonCLicked() { - - getReviewUpdatesLauncher().launch( - ReviewDescriptorUpdatesActivity.newIntent( - OverviewActivity.this, - workInfo.getOutputData().getString(ManualUpdateDescriptorsWorker.KEY_UPDATED_DESCRIPTORS) - ) - ); - removeProgressFragment(R.id.review_update_notification_fragment); - } - - @Override - public void onCloseButtonClicked() { - removeProgressFragment(R.id.review_update_notification_fragment); - } - }), - OONIRunDynamicProgressBar.getTAG() + "_review_update_success_notification" - ).commit(); - case ENQUEUED -> getSupportFragmentManager() - .beginTransaction() - .add( - R.id.review_update_notification_fragment, - OONIRunDynamicProgressBar.newInstance(ProgressType.UPDATE_LINK, null), - OONIRunDynamicProgressBar.getTAG() + "_review_update_enqueued_notification" - ).commit(); - case FAILED -> Snackbar.make( - binding.getRoot(), - R.string.Modal_Error, - Snackbar.LENGTH_LONG - ).show(); + case SUCCEEDED -> { + binding.reviewUpdates.setVisibility(View.VISIBLE); + binding.reviewUpdates.setOnClickListener(view -> getReviewUpdatesLauncher().launch( + ReviewDescriptorUpdatesActivity.newIntent( + OverviewActivity.this, + workInfo.getOutputData().getString(ManualUpdateDescriptorsWorker.KEY_UPDATED_DESCRIPTORS) + ) + )); + binding.swipeRefresh.setRefreshing(false); + } + case FAILED -> { + binding.swipeRefresh.setRefreshing(false); + Snackbar.make( + binding.getRoot(), + R.string.Modal_Error, + Snackbar.LENGTH_LONG + ).show(); + } default -> { } } diff --git a/app/src/main/java/org/openobservatory/ooniprobe/activity/ReviewUpdatesAbstractActivity.kt b/app/src/main/java/org/openobservatory/ooniprobe/activity/ReviewUpdatesAbstractActivity.kt index 6c2945c3c..5adff209b 100644 --- a/app/src/main/java/org/openobservatory/ooniprobe/activity/ReviewUpdatesAbstractActivity.kt +++ b/app/src/main/java/org/openobservatory/ooniprobe/activity/ReviewUpdatesAbstractActivity.kt @@ -1,6 +1,7 @@ package org.openobservatory.ooniprobe.activity import android.content.Intent +import android.util.Log import android.view.View import androidx.activity.result.ActivityResult import androidx.activity.result.ActivityResultLauncher @@ -11,11 +12,12 @@ import org.openobservatory.ooniprobe.activity.reviewdescriptorupdates.ReviewDesc open class ReviewUpdatesAbstractActivity : AbstractActivity() { var reviewUpdatesLauncher: ActivityResultLauncher? = null - fun registerReviewLauncher(view: View) { + fun registerReviewLauncher(view: View, reviewCompletedListener: () -> Unit?) { reviewUpdatesLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult -> if (result.resultCode == RESULT_OK) { + reviewCompletedListener() result.data?.let { intent: Intent -> intent.getStringExtra(ReviewDescriptorUpdatesActivity.RESULT_MESSAGE) ?.let { message: String -> diff --git a/app/src/main/res/layout/activity_overview.xml b/app/src/main/res/layout/activity_overview.xml index ec26e7a3e..3e2ecf88c 100644 --- a/app/src/main/res/layout/activity_overview.xml +++ b/app/src/main/res/layout/activity_overview.xml @@ -98,6 +98,18 @@ app:cornerRadius="24dp" app:rippleColor="@color/ripple_material_dark" app:strokeColor="@android:color/white" /> +