mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-23 13:59:29 +00:00
Display user posts
This commit is contained in:
parent
0c7c2cbead
commit
483cf40cec
@ -1,6 +1,7 @@
|
||||
package org.communiquons.android.comunic.client.data.helpers;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import org.communiquons.android.comunic.client.data.models.APIFileRequest;
|
||||
@ -44,8 +45,8 @@ public class PostsHelper {
|
||||
*
|
||||
* @param context The context of the application
|
||||
*/
|
||||
public PostsHelper(Context context){
|
||||
mContext = context;
|
||||
public PostsHelper(@NonNull Context context){
|
||||
mContext = context.getApplicationContext();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -137,8 +137,6 @@ public class UserPageFragment extends Fragment {
|
||||
}
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mUserID);
|
||||
}
|
||||
else
|
||||
onGotUserInfo(userInfo);
|
||||
|
||||
}
|
||||
|
||||
@ -192,7 +190,9 @@ public class UserPageFragment extends Fragment {
|
||||
R.string.tab_user_advanced_info));
|
||||
|
||||
//Posts fragment
|
||||
adapter.addFragment(new Fragment(), UiUtils.getString(getActivity(),
|
||||
UserPostsFragment postsFragment = new UserPostsFragment();
|
||||
postsFragment.setAdvancedUserInfo(userInfo);
|
||||
adapter.addFragment(postsFragment, UiUtils.getString(getActivity(),
|
||||
R.string.tab_posts));
|
||||
|
||||
|
||||
|
@ -0,0 +1,222 @@
|
||||
package org.communiquons.android.comunic.client.ui.fragments;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.util.ArrayMap;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.FrameLayout;
|
||||
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.AdvancedUserInfo;
|
||||
import org.communiquons.android.comunic.client.data.models.Post;
|
||||
import org.communiquons.android.comunic.client.data.models.UserInfo;
|
||||
|
||||
/**
|
||||
* User posts fragment
|
||||
*
|
||||
* @author Pierre HUBERT
|
||||
*/
|
||||
public class UserPostsFragment extends Fragment
|
||||
implements PostsCreateFormFragment.OnPostCreated {
|
||||
|
||||
/**
|
||||
* Information about the user
|
||||
*/
|
||||
private AdvancedUserInfo mAdvancedUserInfo;
|
||||
|
||||
/**
|
||||
* The list of posts of the user
|
||||
*/
|
||||
private PostsList mPostsList;
|
||||
|
||||
/**
|
||||
* Information about the related users
|
||||
*/
|
||||
private ArrayMap<Integer, UserInfo> mUsersInfo;
|
||||
|
||||
/**
|
||||
* Post loading thread
|
||||
*/
|
||||
private Thread mLoadThread;
|
||||
|
||||
/**
|
||||
* Posts helper
|
||||
*/
|
||||
private PostsHelper mPostsHelper;
|
||||
|
||||
/**
|
||||
* User information helper
|
||||
*/
|
||||
private GetUsersHelper mUserHelper;
|
||||
|
||||
/**
|
||||
* Create post button
|
||||
*/
|
||||
private Button mCreatePostButton;
|
||||
|
||||
/**
|
||||
* Create post layout
|
||||
*/
|
||||
private FrameLayout mCreatePostLayout;
|
||||
|
||||
/**
|
||||
* Posts list fragment
|
||||
*/
|
||||
private PostsListFragment mPostsListFragment;
|
||||
|
||||
/**
|
||||
* Specify advanced user information
|
||||
*
|
||||
* Warning ! This method must absolutely be called before the fragment
|
||||
* is attached to an activity !
|
||||
*
|
||||
* @param advancedUserInfo Information about the user
|
||||
*/
|
||||
public void setAdvancedUserInfo(AdvancedUserInfo advancedUserInfo) {
|
||||
this.mAdvancedUserInfo = advancedUserInfo;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.fragment_postswithform, container, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
if(mAdvancedUserInfo == null)
|
||||
return;
|
||||
|
||||
//Get the views
|
||||
mCreatePostButton = view.findViewById(R.id.create_post_btn);
|
||||
mCreatePostLayout = view.findViewById(R.id.create_posts_form_target);
|
||||
|
||||
mCreatePostButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
//Invert form visibility
|
||||
setPostFormVisibility(mCreatePostLayout.getVisibility() != View.VISIBLE);
|
||||
}
|
||||
});
|
||||
|
||||
//Initialize helpers
|
||||
mPostsHelper = new PostsHelper(getActivity());
|
||||
mUserHelper = new GetUsersHelper(getActivity());
|
||||
|
||||
//Add create post fragment, if possible
|
||||
if(mAdvancedUserInfo.isCanPostText())
|
||||
init_create_post_fragment();
|
||||
else
|
||||
mCreatePostButton.setVisibility(View.GONE);
|
||||
|
||||
//Load user posts
|
||||
mPostsList = new PostsList();
|
||||
load_posts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Load user posts
|
||||
*/
|
||||
private void load_posts(){
|
||||
|
||||
mLoadThread = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
//Get the list of posts of the user
|
||||
mPostsList.addAll(mPostsHelper.get_user(mAdvancedUserInfo.getId()));
|
||||
|
||||
if(mPostsList != null)
|
||||
mUsersInfo = mUserHelper.getMultiple(mPostsList.getUsersId());
|
||||
|
||||
if(getActivity() != null)
|
||||
display_posts();
|
||||
}
|
||||
});
|
||||
mLoadThread.start();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the list of posts
|
||||
*/
|
||||
private void display_posts(){
|
||||
|
||||
//Check for errors
|
||||
if(mPostsList == null){
|
||||
Toast.makeText(getActivity(), R.string.err_get_user_posts, Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
//Check we didn't get user information
|
||||
if(mUsersInfo == null){
|
||||
Toast.makeText(getActivity(), R.string.err_get_users_info, Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
mPostsListFragment = new PostsListFragment();
|
||||
mPostsListFragment.setPostsList(mPostsList);
|
||||
mPostsListFragment.setUsersInfos(mUsersInfo);
|
||||
|
||||
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
|
||||
transaction.replace(R.id.posts_list_target, mPostsListFragment);
|
||||
transaction.commit();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and create post fragment
|
||||
*/
|
||||
private void init_create_post_fragment(){
|
||||
|
||||
//Can not perform a transaction if the state has been saved
|
||||
if(isStateSaved())
|
||||
return;
|
||||
|
||||
//Create bundle
|
||||
Bundle args = new Bundle();
|
||||
args.putInt(PostsCreateFormFragment.PAGE_TYPE_ARG, PostsCreateFormFragment.PAGE_TYPE_USER);
|
||||
args.putInt(PostsCreateFormFragment.PAGE_ID_ARG, mAdvancedUserInfo.getId());
|
||||
|
||||
//Create fragment
|
||||
PostsCreateFormFragment fragment = new PostsCreateFormFragment();
|
||||
fragment.setArguments(args);
|
||||
fragment.setOnPostCreatedListener(this);
|
||||
|
||||
//Perform transaction
|
||||
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
|
||||
transaction.replace(R.id.create_posts_form_target, fragment);
|
||||
transaction.commit();
|
||||
|
||||
//Hide the post form by default
|
||||
setPostFormVisibility(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update post creation form visibility
|
||||
*
|
||||
* @param visible New visibility
|
||||
*/
|
||||
private void setPostFormVisibility(boolean visible){
|
||||
mCreatePostLayout.setVisibility(visible ? View.VISIBLE : View.GONE);
|
||||
mCreatePostButton.setActivated(visible);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostCreated(Post post) {
|
||||
mPostsList = new PostsList();
|
||||
load_posts();
|
||||
init_create_post_fragment();
|
||||
}
|
||||
}
|
29
app/src/main/res/layout/fragment_postswithform.xml
Normal file
29
app/src/main/res/layout/fragment_postswithform.xml
Normal file
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:orientation="vertical">
|
||||
|
||||
<Button
|
||||
android:id="@+id/create_post_btn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/action_create_post"/>
|
||||
|
||||
<!-- Posts form target -->
|
||||
<FrameLayout
|
||||
android:id="@+id/create_posts_form_target"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout="@layout/post_create_form" />
|
||||
|
||||
<!-- Posts target -->
|
||||
<FrameLayout
|
||||
android:id="@+id/posts_list_target"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
tools:layout="@layout/fragment_postslist"/>
|
||||
|
||||
</LinearLayout>
|
@ -195,4 +195,5 @@
|
||||
<string name="tab_user_advanced_info">User Info</string>
|
||||
<string name="tab_posts">Posts</string>
|
||||
<string name="member_for">Member for</string>
|
||||
<string name="action_create_post">Create a new post</string>
|
||||
</resources>
|
||||
|
Loading…
Reference in New Issue
Block a user