mirror of
				https://github.com/pierre42100/ComunicAndroid
				synced 2025-11-04 03:24:04 +00:00 
			
		
		
		
	Get the list of notifications
This commit is contained in:
		@@ -37,6 +37,11 @@ public enum NotifElemType {
 | 
			
		||||
    /**
 | 
			
		||||
     * On a friendship request
 | 
			
		||||
     */
 | 
			
		||||
    FRIEND_REQUEST
 | 
			
		||||
    FRIEND_REQUEST,
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Unknown type
 | 
			
		||||
     */
 | 
			
		||||
    UNKNOWN
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -37,6 +37,11 @@ public enum NotificationTypes {
 | 
			
		||||
    /**
 | 
			
		||||
     * When an element is updated
 | 
			
		||||
     */
 | 
			
		||||
    ELEM_UPDATED
 | 
			
		||||
    ELEM_UPDATED,
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Unknown notification type
 | 
			
		||||
     */
 | 
			
		||||
    UNKNOWN
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,11 @@ public enum NotificationVisibility {
 | 
			
		||||
    /**
 | 
			
		||||
     * When a notification is targeting several users
 | 
			
		||||
     */
 | 
			
		||||
    EVENT_PUBLIC
 | 
			
		||||
    EVENT_PUBLIC,
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Unknown visibility
 | 
			
		||||
     */
 | 
			
		||||
    UNKNOWN
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,8 @@ import android.support.annotation.Nullable;
 | 
			
		||||
import org.communiquons.android.comunic.client.api.APIRequest;
 | 
			
		||||
import org.communiquons.android.comunic.client.api.APIRequestParameters;
 | 
			
		||||
import org.communiquons.android.comunic.client.api.APIResponse;
 | 
			
		||||
import org.json.JSONArray;
 | 
			
		||||
import org.json.JSONException;
 | 
			
		||||
import org.json.JSONObject;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -85,4 +87,163 @@ public class NotificationsHelper {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the list of unread notifications
 | 
			
		||||
     *
 | 
			
		||||
     * @return TRUE in case of success / FALSE else
 | 
			
		||||
     */
 | 
			
		||||
    @Nullable
 | 
			
		||||
    public NotifsList getListUnread(){
 | 
			
		||||
 | 
			
		||||
        //Perform a request on the server
 | 
			
		||||
        APIRequestParameters params = new APIRequestParameters(mContext,
 | 
			
		||||
                "notifications/get_list_unread");
 | 
			
		||||
 | 
			
		||||
        //Try to perform the request on the server
 | 
			
		||||
        try {
 | 
			
		||||
 | 
			
		||||
            //Try to perform the request on the server
 | 
			
		||||
            APIResponse response = new APIRequest().exec(params);
 | 
			
		||||
 | 
			
		||||
            //Check for errors
 | 
			
		||||
            if(response.getResponse_code() != 200)
 | 
			
		||||
                return null;
 | 
			
		||||
 | 
			
		||||
            //Parse the results
 | 
			
		||||
            JSONArray array = response.getJSONArray();
 | 
			
		||||
            NotifsList list = new NotifsList();
 | 
			
		||||
            for (int i = 0; i < array.length(); i++){
 | 
			
		||||
                list.add(parseNotifJSONObject(array.getJSONObject(i)));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //Return the list of notifications
 | 
			
		||||
            return list;
 | 
			
		||||
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Parse a JSON object into a Notif object
 | 
			
		||||
     *
 | 
			
		||||
     * @param object The JSON object
 | 
			
		||||
     * @return The generated notif (notification) object
 | 
			
		||||
     * @throws JSONException If an error occurred while trying to parse the information
 | 
			
		||||
     */
 | 
			
		||||
    private Notif parseNotifJSONObject(JSONObject object) throws JSONException {
 | 
			
		||||
 | 
			
		||||
        Notif notif = new Notif();
 | 
			
		||||
 | 
			
		||||
        //Parse object information
 | 
			
		||||
        notif.setId(object.getInt("id"));
 | 
			
		||||
        notif.setTime_create(object.getInt("time_create"));
 | 
			
		||||
        notif.setSeen(object.getBoolean("seen"));
 | 
			
		||||
        notif.setFrom_user_id(object.getInt("from_user_id"));
 | 
			
		||||
        notif.setDest_user_id(object.getInt("dest_user_id"));
 | 
			
		||||
        notif.setOn_elem_id(object.getInt("on_elem_id"));
 | 
			
		||||
        notif.setOn_elem_type(getNotifElemTypeFromString(object.getString("on_elem_type")));
 | 
			
		||||
        notif.setType(getNotifTypeFromString(object.getString("type")));
 | 
			
		||||
        notif.setVisibility(getNotifVisiblityFromString(object.getString("event_visibility")));
 | 
			
		||||
        notif.setFrom_container_id(object.getInt("from_container_id"));
 | 
			
		||||
        notif.setFrom_container_type(getNotifElemTypeFromString(object.getString("from_container_type")));
 | 
			
		||||
 | 
			
		||||
        return notif;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Determine notification element type from a string
 | 
			
		||||
     *
 | 
			
		||||
     * @param string The string to parse
 | 
			
		||||
     * @return Matching element type
 | 
			
		||||
     */
 | 
			
		||||
    private NotifElemType getNotifElemTypeFromString(String string){
 | 
			
		||||
 | 
			
		||||
        switch (string){
 | 
			
		||||
 | 
			
		||||
            case "user_page":
 | 
			
		||||
                return NotifElemType.USER_PAGE;
 | 
			
		||||
 | 
			
		||||
            case "conversation":
 | 
			
		||||
                return NotifElemType.CONVERSATION;
 | 
			
		||||
 | 
			
		||||
            case "conversation_message":
 | 
			
		||||
                return NotifElemType.CONVERSATION_MESSAGE;
 | 
			
		||||
 | 
			
		||||
            case "post":
 | 
			
		||||
                return NotifElemType.POST;
 | 
			
		||||
 | 
			
		||||
            case "comment":
 | 
			
		||||
                return NotifElemType.COMMENT;
 | 
			
		||||
 | 
			
		||||
            case "friend_request":
 | 
			
		||||
                return NotifElemType.FRIEND_REQUEST;
 | 
			
		||||
 | 
			
		||||
            //Default : unknown type of elem
 | 
			
		||||
            default:
 | 
			
		||||
                return NotifElemType.UNKNOWN;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Turn a string into a notifications types value
 | 
			
		||||
     *
 | 
			
		||||
     * @param string The input string
 | 
			
		||||
     * @return Matching notification type
 | 
			
		||||
     */
 | 
			
		||||
    private NotificationTypes getNotifTypeFromString(String string){
 | 
			
		||||
 | 
			
		||||
        switch (string){
 | 
			
		||||
 | 
			
		||||
            case "comment_created":
 | 
			
		||||
                return NotificationTypes.COMMENT_CREATED;
 | 
			
		||||
 | 
			
		||||
            case "sent_friend_request":
 | 
			
		||||
                return NotificationTypes.SENT_FRIEND_REQUEST;
 | 
			
		||||
 | 
			
		||||
            case "accepted_friend_request":
 | 
			
		||||
                return NotificationTypes.ACCEPTED_FRIEND_REQUEST;
 | 
			
		||||
 | 
			
		||||
            case "rejected_friend_request":
 | 
			
		||||
                return NotificationTypes.REJECTED_FRIEND_REQUEST;
 | 
			
		||||
 | 
			
		||||
            case "elem_created":
 | 
			
		||||
                return NotificationTypes.ELEM_CREATED;
 | 
			
		||||
 | 
			
		||||
            case "elem_updated":
 | 
			
		||||
                return NotificationTypes.ELEM_UPDATED;
 | 
			
		||||
 | 
			
		||||
            //Default : Unknown notification type
 | 
			
		||||
            default:
 | 
			
		||||
                return NotificationTypes.UNKNOWN;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Turn a string into a notification visibility value
 | 
			
		||||
     *
 | 
			
		||||
     * @param string The input string
 | 
			
		||||
     * @return Matching notification visibility
 | 
			
		||||
     */
 | 
			
		||||
    private NotificationVisibility getNotifVisiblityFromString(String string){
 | 
			
		||||
 | 
			
		||||
        switch (string){
 | 
			
		||||
 | 
			
		||||
            case "event_public":
 | 
			
		||||
                return NotificationVisibility.EVENT_PUBLIC;
 | 
			
		||||
 | 
			
		||||
            case "event_private":
 | 
			
		||||
                return NotificationVisibility.EVENT_PRIVATE;
 | 
			
		||||
 | 
			
		||||
            //In case the visibility was not found
 | 
			
		||||
            default:
 | 
			
		||||
                return NotificationVisibility.UNKNOWN;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,13 @@
 | 
			
		||||
package org.communiquons.android.comunic.client.data.notifications;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Notifications list, combined with user information
 | 
			
		||||
 *
 | 
			
		||||
 * @author Pierre HUBERT
 | 
			
		||||
 * Created by pierre on 4/10/18.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class NotifsList extends ArrayList<Notif> {
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user