diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java index 37576a0e2f..306b965501 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/FriendsFragment.java @@ -2,7 +2,9 @@ package io.highfidelity.hifiinterface.fragment; import android.app.Fragment; +import android.content.DialogInterface; import android.os.Bundle; +import android.support.v7.app.AlertDialog; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; @@ -13,6 +15,7 @@ import android.view.ViewGroup; import com.sothree.slidinguppanel.SlidingUpPanelLayout; import io.highfidelity.hifiinterface.R; +import io.highfidelity.hifiinterface.provider.EndpointUsersProvider; import io.highfidelity.hifiinterface.provider.UsersProvider; import io.highfidelity.hifiinterface.view.UserListAdapter; @@ -26,6 +29,8 @@ public class FriendsFragment extends Fragment { private View mUserActions; private UserListAdapter mUsersAdapter; private SlidingUpPanelLayout mSlidingUpPanelLayout; + private EndpointUsersProvider mUsersProvider; + private String mSelectedUsername; public FriendsFragment() { // Required empty public constructor @@ -42,6 +47,7 @@ public class FriendsFragment extends Fragment { View rootView = inflater.inflate(R.layout.fragment_friends, container, false); String accessToken = nativeGetAccessToken(); + mUsersProvider = new EndpointUsersProvider(accessToken); Log.d("[USERS]", "token : [" + accessToken + "]"); @@ -49,16 +55,21 @@ public class FriendsFragment extends Fragment { int numberOfColumns = 1; GridLayoutManager gridLayoutMgr = new GridLayoutManager(getContext(), numberOfColumns); mUsersView.setLayoutManager(gridLayoutMgr); - mUsersAdapter = new UserListAdapter(getContext(), accessToken); + + mUsersAdapter = new UserListAdapter(getContext(), mUsersProvider); mUserActions = rootView.findViewById(R.id.userActionsLayout); mSlidingUpPanelLayout = rootView.findViewById(R.id.sliding_layout); mSlidingUpPanelLayout.setPanelHeight(0); + + rootView.findViewById(R.id.userActionDelete).setOnClickListener(view -> onRemoveConnectionClick()); + mUsersAdapter.setClickListener(new UserListAdapter.ItemClickListener() { @Override public void onItemClick(View view, int position, UserListAdapter.User user) { // 1. 'select' user + mSelectedUsername = user.name; // .. // 2. adapt options // .. @@ -73,12 +84,44 @@ public class FriendsFragment extends Fragment { @Override public void onClick(View view) { mSlidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); + mSelectedUsername = null; } }); return rootView; } + private void onRemoveConnectionClick() { + if (mSelectedUsername == null) return; + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setMessage("Remove this user from People?"); + builder.setPositiveButton("Remove", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + mUsersProvider.removeConnection(mSelectedUsername, new UsersProvider.UserActionCallback() { + @Override + public void requestOk() { + // CLD: Show success message + mUsersAdapter.loadUsers(); + } + + @Override + public void requestError(Exception e, String message) { + // CLD: Show error message? + } + }); + } + }); + builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + // Cancelled, nothing to do + } + }); + builder.show(); + } + /** * Processes the back pressed event and returns true if it was managed by this Fragment * @return @@ -86,6 +129,7 @@ public class FriendsFragment extends Fragment { public boolean onBackPressed() { if (mSlidingUpPanelLayout.getPanelState().equals(SlidingUpPanelLayout.PanelState.EXPANDED)) { mSlidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); + mSelectedUsername = null; return true; } else { return false; diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java index b92c0dd97a..c1ea698b08 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/UserListAdapter.java @@ -38,14 +38,14 @@ public class UserListAdapter extends RecyclerView.Adapter mUsers = new ArrayList<>(); private ItemClickListener mClickListener; - public UserListAdapter(Context c, String accessToken) { + public UserListAdapter(Context c, UsersProvider usersProvider) { mContext = c; mInflater = LayoutInflater.from(mContext); - mProvider = new EndpointUsersProvider(accessToken); + mProvider = usersProvider; loadUsers(); } - private void loadUsers() { + public void loadUsers() { mProvider.retrieve(new UsersProvider.UsersCallback() { @Override public void retrieveOk(List users) {