mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-12-26 13:38:59 +00:00
Improved conversation messages sending system
This commit is contained in:
parent
a78594772a
commit
06ce085636
@ -10,6 +10,7 @@ import org.communiquons.android.comunic.client.data.models.APIPostFile;
|
||||
import org.communiquons.android.comunic.client.data.models.APIRequest;
|
||||
import org.communiquons.android.comunic.client.data.models.APIResponse;
|
||||
import org.communiquons.android.comunic.client.data.models.ConversationMessage;
|
||||
import org.communiquons.android.comunic.client.data.models.NewConversationMessage;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
@ -92,31 +93,29 @@ public class ConversationMessagesHelper {
|
||||
/**
|
||||
* Send a new message to the conversation
|
||||
*
|
||||
* @param convID Target conversation ID
|
||||
* @param message The message to send
|
||||
* @param image Image to include with the request, as bitmap (can be null)
|
||||
* @param message Information about the message to send
|
||||
* @return true in case of success / false else
|
||||
*/
|
||||
public boolean sendMessage(int convID, String message, @Nullable Bitmap image){
|
||||
public boolean sendMessage(NewConversationMessage message){
|
||||
|
||||
//Make an API request
|
||||
APIFileRequest params = new APIFileRequest(mContext,
|
||||
"conversations/sendMessage");
|
||||
params.addString("conversationID", ""+convID);
|
||||
params.addString("message", message);
|
||||
params.addInt("conversationID", message.getConversationID());
|
||||
params.addString("message", message.getMessage());
|
||||
|
||||
//Include image (if any)
|
||||
if(image != null) {
|
||||
if(message.hasImage()) {
|
||||
APIPostFile file = new APIPostFile();
|
||||
file.setFieldName("image");
|
||||
file.setFileName("conversationImage.png");
|
||||
file.setBitmap(image);
|
||||
file.setBitmap(message.getImage());
|
||||
params.addFile(file);
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
if(image != null){
|
||||
if(message.hasImage()){
|
||||
//Perform a POST request
|
||||
new APIRequestHelper().execPostFile(params);
|
||||
}
|
||||
|
@ -0,0 +1,44 @@
|
||||
package org.communiquons.android.comunic.client.data.models;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
|
||||
/**
|
||||
* New conversation message information
|
||||
*
|
||||
* @author Pierre HUBERT
|
||||
*/
|
||||
public class NewConversationMessage {
|
||||
|
||||
//Private fields
|
||||
private int conversationID;
|
||||
private String message;
|
||||
private Bitmap image;
|
||||
|
||||
public int getConversationID() {
|
||||
return conversationID;
|
||||
}
|
||||
|
||||
public void setConversationID(int conversationID) {
|
||||
this.conversationID = conversationID;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public Bitmap getImage() {
|
||||
return image;
|
||||
}
|
||||
|
||||
public boolean hasImage(){
|
||||
return image != null;
|
||||
}
|
||||
|
||||
public void setImage(Bitmap image) {
|
||||
this.image = image;
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package org.communiquons.android.comunic.client.ui.asynctasks;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import org.communiquons.android.comunic.client.data.helpers.ConversationMessagesHelper;
|
||||
import org.communiquons.android.comunic.client.data.models.NewConversationMessage;
|
||||
|
||||
/**
|
||||
* Send conversation message task
|
||||
*
|
||||
* @author Pierre HUBERT
|
||||
*/
|
||||
public class SendConversationMessageTask extends SafeAsyncTask<NewConversationMessage, Void, Boolean> {
|
||||
|
||||
public SendConversationMessageTask(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean doInBackground(NewConversationMessage... newConversationMessages) {
|
||||
return new ConversationMessagesHelper(getContext()).sendMessage(newConversationMessages[0]);
|
||||
}
|
||||
}
|
@ -26,6 +26,7 @@ import android.widget.Toast;
|
||||
|
||||
import org.communiquons.android.comunic.client.R;
|
||||
import org.communiquons.android.comunic.client.data.arrays.ConversationMessagesList;
|
||||
import org.communiquons.android.comunic.client.data.models.NewConversationMessage;
|
||||
import org.communiquons.android.comunic.client.ui.asynctasks.SafeAsyncTask;
|
||||
import org.communiquons.android.comunic.client.data.helpers.ConversationMessagesHelper;
|
||||
import org.communiquons.android.comunic.client.data.helpers.ConversationsListHelper;
|
||||
@ -39,6 +40,7 @@ import org.communiquons.android.comunic.client.data.utils.AccountUtils;
|
||||
import org.communiquons.android.comunic.client.ui.activities.MainActivity;
|
||||
import org.communiquons.android.comunic.client.ui.adapters.ConversationMessageAdapter;
|
||||
import org.communiquons.android.comunic.client.ui.asynctasks.DeleteConversationMessageTask;
|
||||
import org.communiquons.android.comunic.client.ui.asynctasks.SendConversationMessageTask;
|
||||
import org.communiquons.android.comunic.client.ui.asynctasks.UpdateConversationMessageContentTask;
|
||||
import org.communiquons.android.comunic.client.ui.listeners.OnConversationMessageActionsListener;
|
||||
import org.communiquons.android.comunic.client.ui.listeners.OnScrollChangeDetectListener;
|
||||
@ -194,6 +196,7 @@ public class ConversationFragment extends Fragment
|
||||
/**
|
||||
* Safe AsyncTasks
|
||||
*/
|
||||
private SendConversationMessageTask mSendConversationMessageTask;
|
||||
private DeleteConversationMessageTask mDeleteMessageAsyncTask;
|
||||
private UpdateConversationMessageContentTask mUpdateConversationMessageContentTask;
|
||||
|
||||
@ -397,6 +400,7 @@ public class ConversationFragment extends Fragment
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
unsetSendMessageTask();
|
||||
unsetPendingDeleteTasksCallback();
|
||||
unsetPendingUpdatedTasksCallbacks();
|
||||
}
|
||||
@ -601,7 +605,7 @@ public class ConversationFragment extends Fragment
|
||||
private void send_message(){
|
||||
|
||||
//Check message length
|
||||
if(new_message_content.length() < 3 && new_message_bitmap == null){
|
||||
if(new_message_content.length() < 2 && new_message_bitmap == null){
|
||||
Toast.makeText(getActivity(), R.string.conversation_message_err_too_short,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
@ -612,22 +616,31 @@ public class ConversationFragment extends Fragment
|
||||
new_message_progress_bar.setVisibility(View.VISIBLE);
|
||||
|
||||
//Get the message content
|
||||
final String message_content = new_message_content.getText()+"";
|
||||
String message_content = new_message_content.getText()+"";
|
||||
|
||||
if(message_content.length() < 3 && new_message_bitmap == null)
|
||||
message_content += " ";
|
||||
|
||||
NewConversationMessage newMessage = new NewConversationMessage();
|
||||
newMessage.setConversationID(conversation_id);
|
||||
newMessage.setMessage(message_content);
|
||||
newMessage.setImage(new_message_bitmap);
|
||||
|
||||
//Send the message
|
||||
new AsyncTask<Void, Void, Boolean>(){
|
||||
|
||||
unsetSendMessageTask();
|
||||
mSendConversationMessageTask = new SendConversationMessageTask(getActivity());
|
||||
mSendConversationMessageTask.setOnPostExecuteListener(new SafeAsyncTask.OnPostExecuteListener<Boolean>() {
|
||||
@Override
|
||||
protected Boolean doInBackground(Void... params) {
|
||||
return convMessHelper.sendMessage(conversation_id,
|
||||
message_content, new_message_bitmap);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Boolean success) {
|
||||
public void OnPostExecute(Boolean success) {
|
||||
send_callback(success);
|
||||
}
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
});
|
||||
mSendConversationMessageTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, newMessage);
|
||||
}
|
||||
|
||||
private void unsetSendMessageTask(){
|
||||
if(mSendConversationMessageTask != null)
|
||||
mSendConversationMessageTask.setOnPostExecuteListener(null);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user