1818package org .quantumbadger .redreader .reddit .api ;
1919
2020import android .content .Context ;
21+ import android .util .Log ;
22+ import android .widget .Toast ;
2123
24+ import androidx .annotation .NonNull ;
2225import androidx .appcompat .app .AlertDialog ;
2326import androidx .appcompat .app .AppCompatActivity ;
2427
2528import com .google .android .material .dialog .MaterialAlertDialogBuilder ;
2629
30+ import org .quantumbadger .redreader .R ;
2731import org .quantumbadger .redreader .account .RedditAccount ;
2832import org .quantumbadger .redreader .account .RedditAccountManager ;
33+ import org .quantumbadger .redreader .cache .CacheManager ;
2934import 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
3141import java .util .ArrayList ;
3242import java .util .EnumSet ;
3343
3444public 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}
0 commit comments