Update to 7.1.3 (2103)

This commit is contained in:
DrKLO 2020-10-15 03:39:36 +03:00
parent d3ad1316c4
commit 19599e6ea4
17 changed files with 125 additions and 55 deletions

View file

@ -33,8 +33,8 @@ dependencies {
implementation 'com.google.android.gms:play-services-vision:16.2.0' implementation 'com.google.android.gms:play-services-vision:16.2.0'
implementation 'com.google.android.gms:play-services-wearable:17.0.0' implementation 'com.google.android.gms:play-services-wearable:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.1.0' implementation 'com.google.android.gms:play-services-location:17.1.0'
implementation "com.microsoft.appcenter:appcenter-distribute:3.2.2" implementation "com.microsoft.appcenter:appcenter-distribute:3.3.1"
implementation "com.microsoft.appcenter:appcenter-crashes:3.2.2" implementation "com.microsoft.appcenter:appcenter-crashes:3.3.1"
implementation 'com.googlecode.mp4parser:isoparser:1.0.6' implementation 'com.googlecode.mp4parser:isoparser:1.0.6'
implementation 'com.stripe:stripe-android:2.0.2' implementation 'com.stripe:stripe-android:2.0.2'
implementation files('libs/libgsaverification-client.aar') implementation files('libs/libgsaverification-client.aar')
@ -284,7 +284,7 @@ android {
} }
} }
defaultConfig.versionCode = 2100 defaultConfig.versionCode = 2103
applicationVariants.all { variant -> applicationVariants.all { variant ->
variant.outputs.all { output -> variant.outputs.all { output ->

View file

@ -2255,7 +2255,7 @@ public class AndroidUtilities {
} }
public static CharSequence generateSearchName(String name, String name2, String q) { public static CharSequence generateSearchName(String name, String name2, String q) {
if (name == null && name2 == null) { if (name == null && name2 == null || TextUtils.isEmpty(q)) {
return ""; return "";
} }
SpannableStringBuilder builder = new SpannableStringBuilder(); SpannableStringBuilder builder = new SpannableStringBuilder();
@ -2288,7 +2288,7 @@ public class AndroidUtilities {
int start = builder.length(); int start = builder.length();
builder.append(query); builder.append(query);
builder.setSpan(new ForegroundColorSpan(Theme.getColor(Theme.key_windowBackgroundWhiteBlueText4)), start, start + query.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(new ForegroundColorSpanThemable(Theme.key_windowBackgroundWhiteBlueText4), start, start + query.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
lastIndex = end; lastIndex = end;
} }

View file

@ -18,7 +18,7 @@ public class BuildVars {
public static boolean LOGS_ENABLED = false; public static boolean LOGS_ENABLED = false;
public static boolean USE_CLOUD_STRINGS = true; public static boolean USE_CLOUD_STRINGS = true;
public static boolean CHECK_UPDATES = true; public static boolean CHECK_UPDATES = true;
public static int BUILD_VERSION = 2100; public static int BUILD_VERSION = 2103;
public static String BUILD_VERSION_STRING = "7.1.0"; public static String BUILD_VERSION_STRING = "7.1.0";
public static int APP_ID = 4; public static int APP_ID = 4;
public static String APP_HASH = "014b35b6184100b085b0d0572f9b5103"; public static String APP_HASH = "014b35b6184100b085b0d0572f9b5103";

View file

@ -10932,7 +10932,7 @@ public class MessagesController extends BaseController implements NotificationCe
messages.put(message.dialog_id, arr); messages.put(message.dialog_id, arr);
} }
arr.add(obj); arr.add(obj);
if ((!obj.isOut() || obj.messageOwner.from_scheduled) && obj.isUnread() && !ChatObject.isNotInChat(chat) && chat.min) { if ((!obj.isOut() || obj.messageOwner.from_scheduled) && obj.isUnread() && (chat == null || !ChatObject.isNotInChat(chat) && !chat.min)) {
if (pushMessages == null) { if (pushMessages == null) {
pushMessages = new ArrayList<>(); pushMessages = new ArrayList<>();
} }

View file

@ -1533,7 +1533,11 @@ public class MessagesStorage extends BaseController {
} }
if (message.replyMessage == null) { if (message.replyMessage == null) {
long messageId = message.reply_to.reply_to_msg_id; long messageId = message.reply_to.reply_to_msg_id;
if (message.peer_id.channel_id != 0) { if (message.reply_to.reply_to_peer_id != null) {
if (message.reply_to.reply_to_peer_id.channel_id != 0) {
messageId |= ((long) message.reply_to.reply_to_peer_id.channel_id) << 32;
}
} else if (message.peer_id.channel_id != 0) {
messageId |= ((long) message.peer_id.channel_id) << 32; messageId |= ((long) message.peer_id.channel_id) << 32;
} }
if (!replyMessages.contains(messageId)) { if (!replyMessages.contains(messageId)) {
@ -2670,7 +2674,11 @@ public class MessagesStorage extends BaseController {
} }
if (message.replyMessage == null) { if (message.replyMessage == null) {
long messageId = message.reply_to.reply_to_msg_id; long messageId = message.reply_to.reply_to_msg_id;
if (message.peer_id.channel_id != 0) { if (message.reply_to.reply_to_peer_id != null) {
if (message.reply_to.reply_to_peer_id.channel_id != 0) {
messageId |= ((long) message.reply_to.reply_to_peer_id.channel_id) << 32;
}
} else if (message.peer_id.channel_id != 0) {
messageId |= ((long) message.peer_id.channel_id) << 32; messageId |= ((long) message.peer_id.channel_id) << 32;
} }
if (!replyMessages.contains(messageId)) { if (!replyMessages.contains(messageId)) {
@ -5857,7 +5865,11 @@ public class MessagesStorage extends BaseController {
if (message.replyMessage == null) { if (message.replyMessage == null) {
if (message.reply_to.reply_to_msg_id != 0) { if (message.reply_to.reply_to_msg_id != 0) {
long messageId = message.reply_to.reply_to_msg_id; long messageId = message.reply_to.reply_to_msg_id;
if (message.peer_id.channel_id != 0) { if (message.reply_to.reply_to_peer_id != null) {
if (message.reply_to.reply_to_peer_id.channel_id != 0) {
messageId |= ((long) message.reply_to.reply_to_peer_id.channel_id) << 32;
}
} else if (message.peer_id.channel_id != 0) {
messageId |= ((long) message.peer_id.channel_id) << 32; messageId |= ((long) message.peer_id.channel_id) << 32;
} }
if (!replyMessages.contains(messageId)) { if (!replyMessages.contains(messageId)) {
@ -6318,7 +6330,11 @@ public class MessagesStorage extends BaseController {
if (message.replyMessage == null) { if (message.replyMessage == null) {
if (message.reply_to.reply_to_msg_id != 0) { if (message.reply_to.reply_to_msg_id != 0) {
long messageId = message.reply_to.reply_to_msg_id; long messageId = message.reply_to.reply_to_msg_id;
if (message.peer_id.channel_id != 0) { if (message.reply_to.reply_to_peer_id != null) {
if (message.reply_to.reply_to_peer_id.channel_id != 0) {
messageId |= ((long) message.reply_to.reply_to_peer_id.channel_id) << 32;
}
} else if (message.peer_id.channel_id != 0) {
messageId |= ((long) message.peer_id.channel_id) << 32; messageId |= ((long) message.peer_id.channel_id) << 32;
} }
if (!replyMessages.contains(messageId)) { if (!replyMessages.contains(messageId)) {
@ -10046,7 +10062,11 @@ public class MessagesStorage extends BaseController {
} }
if (message.replyMessage == null) { if (message.replyMessage == null) {
long messageId = message.reply_to.reply_to_msg_id; long messageId = message.reply_to.reply_to_msg_id;
if (message.peer_id.channel_id != 0) { if (message.reply_to.reply_to_peer_id != null) {
if (message.reply_to.reply_to_peer_id.channel_id != 0) {
messageId |= ((long) message.reply_to.reply_to_peer_id.channel_id) << 32;
}
} else if (message.peer_id.channel_id != 0) {
messageId |= ((long) message.peer_id.channel_id) << 32; messageId |= ((long) message.peer_id.channel_id) << 32;
} }
if (!replyMessages.contains(messageId)) { if (!replyMessages.contains(messageId)) {

View file

@ -2576,8 +2576,10 @@ public class Theme {
public static final String key_chat_inAudioSelectedProgress = "chat_inAudioSelectedProgress"; public static final String key_chat_inAudioSelectedProgress = "chat_inAudioSelectedProgress";
public static final String key_chat_outAudioSelectedProgress = "chat_outAudioSelectedProgress"; public static final String key_chat_outAudioSelectedProgress = "chat_outAudioSelectedProgress";
public static final String key_chat_mediaTimeText = "chat_mediaTimeText"; public static final String key_chat_mediaTimeText = "chat_mediaTimeText";
public static final String key_chat_adminText = "chat_adminText"; public static final String key_chat_inAdminText = "chat_adminText";
public static final String key_chat_adminSelectedText = "chat_adminSelectedText"; public static final String key_chat_inAdminSelectedText = "chat_adminSelectedText";
public static final String key_chat_outAdminText = "chat_outAdminText";
public static final String key_chat_outAdminSelectedText = "chat_outAdminSelectedText";
public static final String key_chat_inTimeText = "chat_inTimeText"; public static final String key_chat_inTimeText = "chat_inTimeText";
public static final String key_chat_outTimeText = "chat_outTimeText"; public static final String key_chat_outTimeText = "chat_outTimeText";
public static final String key_chat_inTimeSelectedText = "chat_inTimeSelectedText"; public static final String key_chat_inTimeSelectedText = "chat_inTimeSelectedText";
@ -3287,11 +3289,13 @@ public class Theme {
defaultColors.put(key_chat_inAudioSelectedProgress, 0xffeff8fe); defaultColors.put(key_chat_inAudioSelectedProgress, 0xffeff8fe);
defaultColors.put(key_chat_outAudioSelectedProgress, 0xffe1f8cf); defaultColors.put(key_chat_outAudioSelectedProgress, 0xffe1f8cf);
defaultColors.put(key_chat_mediaTimeText, 0xffffffff); defaultColors.put(key_chat_mediaTimeText, 0xffffffff);
defaultColors.put(key_chat_inAdminText, 0xffc0c6cb);
defaultColors.put(key_chat_inAdminSelectedText, 0xff89b4c1);
defaultColors.put(key_chat_outAdminText, 0xff70b15c);
defaultColors.put(key_chat_outAdminSelectedText, 0xff70b15c);
defaultColors.put(key_chat_inTimeText, 0xffa1aab3); defaultColors.put(key_chat_inTimeText, 0xffa1aab3);
defaultColors.put(key_chat_outTimeText, 0xff70b15c);
defaultColors.put(key_chat_adminText, 0xffc0c6cb);
defaultColors.put(key_chat_adminSelectedText, 0xff89b4c1);
defaultColors.put(key_chat_inTimeSelectedText, 0xff89b4c1); defaultColors.put(key_chat_inTimeSelectedText, 0xff89b4c1);
defaultColors.put(key_chat_outTimeText, 0xff70b15c);
defaultColors.put(key_chat_outTimeSelectedText, 0xff70b15c); defaultColors.put(key_chat_outTimeSelectedText, 0xff70b15c);
defaultColors.put(key_chat_inAudioPerformerText, 0xff2f3438); defaultColors.put(key_chat_inAudioPerformerText, 0xff2f3438);
defaultColors.put(key_chat_inAudioPerformerSelectedText, 0xff2f3438); defaultColors.put(key_chat_inAudioPerformerSelectedText, 0xff2f3438);
@ -3618,8 +3622,8 @@ public class Theme {
defaultColors.put(key_statisticChartLineEmpty, 0xFFEEEEEE); defaultColors.put(key_statisticChartLineEmpty, 0xFFEEEEEE);
defaultColors.put(key_actionBarTipBackground, 0xFF446F94); defaultColors.put(key_actionBarTipBackground, 0xFF446F94);
fallbackKeys.put(key_chat_adminText, key_chat_inTimeText); fallbackKeys.put(key_chat_inAdminText, key_chat_inTimeText);
fallbackKeys.put(key_chat_adminSelectedText, key_chat_inTimeSelectedText); fallbackKeys.put(key_chat_inAdminSelectedText, key_chat_inTimeSelectedText);
fallbackKeys.put(key_player_progressCachedBackground, key_player_progressBackground); fallbackKeys.put(key_player_progressCachedBackground, key_player_progressBackground);
fallbackKeys.put(key_chat_inAudioCacheSeekbar, key_chat_inAudioSeekbar); fallbackKeys.put(key_chat_inAudioCacheSeekbar, key_chat_inAudioSeekbar);
fallbackKeys.put(key_chat_outAudioCacheSeekbar, key_chat_outAudioSeekbar); fallbackKeys.put(key_chat_outAudioCacheSeekbar, key_chat_outAudioSeekbar);
@ -3747,6 +3751,9 @@ public class Theme {
fallbackKeys.put(key_chat_inPsaNameText, key_avatar_nameInMessageGreen); fallbackKeys.put(key_chat_inPsaNameText, key_avatar_nameInMessageGreen);
fallbackKeys.put(key_chat_outPsaNameText, key_avatar_nameInMessageGreen); fallbackKeys.put(key_chat_outPsaNameText, key_avatar_nameInMessageGreen);
fallbackKeys.put(key_chat_outAdminText, key_chat_outTimeText);
fallbackKeys.put(key_chat_outAdminSelectedText, key_chat_outTimeSelectedText);
themeAccentExclusionKeys.addAll(Arrays.asList(keys_avatar_background)); themeAccentExclusionKeys.addAll(Arrays.asList(keys_avatar_background));
themeAccentExclusionKeys.addAll(Arrays.asList(keys_avatar_nameInMessage)); themeAccentExclusionKeys.addAll(Arrays.asList(keys_avatar_nameInMessage));
themeAccentExclusionKeys.add(key_chat_attachFileBackground); themeAccentExclusionKeys.add(key_chat_attachFileBackground);

View file

@ -77,10 +77,10 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter {
disableSections = value; disableSections = value;
} }
public void setSortType(int value) { public void setSortType(int value, boolean force) {
sortType = value; sortType = value;
if (sortType == 2) { if (sortType == 2) {
if (onlineContacts == null) { if (onlineContacts == null || force) {
onlineContacts = new ArrayList<>(ContactsController.getInstance(currentAccount).contacts); onlineContacts = new ArrayList<>(ContactsController.getInstance(currentAccount).contacts);
int selfId = UserConfig.getInstance(currentAccount).clientUserId; int selfId = UserConfig.getInstance(currentAccount).clientUserId;
for (int a = 0, N = onlineContacts.size(); a < N; a++) { for (int a = 0, N = onlineContacts.size(); a < N; a++) {
@ -191,7 +191,7 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter {
} }
} }
} }
if (needPhonebook) { if (needPhonebook && position >= 0 && position < ContactsController.getInstance(currentAccount).phoneBookContacts.size()) {
return ContactsController.getInstance(currentAccount).phoneBookContacts.get(position); return ContactsController.getInstance(currentAccount).phoneBookContacts.get(position);
} }
return null; return null;

View file

@ -10067,7 +10067,12 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
nameLayout.draw(canvas); nameLayout.draw(canvas);
canvas.restore(); canvas.restore();
if (adminLayout != null) { if (adminLayout != null) {
int color = Theme.getColor(isDrawSelectionBackground() ? Theme.key_chat_adminSelectedText : Theme.key_chat_adminText); int color;
if (currentMessageObject.isOutOwner()) {
color = Theme.getColor(isDrawSelectionBackground() ? Theme.key_chat_outAdminSelectedText : Theme.key_chat_outAdminText);
} else {
color = Theme.getColor(isDrawSelectionBackground() ? Theme.key_chat_inAdminSelectedText : Theme.key_chat_inAdminText);
}
Theme.chat_adminPaint.setColor(color); Theme.chat_adminPaint.setColor(color);
canvas.save(); canvas.save();
float ax; float ax;

View file

@ -54,7 +54,7 @@ public class SharingLiveLocationCell extends FrameLayout {
private LocationActivity.LiveLocation liveLocation; private LocationActivity.LiveLocation liveLocation;
private Location location = new Location("network"); private Location location = new Location("network");
private int currentAccount; private int currentAccount = UserConfig.selectedAccount;
private Runnable invalidateRunnable = new Runnable() { private Runnable invalidateRunnable = new Runnable() {
@Override @Override

View file

@ -2095,6 +2095,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
} }
updateChatListViewTopPadding(); updateChatListViewTopPadding();
chatListView.setItemAnimator(null); chatListView.setItemAnimator(null);
chatListView.invalidate();
} }
@Override @Override
@ -2309,6 +2310,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
int chatListViewTop = (int) chatListView.getY(); int chatListViewTop = (int) chatListView.getY();
int chatListViewBottom = chatListViewTop + chatListView.getMeasuredHeight(); int chatListViewBottom = chatListViewTop + chatListView.getMeasuredHeight();
float listTop = chatListView.getTop() + chatListView.getPaddingTop() - AndroidUtilities.dp(4); float listTop = chatListView.getTop() + chatListView.getPaddingTop() - AndroidUtilities.dp(4);
if (threadMessageId != 0 && !replyMessageVisible) {
listTop += AndroidUtilities.dp(48);
}
MessageObject.GroupedMessages scrimGroup; MessageObject.GroupedMessages scrimGroup;
if (scrimView instanceof ChatMessageCell) { if (scrimView instanceof ChatMessageCell) {
scrimGroup = ((ChatMessageCell) scrimView).getCurrentMessagesGroup(); scrimGroup = ((ChatMessageCell) scrimView).getCurrentMessagesGroup();
@ -2865,6 +2869,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
private boolean wasTrackingVibrate; private boolean wasTrackingVibrate;
private float replyButtonProgress; private float replyButtonProgress;
private long lastReplyButtonAnimationTime; private long lastReplyButtonAnimationTime;
private float cilpTop;
private boolean ignoreLayout; private boolean ignoreLayout;
@ -2884,6 +2889,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
if (emptyViewContainer != null) { if (emptyViewContainer != null) {
emptyViewContainer.setTranslationY(translationY / 2f); emptyViewContainer.setTranslationY(translationY / 2f);
} }
invalidate();
} }
@ -3177,7 +3183,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
} }
} }
ArrayList<MessageObject.GroupedMessages> drawingGroups = new ArrayList<>(10); ArrayList<MessageObject.GroupedMessages> drawingGroups = new ArrayList<>(10);
@Override @Override
@ -3380,8 +3385,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
} }
} }
} }
canvas.save();
cilpTop = actionBar.getY() + actionBar.getMeasuredHeight() - getY();
if (pinnedMessageView != null) {
cilpTop += Math.max(0, AndroidUtilities.dp(48) + pinnedMessageEnterOffset);
}
canvas.clipRect(0, cilpTop, getMeasuredWidth(), getMeasuredHeight());
super.dispatchDraw(canvas); super.dispatchDraw(canvas);
canvas.restore();
} }
@Override @Override
@ -3391,7 +3402,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
boolean skipDraw = child == scrimView; boolean skipDraw = child == scrimView;
ChatMessageCell cell; ChatMessageCell cell;
if (child.getY() > getMeasuredHeight() || child.getY() + child.getMeasuredHeight() < 0) { if (child.getY() > getMeasuredHeight() || child.getY() + child.getMeasuredHeight() < cilpTop) {
skipDraw = true; skipDraw = true;
} }
@ -11365,20 +11376,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
boolean updateChat = false; boolean updateChat = false;
boolean hasFromMe = false; boolean hasFromMe = false;
ArrayList<MessageObject> arr = (ArrayList<MessageObject>) args[1]; ArrayList<MessageObject> arr = (ArrayList<MessageObject>) args[1];
if (currentEncryptedChat != null && arr.size() == 1) {
MessageObject obj = arr.get(0);
if (currentEncryptedChat != null && obj.isOut() && obj.messageOwner.action instanceof TLRPC.TL_messageEncryptedAction &&
obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL && getParentActivity() != null) {
if (AndroidUtilities.getPeerLayerVersion(currentEncryptedChat.layer) < 17 && currentEncryptedChat.ttl > 0 && currentEncryptedChat.ttl <= 60) {
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
builder.setMessage(LocaleController.formatString("CompatibilityChat", R.string.CompatibilityChat, currentUser.first_name, currentUser.first_name));
showDialog(builder.create());
}
}
}
if (chatListItemAniamtor != null) { if (chatListItemAniamtor != null) {
chatListItemAniamtor.setShouldAnimateEnterFromBottom(true); chatListItemAniamtor.setShouldAnimateEnterFromBottom(true);
@ -14452,6 +14449,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
animator.addUpdateListener(animation -> { animator.addUpdateListener(animation -> {
pinnedMessageEnterOffset = (float) animation.getAnimatedValue(); pinnedMessageEnterOffset = (float) animation.getAnimatedValue();
invalidateChatListViewTopPadding(); invalidateChatListViewTopPadding();
chatListView.invalidate();
}); });
pinnedMessageViewAnimator.playTogether(animator); pinnedMessageViewAnimator.playTogether(animator);
pinnedMessageViewAnimator.setDuration(200); pinnedMessageViewAnimator.setDuration(200);
@ -14475,6 +14473,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
} else { } else {
pinnedMessageEnterOffset = -AndroidUtilities.dp(50); pinnedMessageEnterOffset = -AndroidUtilities.dp(50);
pinnedMessageView.setVisibility(View.GONE); pinnedMessageView.setVisibility(View.GONE);
chatListView.invalidate();
} }
return true; return true;
} }
@ -14548,6 +14547,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
} }
pinnedMessageEnterOffset = translationY; pinnedMessageEnterOffset = translationY;
invalidateChatListViewTopPadding(); invalidateChatListViewTopPadding();
chatListView.invalidate();
} }
}); });
pinnedMessageView.setVisibility(View.VISIBLE); pinnedMessageView.setVisibility(View.VISIBLE);
@ -14573,6 +14573,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
} else { } else {
pinnedMessageEnterOffset = 0; pinnedMessageEnterOffset = 0;
invalidateChatListViewTopPadding(); invalidateChatListViewTopPadding();
chatListView.invalidate();
if (firstLoading) { if (firstLoading) {
updateChatListViewTopPadding(); updateChatListViewTopPadding();
} }
@ -19730,8 +19731,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inTimeText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inTimeText));
themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outTimeText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outTimeText));
themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inTimeSelectedText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inTimeSelectedText));
themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_adminText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inAdminText));
themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_adminSelectedText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inAdminSelectedText));
themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outAdminText));
themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outAdminSelectedText));
themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outTimeSelectedText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outTimeSelectedText));
themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inAudioPerformerText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inAudioPerformerText));
themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inAudioPerformerSelectedText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inAudioPerformerSelectedText));

View file

@ -3045,6 +3045,8 @@ public class AlertsCreator {
if (!(participant.participant instanceof TLRPC.TL_channelParticipantAdmin || participant.participant instanceof TLRPC.TL_channelParticipantCreator)) { if (!(participant.participant instanceof TLRPC.TL_channelParticipantAdmin || participant.participant instanceof TLRPC.TL_channelParticipantCreator)) {
loadType = 0; loadType = 0;
} }
} else if (error != null && "USER_NOT_PARTICIPANT".equals(error.text)) {
loadType = 0;
} }
createDeleteMessagesAlert(fragment, user, chat, encryptedChat, chatInfo, mergeDialogId, selectedMessage, selectedMessages, selectedGroup, scheduled, loadType, onDelete); createDeleteMessagesAlert(fragment, user, chat, encryptedChat, chatInfo, mergeDialogId, selectedMessage, selectedMessages, selectedGroup, scheduled, loadType, onDelete);
})); }));

View file

@ -1850,7 +1850,7 @@ public class ChatActivityEnterView extends FrameLayout implements NotificationCe
public ChatActivityEnterView(Activity context, SizeNotifierFrameLayout parent, ChatActivity fragment, final boolean isChat) { public ChatActivityEnterView(Activity context, SizeNotifierFrameLayout parent, ChatActivity fragment, final boolean isChat) {
super(context); super(context);
smoothKeyboard = isChat && SharedConfig.smoothKeyboard; smoothKeyboard = isChat && SharedConfig.smoothKeyboard && !AndroidUtilities.isInMultiwindow && (fragment == null || !fragment.isInBubbleMode());
dotPaint = new Paint(Paint.ANTI_ALIAS_FLAG); dotPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
dotPaint.setColor(Theme.getColor(Theme.key_chat_emojiPanelNewTrending)); dotPaint.setColor(Theme.getColor(Theme.key_chat_emojiPanelNewTrending));
setFocusable(true); setFocusable(true);
@ -3278,7 +3278,7 @@ public class ChatActivityEnterView extends FrameLayout implements NotificationCe
sizeNotifierLayout.removeView(emojiView); sizeNotifierLayout.removeView(emojiView);
emojiView = null; emojiView = null;
} else { } else {
if (emojiViewVisible && (!waitingForKeyboardOpen)) { if (emojiViewVisible && !waitingForKeyboardOpen) {
removeEmojiViewAfterAnimation = true; removeEmojiViewAfterAnimation = true;
hidePopup(false); hidePopup(false);
} else { } else {
@ -3289,8 +3289,6 @@ public class ChatActivityEnterView extends FrameLayout implements NotificationCe
emojiView = null; emojiView = null;
} }
} }
} }
allowStickers = value; allowStickers = value;
allowGifs = value2; allowGifs = value2;
@ -6845,12 +6843,12 @@ public class ChatActivityEnterView extends FrameLayout implements NotificationCe
} }
private void openKeyboardInternal() { private void openKeyboardInternal() {
showPopup(AndroidUtilities.usingHardwareInput || isPaused ? 0 : 2, 0); showPopup(AndroidUtilities.usingHardwareInput || AndroidUtilities.isInMultiwindow || parentFragment != null && parentFragment.isInBubbleMode() || isPaused ? 0 : 2, 0);
messageEditText.requestFocus(); messageEditText.requestFocus();
AndroidUtilities.showKeyboard(messageEditText); AndroidUtilities.showKeyboard(messageEditText);
if (isPaused) { if (isPaused) {
showKeyboardOnResume = true; showKeyboardOnResume = true;
} else if (!AndroidUtilities.usingHardwareInput && !keyboardVisible && !AndroidUtilities.isInMultiwindow) { } else if (!AndroidUtilities.usingHardwareInput && !keyboardVisible && !AndroidUtilities.isInMultiwindow && (parentFragment == null || !parentFragment.isInBubbleMode())) {
waitingForKeyboardOpen = true; waitingForKeyboardOpen = true;
AndroidUtilities.cancelRunOnUIThread(openKeyboardRunnable); AndroidUtilities.cancelRunOnUIThread(openKeyboardRunnable);
AndroidUtilities.runOnUIThread(openKeyboardRunnable, 100); AndroidUtilities.runOnUIThread(openKeyboardRunnable, 100);

View file

@ -3210,7 +3210,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
setBackgroundResource(R.drawable.smiles_popup); setBackgroundResource(R.drawable.smiles_popup);
getBackground().setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chat_emojiPanelBackground), PorterDuff.Mode.MULTIPLY)); getBackground().setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chat_emojiPanelBackground), PorterDuff.Mode.MULTIPLY));
if (needEmojiSearch) { if (needEmojiSearch) {
bottomTabContainerBackground.setBackgroundDrawable(null); bottomTabContainerBackground.setBackgroundColor(Theme.getColor(Theme.key_chat_emojiPanelBackground));
} }
currentBackgroundType = 1; currentBackgroundType = 1;
} }

View file

@ -228,7 +228,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
} else if (id == sort_button) { } else if (id == sort_button) {
SharedConfig.toggleSortContactsByName(); SharedConfig.toggleSortContactsByName();
sortByName = SharedConfig.sortContactsByName; sortByName = SharedConfig.sortContactsByName;
listViewAdapter.setSortType(sortByName ? 1 : 2); listViewAdapter.setSortType(sortByName ? 1 : 2, false);
sortItem.setIcon(sortByName ? R.drawable.contacts_sort_time : R.drawable.contacts_sort_name); sortItem.setIcon(sortByName ? R.drawable.contacts_sort_time : R.drawable.contacts_sort_name);
} }
} }
@ -332,7 +332,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
} }
} }
}; };
listViewAdapter.setSortType(sortItem != null ? (sortByName ? 1 : 2) : 0); listViewAdapter.setSortType(sortItem != null ? (sortByName ? 1 : 2) : 0, false);
listViewAdapter.setDisableSections(disableSections); listViewAdapter.setDisableSections(disableSections);
fragmentView = new FrameLayout(context) { fragmentView = new FrameLayout(context) {
@ -852,6 +852,9 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
public void didReceivedNotification(int id, int account, Object... args) { public void didReceivedNotification(int id, int account, Object... args) {
if (id == NotificationCenter.contactsDidLoad) { if (id == NotificationCenter.contactsDidLoad) {
if (listViewAdapter != null) { if (listViewAdapter != null) {
if (!sortByName) {
listViewAdapter.setSortType(2, true);
}
listViewAdapter.notifyDataSetChanged(); listViewAdapter.notifyDataSetChanged();
} }
} else if (id == NotificationCenter.updateInterfaces) { } else if (id == NotificationCenter.updateInterfaces) {

View file

@ -2163,7 +2163,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa
final BaseFragment lastFragment = actionBarLayout.getLastFragment(); final BaseFragment lastFragment = actionBarLayout.getLastFragment();
if (lastFragment != null && lastFragment.getParentActivity() != null) { if (lastFragment != null && lastFragment.getParentActivity() != null) {
final String finalNewContactName = newContactName; final String finalNewContactName = newContactName;
final String finalNewContactPhone = "+" + PhoneFormat.stripExceptNumbers(newContactPhone); final String finalNewContactPhone = NewContactActivity.getPhoneNumber(this, UserConfig.getInstance(currentAccount).getCurrentUser(), newContactPhone, false);
final AlertDialog newContactAlertDialog = new AlertDialog.Builder(lastFragment.getParentActivity()) final AlertDialog newContactAlertDialog = new AlertDialog.Builder(lastFragment.getParentActivity())
.setTitle(LocaleController.getString("NewContactAlertTitle", R.string.NewContactAlertTitle)) .setTitle(LocaleController.getString("NewContactAlertTitle", R.string.NewContactAlertTitle))
.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("NewContactAlertMessage", R.string.NewContactAlertMessage, PhoneFormat.getInstance().format(finalNewContactPhone)))) .setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("NewContactAlertMessage", R.string.NewContactAlertMessage, PhoneFormat.getInstance().format(finalNewContactPhone))))
@ -2268,6 +2268,8 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa
chatActivity.setThreadMessages(arrayList, chat, req.msg_id, res.read_inbox_max_id, res.read_outbox_max_id); chatActivity.setThreadMessages(arrayList, chat, req.msg_id, res.read_inbox_max_id, res.read_outbox_max_id);
if (commentId != null) { if (commentId != null) {
chatActivity.setHighlightMessageId(commentId); chatActivity.setHighlightMessageId(commentId);
} else if (threadId != null) {
chatActivity.setHighlightMessageId(messageId);
} }
presentFragment(chatActivity); presentFragment(chatActivity);
chatOpened = true; chatOpened = true;

View file

@ -524,7 +524,7 @@ public class NewContactActivity extends BaseFragment implements AdapterView.OnIt
} }
phoneField.setText(builder); phoneField.setText(builder);
if (start >= 0) { if (start >= 0) {
phoneField.setSelection(start <= phoneField.length() ? start : phoneField.length()); phoneField.setSelection(Math.min(start, phoneField.length()));
} }
phoneField.onTextChange(); phoneField.onTextChange();
ignoreOnPhoneChange = false; ignoreOnPhoneChange = false;
@ -618,6 +618,36 @@ public class NewContactActivity extends BaseFragment implements AdapterView.OnIt
return fragmentView; return fragmentView;
} }
public static String getPhoneNumber(Context context, TLRPC.User user, String number, boolean withCoutryCode) {
HashMap<String, String> codesMap = new HashMap<>();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(context.getResources().getAssets().open("countries.txt")));
String line;
while ((line = reader.readLine()) != null) {
String[] args = line.split(";");
codesMap.put(args[0], args[2]);
}
reader.close();
} catch (Exception e) {
FileLog.e(e);
}
if (number.startsWith("+")) {
return number;
} else if (withCoutryCode || user == null || TextUtils.isEmpty(user.phone)) {
return "+" + number;
} else {
String phone = user.phone;
for (int a = 4; a >= 1; a--) {
String sub = phone.substring(0, a);
String country = codesMap.get(sub);
if (country != null) {
return "+" + sub + number;
}
}
return number;
}
}
private void invalidateAvatar() { private void invalidateAvatar() {
avatarDrawable.setInfo(5, firstNameField.getText().toString(), lastNameField.getText().toString()); avatarDrawable.setInfo(5, firstNameField.getText().toString(), lastNameField.getText().toString());
avatarImage.invalidate(); avatarImage.invalidate();

View file

@ -1217,7 +1217,7 @@
<string name="NoContactsYetLine2">Find people nearby to chat with</string> <string name="NoContactsYetLine2">Find people nearby to chat with</string>
<string name="NoContactsYetLine3">Search people by username</string> <string name="NoContactsYetLine3">Search people by username</string>
<string name="NewContactAlertTitle">New contact</string> <string name="NewContactAlertTitle">New contact</string>
<string name="NewContactAlertMessage">Phone number **%1$s** is not in your contact list. Do you want to add it?</string> <string name="NewContactAlertMessage">Phone number **%1$s** is not in your contacts list. Do you want to add it?</string>
<string name="NewContactAlertButton">Add contact</string> <string name="NewContactAlertButton">Add contact</string>
<!--group create view--> <!--group create view-->
<string name="SendMessageTo">Add people...</string> <string name="SendMessageTo">Add people...</string>