Dbrant has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/393609 )
Change subject: New: onboarding card for customizing the Feed.
......................................................................
New: onboarding card for customizing the Feed.
Bug: T181147
Change-Id: I2a72ae93c618452317250c91927313d7b8cf9a9b
---
M app/src/main/java/org/wikipedia/feed/FeedFragment.java
M app/src/main/java/org/wikipedia/feed/announcement/Announcement.java
M app/src/main/java/org/wikipedia/feed/announcement/AnnouncementCard.java
M app/src/main/java/org/wikipedia/feed/announcement/AnnouncementCardView.java
M app/src/main/java/org/wikipedia/feed/model/CardType.java
A app/src/main/java/org/wikipedia/feed/onboarding/CustomizeOnboardingCard.java
M app/src/main/java/org/wikipedia/feed/onboarding/OnboardingClient.java
M app/src/main/java/org/wikipedia/settings/Prefs.java
M app/src/main/java/org/wikipedia/util/UriUtil.java
M app/src/main/res/values-qq/strings.xml
M app/src/main/res/values/preference_keys.xml
M app/src/main/res/values/strings.xml
12 files changed, 81 insertions(+), 5 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/09/393609/1
diff --git a/app/src/main/java/org/wikipedia/feed/FeedFragment.java
b/app/src/main/java/org/wikipedia/feed/FeedFragment.java
index bcd8ea4..f1c939b 100644
--- a/app/src/main/java/org/wikipedia/feed/FeedFragment.java
+++ b/app/src/main/java/org/wikipedia/feed/FeedFragment.java
@@ -443,6 +443,8 @@
} else if (uri.toString().equals(UriUtil.LOCAL_URL_SETTINGS)) {
startActivityForResult(SettingsActivity.newIntent(getContext()),
SettingsActivity.ACTIVITY_REQUEST_SHOW_SETTINGS);
+ } else if
(uri.toString().equals(UriUtil.LOCAL_URL_CUSTOMIZE_FEED)) {
+ showConfigureActivity();
} else {
UriUtil.handleExternalLink(getContext(), uri);
}
@@ -526,6 +528,11 @@
snackbar.show();
}
+ private void showConfigureActivity() {
+ startActivityForResult(ConfigureActivity.newIntent(getActivity()),
+ Constants.ACTIVITY_REQUEST_FEED_CONFIGURE);
+ }
+
private void showOverflowMenu(@NonNull View anchor) {
ExploreOverflowView overflowView = new
ExploreOverflowView(getContext());
overflowView.show(anchor, overflowCallback);
@@ -555,8 +562,7 @@
@Override
public void configureCardsClick() {
- startActivityForResult(ConfigureActivity.newIntent(getActivity()),
- Constants.ACTIVITY_REQUEST_FEED_CONFIGURE);
+ showConfigureActivity();
}
@Override
diff --git
a/app/src/main/java/org/wikipedia/feed/announcement/Announcement.java
b/app/src/main/java/org/wikipedia/feed/announcement/Announcement.java
index 0f132de..5bd15fc 100644
--- a/app/src/main/java/org/wikipedia/feed/announcement/Announcement.java
+++ b/app/src/main/java/org/wikipedia/feed/announcement/Announcement.java
@@ -32,14 +32,17 @@
@SuppressWarnings("unused,NullableProblems") @Required @NonNull private
String text;
@SuppressWarnings("unused") @Nullable private Action action;
+ @SuppressWarnings("unused") @Nullable private String negativeText;
public Announcement() { }
- public Announcement(@NonNull String id, @NonNull String text, @NonNull
String imageUrl, @NonNull Action action) {
+ public Announcement(@NonNull String id, @NonNull String text, @NonNull
String imageUrl,
+ @NonNull Action action, @NonNull String negativeText) {
this.id = id;
this.text = text;
this.imageUrl = imageUrl;
this.action = action;
+ this.negativeText = negativeText;
}
@NonNull String id() {
@@ -106,6 +109,10 @@
return defaultString(imageUrl);
}
+ @Nullable String negativeText() {
+ return negativeText;
+ }
+
public static class Action {
@SuppressWarnings("unused,NullableProblems") @Required @NonNull
private String title;
@SuppressWarnings("unused,NullableProblems") @Required @NonNull
private String url;
diff --git
a/app/src/main/java/org/wikipedia/feed/announcement/AnnouncementCard.java
b/app/src/main/java/org/wikipedia/feed/announcement/AnnouncementCard.java
index 4c22a43..2b7d2d3 100644
--- a/app/src/main/java/org/wikipedia/feed/announcement/AnnouncementCard.java
+++ b/app/src/main/java/org/wikipedia/feed/announcement/AnnouncementCard.java
@@ -34,6 +34,10 @@
return Uri.parse(announcement.actionUrl());
}
+ @Nullable public String negativeText() {
+ return announcement.negativeText();
+ }
+
public boolean hasFooterCaption() {
return announcement.hasFooterCaption();
}
diff --git
a/app/src/main/java/org/wikipedia/feed/announcement/AnnouncementCardView.java
b/app/src/main/java/org/wikipedia/feed/announcement/AnnouncementCardView.java
index 51c8058..dede3cc 100644
---
a/app/src/main/java/org/wikipedia/feed/announcement/AnnouncementCardView.java
+++
b/app/src/main/java/org/wikipedia/feed/announcement/AnnouncementCardView.java
@@ -57,6 +57,9 @@
actionViewNegative.setVisibility(VISIBLE);
actionViewPositive.setText(card.actionTitle());
}
+ if (!TextUtils.isEmpty(card.negativeText())) {
+ actionViewNegative.setText(card.negativeText());
+ }
if (card.hasImage()) {
headerImageView.setVisibility(VISIBLE);
diff --git a/app/src/main/java/org/wikipedia/feed/model/CardType.java
b/app/src/main/java/org/wikipedia/feed/model/CardType.java
index 37672ac..c9d265a 100644
--- a/app/src/main/java/org/wikipedia/feed/model/CardType.java
+++ b/app/src/main/java/org/wikipedia/feed/model/CardType.java
@@ -101,6 +101,11 @@
return new OnThisDayCardView(ctx);
}
},
+ ONBOARDING_CUSTOMIZE_FEED(19) {
+ @NonNull @Override public FeedCardView<?> newView(@NonNull Context
ctx) {
+ return new AnnouncementCardView(ctx);
+ }
+ },
OFFLINE(98) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context
ctx) {
return new OfflineCardView(ctx);
diff --git
a/app/src/main/java/org/wikipedia/feed/onboarding/CustomizeOnboardingCard.java
b/app/src/main/java/org/wikipedia/feed/onboarding/CustomizeOnboardingCard.java
new file mode 100644
index 0000000..343c2c5
--- /dev/null
+++
b/app/src/main/java/org/wikipedia/feed/onboarding/CustomizeOnboardingCard.java
@@ -0,0 +1,26 @@
+package org.wikipedia.feed.onboarding;
+
+import android.support.annotation.NonNull;
+
+import org.wikipedia.R;
+import org.wikipedia.feed.announcement.Announcement;
+import org.wikipedia.feed.model.CardType;
+import org.wikipedia.util.DeviceUtil;
+
+public class CustomizeOnboardingCard extends OnboardingCard {
+ public CustomizeOnboardingCard(@NonNull Announcement announcement) {
+ super(announcement);
+ }
+
+ @NonNull @Override public CardType type() {
+ return CardType.ONBOARDING_CUSTOMIZE_FEED;
+ }
+
+ public boolean shouldShow() {
+ return super.shouldShow() && DeviceUtil.isOnline();
+ }
+
+ @Override public int prefKey() {
+ return R.string.preference_key_feed_customize_onboarding_card_enabled;
+ }
+}
diff --git
a/app/src/main/java/org/wikipedia/feed/onboarding/OnboardingClient.java
b/app/src/main/java/org/wikipedia/feed/onboarding/OnboardingClient.java
index a37bf5c..344e331 100644
--- a/app/src/main/java/org/wikipedia/feed/onboarding/OnboardingClient.java
+++ b/app/src/main/java/org/wikipedia/feed/onboarding/OnboardingClient.java
@@ -3,9 +3,12 @@
import android.content.Context;
import android.support.annotation.NonNull;
+import org.wikipedia.R;
import org.wikipedia.dataclient.WikiSite;
+import org.wikipedia.feed.announcement.Announcement;
import org.wikipedia.feed.dataclient.FeedClient;
import org.wikipedia.feed.model.Card;
+import org.wikipedia.util.UriUtil;
import java.util.ArrayList;
import java.util.List;
@@ -19,12 +22,22 @@
// "offlineOnboardingCard1",
// context.getString(R.string.offline_library_onboarding_text),
//
"https://upload.wikimedia.org/wikipedia/commons/5/5b/Illustration-OfflineLibraryPromo2_3x.png",
-// new
Announcement.Action(context.getString(R.string.offline_library_onboarding_action),
-// UriUtil.LOCAL_URL_OFFLINE_LIBRARY)));
+// new
Announcement.Action(context.getString(R.string.offline_library_onboarding_action),
UriUtil.LOCAL_URL_OFFLINE_LIBRARY),
+// context.getString(R.string.onboarding_got_it)));
// if (card.shouldShow()) {
// cards.add(card);
// }
+ OnboardingCard card = new CustomizeOnboardingCard(new Announcement(
+ "customizeOnboardingCard1",
+ context.getString(R.string.feed_configure_onboarding_text),
+
"https://upload.wikimedia.org/wikipedia/commons/3/3b/Announcement_header_for_Explore_Feed_customization.png",
+ new
Announcement.Action(context.getString(R.string.feed_configure_onboarding_action),
UriUtil.LOCAL_URL_CUSTOMIZE_FEED),
+ context.getString(R.string.onboarding_got_it)));
+ if (card.shouldShow()) {
+ cards.add(card);
+ }
+
cb.success(cards);
}
diff --git a/app/src/main/java/org/wikipedia/settings/Prefs.java
b/app/src/main/java/org/wikipedia/settings/Prefs.java
index 786df10..9fc5396 100644
--- a/app/src/main/java/org/wikipedia/settings/Prefs.java
+++ b/app/src/main/java/org/wikipedia/settings/Prefs.java
@@ -619,5 +619,9 @@
remove(R.string.preference_key_feed_cards_order);
}
+ public static void setFeedCustomizeTutorialCardEnabled(boolean enabled) {
+
setBoolean(R.string.preference_key_feed_customize_onboarding_card_enabled,
enabled);
+ }
+
private Prefs() { }
}
diff --git a/app/src/main/java/org/wikipedia/util/UriUtil.java
b/app/src/main/java/org/wikipedia/util/UriUtil.java
index ef6a220..f196172 100644
--- a/app/src/main/java/org/wikipedia/util/UriUtil.java
+++ b/app/src/main/java/org/wikipedia/util/UriUtil.java
@@ -26,6 +26,7 @@
public static final String LOCAL_URL_OFFLINE_LIBRARY = "#offlinelibrary";
public static final String LOCAL_URL_SETTINGS = "#settings";
public static final String LOCAL_URL_LOGIN = "#login";
+ public static final String LOCAL_URL_CUSTOMIZE_FEED = "#customizefeed";
/**
* Decodes a URL-encoded string into its UTF-8 equivalent. If the string
cannot be decoded, the
diff --git a/app/src/main/res/values-qq/strings.xml
b/app/src/main/res/values-qq/strings.xml
index 9d911df..bb4f62f 100644
--- a/app/src/main/res/values-qq/strings.xml
+++ b/app/src/main/res/values-qq/strings.xml
@@ -423,6 +423,8 @@
<string name="feed_item_type_featured_image">Short description for Explore
feed card that contains the daily featured image from Commons</string>
<string name="feed_item_type_main_page">Short description for Explore feed
card that contains a link to the Main Page</string>
<string name="feed_item_type_randomizer">Short description for Explore feed
card that generates random articles</string>
+ <string name="feed_configure_onboarding_action">Button label for onboarding
card that introduces the customization of the Explore feed.</string>
+ <string name="feed_configure_onboarding_text">Onboarding text that describes
the new functionality of customizing the Explore feed.</string>
<string name="description_edit_text_hint">Hint text that is shown when the
description field is empty.</string>
<string name="description_edit_save">Hint for the button that is pressed for
saving the new description.\n{{Identical|Publish}}</string>
<string name="description_edit_add_description">Label that prompts the user
to add a description to an article that does not yet have one.</string>
@@ -525,6 +527,7 @@
<string name="onboarding_create_account_sync">Short explanation of the
benefits of creating an account, which is the ability to synchronize your
reading lists.</string>
<string name="onboarding_create_account_contributions">Short explanation of
the benefits of creating an account, which is the ability to keep a record of
your edits.</string>
<string name="onboarding_create_account_preferences">Short explanation of
the benefits of creating an account, which is the ability to save your
preferences.</string>
+ <string name="onboarding_got_it">Button label for dismissing the current
onboarding card.</string>
<string name="app_shortcuts_random">A shortcut icon on the home screen for
getting a random article.\n{{Identical|Random}}</string>
<string name="app_shortcuts_continue_reading">A shortcut icon on the home
screen for continuing reading an article.</string>
<string name="app_shortcuts_search">A shortcut icon on the home screen for
opening the search page.\n{{Identical|Search}}</string>
diff --git a/app/src/main/res/values/preference_keys.xml
b/app/src/main/res/values/preference_keys.xml
index 9721fc0..4c21551 100644
--- a/app/src/main/res/values/preference_keys.xml
+++ b/app/src/main/res/values/preference_keys.xml
@@ -67,4 +67,5 @@
<string
name="preference_key_enable_offline_library">enableOfflineLibrary</string>
<string name="preference_key_feed_cards_order">feedCardsOrder</string>
<string name="preference_key_feed_cards_enabled">feedCardsEnabled</string>
+ <string
name="preference_key_feed_customize_onboarding_card_enabled">feedCustomizeOnboardingCardEnabled</string>
</resources>
diff --git a/app/src/main/res/values/strings.xml
b/app/src/main/res/values/strings.xml
index a7cc590..477dd92 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -457,6 +457,8 @@
<string name="feed_item_type_featured_image">Daily featured image from
Wikimedia Commons</string>
<string name="feed_item_type_main_page">Main page of Wikipedia with daily
featured content</string>
<string name="feed_item_type_randomizer">Generate random articles to
read</string>
+ <string name="feed_configure_onboarding_action">Customize</string>
+ <string name="feed_configure_onboarding_text"><![CDATA[<strong>Customize
your Explore feed</strong><br /><br />You can now choose what to show on your
feed, and also prioritize your favorite types of content.]]></string>
<!-- /The Feed -->
<!-- Description editing -->
@@ -580,6 +582,7 @@
<string name="onboarding_create_account_sync">Sync your reading
lists</string>
<string name="onboarding_create_account_contributions">Keep track of your
contributions</string>
<string name="onboarding_create_account_preferences">Save your
preferences</string>
+ <string name="onboarding_got_it">Got it</string>
<!-- /Onboarding -->
<!-- App Shortcuts -->
--
To view, visit https://gerrit.wikimedia.org/r/393609
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2a72ae93c618452317250c91927313d7b8cf9a9b
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dbrant <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits