diff --git a/src/com/b44t/messenger/DcContext.java b/src/com/b44t/messenger/DcContext.java index 11f27fc98..3aec4e7ec 100644 --- a/src/com/b44t/messenger/DcContext.java +++ b/src/com/b44t/messenger/DcContext.java @@ -38,6 +38,7 @@ public class DcContext { public final static int DC_GCL_ARCHIVED_ONLY = 0x01; public final static int DC_GCL_NO_SPECIALS = 0x02; public final static int DC_GCL_ADD_ALLDONE_HINT = 0x04; + public final static int DC_GCL_FOR_FORWARDING = 0x08; public final static int DC_GCM_ADDDAYMARKER = 0x01; diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java index 9c2967be5..ae1c747e1 100644 --- a/src/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationActivity.java @@ -603,18 +603,22 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity private void handleForwarding() { DcChat dcChat = dcContext.getChat(chatId); - String name = dcChat.getName(); - if( !dcChat.isGroup() ) { - int[] contactIds = dcContext.getChatContacts(chatId); - if( contactIds.length==1 || contactIds.length==2 ) { - name = dcContext.getContact(contactIds[0]).getNameNAddr(); + if (dcChat.isSelfTalk()) { + new RelayingTask(this, chatId).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } else { + String name = dcChat.getName(); + if (!dcChat.isGroup()) { + int[] contactIds = dcContext.getChatContacts(chatId); + if (contactIds.length == 1 || contactIds.length == 2) { + name = dcContext.getContact(contactIds[0]).getNameNAddr(); + } } + new AlertDialog.Builder(this) + .setMessage(getString(R.string.ask_forward, name)) + .setPositiveButton(R.string.ok, (dialogInterface, i) -> new RelayingTask(this, chatId).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)) + .setNegativeButton(R.string.cancel, (dialogInterface, i) -> finish()) + .show(); } - new AlertDialog.Builder(this) - .setMessage(getString(R.string.ask_forward, name)) - .setPositiveButton(R.string.ok, (dialogInterface, i) -> new RelayingTask(this, chatId).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)) - .setNegativeButton(R.string.cancel, (dialogInterface, i) -> finish()) - .show(); } private void handleSharing() { diff --git a/src/org/thoughtcrime/securesms/ConversationListActivity.java b/src/org/thoughtcrime/securesms/ConversationListActivity.java index 2fe7076ee..2327840cc 100644 --- a/src/org/thoughtcrime/securesms/ConversationListActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationListActivity.java @@ -90,7 +90,10 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit searchToolbar = findViewById(R.id.search_toolbar); searchAction = findViewById(R.id.search_action); fragmentContainer = findViewById(R.id.fragment_container); - conversationListFragment = initFragment(R.id.fragment_container, new ConversationListFragment(), dynamicLanguage.getCurrentLocale()); + + Bundle bundle = new Bundle(); + bundle.putBoolean(ConversationListFragment.FORWARDING, isForwarding(this)); + conversationListFragment = initFragment(R.id.fragment_container, new ConversationListFragment(), dynamicLanguage.getCurrentLocale(), bundle); initializeSearchListener(); diff --git a/src/org/thoughtcrime/securesms/ConversationListFragment.java b/src/org/thoughtcrime/securesms/ConversationListFragment.java index fe44ea1ba..e86eb7e65 100644 --- a/src/org/thoughtcrime/securesms/ConversationListFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationListFragment.java @@ -80,6 +80,7 @@ public class ConversationListFragment extends Fragment implements LoaderManager.LoaderCallbacks, ActionMode.Callback, ItemClickListener, DcEventCenter.DcEventDelegate { public static final String ARCHIVE = "archive"; + public static final String FORWARDING = "for_forwarding"; @SuppressWarnings("unused") private static final String TAG = ConversationListFragment.class.getSimpleName(); @@ -93,12 +94,14 @@ public class ConversationListFragment extends Fragment private Locale locale; private String queryFilter = ""; private boolean archive; + private boolean forwarding; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); locale = (Locale) getArguments().getSerializable(PassphraseRequiredActionBarActivity.LOCALE_EXTRA); archive = getArguments().getBoolean(ARCHIVE, false); + forwarding = getArguments().getBoolean(FORWARDING, false); ApplicationDcContext dcContext = DcHelper.getContext(getActivity()); dcContext.eventCenter.addObserver(DcContext.DC_EVENT_CHAT_MODIFIED, this); @@ -347,10 +350,11 @@ public class ConversationListFragment extends Fragment @Override public Loader onCreateLoader(int arg0, Bundle arg1) { int listflags = 0; - if(archive) { + if (archive) { listflags |= DcContext.DC_GCL_ARCHIVED_ONLY; - } - else { + } else if (forwarding) { + listflags |= DcContext.DC_GCL_FOR_FORWARDING; + } else { listflags |= DcContext.DC_GCL_ADD_ALLDONE_HINT; } return new DcChatlistLoader(getActivity(), listflags, queryFilter.isEmpty()? null : queryFilter, 0);