mirror of
				https://github.com/pierre42100/ComunicAndroid
				synced 2025-11-04 03:24:04 +00:00 
			
		
		
		
	Display group access denied page.
This commit is contained in:
		@@ -24,6 +24,11 @@ import java.util.ArrayList;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class GroupsHelper extends BaseHelper {
 | 
					public class GroupsHelper extends BaseHelper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Debug tag
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static final String TAG = GroupsHelper.class.getSimpleName();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Groups information cache
 | 
					     * Groups information cache
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
@@ -64,6 +69,28 @@ public class GroupsHelper extends BaseHelper {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get information about a single group
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param groupID Target group ID
 | 
				
			||||||
 | 
					     * @param force Specify whether the request should be forced or not
 | 
				
			||||||
 | 
					     * @return null in case of failure / Group information else
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Nullable
 | 
				
			||||||
 | 
					    public GroupInfo getInfoSingle(int groupID, boolean force){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //Prepare request
 | 
				
			||||||
 | 
					        ArrayList<Integer> ids = new ArrayList<>();
 | 
				
			||||||
 | 
					        ids.add(groupID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //Execute request
 | 
				
			||||||
 | 
					        ArrayMap<Integer, GroupInfo> list = getInfoMultiple(ids, force);
 | 
				
			||||||
 | 
					        if(list == null || !list.containsKey(groupID))
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return list.get(groupID);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Get information about multiple groups
 | 
					     * Get information about multiple groups
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -172,11 +199,27 @@ public class GroupsHelper extends BaseHelper {
 | 
				
			|||||||
    public AdvancedGroupInfo getAdvancedInformation(int groupID){
 | 
					    public AdvancedGroupInfo getAdvancedInformation(int groupID){
 | 
				
			||||||
        APIRequest request = new APIRequest(getContext(), "groups/get_advanced_info");
 | 
					        APIRequest request = new APIRequest(getContext(), "groups/get_advanced_info");
 | 
				
			||||||
        request.addInt("id", groupID);
 | 
					        request.addInt("id", groupID);
 | 
				
			||||||
 | 
					        request.setTryContinueOnError(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //Execute request and get result
 | 
					            //Execute request and get result
 | 
				
			||||||
            JSONObject object = new APIRequestHelper().exec(request).getJSONObject();
 | 
					            APIResponse response = new APIRequestHelper().exec(request);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (response.getResponse_code() != 200) {
 | 
				
			||||||
 | 
					                if(response.getResponse_code() == 401){
 | 
				
			||||||
 | 
					                    //Access was explicitly denied to the group
 | 
				
			||||||
 | 
					                    AdvancedGroupInfo groupInfo = new AdvancedGroupInfo();
 | 
				
			||||||
 | 
					                    groupInfo.setAccess_forbidden(true);
 | 
				
			||||||
 | 
					                    return groupInfo;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //Could not get group information
 | 
				
			||||||
 | 
					                return null;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //Parse and return result
 | 
				
			||||||
 | 
					            JSONObject object = response.getJSONObject();
 | 
				
			||||||
            return parse_advanced_group_info(object);
 | 
					            return parse_advanced_group_info(object);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,12 +10,21 @@ package org.communiquons.android.comunic.client.data.models;
 | 
				
			|||||||
public class AdvancedGroupInfo extends GroupInfo {
 | 
					public class AdvancedGroupInfo extends GroupInfo {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //Private fields
 | 
					    //Private fields
 | 
				
			||||||
 | 
					    private boolean access_forbidden = false;
 | 
				
			||||||
    private int time_create;
 | 
					    private int time_create;
 | 
				
			||||||
    private String url;
 | 
					    private String url;
 | 
				
			||||||
    private String description;
 | 
					    private String description;
 | 
				
			||||||
    private int number_likes;
 | 
					    private int number_likes;
 | 
				
			||||||
    private boolean is_liking;
 | 
					    private boolean is_liking;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isAccess_forbidden() {
 | 
				
			||||||
 | 
					        return access_forbidden;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setAccess_forbidden(boolean access_forbidden) {
 | 
				
			||||||
 | 
					        this.access_forbidden = access_forbidden;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public int getTime_create() {
 | 
					    public int getTime_create() {
 | 
				
			||||||
        return time_create;
 | 
					        return time_create;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,6 +11,7 @@ import android.os.AsyncTask;
 | 
				
			|||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
import android.support.annotation.NonNull;
 | 
					import android.support.annotation.NonNull;
 | 
				
			||||||
import android.support.annotation.Nullable;
 | 
					import android.support.annotation.Nullable;
 | 
				
			||||||
 | 
					import android.support.v4.app.Fragment;
 | 
				
			||||||
import android.support.v4.app.FragmentTransaction;
 | 
					import android.support.v4.app.FragmentTransaction;
 | 
				
			||||||
import android.support.v4.content.LocalBroadcastManager;
 | 
					import android.support.v4.content.LocalBroadcastManager;
 | 
				
			||||||
import android.util.Log;
 | 
					import android.util.Log;
 | 
				
			||||||
@@ -43,10 +44,12 @@ import org.communiquons.android.comunic.client.ui.fragments.LatestPostsFragment;
 | 
				
			|||||||
import org.communiquons.android.comunic.client.ui.fragments.NotificationsFragment;
 | 
					import org.communiquons.android.comunic.client.ui.fragments.NotificationsFragment;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.fragments.SinglePostFragment;
 | 
					import org.communiquons.android.comunic.client.ui.fragments.SinglePostFragment;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.fragments.UpdateConversationFragment;
 | 
					import org.communiquons.android.comunic.client.ui.fragments.UpdateConversationFragment;
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.ui.fragments.groups.GroupAccessDeniedFragment;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.fragments.groups.GroupPageMainFragment;
 | 
					import org.communiquons.android.comunic.client.ui.fragments.groups.GroupPageMainFragment;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.fragments.groups.UserGroupsFragment;
 | 
					import org.communiquons.android.comunic.client.ui.fragments.groups.UserGroupsFragment;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.fragments.userpage.UserAccessDeniedFragment;
 | 
					import org.communiquons.android.comunic.client.ui.fragments.userpage.UserAccessDeniedFragment;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.fragments.userpage.UserPageFragment;
 | 
					import org.communiquons.android.comunic.client.ui.fragments.userpage.UserPageFragment;
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.ui.listeners.OnOpenGroupListener;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.listeners.onOpenUsersPageListener;
 | 
					import org.communiquons.android.comunic.client.ui.listeners.onOpenUsersPageListener;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.listeners.onPostOpenListener;
 | 
					import org.communiquons.android.comunic.client.ui.listeners.onPostOpenListener;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.listeners.openConversationListener;
 | 
					import org.communiquons.android.comunic.client.ui.listeners.openConversationListener;
 | 
				
			||||||
@@ -64,7 +67,7 @@ import static org.communiquons.android.comunic.client.ui.Constants.IntentRequest
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class MainActivity extends BaseActivity implements
 | 
					public class MainActivity extends BaseActivity implements
 | 
				
			||||||
        openConversationListener, updateConversationListener, onOpenUsersPageListener,
 | 
					        openConversationListener, updateConversationListener, onOpenUsersPageListener,
 | 
				
			||||||
        onPostOpenListener, NavigationBar.OnNavigationItemSelectedListener {
 | 
					        onPostOpenListener, NavigationBar.OnNavigationItemSelectedListener, OnOpenGroupListener {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Debug tag
 | 
					     * Debug tag
 | 
				
			||||||
@@ -757,28 +760,13 @@ public class MainActivity extends BaseActivity implements
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Request the page of a group to be opened
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param activity Current activity (MUST BE THIS ACTIVITY)
 | 
					 | 
				
			||||||
     * @param groupID Group ID to open
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static void OpenGroup(@NonNull Activity activity, int groupID){
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if(!(activity instanceof MainActivity))
 | 
					 | 
				
			||||||
            throw new RuntimeException("Specified activity is not an instance of MainActivity!");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ((MainActivity)activity).openGroupPage(groupID);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Open group page
 | 
					     * Open group page
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param groupID The ID of the group to open
 | 
					     * @param groupID The ID of the group to open
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void openGroupPage(int groupID){
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void onOpenGroup(int groupID) {
 | 
				
			||||||
        //Specify fragment arguments
 | 
					        //Specify fragment arguments
 | 
				
			||||||
        Bundle args = new Bundle();
 | 
					        Bundle args = new Bundle();
 | 
				
			||||||
        args.putInt(GroupPageMainFragment.ARGUMENT_GROUP_ID, groupID);
 | 
					        args.putInt(GroupPageMainFragment.ARGUMENT_GROUP_ID, groupID);
 | 
				
			||||||
@@ -792,6 +780,26 @@ public class MainActivity extends BaseActivity implements
 | 
				
			|||||||
        transaction.addToBackStack(null);
 | 
					        transaction.addToBackStack(null);
 | 
				
			||||||
        transaction.replace(R.id.main_fragment, fragment);
 | 
					        transaction.replace(R.id.main_fragment, fragment);
 | 
				
			||||||
        transaction.commit();
 | 
					        transaction.commit();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void onOpenGroupAccessDenied(int groupID) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //Add arguments
 | 
				
			||||||
 | 
					        Bundle args = new Bundle();
 | 
				
			||||||
 | 
					        args.putInt(GroupAccessDeniedFragment.ARGUMENT_GROUP_ID, groupID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //Create fragment
 | 
				
			||||||
 | 
					        Fragment fragment = new GroupAccessDeniedFragment();
 | 
				
			||||||
 | 
					        fragment.setArguments(args);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //Remove last transaction from list
 | 
				
			||||||
 | 
					        getSupportFragmentManager().popBackStackImmediate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //Perform fragment transaction
 | 
				
			||||||
 | 
					        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 | 
				
			||||||
 | 
					        transaction.addToBackStack(null);
 | 
				
			||||||
 | 
					        transaction.replace(R.id.main_fragment, fragment);
 | 
				
			||||||
 | 
					        transaction.commit();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					package org.communiquons.android.comunic.client.ui.asynctasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.content.Context;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.data.helpers.GroupsHelper;
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.data.models.GroupInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class GetGroupInfoTask extends SafeAsyncTask<Integer, Void, GroupInfo> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public GetGroupInfoTask(Context context) {
 | 
				
			||||||
 | 
					        super(context);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    protected GroupInfo doInBackground(Integer... integers) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //By default, we force the request
 | 
				
			||||||
 | 
					        return new GroupsHelper(getContext()).getInfoSingle(integers[0], true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,137 @@
 | 
				
			|||||||
 | 
					package org.communiquons.android.comunic.client.ui.fragments.groups;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.os.AsyncTask;
 | 
				
			||||||
 | 
					import android.os.Bundle;
 | 
				
			||||||
 | 
					import android.support.annotation.NonNull;
 | 
				
			||||||
 | 
					import android.support.annotation.Nullable;
 | 
				
			||||||
 | 
					import android.view.LayoutInflater;
 | 
				
			||||||
 | 
					import android.view.View;
 | 
				
			||||||
 | 
					import android.view.ViewGroup;
 | 
				
			||||||
 | 
					import android.widget.TextView;
 | 
				
			||||||
 | 
					import android.widget.Toast;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.R;
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.data.enums.GroupsMembershipLevels;
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.data.models.GroupInfo;
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.ui.asynctasks.GetGroupInfoTask;
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.ui.asynctasks.SafeAsyncTask;
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.ui.listeners.OnOpenGroupListener;
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.ui.views.GroupImageView;
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.ui.views.GroupMembershipStatusView;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Group access denied fragment
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This fragment appears when the user was explicitly denied
 | 
				
			||||||
 | 
					 * access to a group advanced information
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Pierre HUBERT
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class GroupAccessDeniedFragment extends AbstractGroupFragment {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Debug tag
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static final String TAG = GroupAccessDeniedFragment.class.getSimpleName();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Mandatory argument to use this fragment : target group id
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static final String ARGUMENT_GROUP_ID = "group_id";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Current group ID
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private int mGroupID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Views
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private GroupImageView mGroupImageView;
 | 
				
			||||||
 | 
					    private TextView mGroupNameView;
 | 
				
			||||||
 | 
					    private GroupMembershipStatusView mGroupMembershipView;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Nullable
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
 | 
				
			||||||
 | 
					        return inflater.inflate(R.layout.layout_group_access_denied, container, false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
 | 
				
			||||||
 | 
					        super.onViewCreated(view, savedInstanceState);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        mGroupImageView = view.findViewById(R.id.groupImageView);
 | 
				
			||||||
 | 
					        mGroupNameView = view.findViewById(R.id.groupName);
 | 
				
			||||||
 | 
					        mGroupMembershipView = view.findViewById(R.id.groupMembershipStatusView);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void onStart() {
 | 
				
			||||||
 | 
					        super.onStart();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assert getArguments() != null;
 | 
				
			||||||
 | 
					        mGroupID = getArguments().getInt(ARGUMENT_GROUP_ID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        getGroupInfo();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void onGroupMembershipUpdated(boolean success, int groupID) {
 | 
				
			||||||
 | 
					        super.onGroupMembershipUpdated(success, groupID);
 | 
				
			||||||
 | 
					        getGroupInfo();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get and return information about the group
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private void getGroupInfo(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        getTasksManager().unsetSpecificTasks(GetGroupInfoTask.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        GetGroupInfoTask task = new GetGroupInfoTask(getActivity());
 | 
				
			||||||
 | 
					        task.setOnPostExecuteListener(new SafeAsyncTask.OnPostExecuteListener<GroupInfo>() {
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void OnPostExecute(GroupInfo groupInfo) {
 | 
				
			||||||
 | 
					                onGotGroupInfo(groupInfo);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mGroupID);
 | 
				
			||||||
 | 
					        getTasksManager().addTask(task);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Method called once we have got group information
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param info Information about the group
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private void onGotGroupInfo(@Nullable GroupInfo info){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //Check for errors
 | 
				
			||||||
 | 
					        if(info == null){
 | 
				
			||||||
 | 
					            Toast.makeText(getActivity(), R.string.err_get_group_info, Toast.LENGTH_SHORT).show();
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //Check if the user is now at least a member of the group
 | 
				
			||||||
 | 
					        if(info.getMembershipLevel() == GroupsMembershipLevels.MEMBER
 | 
				
			||||||
 | 
					                || info.getMembershipLevel() == GroupsMembershipLevels.MODERATOR
 | 
				
			||||||
 | 
					                || info.getMembershipLevel() == GroupsMembershipLevels.ADMINISTRATOR){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //Go back to the group
 | 
				
			||||||
 | 
					            Objects.requireNonNull(getActivity())
 | 
				
			||||||
 | 
					                    .getSupportFragmentManager().popBackStack();
 | 
				
			||||||
 | 
					            ((OnOpenGroupListener)getActivity()).onOpenGroup(info.getId());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //Apply group information
 | 
				
			||||||
 | 
					        mGroupImageView.setGroup(info);
 | 
				
			||||||
 | 
					        mGroupNameView.setText(info.getDisplayName());
 | 
				
			||||||
 | 
					        mGroupMembershipView.setGroup(info);
 | 
				
			||||||
 | 
					        mGroupMembershipView.setOnGroupMembershipUpdateListener(this);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -15,9 +15,12 @@ import org.communiquons.android.comunic.client.R;
 | 
				
			|||||||
import org.communiquons.android.comunic.client.data.models.AdvancedGroupInfo;
 | 
					import org.communiquons.android.comunic.client.data.models.AdvancedGroupInfo;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.asynctasks.GetGroupAdvancedInfoTask;
 | 
					import org.communiquons.android.comunic.client.ui.asynctasks.GetGroupAdvancedInfoTask;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.asynctasks.SafeAsyncTask;
 | 
					import org.communiquons.android.comunic.client.ui.asynctasks.SafeAsyncTask;
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.ui.listeners.OnOpenGroupListener;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
 | 
					import org.communiquons.android.comunic.client.ui.utils.UiUtils;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.views.GroupImageView;
 | 
					import org.communiquons.android.comunic.client.ui.views.GroupImageView;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Group main page
 | 
					 * Group main page
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
@@ -121,6 +124,13 @@ public class GroupPageMainFragment extends AbstractGroupFragment {
 | 
				
			|||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //Check if access to the group was denied
 | 
				
			||||||
 | 
					        if(info.isAccess_forbidden()){
 | 
				
			||||||
 | 
					            ((OnOpenGroupListener) Objects.requireNonNull(getActivity()))
 | 
				
			||||||
 | 
					                    .onOpenGroupAccessDenied(mGroupID);
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mAdvancedGroupInfo = info;
 | 
					        mAdvancedGroupInfo = info;
 | 
				
			||||||
        applyGroupInfo();
 | 
					        applyGroupInfo();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,6 +23,7 @@ import org.communiquons.android.comunic.client.ui.adapters.GroupsListAdapter;
 | 
				
			|||||||
import org.communiquons.android.comunic.client.ui.asynctasks.GetUserGroupsTask;
 | 
					import org.communiquons.android.comunic.client.ui.asynctasks.GetUserGroupsTask;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.asynctasks.SafeAsyncTask;
 | 
					import org.communiquons.android.comunic.client.ui.asynctasks.SafeAsyncTask;
 | 
				
			||||||
import org.communiquons.android.comunic.client.ui.listeners.OnGroupActionListener;
 | 
					import org.communiquons.android.comunic.client.ui.listeners.OnGroupActionListener;
 | 
				
			||||||
 | 
					import org.communiquons.android.comunic.client.ui.listeners.OnOpenGroupListener;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.Objects;
 | 
					import java.util.Objects;
 | 
				
			||||||
@@ -134,7 +135,7 @@ public class UserGroupsFragment extends AbstractGroupFragment implements OnGroup
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        mGroupsView.setAdapter(mGroupsAdapter);
 | 
					        mGroupsView.setAdapter(mGroupsAdapter);
 | 
				
			||||||
        mGroupsView.setLayoutManager(new LinearLayoutManager(getActivity()));
 | 
					        mGroupsView.setLayoutManager(new LinearLayoutManager(getActivity()));
 | 
				
			||||||
        mGroupsView.addItemDecoration(new DividerItemDecoration(getActivity(),
 | 
					        mGroupsView.addItemDecoration(new DividerItemDecoration(Objects.requireNonNull(getActivity()),
 | 
				
			||||||
                DividerItemDecoration.VERTICAL));
 | 
					                DividerItemDecoration.VERTICAL));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -173,6 +174,12 @@ public class UserGroupsFragment extends AbstractGroupFragment implements OnGroup
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onOpenGroup(int groupID) {
 | 
					    public void onOpenGroup(int groupID) {
 | 
				
			||||||
        Log.v(TAG, "Open group " + groupID);
 | 
					        Log.v(TAG, "Open group " + groupID);
 | 
				
			||||||
        MainActivity.OpenGroup(Objects.requireNonNull(getActivity()), groupID);
 | 
					        ((OnOpenGroupListener)Objects.requireNonNull(getActivity())).onOpenGroup(groupID);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void onOpenGroupAccessDenied(int groupID) {
 | 
				
			||||||
 | 
					        ((OnOpenGroupListener)Objects.requireNonNull(getActivity()))
 | 
				
			||||||
 | 
					                .onOpenGroupAccessDenied(groupID);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,13 +5,7 @@ package org.communiquons.android.comunic.client.ui.listeners;
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * @author Pierre HUBERT
 | 
					 * @author Pierre HUBERT
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public interface OnGroupActionListener extends OnGroupMembershipUpdateListener {
 | 
					public interface OnGroupActionListener
 | 
				
			||||||
 | 
					        extends OnGroupMembershipUpdateListener, OnOpenGroupListener {
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Open a group page
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param groupID The ID of the group to open
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    void onOpenGroup(int groupID);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					package org.communiquons.android.comunic.client.ui.listeners;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * This interface is implemented by all classes that have to relay
 | 
				
			||||||
 | 
					 * the opening of a group
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Pierre HUBERT
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public interface OnOpenGroupListener {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Open a group page
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param groupID The ID of the group to open
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    void onOpenGroup(int groupID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Open a group access denied fragment page
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param groupID The ID of the group to open
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    void onOpenGroupAccessDenied(int groupID);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										58
									
								
								app/src/main/res/layout/layout_group_access_denied.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								app/src/main/res/layout/layout_group_access_denied.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<android.support.constraint.ConstraintLayout
 | 
				
			||||||
 | 
					    xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
				
			||||||
 | 
					    xmlns:tools="http://schemas.android.com/tools"
 | 
				
			||||||
 | 
					    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					    android:layout_height="match_parent">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <org.communiquons.android.comunic.client.ui.views.GroupMembershipStatusView
 | 
				
			||||||
 | 
					        android:id="@+id/groupMembershipStatusView"
 | 
				
			||||||
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:layout_marginBottom="8dp"
 | 
				
			||||||
 | 
					        android:layout_marginEnd="8dp"
 | 
				
			||||||
 | 
					        android:layout_marginStart="8dp"
 | 
				
			||||||
 | 
					        android:layout_marginTop="8dp"
 | 
				
			||||||
 | 
					        app:layout_constraintBottom_toBottomOf="parent"
 | 
				
			||||||
 | 
					        app:layout_constraintEnd_toEndOf="parent"
 | 
				
			||||||
 | 
					        app:layout_constraintStart_toStartOf="parent"
 | 
				
			||||||
 | 
					        app:layout_constraintTop_toBottomOf="@+id/textView12" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <org.communiquons.android.comunic.client.ui.views.GroupImageView
 | 
				
			||||||
 | 
					        android:id="@+id/groupImageView"
 | 
				
			||||||
 | 
					        android:layout_width="60dp"
 | 
				
			||||||
 | 
					        android:layout_height="60dp"
 | 
				
			||||||
 | 
					        android:layout_marginEnd="8dp"
 | 
				
			||||||
 | 
					        android:layout_marginStart="8dp"
 | 
				
			||||||
 | 
					        android:layout_marginTop="8dp"
 | 
				
			||||||
 | 
					        app:layout_constraintEnd_toEndOf="parent"
 | 
				
			||||||
 | 
					        app:layout_constraintStart_toStartOf="parent"
 | 
				
			||||||
 | 
					        app:layout_constraintTop_toTopOf="parent"
 | 
				
			||||||
 | 
					        app:srcCompat="@drawable/ic_friends" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <TextView
 | 
				
			||||||
 | 
					        android:id="@+id/groupName"
 | 
				
			||||||
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:layout_marginEnd="8dp"
 | 
				
			||||||
 | 
					        android:layout_marginStart="8dp"
 | 
				
			||||||
 | 
					        android:layout_marginTop="8dp"
 | 
				
			||||||
 | 
					        tools:text="Group name"
 | 
				
			||||||
 | 
					        android:textAppearance="@style/TextAppearance.AppCompat.Medium"
 | 
				
			||||||
 | 
					        app:layout_constraintEnd_toEndOf="parent"
 | 
				
			||||||
 | 
					        app:layout_constraintStart_toStartOf="parent"
 | 
				
			||||||
 | 
					        app:layout_constraintTop_toBottomOf="@+id/groupImageView" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <TextView
 | 
				
			||||||
 | 
					        android:id="@+id/textView12"
 | 
				
			||||||
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:layout_marginEnd="8dp"
 | 
				
			||||||
 | 
					        android:layout_marginStart="8dp"
 | 
				
			||||||
 | 
					        android:layout_marginTop="8dp"
 | 
				
			||||||
 | 
					        android:text="@string/notice_group_access_denied"
 | 
				
			||||||
 | 
					        app:layout_constraintEnd_toEndOf="parent"
 | 
				
			||||||
 | 
					        app:layout_constraintStart_toStartOf="parent"
 | 
				
			||||||
 | 
					        app:layout_constraintTop_toBottomOf="@+id/groupName" />
 | 
				
			||||||
 | 
					</android.support.constraint.ConstraintLayout>
 | 
				
			||||||
@@ -312,4 +312,5 @@
 | 
				
			|||||||
    <string name="dialog_leave_group_confirm">Leave</string>
 | 
					    <string name="dialog_leave_group_confirm">Leave</string>
 | 
				
			||||||
    <string name="err_update_group_membership">Could not update group membership!</string>
 | 
					    <string name="err_update_group_membership">Could not update group membership!</string>
 | 
				
			||||||
    <string name="err_get_group_info">Could not get group information!</string>
 | 
					    <string name="err_get_group_info">Could not get group information!</string>
 | 
				
			||||||
 | 
					    <string name="notice_group_access_denied">Access to the group denied.</string>
 | 
				
			||||||
</resources>
 | 
					</resources>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user