mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-17 15:28:25 +00:00
Allow to resend a failed message
Add an option to the context menu of the message to resend it if it has failed.
This commit is contained in:
parent
1c8f8666ba
commit
04eafd5fab
@ -11,4 +11,8 @@
|
|||||||
|
|
||||||
<item android:title="@string/conversation_context__menu_forward_message"
|
<item android:title="@string/conversation_context__menu_forward_message"
|
||||||
android:id="@+id/menu_context_forward" />
|
android:id="@+id/menu_context_forward" />
|
||||||
|
|
||||||
|
<item android:title="@string/conversation_context__menu_resend_message"
|
||||||
|
android:id="@+id/menu_context_resend"
|
||||||
|
android:visible="false" />
|
||||||
</menu>
|
</menu>
|
||||||
|
@ -496,6 +496,7 @@
|
|||||||
<string name="conversation_context__menu_copy_text">Copy text</string>
|
<string name="conversation_context__menu_copy_text">Copy text</string>
|
||||||
<string name="conversation_context__menu_delete_message">Delete message</string>
|
<string name="conversation_context__menu_delete_message">Delete message</string>
|
||||||
<string name="conversation_context__menu_forward_message">Forward message</string>
|
<string name="conversation_context__menu_forward_message">Forward message</string>
|
||||||
|
<string name="conversation_context__menu_resend_message">Resend message</string>
|
||||||
|
|
||||||
<!-- conversation_insecure -->
|
<!-- conversation_insecure -->
|
||||||
<string name="conversation_insecure__menu_start_secure_session">Start Secure Session</string>
|
<string name="conversation_insecure__menu_start_secure_session">Start Secure Session</string>
|
||||||
|
@ -12,6 +12,7 @@ import android.support.v4.app.LoaderManager;
|
|||||||
import android.support.v4.content.Loader;
|
import android.support.v4.content.Loader;
|
||||||
import android.text.ClipboardManager;
|
import android.text.ClipboardManager;
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
|
import android.view.MenuItem;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -24,6 +25,7 @@ import org.thoughtcrime.securesms.database.DatabaseFactory;
|
|||||||
import org.thoughtcrime.securesms.database.loaders.ConversationLoader;
|
import org.thoughtcrime.securesms.database.loaders.ConversationLoader;
|
||||||
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
||||||
import org.thoughtcrime.securesms.recipients.Recipients;
|
import org.thoughtcrime.securesms.recipients.Recipients;
|
||||||
|
import org.thoughtcrime.securesms.sms.MessageSender;
|
||||||
|
|
||||||
import java.sql.Date;
|
import java.sql.Date;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
@ -58,19 +60,23 @@ public class ConversationFragment extends SherlockListFragment
|
|||||||
menu.clear();
|
menu.clear();
|
||||||
|
|
||||||
inflater.inflate(R.menu.conversation_context, menu);
|
inflater.inflate(R.menu.conversation_context, menu);
|
||||||
|
|
||||||
|
MessageRecord messageRecord = getMessageRecord();
|
||||||
|
if (messageRecord.isFailed()) {
|
||||||
|
MenuItem resend = menu.findItem(R.id.menu_context_resend);
|
||||||
|
resend.setVisible(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onContextItemSelected(android.view.MenuItem item) {
|
public boolean onContextItemSelected(android.view.MenuItem item) {
|
||||||
Cursor cursor = ((CursorAdapter)getListAdapter()).getCursor();
|
MessageRecord messageRecord = getMessageRecord();
|
||||||
ConversationItem conversationItem = (ConversationItem)(((ConversationAdapter)getListAdapter()).newView(getActivity(), cursor, null));
|
|
||||||
MessageRecord messageRecord = conversationItem.getMessageRecord();
|
|
||||||
|
|
||||||
switch(item.getItemId()) {
|
switch(item.getItemId()) {
|
||||||
case R.id.menu_context_copy: handleCopyMessage(messageRecord); return true;
|
case R.id.menu_context_copy: handleCopyMessage(messageRecord); return true;
|
||||||
case R.id.menu_context_delete_message: handleDeleteMessage(messageRecord); return true;
|
case R.id.menu_context_delete_message: handleDeleteMessage(messageRecord); return true;
|
||||||
case R.id.menu_context_details: handleDisplayDetails(messageRecord); return true;
|
case R.id.menu_context_details: handleDisplayDetails(messageRecord); return true;
|
||||||
case R.id.menu_context_forward: handleForwardMessage(messageRecord); return true;
|
case R.id.menu_context_forward: handleForwardMessage(messageRecord); return true;
|
||||||
|
case R.id.menu_context_resend: handleResendMessage(messageRecord); return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -82,6 +88,12 @@ public class ConversationFragment extends SherlockListFragment
|
|||||||
this.listener = (ConversationFragmentListener)activity;
|
this.listener = (ConversationFragmentListener)activity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private MessageRecord getMessageRecord() {
|
||||||
|
Cursor cursor = ((CursorAdapter)getListAdapter()).getCursor();
|
||||||
|
ConversationItem conversationItem = (ConversationItem)(((ConversationAdapter)getListAdapter()).newView(getActivity(), cursor, null));
|
||||||
|
return conversationItem.getMessageRecord();
|
||||||
|
}
|
||||||
|
|
||||||
public void reload(Recipients recipients, long threadId) {
|
public void reload(Recipients recipients, long threadId) {
|
||||||
this.recipients = recipients;
|
this.recipients = recipients;
|
||||||
this.threadId = threadId;
|
this.threadId = threadId;
|
||||||
@ -158,6 +170,12 @@ public class ConversationFragment extends SherlockListFragment
|
|||||||
startActivity(composeIntent);
|
startActivity(composeIntent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void handleResendMessage(MessageRecord message) {
|
||||||
|
long messageId = message.getId();
|
||||||
|
final Activity activity = getActivity();
|
||||||
|
MessageSender.resend(activity, messageId, message.isMms());
|
||||||
|
}
|
||||||
|
|
||||||
private void initializeResources() {
|
private void initializeResources() {
|
||||||
this.masterSecret = (MasterSecret)this.getActivity().getIntent()
|
this.masterSecret = (MasterSecret)this.getActivity().getIntent()
|
||||||
.getParcelableExtra("master_secret");
|
.getParcelableExtra("master_secret");
|
||||||
|
@ -230,6 +230,11 @@ public class MmsDatabase extends Database implements MmsSmsColumns {
|
|||||||
" WHERE " + ID + " = ?", new String[] {id + ""});
|
" WHERE " + ID + " = ?", new String[] {id + ""});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void markAsSending(long messageId) {
|
||||||
|
updateMailboxBitmask(messageId, Types.BASE_TYPE_MASK, Types.BASE_SENDING_TYPE);
|
||||||
|
notifyConversationListeners(getThreadIdForMessage(messageId));
|
||||||
|
}
|
||||||
|
|
||||||
public void markAsSentFailed(long messageId) {
|
public void markAsSentFailed(long messageId) {
|
||||||
updateMailboxBitmask(messageId, Types.BASE_TYPE_MASK, Types.BASE_SENT_FAILED_TYPE);
|
updateMailboxBitmask(messageId, Types.BASE_TYPE_MASK, Types.BASE_SENT_FAILED_TYPE);
|
||||||
notifyConversationListeners(getThreadIdForMessage(messageId));
|
notifyConversationListeners(getThreadIdForMessage(messageId));
|
||||||
|
@ -95,6 +95,23 @@ public class MessageSender {
|
|||||||
return threadId;
|
return threadId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void resend(Context context, long messageId, boolean isMms)
|
||||||
|
{
|
||||||
|
|
||||||
|
Intent intent;
|
||||||
|
if (isMms) {
|
||||||
|
DatabaseFactory.getMmsDatabase(context).markAsSending(messageId);
|
||||||
|
intent = new Intent(SendReceiveService.SEND_MMS_ACTION, null,
|
||||||
|
context, SendReceiveService.class);
|
||||||
|
} else {
|
||||||
|
DatabaseFactory.getSmsDatabase(context).markAsSending(messageId);
|
||||||
|
intent = new Intent(SendReceiveService.SEND_SMS_ACTION, null,
|
||||||
|
context, SendReceiveService.class);
|
||||||
|
}
|
||||||
|
intent.putExtra("message_id", messageId);
|
||||||
|
context.startService(intent);
|
||||||
|
}
|
||||||
|
|
||||||
private static void sendMms(Context context, Recipients recipients, MasterSecret masterSecret,
|
private static void sendMms(Context context, Recipients recipients, MasterSecret masterSecret,
|
||||||
SendReq sendRequest, long threadId, int distributionType, boolean secure)
|
SendReq sendRequest, long threadId, int distributionType, boolean secure)
|
||||||
throws MmsException
|
throws MmsException
|
||||||
|
Loading…
x
Reference in New Issue
Block a user