Skip to content

Commit

Permalink
Merge pull request #20169 from wordpress-mobile/issue/super-fast-medi…
Browse files Browse the repository at this point in the history
…a-user-communication

Super Fast Media: Show error message
  • Loading branch information
zwarm authored Feb 9, 2024
2 parents e50edd4 + d6921e2 commit eabd347
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -186,5 +186,19 @@ class ActivityNavigator @Inject constructor() {
.addNextIntent(intent)
.startActivities()
}
}

fun openMySiteWithMessageInNewStack(
context: Context,
message: Int
) {
val taskStackBuilder = TaskStackBuilder.create(context)
val mainActivityIntent = getMainActivityInNewStack(context)
val intent = Intent(context, WPMainActivity::class.java)
intent.putExtra(WPMainActivity.ARG_OPEN_PAGE, WPMainActivity.ARG_MY_SITE)
intent.putExtra(WPMainActivity.ARG_OPEN_PAGE_MESSAGE, message)
taskStackBuilder
.addNextIntent(mainActivityIntent)
.addNextIntent(intent)
.startActivities()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,10 @@ class DeepLinkNavigator
navigateAction.site,
navigateAction.siteMonitorType
)
is NavigateAction.OpenMySiteWithMessage -> activityNavigator.openMySiteWithMessageInNewStack(
activity,
navigateAction.message
)
}
if (navigateAction != LoginForResult) {
activity.finish()
Expand Down Expand Up @@ -134,5 +138,6 @@ class DeepLinkNavigator
object DomainManagement : NavigateAction()
data class OpenSiteMonitoringForSite(val site: SiteModel?, val siteMonitorType: SiteMonitorType) :
NavigateAction()
data class OpenMySiteWithMessage(val message: Int) : NavigateAction()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class QRCodeMediaLinkHandler @Inject constructor(
analyticsTrackerWrapper.track(AnalyticsTracker.Stat.DEEP_LINK_FAILED,
mapOf(ERROR to INVALID_SITE_ID,
CAMPAIGN to uri.getQueryParameter(CAMPAIGN)?.replace("-", "_")))
NavigateAction.OpenMySite
NavigateAction.OpenMySiteWithMessage(org.wordpress.android.R.string.qrcode_media_deeplink_error)
}
else -> {
NavigateAction.OpenMediaPickerForSite(siteModel)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.tasks.Task;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.play.core.review.ReviewInfo;
import com.google.android.play.core.review.ReviewManager;
import com.google.android.play.core.review.ReviewManagerFactory;
Expand Down Expand Up @@ -138,6 +139,7 @@
import org.wordpress.android.ui.uploads.UploadUtils;
import org.wordpress.android.ui.uploads.UploadUtilsWrapper;
import org.wordpress.android.ui.utils.JetpackAppMigrationFlowUtils;
import org.wordpress.android.ui.utils.UiString.UiStringRes;
import org.wordpress.android.ui.whatsnew.FeatureAnnouncementDialogFragment;
import org.wordpress.android.util.AniUtils;
import org.wordpress.android.util.AppLog;
Expand All @@ -152,6 +154,9 @@
import org.wordpress.android.util.QuickStartUtilsWrapper;
import org.wordpress.android.util.ShortcutUtils;
import org.wordpress.android.util.SiteUtils;
import org.wordpress.android.util.SnackbarItem;
import org.wordpress.android.util.SnackbarItem.Info;
import org.wordpress.android.util.SnackbarSequencer;
import org.wordpress.android.util.ToastUtils;
import org.wordpress.android.util.analytics.AnalyticsTrackerWrapper;
import org.wordpress.android.util.analytics.AnalyticsUtils;
Expand Down Expand Up @@ -233,6 +238,7 @@ public class WPMainActivity extends LocaleAwareActivity implements
public static final String ARG_IS_CHANGING_CONFIGURATION = "IS_CHANGING_CONFIGURATION";
public static final String ARG_BYPASS_MIGRATION = "bypass_migration";
public static final String ARG_MEDIA = "show_media";
public static final String ARG_OPEN_PAGE_MESSAGE = "open_page_message";
private boolean mIsChangingConfiguration = false;
private WPMainNavigationView mBottomNav;

Expand Down Expand Up @@ -287,6 +293,8 @@ public class WPMainActivity extends LocaleAwareActivity implements

@Inject ActivityNavigator mActivityNavigator;

@Inject SnackbarSequencer mSnackbarSequencer;

/*
* fragments implement this if their contents can be scrolled, called when user
* requests to scroll to the top
Expand Down Expand Up @@ -380,10 +388,10 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
}
} else if (openedFromShortcut) {
initSelectedSite();
mShortcutsNavigator.showTargetScreen(getIntent().getStringExtra(
ShortcutsNavigator.ACTION_OPEN_SHORTCUT), this, getSelectedSite());
showJetpackOverlayIfNeeded(getIntent().getStringExtra(
ShortcutsNavigator.ACTION_OPEN_SHORTCUT));
mShortcutsNavigator.showTargetScreen(getIntent().getStringExtra(
ShortcutsNavigator.ACTION_OPEN_SHORTCUT), this, getSelectedSite());
showJetpackOverlayIfNeeded(getIntent().getStringExtra(
ShortcutsNavigator.ACTION_OPEN_SHORTCUT));
} else if (openRequestedPage) {
handleOpenPageIntent(getIntent());
} else if (isQuickStartRequestedFromPush) {
Expand Down Expand Up @@ -880,6 +888,7 @@ protected void onNewIntent(@NonNull Intent intent) {
}

private void handleOpenPageIntent(@NonNull Intent intent) {
showOpenPageMessageIfNeeded();
String pagePosition = intent.getStringExtra(ARG_OPEN_PAGE);
if (!TextUtils.isEmpty(pagePosition)) {
switch (pagePosition) {
Expand Down Expand Up @@ -1920,4 +1929,24 @@ private void showPrivacySettingsScreen(@Nullable Boolean requestedAnalyticsValue
// startActivityForResult(intent, RequestCodes.SETTINGS); // TODO: do we need to handle the result?
startActivity(intent);
}

private void showOpenPageMessageIfNeeded() {
if (getIntent() != null) {
int messageResId = getIntent().getIntExtra(ARG_OPEN_PAGE_MESSAGE, -1);
if (messageResId > -1) {
mSnackbarSequencer.enqueue(
new SnackbarItem(
new Info(
findViewById(R.id.coordinator),
new UiStringRes(messageResId),
Snackbar.LENGTH_LONG
),
null,
null,
null
)
);
}
}
}
}
3 changes: 3 additions & 0 deletions WordPress/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4878,4 +4878,7 @@ translators: %s: Select control option value e.g: "Auto, 25%". -->
<string name="site_monitoring_tab_title_php_logs">PHP Logs</string>
<string name="site_monitoring_tab_title_web_server_logs">Web Server Logs</string>
<string name="site_monitoring_cannot_be_started">We cannot open site monitoring at the moment. Please try again later</string>

<!-- Super Fast Media Upload QRCodeMediaLink -->
<string name="qrcode_media_deeplink_error">Site not found. Check that you are logged into the correct account.</string>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import org.mockito.Mock
import org.mockito.junit.MockitoJUnitRunner
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
import org.wordpress.android.R
import org.wordpress.android.analytics.AnalyticsTracker
import org.wordpress.android.fluxc.model.SiteModel
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction
Expand Down Expand Up @@ -76,7 +77,7 @@ class QRCodeMediaLinkHandlerTest {
}

@Test
fun `given unrecognized siteId, when deep linked, then opens my site view`() {
fun `given unrecognized siteId, when deep linked, then opens my site view with message`() {
val mediaUri = buildUri(host = "apps.wordpress.com",
queryParams = mapOf("campaign" to "qr-code-media"),
path = arrayOf("get"), )
Expand All @@ -85,7 +86,7 @@ class QRCodeMediaLinkHandlerTest {

val navigateAction = qrCodeMediaLinkHandler.buildNavigateAction(mediaUri)

assertThat(navigateAction).isEqualTo(NavigateAction.OpenMySite)
assertThat(navigateAction).isEqualTo(NavigateAction.OpenMySiteWithMessage(R.string.qrcode_media_deeplink_error))
}

@Test
Expand Down

0 comments on commit eabd347

Please sign in to comment.