mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-23 22:09:30 +00:00
Notification system ready.
This commit is contained in:
parent
281821333c
commit
e66e077964
@ -40,7 +40,7 @@ public class PostsList extends ArrayList<Post> {
|
||||
//Process the list of comments
|
||||
for(Comment comment : post.getComments_list()){
|
||||
|
||||
if(ids.contains(comment.getUserID()))
|
||||
if(!ids.contains(comment.getUserID()))
|
||||
ids.add(comment.getUserID());
|
||||
|
||||
}
|
||||
|
@ -23,8 +23,10 @@ import org.communiquons.android.comunic.client.data.helpers.DatabaseHelper;
|
||||
import org.communiquons.android.comunic.client.data.helpers.ConversationsListHelper;
|
||||
import org.communiquons.android.comunic.client.data.runnables.FriendRefreshLoopRunnable;
|
||||
import org.communiquons.android.comunic.client.data.services.NotificationsService;
|
||||
import org.communiquons.android.comunic.client.ui.fragments.SinglePostFragment;
|
||||
import org.communiquons.android.comunic.client.ui.fragments.UserAccessDeniedFragment;
|
||||
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.openConversationListener;
|
||||
import org.communiquons.android.comunic.client.ui.listeners.updateConversationListener;
|
||||
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
|
||||
@ -44,7 +46,7 @@ import org.communiquons.android.comunic.client.ui.fragments.UserPageFragment;
|
||||
* @author Pierre HUBERT
|
||||
*/
|
||||
public class MainActivity extends AppCompatActivity implements openConversationListener,
|
||||
updateConversationListener, onOpenUsersPageListener {
|
||||
updateConversationListener, onOpenUsersPageListener, onPostOpenListener {
|
||||
|
||||
/**
|
||||
* Debug tag
|
||||
@ -458,4 +460,22 @@ public class MainActivity extends AppCompatActivity implements openConversationL
|
||||
transaction.addToBackStack(null);
|
||||
transaction.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOpenPost(int postID) {
|
||||
|
||||
//Prepare the arguments
|
||||
Bundle arguments = new Bundle();
|
||||
arguments.putInt(SinglePostFragment.ARGUMENT_POST_ID, postID);
|
||||
|
||||
//Create the fragment
|
||||
SinglePostFragment singlePostFragment = new SinglePostFragment();
|
||||
singlePostFragment.setArguments(arguments);
|
||||
|
||||
//Perform the transaction
|
||||
FragmentTransaction transaction = getFragmentManager().beginTransaction();
|
||||
transaction.addToBackStack(null);
|
||||
transaction.replace(R.id.main_fragment, singlePostFragment);
|
||||
transaction.commit();
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ import org.communiquons.android.comunic.client.data.models.Notif;
|
||||
import org.communiquons.android.comunic.client.ui.activities.MainActivity;
|
||||
import org.communiquons.android.comunic.client.ui.adapters.NotificationsAdapter;
|
||||
import org.communiquons.android.comunic.client.ui.listeners.onOpenUsersPageListener;
|
||||
import org.communiquons.android.comunic.client.ui.listeners.onPostOpenListener;
|
||||
|
||||
/**
|
||||
* Notifications fragment
|
||||
@ -78,6 +79,11 @@ public class NotificationsFragment extends Fragment implements View.OnCreateCont
|
||||
*/
|
||||
private onOpenUsersPageListener mUserPageOpener;
|
||||
|
||||
/**
|
||||
* Post open listener
|
||||
*/
|
||||
private onPostOpenListener mOpenPostListener;
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
@ -129,6 +135,9 @@ public class NotificationsFragment extends Fragment implements View.OnCreateCont
|
||||
//Get user page opener
|
||||
mUserPageOpener = (onOpenUsersPageListener) getActivity();
|
||||
|
||||
//Get post opener
|
||||
mOpenPostListener = (onPostOpenListener) getActivity();
|
||||
|
||||
//Check if it is required to fetch the list of notifications
|
||||
if(mNotificationsList == null){
|
||||
|
||||
@ -331,12 +340,12 @@ public class NotificationsFragment extends Fragment implements View.OnCreateCont
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
|
||||
//Delete the notification
|
||||
//deleteNotification(position);
|
||||
|
||||
//Perform notification action
|
||||
Notif notif = mNotificationsList.get(position);
|
||||
|
||||
//Delete the notification
|
||||
deleteNotification(position);
|
||||
|
||||
//For friendship request
|
||||
if(notif.getOn_elem_type() == NotifElemType.FRIEND_REQUEST){
|
||||
|
||||
@ -345,5 +354,12 @@ public class NotificationsFragment extends Fragment implements View.OnCreateCont
|
||||
|
||||
}
|
||||
|
||||
//If the notification is targeting a post
|
||||
if(notif.getOn_elem_type() == NotifElemType.POST){
|
||||
|
||||
//Open the post
|
||||
mOpenPostListener.onOpenPost(notif.getOn_elem_id());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,169 @@
|
||||
package org.communiquons.android.comunic.client.ui.fragments;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentTransaction;
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.ArrayMap;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.communiquons.android.comunic.client.R;
|
||||
import org.communiquons.android.comunic.client.data.arrays.PostsList;
|
||||
import org.communiquons.android.comunic.client.data.helpers.GetUsersHelper;
|
||||
import org.communiquons.android.comunic.client.data.helpers.PostsHelper;
|
||||
import org.communiquons.android.comunic.client.data.models.Post;
|
||||
import org.communiquons.android.comunic.client.data.models.UserInfo;
|
||||
|
||||
/**
|
||||
* Single post fragment
|
||||
*
|
||||
* This fragment allows to display a single post
|
||||
*
|
||||
* @author Pierre HUBERT
|
||||
* Created by pierre on 4/12/18.
|
||||
*/
|
||||
|
||||
public class SinglePostFragment extends Fragment {
|
||||
|
||||
/**
|
||||
* The name of the argument that contains the ID of the post to open
|
||||
*/
|
||||
public static final String ARGUMENT_POST_ID = "post_id";
|
||||
|
||||
/**
|
||||
* The ID of the post
|
||||
*/
|
||||
private int mPostID = 0;
|
||||
|
||||
/**
|
||||
* Information about the post
|
||||
*/
|
||||
private Post mPost;
|
||||
|
||||
/**
|
||||
* Post list that contains only a single post
|
||||
*/
|
||||
private PostsList mPostsList;
|
||||
|
||||
/**
|
||||
* Information about the related users
|
||||
*/
|
||||
private ArrayMap<Integer, UserInfo> mUserInfo;
|
||||
|
||||
/**
|
||||
* Post helper
|
||||
*/
|
||||
private PostsHelper mPostsHelper;
|
||||
|
||||
/**
|
||||
* Get user information helper
|
||||
*/
|
||||
private GetUsersHelper mGetUserHelper;
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
|
||||
//Create post helper
|
||||
mPostsHelper = new PostsHelper(context);
|
||||
|
||||
//Create get user helper
|
||||
mGetUserHelper = new GetUsersHelper(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
//Get post ID
|
||||
mPostID = getArguments().getInt(ARGUMENT_POST_ID);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.fragment_single_post, container, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
//Check if the fragment contains information about the post
|
||||
if(mPost == null || mUserInfo == null){
|
||||
getPostInfo();
|
||||
}
|
||||
else
|
||||
onGotPostInfo();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get information about the post and its related users
|
||||
*/
|
||||
private void getPostInfo(){
|
||||
|
||||
//Perform the request in the background
|
||||
new AsyncTask<Integer, Void, Void>(){
|
||||
|
||||
@Override
|
||||
protected Void doInBackground(Integer... params) {
|
||||
|
||||
//Intend to get information about the post
|
||||
mPost = mPostsHelper.getSingle(params[0]);
|
||||
|
||||
if(mPost != null) {
|
||||
mPostsList = new PostsList();
|
||||
mPostsList.add(mPost);
|
||||
mUserInfo = mGetUserHelper.getMultiple(mPostsList.getUsersId());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Void aVoid) {
|
||||
|
||||
if(getActivity() == null)
|
||||
return;
|
||||
|
||||
onGotPostInfo();
|
||||
}
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mPostID);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is triggered once we got informations about the post
|
||||
*/
|
||||
private void onGotPostInfo(){
|
||||
|
||||
//Check if we did not get post information
|
||||
if(mPost == null){
|
||||
Toast.makeText(getActivity(), R.string.err_get_post_info, Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
//Check if we could not get user information
|
||||
if(mUserInfo == null){
|
||||
Toast.makeText(getActivity(), R.string.err_get_users_info, Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
//Apply the post fragment
|
||||
PostsListFragment postsListFragment = new PostsListFragment();
|
||||
postsListFragment.setPostsList(mPostsList);
|
||||
postsListFragment.setUsersInfos(mUserInfo);
|
||||
|
||||
//Create and commit a transaction
|
||||
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
|
||||
transaction.replace(R.id.posts_list_target, postsListFragment);
|
||||
transaction.commit();
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package org.communiquons.android.comunic.client.ui.listeners;
|
||||
|
||||
/**
|
||||
* This interface must be implemented by all the activities that can open post
|
||||
*
|
||||
* @author Pierre HUBERT
|
||||
* Created by pierre on 4/12/18.
|
||||
*/
|
||||
|
||||
public interface onPostOpenListener {
|
||||
|
||||
/**
|
||||
* This method is triggered when a request to open a single post is made
|
||||
*
|
||||
* @param postID The ID of the post to open
|
||||
*/
|
||||
void onOpenPost(int postID);
|
||||
|
||||
}
|
11
app/src/main/res/layout/fragment_single_post.xml
Normal file
11
app/src/main/res/layout/fragment_single_post.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical" android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/posts_list_target"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
</LinearLayout>
|
@ -172,4 +172,5 @@
|
||||
<string name="button_accept_friend_request">Accept request</string>
|
||||
<string name="button_reject_friend_request">Reject request</string>
|
||||
<string name="err_get_friendship_status">An error occurred while retrieving friendship status!</string>
|
||||
<string name="err_get_post_info">An error occurred while trying to get post information!</string>
|
||||
</resources>
|
||||
|
Loading…
Reference in New Issue
Block a user