From fea1dc333974ee0cfa1b053641f5e283dfff774d Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Wed, 9 Dec 2015 00:01:27 +0100 Subject: [PATCH] Add confirmation dialog when flagging. Fixes #139 --- Habitica/res/values/strings.xml | 2 + .../ui/fragments/ChatListFragment.java | 51 +++++++++---------- .../habitica/ui/fragments/PartyFragment.java | 2 +- .../habitica/ui/fragments/TavernFragment.java | 2 +- 4 files changed, 29 insertions(+), 28 deletions(-) diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index a5ea26752..3fcf7c4cf 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -195,4 +195,6 @@ Remember to check off your Dailies! Using Skill Coming Soon + Are you sure you want to report this message for violation? + Flag Message \ No newline at end of file diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/ChatListFragment.java b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/ChatListFragment.java index 9ec484b66..42be02107 100644 --- a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/ChatListFragment.java +++ b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/ChatListFragment.java @@ -1,12 +1,14 @@ package com.habitrpg.android.habitica.ui.fragments; import android.content.Context; +import android.content.DialogInterface; import android.graphics.Color; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; +import android.support.v7.app.AlertDialog; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; @@ -14,6 +16,7 @@ import android.view.View; import android.view.ViewGroup; import com.habitrpg.android.habitica.APIHelper; +import com.habitrpg.android.habitica.MainActivity; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.events.ToggledInnStateEvent; import com.habitrpg.android.habitica.events.commands.DeleteChatMessageCommand; @@ -47,8 +50,9 @@ public class ChatListFragment extends Fragment implements SwipeRefreshLayout.OnR private HabitRPGUser user; private String userId; private boolean isTavern; + private MainActivity activity; - public ChatListFragment(Context ctx, String groupId, APIHelper apiHelper, HabitRPGUser user, boolean isTavern) { + public ChatListFragment(Context ctx, String groupId, APIHelper apiHelper, HabitRPGUser user, MainActivity activity, boolean isTavern) { this.ctx = ctx; this.groupId = groupId; @@ -56,6 +60,7 @@ public class ChatListFragment extends Fragment implements SwipeRefreshLayout.OnR this.user = user; this.userId = user.getId(); this.isTavern = isTavern; + this.activity = activity; // Receive Events EventBus.getDefault().register(this); @@ -144,32 +149,27 @@ public class ChatListFragment extends Fragment implements SwipeRefreshLayout.OnR } - - private void showSnackbar(String msg, boolean negative) { - Snackbar snackbar = Snackbar.make(mRecyclerView, msg, Snackbar.LENGTH_LONG); - - if (negative) { - View snackbarView = snackbar.getView(); - - //change Snackbar's background color; - snackbarView.setBackgroundColor(Color.RED); - } - - snackbar.show(); - } - public void onEvent(final FlagChatMessageCommand cmd) { - apiHelper.apiService.flagMessage(cmd.groupId, cmd.chatMessage.id, new Callback() { - @Override - public void success(Void aVoid, Response response) { - showSnackbar("Flagged message by " + cmd.chatMessage.user, false); - } + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setMessage(R.string.chat_flag_confirmation) + .setPositiveButton(R.string.flag_confirm, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + apiHelper.apiService.flagMessage(cmd.groupId, cmd.chatMessage.id, new Callback() { + @Override + public void success(Void aVoid, Response response) { + activity.showSnackbar("Flagged message by " + cmd.chatMessage.user); + } - @Override - public void failure(RetrofitError error) { - showSnackbar("Failed to flag message by " + cmd.chatMessage.user, true); - } - }); + @Override + public void failure(RetrofitError error) { + } + }); } + }) + .setNegativeButton(R.string.action_cancel, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + } + }); + builder.show(); } public void onEvent(final ToggleLikeMessageCommand cmd) { @@ -180,7 +180,6 @@ public class ChatListFragment extends Fragment implements SwipeRefreshLayout.OnR @Override public void failure(RetrofitError error) { - showSnackbar("Failed to like message by " + cmd.chatMessage.user, true); } }); } diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/PartyFragment.java b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/PartyFragment.java index 7072ec217..f578fb25b 100644 --- a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/PartyFragment.java +++ b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/PartyFragment.java @@ -98,7 +98,7 @@ public class PartyFragment extends BaseFragment { break; } case 1: { - fragment = new ChatListFragment(activity, "party", mAPIHelper, user, false); + fragment = new ChatListFragment(activity, "party", mAPIHelper, user, activity, false); break; } case 2: { diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/TavernFragment.java b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/TavernFragment.java index 3d65f7931..f9ec99874 100644 --- a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/TavernFragment.java +++ b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/TavernFragment.java @@ -21,7 +21,7 @@ public class TavernFragment extends BaseFragment { super.onCreateView(inflater, container, savedInstanceState); View v = inflater.inflate(R.layout.fragment_tavern, container, false); - setFragment(new ChatListFragment(activity, "habitrpg", mAPIHelper, user, true)); + setFragment(new ChatListFragment(activity, "habitrpg", mAPIHelper, user, activity, true)); return v; }