mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-30 09:16:36 +00:00
Can create conversations
This commit is contained in:
parent
703142df5b
commit
9c06507d0c
@ -183,6 +183,43 @@ public class ConversationsListHelper {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new conversation
|
||||
*
|
||||
* @param name The name of the conversation
|
||||
* @param follow True to make the user follow the conversation
|
||||
* @param members The members of the conversation
|
||||
* @return The ID of the created conversation / null in case of failure
|
||||
*/
|
||||
@Nullable
|
||||
public Integer create(String name, boolean follow, ArrayList<Integer> members){
|
||||
|
||||
//Turn the list of members into a string
|
||||
String members_str = "";
|
||||
for(int id : members){
|
||||
members_str += id + ",";
|
||||
}
|
||||
|
||||
//Make an API request
|
||||
APIRequestParameters params = new APIRequestParameters(mContext, "conversations/create");
|
||||
params.addParameter("name", name.equals("") ? "false" : name);
|
||||
params.addParameter("follow", follow ? "true" : "false");
|
||||
params.addParameter("users", members_str);
|
||||
|
||||
//Perform the request
|
||||
try {
|
||||
APIResponse response = new APIRequest().exec(params);
|
||||
|
||||
//Get conversation ID
|
||||
JSONObject obj = response.getJSONObject();
|
||||
return obj.getInt("conversationID");
|
||||
|
||||
} catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get online (download) the list of all the conversations
|
||||
*
|
||||
|
@ -24,6 +24,7 @@ import org.communiquons.android.comunic.client.data.DatabaseHelper;
|
||||
import org.communiquons.android.comunic.client.data.UsersInfo.GetUsersHelper;
|
||||
import org.communiquons.android.comunic.client.data.UsersInfo.UserInfo;
|
||||
import org.communiquons.android.comunic.client.data.UsersInfo.UsersAsysncInfoAdapter;
|
||||
import org.communiquons.android.comunic.client.data.conversations.ConversationsListHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@ -96,6 +97,16 @@ public class UpdateConversationFragment extends Fragment {
|
||||
*/
|
||||
private GetUsersHelper usersHelper;
|
||||
|
||||
/**
|
||||
* Conversations list helper
|
||||
*/
|
||||
private ConversationsListHelper convListHelper;
|
||||
|
||||
/**
|
||||
* Conversation opener
|
||||
*/
|
||||
private ConversationsListHelper.openConversationListener convOpener;
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -105,6 +116,17 @@ public class UpdateConversationFragment extends Fragment {
|
||||
|
||||
//Get User helper
|
||||
usersHelper = new GetUsersHelper(getActivity(), dbHelper);
|
||||
|
||||
//Get conversation list helper
|
||||
convListHelper = new ConversationsListHelper(getActivity(), dbHelper);
|
||||
|
||||
//Get conversation opener
|
||||
try {
|
||||
convOpener = (ConversationsListHelper.openConversationListener) getActivity();
|
||||
} catch (ClassCastException e){
|
||||
throw new RuntimeException(getActivity().getClass().getName() + " must implement the" +
|
||||
" ConversationsListHelper.openConversationListener interface !");
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@ -133,6 +155,14 @@ public class UpdateConversationFragment extends Fragment {
|
||||
}
|
||||
});
|
||||
|
||||
//Make submit button lives
|
||||
submitButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
submit_form();
|
||||
}
|
||||
});
|
||||
|
||||
//Initialize the form
|
||||
init_form();
|
||||
|
||||
@ -261,6 +291,64 @@ public class UpdateConversationFragment extends Fragment {
|
||||
membersAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
* Submit creation form
|
||||
*/
|
||||
private void submit_form(){
|
||||
|
||||
//Check there is at least on member to the conversation
|
||||
if(membersID.size() == 0){
|
||||
Toast.makeText(getActivity(), R.string.err_conversation_need_members,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
//Get the values
|
||||
final String name = ""+nameView.getText();
|
||||
final boolean following = followCheckbox.isChecked();
|
||||
|
||||
//Block the form
|
||||
set_form_blocked(true);
|
||||
set_progressbar_visibility(true);
|
||||
|
||||
//Create the task in the background
|
||||
new AsyncTask<Void, Void, Integer>(){
|
||||
|
||||
@Override
|
||||
protected Integer doInBackground(Void... params) {
|
||||
return convListHelper.create(name, following, membersID);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Integer integer) {
|
||||
if(getActivity() != null)
|
||||
creationCallback(integer);
|
||||
}
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called once the conversation has been created (or not)
|
||||
*
|
||||
* @param convID The ID of the target conversation
|
||||
*/
|
||||
private void creationCallback(@Nullable Integer convID){
|
||||
|
||||
//Check for errors
|
||||
if(convID == null){
|
||||
Toast.makeText(getActivity(), R.string.err_conversation_create,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
|
||||
//Release form
|
||||
set_form_blocked(false);
|
||||
set_progressbar_visibility(false);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//Open conversation
|
||||
convOpener.openConversation(convID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update progressbar visibility
|
||||
*
|
||||
@ -269,4 +357,16 @@ public class UpdateConversationFragment extends Fragment {
|
||||
private void set_progressbar_visibility(boolean visible){
|
||||
progressBar.setVisibility(visible ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Make the fields of the form read only or read and write
|
||||
*
|
||||
* @param blocked Specify whether the fields should be blocked or not
|
||||
*/
|
||||
private void set_form_blocked(boolean blocked){
|
||||
nameView.setEnabled(!blocked);
|
||||
submitButton.setEnabled(!blocked);
|
||||
addMember.setEnabled(!blocked);
|
||||
followCheckbox.setEnabled(!blocked);
|
||||
}
|
||||
}
|
||||
|
@ -46,7 +46,8 @@
|
||||
android:id="@+id/fragment_update_conversation_follow"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/fragment_update_conversation_follow"/>
|
||||
android:text="@string/fragment_update_conversation_follow"
|
||||
android:checked="true" /> <!-- Checked by default -->
|
||||
|
||||
<!-- Create the conversation -->
|
||||
<Button
|
||||
|
@ -84,4 +84,6 @@
|
||||
<string name="err_search_user">Could not search user !</string>
|
||||
<string name="err_add_member_double">This user is already a member of the conversation!</string>
|
||||
<string name="err_get_users_info">Could not get information about users !</string>
|
||||
<string name="err_conversation_need_members">Please add at least one member to the conversation !</string>
|
||||
<string name="err_conversation_create">Could not create conversation !</string>
|
||||
</resources>
|
||||
|
Loading…
Reference in New Issue
Block a user