Skip to content

Commit 6aba0ba

Browse files
committed
Delete Multireddit action for multireddits
1 parent 6bff4f8 commit 6aba0ba

File tree

3 files changed

+95
-2
lines changed

3 files changed

+95
-2
lines changed

src/main/java/org/quantumbadger/redreader/reddit/api/RedditAPIMultiredditAction.java

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,35 @@
1818
package org.quantumbadger.redreader.reddit.api;
1919

2020
import android.content.Context;
21+
import android.util.Log;
22+
import android.widget.Toast;
2123

24+
import androidx.annotation.NonNull;
2225
import androidx.appcompat.app.AlertDialog;
2326
import androidx.appcompat.app.AppCompatActivity;
2427

2528
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
2629

30+
import org.quantumbadger.redreader.R;
2731
import org.quantumbadger.redreader.account.RedditAccount;
2832
import org.quantumbadger.redreader.account.RedditAccountManager;
33+
import org.quantumbadger.redreader.cache.CacheManager;
2934
import org.quantumbadger.redreader.common.PrefsUtility;
35+
import org.quantumbadger.redreader.common.RRError;
36+
import org.quantumbadger.redreader.common.TimestampBound;
37+
import org.quantumbadger.redreader.reddit.APIResponseHandler;
38+
import org.quantumbadger.redreader.reddit.RedditAPI;
39+
import org.quantumbadger.redreader.views.liststatus.ErrorView;
3040

3141
import java.util.ArrayList;
3242
import java.util.EnumSet;
3343

3444
public class RedditAPIMultiredditAction {
3545

46+
private static final String TAG = "MultiredditAction";
47+
3648
public enum MultiredditAction {
49+
DELETE_MULTIREDDIT;
3750
}
3851

3952
private static class RCVMenuItem {
@@ -70,6 +83,13 @@ public static void showActionMenu(
7083

7184
final ArrayList<RCVMenuItem> menu = new ArrayList<>();
7285

86+
if(itemPref.contains(MultiredditAction.DELETE_MULTIREDDIT)) {
87+
menu.add(new RCVMenuItem(
88+
activity,
89+
R.string.delete_multireddit,
90+
MultiredditAction.DELETE_MULTIREDDIT));
91+
}
92+
7393
final String[] menuText = new String[menu.size()];
7494

7595
for(int i = 0; i < menuText.length; i++) {
@@ -91,11 +111,76 @@ public static void showActionMenu(
91111

92112
private static void onActionMenuItemSelected(
93113
final AppCompatActivity activity,
94-
final String subredditNames,
114+
final String multiredditName,
95115
final RedditAccount user,
96116
final MultiredditAction action) {
97117

98118
switch(action) {
119+
case DELETE_MULTIREDDIT:
120+
new MaterialAlertDialogBuilder(activity)
121+
.setTitle(activity.getString(R.string.delete_multireddit_confirmation))
122+
.setMessage(activity.getString(R.string.are_you_sure_delete_multireddit))
123+
.setPositiveButton(
124+
activity.getString(R.string.dialog_yes),
125+
((dialog, which) -> {
126+
Toast.makeText(
127+
activity,
128+
String.format("Deleting %s", multiredditName),
129+
Toast.LENGTH_SHORT).show();
130+
RedditAPI.deleteMultireddit(
131+
CacheManager.getInstance(activity),
132+
new APIResponseHandler.ActionResponseHandler(
133+
activity) {
134+
135+
@Override
136+
protected void onCallbackException(
137+
final Throwable t) {
138+
Log.e(
139+
TAG,
140+
"Error while deleting multireddit",
141+
t);
142+
throw new RuntimeException(t);
143+
}
144+
145+
@Override
146+
protected void onFailure(
147+
@NonNull final RRError error) {
148+
activity.runOnUiThread(() -> {
149+
final MaterialAlertDialogBuilder builder
150+
= new MaterialAlertDialogBuilder(
151+
activity);
152+
builder.setView(
153+
new ErrorView(activity, error));
154+
builder.create().show();
155+
});
156+
}
157+
158+
@Override
159+
protected void onSuccess() {
160+
activity.runOnUiThread(() -> Toast.makeText(
161+
activity,
162+
String.format(
163+
"Deleted %s", multiredditName),
164+
Toast.LENGTH_SHORT).show());
165+
166+
RedditMultiredditSubscriptionManager
167+
.getSingleton(activity,
168+
RedditAccountManager
169+
.getInstance(activity)
170+
.getDefaultAccount())
171+
.triggerUpdate(
172+
null,
173+
TimestampBound.NONE);
174+
}
175+
},
176+
user,
177+
multiredditName,
178+
activity
179+
);
180+
dialog.dismiss();
181+
}))
182+
.setNegativeButton(activity.getString(R.string.dialog_cancel), null)
183+
.show();
99184
}
100185
}
101186
}

src/main/res/values/arrays.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1330,7 +1330,10 @@
13301330

13311331
<!-- 2024-11-28 -->
13321332
<string-array name="pref_menus_multireddits_context_items">
1333+
<item>@string/delete_multireddit</item>
13331334
</string-array>
13341335

1335-
<string-array name="pref_menus_multireddits_context_items_return" />
1336+
<string-array name="pref_menus_multireddits_context_items_return">
1337+
<item>delete_multireddit</item>
1338+
</string-array>
13361339
</resources>

src/main/res/values/strings.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1907,4 +1907,9 @@
19071907
<string name="pref_menus_multireddits_header">Multireddits</string>
19081908
<string name="pref_menus_multireddits_context_items_key">pref_menus_multireddit_context_items</string>
19091909
<string name="pref_menus_multireddits_context_items_title">Action menu items</string>
1910+
1911+
<string name="delete_multireddit_confirmation">Delete Multireddit Confirmation</string>
1912+
<string name="are_you_sure_delete_multireddit">Are you sure you want to delete this multireddit?</string>
1913+
1914+
<string name="delete_multireddit">Delete Multireddit</string>
19101915
</resources>

0 commit comments

Comments
 (0)