Fix and improve no quote forward

# Conflicts:
#	TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java
This commit is contained in:
Riko Sakurauchi 2020-05-09 19:59:12 +08:00 committed by NekoInverter
parent 94d3747e3f
commit 902ad01371
No known key found for this signature in database
GPG Key ID: 280D6CCCF95715F9
18 changed files with 80 additions and 18 deletions

View File

@ -259,6 +259,7 @@ public class ApplicationLoader extends Application {
}).addOnFailureListener(e -> {
if (BuildVars.LOGS_ENABLED) {
FileLog.d("Failed to get regid");
FileLog.e(e);
}
SharedConfig.pushStringStatus = "__FIREBASE_FAILED__";
GcmPushListenerService.sendRegistrationToServer(null);

View File

@ -991,6 +991,10 @@ public class SendMessagesHelper extends BaseController implements NotificationCe
}
public void processForwardFromMyName(MessageObject messageObject, long did, boolean nullReply) {
processForwardFromMyName(messageObject, did, nullReply, true, 0);
}
public void processForwardFromMyName(MessageObject messageObject, long did, boolean nullReply, boolean notify, int scheduleDate) {
if (messageObject == null) {
return;
}
@ -1001,22 +1005,22 @@ public class SendMessagesHelper extends BaseController implements NotificationCe
params.put("parentObject", "sent_" + messageObject.messageOwner.to_id.channel_id + "_" + messageObject.getId());
}
if (messageObject.messageOwner.media.photo instanceof TLRPC.TL_photo) {
sendMessage((TLRPC.TL_photo) messageObject.messageOwner.media.photo, null, did, nullReply ? null : messageObject.replyMessageObject, messageObject.messageOwner.message, messageObject.messageOwner.entities, null, params, true, 0, messageObject.messageOwner.media.ttl_seconds, messageObject);
sendMessage((TLRPC.TL_photo) messageObject.messageOwner.media.photo, null, did, nullReply ? null : messageObject.replyMessageObject, messageObject.messageOwner.message, messageObject.messageOwner.entities, null, params, notify, scheduleDate, messageObject.messageOwner.media.ttl_seconds, messageObject);
} else if (messageObject.messageOwner.media.document instanceof TLRPC.TL_document) {
sendMessage((TLRPC.TL_document) messageObject.messageOwner.media.document, null, messageObject.messageOwner.attachPath, did, nullReply ? null : messageObject.replyMessageObject, messageObject.messageOwner.message, messageObject.messageOwner.entities, null, params, true, 0, messageObject.messageOwner.media.ttl_seconds, messageObject);
sendMessage((TLRPC.TL_document) messageObject.messageOwner.media.document, null, messageObject.messageOwner.attachPath, did, nullReply ? null : messageObject.replyMessageObject, messageObject.messageOwner.message, messageObject.messageOwner.entities, null, params, notify, scheduleDate, messageObject.messageOwner.media.ttl_seconds, messageObject);
} else if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaVenue || messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaGeo) {
sendMessage(messageObject.messageOwner.media, did, nullReply ? null : messageObject.replyMessageObject, null, null, true, 0);
sendMessage(messageObject.messageOwner.media, did, nullReply ? null : messageObject.replyMessageObject, null, null, notify, scheduleDate);
} else if (messageObject.messageOwner.media.phone_number != null) {
TLRPC.User user = new TLRPC.TL_userContact_old2();
user.phone = messageObject.messageOwner.media.phone_number;
user.first_name = messageObject.messageOwner.media.first_name;
user.last_name = messageObject.messageOwner.media.last_name;
user.id = messageObject.messageOwner.media.user_id;
sendMessage(user, did, nullReply ? null : messageObject.replyMessageObject, null, null, true, 0);
sendMessage(user, did, nullReply ? null : messageObject.replyMessageObject, null, null, notify, scheduleDate);
} else if ((int) did != 0) {
ArrayList<MessageObject> arrayList = new ArrayList<>();
arrayList.add(messageObject);
sendMessage(arrayList, did, true, 0);
sendMessage(arrayList, did, notify, scheduleDate);
}
} else if (messageObject.messageOwner.message != null) {
TLRPC.WebPage webPage = null;
@ -1039,11 +1043,11 @@ public class SendMessagesHelper extends BaseController implements NotificationCe
} else {
entities = null;
}
sendMessage(messageObject.messageOwner.message, did, nullReply ? null : messageObject.replyMessageObject, webPage, true, entities, null, null, true, 0);
sendMessage(messageObject.messageOwner.message, did, nullReply ? null : messageObject.replyMessageObject, webPage, true, entities, null, null, notify, scheduleDate);
} else if ((int) did != 0) {
ArrayList<MessageObject> arrayList = new ArrayList<>();
arrayList.add(messageObject);
sendMessage(arrayList, did, true, 0);
sendMessage(arrayList, did, notify, scheduleDate);
}
}

View File

@ -877,6 +877,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
int migrated_to = arguments.getInt("migrated_to", 0);
scrollToTopOnResume = arguments.getBoolean("scrollToTopOnResume", false);
needRemovePreviousSameChatActivity = arguments.getBoolean("need_remove_previous_same_chat_activity", true);
noForwardQuote = arguments.getBoolean("forward_noquote", false);
if (chatId != 0) {
currentChat = getMessagesController().getChat(chatId);
@ -1835,8 +1836,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
actionModeViews.add(actionMode.addItemWithWidth(edit, R.drawable.msg_edit, AndroidUtilities.dp(54), LocaleController.getString("Edit", R.string.Edit)));
actionModeViews.add(actionMode.addItemWithWidth(star, R.drawable.msg_fave, AndroidUtilities.dp(54), LocaleController.getString("AddToFavorites", R.string.AddToFavorites)));
actionModeViews.add(actionMode.addItemWithWidth(copy, R.drawable.msg_copy, AndroidUtilities.dp(54), LocaleController.getString("Copy", R.string.Copy)));
actionModeViews.add(actionMode.addItemWithWidth(forward, R.drawable.msg_forward_quote, AndroidUtilities.dp(54), LocaleController.getString("Forward", R.string.Forward)));
actionModeViews.add(actionMode.addItemWithWidth(forward_noquote, R.drawable.msg_forward, AndroidUtilities.dp(54), LocaleController.getString("NoQuoteForward", R.string.NoQuoteForward)));
actionModeViews.add(actionMode.addItemWithWidth(forward_noquote, R.drawable.msg_forward_noquote, AndroidUtilities.dp(54), LocaleController.getString("NoQuoteForward", R.string.NoQuoteForward)));
actionModeViews.add(actionMode.addItemWithWidth(forward, R.drawable.msg_forward, AndroidUtilities.dp(54), LocaleController.getString("Forward", R.string.Forward)));
actionModeViews.add(actionMode.addItemWithWidth(delete, R.drawable.msg_delete, AndroidUtilities.dp(54), LocaleController.getString("Delete", R.string.Delete)));
} else {
actionModeViews.add(actionMode.addItemWithWidth(edit, R.drawable.msg_edit, AndroidUtilities.dp(54), LocaleController.getString("Edit", R.string.Edit)));
@ -7255,7 +7256,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
AlertsCreator.showSendMediaAlert(getSendMessagesHelper().sendMessage(arrayList, did == 0 ? dialog_id : did, notify, scheduleDate), this);
} else {
for (MessageObject object : arrayList) {
getSendMessagesHelper().processForwardFromMyName(object, did == 0 ? dialog_id : did, true);
getSendMessagesHelper().processForwardFromMyName(object, did == 0 ? dialog_id : did, true, notify, scheduleDate);
}
}
}
@ -14229,10 +14230,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
if (!inScheduleMode && !selectedObject.needDrawBluredPreview() && !selectedObject.isLiveLocation() && selectedObject.type != 16) {
items.add(LocaleController.getString("Forward", R.string.Forward));
options.add(2);
icons.add(R.drawable.msg_forward_quote);
icons.add(R.drawable.msg_forward);
items.add(LocaleController.getString("NoQuoteForward", R.string.NoQuoteForward));
options.add(95);
icons.add(R.drawable.msg_forward);
icons.add(R.drawable.msg_forward_noquote);
if (!UserObject.isUserSelf(currentUser) && NekoConfig.showAddToSavedMessages) {
items.add(LocaleController.getString("AddToSavedMessages", R.string.AddToSavedMessages));
options.add(93);
@ -15583,6 +15584,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
int lower_part = (int) did;
int high_part = (int) (did >> 32);
Bundle args = new Bundle();
if (noForwardQuote) {
args.putBoolean("forward_noquote", true);
}
args.putBoolean("scrollToTopOnResume", scrollToTopOnResume);
if (lower_part != 0) {
if (lower_part > 0) {

View File

@ -48,6 +48,7 @@ import org.telegram.messenger.MediaDataController;
import org.telegram.messenger.MessageObject;
import org.telegram.messenger.NotificationCenter;
import org.telegram.messenger.R;
import org.telegram.messenger.SendMessagesHelper;
import org.telegram.messenger.UserObject;
import org.telegram.messenger.Utilities;
import org.telegram.messenger.browser.Browser;
@ -126,6 +127,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter
private MediaPage[] mediaPages = new MediaPage[2];
private ActionBarMenuItem deleteItem;
private ActionBarMenuItem searchItem;
private ActionBarMenuItem forwardNoQuoteItem;
private ActionBarMenuItem forwardItem;
private ActionBarMenuItem gotoItem;
private int searchItemState;
@ -638,6 +640,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter
private SharedMediaPreloader sharedMediaPreloader;
private final static int forward = 100;
private final static int forward_noquote = 1001;
private final static int delete = 101;
private final static int gotochat = 102;
@ -900,6 +903,14 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter
actionModeViews.add(gotoItem);
gotoItem.setOnClickListener(v -> onActionBarItemClick(gotochat));
forwardNoQuoteItem = new ActionBarMenuItem(context, null, Theme.getColor(Theme.key_actionBarActionModeDefaultSelector), Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2), false);
forwardNoQuoteItem.setIcon(R.drawable.msg_forward_noquote);
forwardNoQuoteItem.setContentDescription(LocaleController.getString("NoQuoteForward", R.string.NoQuoteForward));
forwardNoQuoteItem.setDuplicateParentStateEnabled(false);
actionModeLayout.addView(forwardNoQuoteItem, new LinearLayout.LayoutParams(AndroidUtilities.dp(54), ViewGroup.LayoutParams.MATCH_PARENT));
actionModeViews.add(forwardNoQuoteItem);
forwardNoQuoteItem.setOnClickListener(v -> onActionBarItemClick(forward_noquote));
forwardItem = new ActionBarMenuItem(context, null, Theme.getColor(Theme.key_actionBarActionModeDefaultSelector), Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2), false);
forwardItem.setIcon(R.drawable.msg_forward);
forwardItem.setContentDescription(LocaleController.getString("Forward", R.string.Forward));
@ -1508,7 +1519,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter
actionBar.closeSearchField();
cantDeleteMessagesCount = 0;
});
} else if (id == forward) {
} else if (id == forward || id == forward_noquote) {
Bundle args = new Bundle();
args.putBoolean("onlySelect", true);
args.putInt("dialogsType", 3);
@ -1538,7 +1549,13 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter
if (message != null) {
profileActivity.getSendMessagesHelper().sendMessage(message.toString(), did, null, null, true, null, null, null, true, 0);
}
profileActivity.getSendMessagesHelper().sendMessage(fmessages, did, true, 0);
if (id == forward_noquote) {
for (MessageObject object : fmessages) {
profileActivity.getSendMessagesHelper().processForwardFromMyName(object, did, true, true, 0);
}
} else {
profileActivity.getSendMessagesHelper().sendMessage(fmessages, did, true, 0);
}
}
fragment1.finishFragment();
} else {
@ -1546,6 +1563,9 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter
int lower_part = (int) did;
int high_part = (int) (did >> 32);
Bundle args1 = new Bundle();
if (id == forward_noquote) {
args1.putBoolean("forward_noquote", true);
}
args1.putBoolean("scrollToTopOnResume", true);
if (lower_part != 0) {
if (lower_part > 0) {
@ -4110,6 +4130,10 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter
arrayList.add(new ThemeDescription(gotoItem.getIconView(), ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText2));
arrayList.add(new ThemeDescription(gotoItem, ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_actionBarActionModeDefaultSelector));
}
if (forwardNoQuoteItem != null) {
arrayList.add(new ThemeDescription(forwardNoQuoteItem.getIconView(), ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText2));
arrayList.add(new ThemeDescription(forwardNoQuoteItem, ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_actionBarActionModeDefaultSelector));
}
if (forwardItem != null) {
arrayList.add(new ThemeDescription(forwardItem.getIconView(), ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteGrayText2));
arrayList.add(new ThemeDescription(forwardItem, ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_actionBarActionModeDefaultSelector));

View File

@ -271,6 +271,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No
private SharedMediaLayout.SharedMediaData[] sharedMediaData = new SharedMediaLayout.SharedMediaData[6];
private final static int forward = 3;
private final static int forward_noquote = 93;
private final static int delete = 4;
private final static int gotochat = 7;
@ -422,7 +423,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No
actionBar.closeSearchField();
cantDeleteMessagesCount = 0;
});
} else if (id == forward) {
} else if (id == forward || id == forward_noquote) {
Bundle args = new Bundle();
args.putBoolean("onlySelect", true);
args.putInt("dialogsType", 3);
@ -452,7 +453,13 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No
if (message != null) {
SendMessagesHelper.getInstance(currentAccount).sendMessage(message.toString(), did, null, null, true, null, null, null, true, 0);
}
SendMessagesHelper.getInstance(currentAccount).sendMessage(fmessages, did, true, 0);
if (id == forward_noquote) {
for (MessageObject object : fmessages) {
SendMessagesHelper.getInstance(currentAccount).processForwardFromMyName(object, did, true, true, 0);
}
} else {
SendMessagesHelper.getInstance(currentAccount).sendMessage(fmessages, did, true, 0);
}
}
fragment1.finishFragment();
} else {
@ -460,6 +467,9 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No
int lower_part = (int) did;
int high_part = (int) (did >> 32);
Bundle args1 = new Bundle();
if (id == forward_noquote) {
args1.putBoolean("forward_noquote", true);
}
args1.putBoolean("scrollToTopOnResume", true);
if (lower_part != 0) {
if (lower_part > 0) {
@ -654,6 +664,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No
if ((int) dialog_id != 0) {
actionModeViews.add(gotoItem = actionMode.addItemWithWidth(gotochat, R.drawable.msg_message, AndroidUtilities.dp(54), LocaleController.getString("AccDescrGoToMessage", R.string.AccDescrGoToMessage)));
actionModeViews.add(actionMode.addItemWithWidth(forward_noquote, R.drawable.msg_forward_noquote, AndroidUtilities.dp(54), LocaleController.getString("NoQuoteForward", R.string.NoQuoteForward)));
actionModeViews.add(actionMode.addItemWithWidth(forward, R.drawable.msg_forward, AndroidUtilities.dp(54), LocaleController.getString("Forward", R.string.Forward)));
}
actionModeViews.add(actionMode.addItemWithWidth(delete, R.drawable.msg_delete, AndroidUtilities.dp(54), LocaleController.getString("Delete", R.string.Delete)));

View File

@ -223,6 +223,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
private TextView docInfoTextView;
private ActionBarMenuItem menuItem;
private ActionBarMenuSubItem allMediaItem;
private ActionBarMenuItem sendNoQuoteItem;
private ActionBarMenuItem sendItem;
private ActionBarMenuItem pipItem;
private ActionBarMenuItem masksItem;
@ -691,6 +692,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
private final static int gallery_menu_save = 1;
private final static int gallery_menu_showall = 2;
private final static int gallery_menu_send = 3;
private final static int gallery_menu_send_noquote = 93;
private final static int gallery_menu_showinchat = 4;
private final static int gallery_menu_pip = 5;
private final static int gallery_menu_delete = 6;
@ -2176,7 +2178,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
launchActivity.presentFragment(new ChatActivity(args), remove, true);
currentMessageObject = null;
closePhoto(false, false);
} else if (id == gallery_menu_send) {
} else if (id == gallery_menu_send || id == gallery_menu_send_noquote) {
if (currentMessageObject == null || parentActivity == null) {
return;
}
@ -2194,7 +2196,13 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
if (message != null) {
SendMessagesHelper.getInstance(currentAccount).sendMessage(message.toString(), did, null, null, true, null, null, null, true, 0);
}
SendMessagesHelper.getInstance(currentAccount).sendMessage(fmessages, did, true, 0);
if (id == gallery_menu_send_noquote) {
for (MessageObject object : fmessages) {
SendMessagesHelper.getInstance(currentAccount).processForwardFromMyName(object, did, true, true, 0);
}
} else {
SendMessagesHelper.getInstance(currentAccount).sendMessage(fmessages, did, true, 0);
}
}
fragment1.finishFragment();
} else {
@ -2202,6 +2210,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
int lower_part = (int) did;
int high_part = (int) (did >> 32);
Bundle args1 = new Bundle();
if (id == gallery_menu_send_noquote) {
args1.putBoolean("forward_noquote", true);
}
args1.putBoolean("scrollToTopOnResume", true);
if (lower_part != 0) {
if (lower_part > 0) {
@ -2445,6 +2456,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
masksItem = menu.addItem(gallery_menu_masks, R.drawable.msg_mask);
pipItem = menu.addItem(gallery_menu_pip, R.drawable.ic_goinline);
sendNoQuoteItem = menu.addItem(gallery_menu_send_noquote, R.drawable.msg_forward_noquote);
sendItem = menu.addItem(gallery_menu_send, R.drawable.msg_forward);
menuItem = menu.addItem(0, R.drawable.ic_ab_other);
@ -2459,6 +2471,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
menuItem.addSubItem(gallery_menu_delete, R.drawable.msg_delete, LocaleController.getString("Delete", R.string.Delete)).setColors(0xfffafafa, 0xfffafafa);
menuItem.addSubItem(gallery_menu_cancel_loading, R.drawable.msg_cancel, LocaleController.getString("StopDownload", R.string.StopDownload)).setColors(0xfffafafa, 0xfffafafa);
menuItem.redrawPopup(0xf9222222);
sendNoQuoteItem.setContentDescription(LocaleController.getString("NoQuoteForward", R.string.NoQuoteForward));
sendItem.setContentDescription(LocaleController.getString("Forward", R.string.Forward));
bottomLayout = new FrameLayout(actvityContext);
@ -5663,6 +5676,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
sharedMediaType = MediaDataController.MEDIA_PHOTOVIDEO;
allMediaItem.setText(LocaleController.getString("ShowAllMedia", R.string.ShowAllMedia));
menuItem.setVisibility(View.VISIBLE);
sendNoQuoteItem.setVisibility(View.GONE);
sendItem.setVisibility(View.GONE);
pipItem.setVisibility(View.GONE);
cameraItem.setVisibility(View.GONE);
@ -5787,12 +5801,14 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
needSearchImageInArr = false;
} else if (currentAnimation != null) {
needSearchImageInArr = false;
sendNoQuoteItem.setVisibility(View.VISIBLE);
sendItem.setVisibility(View.VISIBLE);
} else if (!messageObject.scheduled && !(messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaInvoice) && !(messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaWebPage) && (messageObject.messageOwner.action == null || messageObject.messageOwner.action instanceof TLRPC.TL_messageActionEmpty)) {
needSearchImageInArr = true;
imagesByIds[0].put(messageObject.getId(), messageObject);
menuItem.showSubItem(gallery_menu_showinchat);
menuItem.showSubItem(gallery_menu_showall);
sendNoQuoteItem.setVisibility(View.VISIBLE);
sendItem.setVisibility(View.VISIBLE);
}
setImageIndex(0, true);
@ -5837,6 +5853,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
if (!openingObject.scheduled) {
opennedFromMedia = true;
menuItem.showSubItem(gallery_menu_showinchat);
sendNoQuoteItem.setVisibility(View.VISIBLE);
sendItem.setVisibility(View.VISIBLE);
if (openingObject.canPreviewDocument()) {
sharedMediaType = MediaDataController.MEDIA_FILE;
@ -6121,6 +6138,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
actionBar.setTitle(LocaleController.getString("AttachDocument", R.string.AttachDocument));
}
if ((int) currentDialogId == 0) {
sendNoQuoteItem.setVisibility(View.GONE);
sendItem.setVisibility(View.GONE);
}
if (newMessageObject.messageOwner.ttl != 0 && newMessageObject.messageOwner.ttl < 60 * 60) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 B

After

Width:  |  Height:  |  Size: 944 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 944 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 744 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 744 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 618 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 877 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB