From 796529fc5277f627a64536eedf4a60ca76985ee1 Mon Sep 17 00:00:00 2001 From: Michael Boisvert Date: Sun, 24 Nov 2024 21:32:42 -0700 Subject: [PATCH 1/6] Handle 404, 403, 401, and 400 errors separately --- .../java/org/quantumbadger/redreader/common/General.kt | 8 +++++++- src/main/res/values/strings.xml | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/quantumbadger/redreader/common/General.kt b/src/main/java/org/quantumbadger/redreader/common/General.kt index 7aef2d017..c5942c827 100644 --- a/src/main/java/org/quantumbadger/redreader/common/General.kt +++ b/src/main/java/org/quantumbadger/redreader/common/General.kt @@ -308,9 +308,15 @@ object General { if(status == 404) { title = R.string.error_404_title message = R.string.error_404_message - } else { + } else if (status == 403) { title = R.string.error_403_title message = R.string.error_403_message + } else if (status == 401) { + title = R.string.error_401_title + message = R.string.error_401_message + } else { + title = R.string.error_400_title + message = R.string.error_400_message } } } diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 4d1f752c7..fce1e1d34 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1902,4 +1902,10 @@ Horizontal padding Compact title + + + Unauthorized + Reddit says that you are not logged in or have provided invalid credentials. + Bad Request + Reddit says that you have submitted something invalid. From cfabdb5339c14474a34229858f957c704aec21e9 Mon Sep 17 00:00:00 2001 From: Michael Boisvert Date: Sun, 24 Nov 2024 21:34:51 -0700 Subject: [PATCH 2/6] Handle any 2xx response as a success --- .../org/quantumbadger/redreader/http/okhttp/OKHTTPBackend.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/quantumbadger/redreader/http/okhttp/OKHTTPBackend.kt b/src/main/java/org/quantumbadger/redreader/http/okhttp/OKHTTPBackend.kt index cd05b5d4c..768b5e001 100644 --- a/src/main/java/org/quantumbadger/redreader/http/okhttp/OKHTTPBackend.kt +++ b/src/main/java/org/quantumbadger/redreader/http/okhttp/OKHTTPBackend.kt @@ -242,7 +242,7 @@ class OKHTTPBackend private constructor() : HTTPBackend() { val status = response.code val body = response.body - if (status == 200 || status == 202) { + if (status in 200..299) { val bodyStream: InputStream? val bodyLength: Long? From 9df4deab0e1fbb226318d33166aa20286b7aa71a Mon Sep 17 00:00:00 2001 From: Michael Boisvert Date: Wed, 27 Nov 2024 23:47:47 -0700 Subject: [PATCH 3/6] Support Create Multireddit api method --- .../redreader/common/Constants.java | 2 + .../redreader/reddit/RedditAPI.java | 42 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/main/java/org/quantumbadger/redreader/common/Constants.java b/src/main/java/org/quantumbadger/redreader/common/Constants.java index 8b5d1d629..b91499808 100644 --- a/src/main/java/org/quantumbadger/redreader/common/Constants.java +++ b/src/main/java/org/quantumbadger/redreader/common/Constants.java @@ -149,6 +149,8 @@ public static final class Reddit { public static final String PATH_MULTIREDDITS_MINE = "/api/multi/mine.json"; public static final String PATH_COMMENTS = "/comments/"; public static final String PATH_ME = "/api/v1/me"; + public static final String PATH_MULTIREDDIT = "/api/multi"; + public static String getScheme() { return SCHEME_HTTPS; diff --git a/src/main/java/org/quantumbadger/redreader/reddit/RedditAPI.java b/src/main/java/org/quantumbadger/redreader/reddit/RedditAPI.java index 0fdbd5e96..be3c0145a 100644 --- a/src/main/java/org/quantumbadger/redreader/reddit/RedditAPI.java +++ b/src/main/java/org/quantumbadger/redreader/reddit/RedditAPI.java @@ -25,6 +25,9 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; import org.quantumbadger.redreader.account.RedditAccount; import org.quantumbadger.redreader.activities.BugReportActivity; import org.quantumbadger.redreader.cache.CacheManager; @@ -959,6 +962,45 @@ public void onFailure(@NonNull final RRError error) { )); } + public static void createMultireddit( + final CacheManager cm, + final APIResponseHandler.ActionResponseHandler handler, + final RedditAccount user, + final String multiredditName, + final List subredditNames, + final Context context) { + + final Uri.Builder builder = Constants.Reddit.getUriBuilder( + Constants.Reddit.PATH_MULTIREDDIT) + .appendPath("user") + .appendPath(user.username) + .appendPath("m") + .appendPath(multiredditName); + + final JSONObject jsonObject = new JSONObject(); + try { + jsonObject.put("display_name", multiredditName); + jsonObject.put("subreddits", subredditNamesJson(subredditNames)); + } catch (final JSONException e) { + throw new RuntimeException(e); + } + + cm.makeRequest(createPostRequest( + UriString.from(builder.build()), + user, + new ArrayList<>(Collections.singleton( + new PostField("model", jsonObject.toString()))), + context, + new GenericResponseHandler(handler))); + } + + private static JSONArray subredditNamesJson(final List subredditNames) { + final JSONArray jsonArray = new JSONArray(); + subredditNames.stream().forEach( + sn -> jsonArray.put(new JSONObject(Collections.singletonMap("name", sn)))); + return jsonArray; + } + @Nullable private static APIResponseHandler.APIFailureType findFailureType(final JsonValue response) { From b190fb4c935830886fa58813d138377ac20c5f91 Mon Sep 17 00:00:00 2001 From: Michael Boisvert Date: Thu, 28 Nov 2024 18:41:26 -0700 Subject: [PATCH 4/6] Action menu for subreddit combinations --- .../fragments/PostListingFragment.java | 31 ++++++- .../RedditAPISubredditCombinationAction.java | 89 +++++++++++++++++++ .../reddit/url/SubredditPostListURL.java | 17 ++++ 3 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPISubredditCombinationAction.java diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index 573aebabd..962fff98d 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -74,6 +74,7 @@ import org.quantumbadger.redreader.reddit.PostSort; import org.quantumbadger.redreader.reddit.RedditPostListItem; import org.quantumbadger.redreader.reddit.RedditSubredditManager; +import org.quantumbadger.redreader.reddit.api.RedditAPISubredditCombinationAction; import org.quantumbadger.redreader.reddit.api.RedditSubredditSubscriptionManager; import org.quantumbadger.redreader.reddit.kthings.JsonUtils; import org.quantumbadger.redreader.reddit.kthings.MaybeParseError; @@ -101,6 +102,7 @@ import java.text.NumberFormat; import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Locale; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; @@ -292,7 +294,6 @@ public void onScrolled( case FRONTPAGE: case ALL: - case SUBREDDIT_COMBINATION: case ALL_SUBTRACTION: case POPULAR: setHeader( @@ -302,6 +303,12 @@ public void onScrolled( CacheManager.getInstance(context).makeRequest(mRequest); break; + case SUBREDDIT_COMBINATION: + setSubredditCombinationHeader( + mPostListingURL.humanReadableName(getActivity(), true), + mPostListingURL.humanReadableUrl(), + subredditPostListURL.subredditNames()); + case RANDOM: case SUBREDDIT: { @@ -492,6 +499,28 @@ private void setHeader( } } + private void setSubredditCombinationHeader( + @NonNull final String title, + @NonNull final String subtitle, + @NonNull final List subredditNames) { + + final PostListingHeader postListingHeader = new PostListingHeader( + getActivity(), + title, + subtitle, + mPostListingURL, + null); + + setHeader(postListingHeader); + + postListingHeader.setOnLongClickListener(view -> { + RedditAPISubredditCombinationAction.showActionMenu( + getActivity(), + subredditNames); + return true; + }); + } + private void setHeader(final View view) { getActivity().runOnUiThread(() -> mPostListingManager.addPostListingHeader(view)); } diff --git a/src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPISubredditCombinationAction.java b/src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPISubredditCombinationAction.java new file mode 100644 index 000000000..617524dcb --- /dev/null +++ b/src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPISubredditCombinationAction.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * This file is part of RedReader. + * + * RedReader is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RedReader is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RedReader. If not, see . + ******************************************************************************/ + +package org.quantumbadger.redreader.reddit.api; + +import android.content.Context; + +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; + +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import org.quantumbadger.redreader.account.RedditAccount; +import org.quantumbadger.redreader.account.RedditAccountManager; +import java.util.ArrayList; +import java.util.List; + +public class RedditAPISubredditCombinationAction { + + public enum SubredditCombinationAction { + } + + private static class RCVMenuItem { + public final String title; + public final SubredditCombinationAction action; + + private RCVMenuItem( + final Context context, + final int titleRes, + final SubredditCombinationAction action) { + + this.title = context.getString(titleRes); + this.action = action; + } + } + + public static void showActionMenu( + final AppCompatActivity activity, + List subredditNames) { + + final RedditAccount user = + RedditAccountManager.getInstance(activity).getDefaultAccount(); + + if (user.isAnonymous()) { + return; + } + + final ArrayList menu = new ArrayList<>(); + + final String[] menuText = new String[menu.size()]; + + for(int i = 0; i < menuText.length; i++) { + menuText[i] = menu.get(i).title; + } + + final MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(activity); + + builder.setItems(menuText, (dialog, which) -> onActionMenuItemSelected( + activity, + subredditNames, + user, + menu.get(which).action)); + + final AlertDialog alert = builder.create(); + alert.setCanceledOnTouchOutside(true); + alert.show(); + } + + private static void onActionMenuItemSelected( + final AppCompatActivity activity, + final List subredditNames, + final RedditAccount user, + final SubredditCombinationAction action) { + } +} diff --git a/src/main/java/org/quantumbadger/redreader/reddit/url/SubredditPostListURL.java b/src/main/java/org/quantumbadger/redreader/reddit/url/SubredditPostListURL.java index d6f23a80f..ac00fe05d 100644 --- a/src/main/java/org/quantumbadger/redreader/reddit/url/SubredditPostListURL.java +++ b/src/main/java/org/quantumbadger/redreader/reddit/url/SubredditPostListURL.java @@ -31,6 +31,8 @@ import org.quantumbadger.redreader.reddit.things.SubredditCanonicalId; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; public class SubredditPostListURL extends PostListingURL { @@ -452,4 +454,19 @@ public String humanReadableName(final Context context, final boolean shorter) { public SubredditPostListURL changeSubreddit(final String newSubreddit) { return new SubredditPostListURL(type, newSubreddit, order, limit, before, after); } + + public List subredditNames() { + if (subreddit == null) { + return new ArrayList<>(); + } + + switch (type) { + case SUBREDDIT: + return Collections.singletonList(subreddit); + case SUBREDDIT_COMBINATION: + return Arrays.asList(subreddit.split("\\+")); + default: + return Collections.emptyList(); + } + } } From 7405e57c68ead709d58f3cadf7ad4b196eaf824c Mon Sep 17 00:00:00 2001 From: Michael Boisvert Date: Thu, 28 Nov 2024 18:48:26 -0700 Subject: [PATCH 5/6] Editable preferences for subreddit combination actions --- .../redreader/common/PrefsUtility.java | 19 +++++++++++++++++++ .../RedditAPISubredditCombinationAction.java | 7 +++++++ src/main/res/values/arrays.xml | 7 +++++++ src/main/res/values/strings.xml | 4 ++++ src/main/res/xml/prefs_menus.xml | 12 ++++++++++++ 5 files changed, 49 insertions(+) diff --git a/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java b/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java index 1262439fb..1508dfcc7 100644 --- a/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java +++ b/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java @@ -37,6 +37,7 @@ import org.quantumbadger.redreader.reddit.PostSort; import org.quantumbadger.redreader.reddit.UserCommentSort; import org.quantumbadger.redreader.reddit.api.RedditAPICommentAction; +import org.quantumbadger.redreader.reddit.api.RedditAPISubredditCombinationAction; import org.quantumbadger.redreader.reddit.api.RedditPostActions; import org.quantumbadger.redreader.reddit.things.InvalidSubredditNameException; import org.quantumbadger.redreader.reddit.things.SubredditCanonicalId; @@ -1789,6 +1790,24 @@ public static String pref_reddit_client_id_override() { return valueTrimmed; } + public static EnumSet + pref_menus_subreddit_combination_context_items() { + final Set strings = getStringSet( + R.string.pref_menus_subreddit_combinations_context_items_key, + R.array.pref_menus_subreddit_combinations_context_items_return); + + final EnumSet result + = EnumSet.noneOf( + RedditAPISubredditCombinationAction.SubredditCombinationAction.class); + + for(final String s : strings) { + result.add(RedditAPISubredditCombinationAction.SubredditCombinationAction.valueOf( + StringUtils.asciiUppercase(s))); + } + + return result; + } + private static final String REDDIT_USER_AGREEMENT_PREF = "accepted_reddit_user_agreement"; private static final int REDDIT_USER_AGREEMENT_DECLINED = -1; private static final int REDDIT_USER_AGREEMENT_APRIL_2023 = 1; diff --git a/src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPISubredditCombinationAction.java b/src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPISubredditCombinationAction.java index 617524dcb..4ab418d5a 100644 --- a/src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPISubredditCombinationAction.java +++ b/src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPISubredditCombinationAction.java @@ -52,6 +52,13 @@ public static void showActionMenu( final AppCompatActivity activity, List subredditNames) { + final EnumSet itemPref + = PrefsUtility.pref_menus_subreddit_combination_context_items(); + + if(itemPref.isEmpty()) { + return; + } + final RedditAccount user = RedditAccountManager.getInstance(activity).getDefaultAccount(); diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml index 9d3502316..8edac627a 100644 --- a/src/main/res/values/arrays.xml +++ b/src/main/res/values/arrays.xml @@ -1328,4 +1328,11 @@ @string/pref_behaviour_post_tap_action_title_comments + + + + + + + diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index fce1e1d34..ba7b5569a 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1908,4 +1908,8 @@ Reddit says that you are not logged in or have provided invalid credentials. Bad Request Reddit says that you have submitted something invalid. + + Subreddit Combinations + pref_menus_subreddit_combination_context_items + Action menu items diff --git a/src/main/res/xml/prefs_menus.xml b/src/main/res/xml/prefs_menus.xml index c26752965..d67cc0613 100644 --- a/src/main/res/xml/prefs_menus.xml +++ b/src/main/res/xml/prefs_menus.xml @@ -132,4 +132,16 @@ + + + + + + From b239271e2e27b7e504f6701933a010fd263d1ab2 Mon Sep 17 00:00:00 2001 From: Michael Boisvert Date: Thu, 28 Nov 2024 18:48:59 -0700 Subject: [PATCH 6/6] 'Create Multireddit' action for subreddit combinations --- .../fragments/CreateMultiredditDialog.java | 147 ++++++++++++++++++ .../RedditAPISubredditCombinationAction.java | 24 ++- src/main/res/layout/create_multireddit.xml | 54 +++++++ src/main/res/values/arrays.xml | 2 + src/main/res/values/strings.xml | 2 + 5 files changed, 228 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/quantumbadger/redreader/fragments/CreateMultiredditDialog.java create mode 100644 src/main/res/layout/create_multireddit.xml diff --git a/src/main/java/org/quantumbadger/redreader/fragments/CreateMultiredditDialog.java b/src/main/java/org/quantumbadger/redreader/fragments/CreateMultiredditDialog.java new file mode 100644 index 000000000..50a3f9596 --- /dev/null +++ b/src/main/java/org/quantumbadger/redreader/fragments/CreateMultiredditDialog.java @@ -0,0 +1,147 @@ +/******************************************************************************* + * This file is part of RedReader. + * + * RedReader is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RedReader is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RedReader. If not, see . + ******************************************************************************/ + +package org.quantumbadger.redreader.fragments; + +import android.util.Log; +import android.view.KeyEvent; +import android.view.View; +import android.view.WindowManager; +import android.view.inputmethod.EditorInfo; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; + +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import org.quantumbadger.redreader.R; +import org.quantumbadger.redreader.account.RedditAccount; +import org.quantumbadger.redreader.account.RedditAccountManager; +import org.quantumbadger.redreader.cache.CacheManager; +import org.quantumbadger.redreader.common.RRError; +import org.quantumbadger.redreader.common.TimestampBound; +import org.quantumbadger.redreader.reddit.APIResponseHandler; +import org.quantumbadger.redreader.reddit.RedditAPI; +import org.quantumbadger.redreader.reddit.api.RedditMultiredditSubscriptionManager; +import org.quantumbadger.redreader.views.liststatus.ErrorView; + +import java.util.List; + +public class CreateMultiredditDialog { + + private final static String TAG = "CreateMultiredditDialog"; + + public static void show( + final AppCompatActivity activity, + final List subredditNames, + final RedditAccount user) { + + final MaterialAlertDialogBuilder alertBuilder + = new MaterialAlertDialogBuilder(activity); + + final View root = activity.getLayoutInflater().inflate( + R.layout.create_multireddit, + null); + + final EditText editText + = root.findViewById(R.id.selected_multireddit); + + alertBuilder.setView(root); + + alertBuilder.setNegativeButton(R.string.dialog_cancel, null); + + alertBuilder.setPositiveButton( + R.string.dialog_go, + (dialog, which) -> createMultireddit(activity, subredditNames, user, editText)); + + final AlertDialog alertDialog = alertBuilder.create(); + + editText.setOnEditorActionListener((v, actionId, event) -> { + if(actionId == EditorInfo.IME_ACTION_GO + || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) { + createMultireddit(activity, subredditNames, user, editText); + alertDialog.dismiss(); + } + return false; + }); + + alertDialog.getWindow() + .setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE + | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + alertDialog.show(); + } + + private static void createMultireddit( + final AppCompatActivity activity, + final List subredditNames, + final RedditAccount user, + final EditText editText) { + + final String multiredditName = editText.getText() + .toString() + .trim() + .replace(" ", ""); + + RedditAPI.createMultireddit( + CacheManager.getInstance(activity), + new APIResponseHandler.ActionResponseHandler(activity) { + + @Override + protected void onCallbackException(final Throwable t) { + Log.e( + TAG, "Error while creating multireddit", t); + throw new RuntimeException(t); + } + + @Override + protected void onFailure(@NonNull final RRError error) { + activity.runOnUiThread(() -> { + final MaterialAlertDialogBuilder builder + = new MaterialAlertDialogBuilder(activity); + builder.setView(new ErrorView(activity, error)); + builder.create().show(); + }); + } + + @Override + protected void onSuccess() { + activity.runOnUiThread(() -> Toast.makeText( + activity, + String.format("Created %s", multiredditName), + Toast.LENGTH_SHORT).show()); + + RedditMultiredditSubscriptionManager.getSingleton( + activity, + RedditAccountManager.getInstance(activity).getDefaultAccount()) + .triggerUpdate(null, TimestampBound.NONE); + } + }, + user, + multiredditName, + subredditNames, + activity + ); + + Toast.makeText( + activity, + String.format("Creating %s", multiredditName), + Toast.LENGTH_SHORT).show(); + } +} diff --git a/src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPISubredditCombinationAction.java b/src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPISubredditCombinationAction.java index 4ab418d5a..c71e3e19f 100644 --- a/src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPISubredditCombinationAction.java +++ b/src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPISubredditCombinationAction.java @@ -24,14 +24,20 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import org.quantumbadger.redreader.R; import org.quantumbadger.redreader.account.RedditAccount; import org.quantumbadger.redreader.account.RedditAccountManager; +import org.quantumbadger.redreader.common.PrefsUtility; +import org.quantumbadger.redreader.fragments.CreateMultiredditDialog; + import java.util.ArrayList; +import java.util.EnumSet; import java.util.List; public class RedditAPISubredditCombinationAction { public enum SubredditCombinationAction { + CREATE_MULTIREDDIT; } private static class RCVMenuItem { @@ -50,7 +56,7 @@ private RCVMenuItem( public static void showActionMenu( final AppCompatActivity activity, - List subredditNames) { + final List subredditNames) { final EnumSet itemPref = PrefsUtility.pref_menus_subreddit_combination_context_items(); @@ -68,6 +74,13 @@ public static void showActionMenu( final ArrayList menu = new ArrayList<>(); + if(itemPref.contains(SubredditCombinationAction.CREATE_MULTIREDDIT)) { + menu.add(new RCVMenuItem( + activity, + R.string.create_multireddit, + SubredditCombinationAction.CREATE_MULTIREDDIT)); + } + final String[] menuText = new String[menu.size()]; for(int i = 0; i < menuText.length; i++) { @@ -92,5 +105,14 @@ private static void onActionMenuItemSelected( final List subredditNames, final RedditAccount user, final SubredditCombinationAction action) { + + switch(action) { + case CREATE_MULTIREDDIT: + CreateMultiredditDialog.show( + activity, + subredditNames, + user + ); + } } } diff --git a/src/main/res/layout/create_multireddit.xml b/src/main/res/layout/create_multireddit.xml new file mode 100644 index 000000000..44fca6126 --- /dev/null +++ b/src/main/res/layout/create_multireddit.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml index 8edac627a..6d8f7d366 100644 --- a/src/main/res/values/arrays.xml +++ b/src/main/res/values/arrays.xml @@ -1330,9 +1330,11 @@ + @string/create_multireddit + create_multireddit diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index ba7b5569a..418d4ba40 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1912,4 +1912,6 @@ Subreddit Combinations pref_menus_subreddit_combination_context_items Action menu items + + Create Multireddit