Skip to content

Commit 534f9f6

Browse files
committed
update to 10.0.4 (3802)
1 parent 702839a commit 534f9f6

22 files changed

+229
-81
lines changed

‎TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java

+8
Original file line numberDiff line numberDiff line change
@@ -5460,4 +5460,12 @@ public static ByteBuffer cloneByteBuffer(ByteBuffer original) {
54605460
clone.position(position);
54615461
return clone;
54625462
}
5463+
5464+
public static void checkAndroidTheme(Context context, boolean open) {
5465+
// this hack is done to support prefers-color-scheme in webviews 🤦
5466+
if (context == null) {
5467+
return;
5468+
}
5469+
context.setTheme(Theme.isCurrentThemeDark() && open ? R.style.Theme_TMessages_Dark : R.style.Theme_TMessages);
5470+
}
54635471
}

‎TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ public class BuildVars {
2424
public static boolean USE_CLOUD_STRINGS = true;
2525
public static boolean CHECK_UPDATES = true;
2626
public static boolean NO_SCOPED_STORAGE = Build.VERSION.SDK_INT <= 29;
27-
public static int BUILD_VERSION = 3801;
28-
public static String BUILD_VERSION_STRING = "10.0.3";
27+
public static int BUILD_VERSION = 3802;
28+
public static String BUILD_VERSION_STRING = "10.0.4";
2929
public static int APP_ID = 4;
3030
public static String APP_HASH = "014b35b6184100b085b0d0572f9b5103";
3131

‎TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java

+56-16
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,12 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter {
7676
private Runnable searchRunnable;
7777
private Runnable searchRunnable2;
7878
private ArrayList<Object> searchResult = new ArrayList<>();
79-
private ArrayList<ContactsController.Contact> searchContacts = new ArrayList<>();
80-
private ArrayList<TLRPC.TL_forumTopic> searchTopics = new ArrayList<>();
79+
private final ArrayList<ContactsController.Contact> searchContacts = new ArrayList<>();
80+
private final ArrayList<TLRPC.TL_forumTopic> searchTopics = new ArrayList<>();
8181
private ArrayList<CharSequence> searchResultNames = new ArrayList<>();
82-
private ArrayList<MessageObject> searchForumResultMessages = new ArrayList<>();
83-
private ArrayList<MessageObject> searchResultMessages = new ArrayList<>();
84-
private ArrayList<String> searchResultHashtags = new ArrayList<>();
82+
private final ArrayList<MessageObject> searchForumResultMessages = new ArrayList<>();
83+
private final ArrayList<MessageObject> searchResultMessages = new ArrayList<>();
84+
private final ArrayList<String> searchResultHashtags = new ArrayList<>();
8585
private String lastSearchText;
8686
private boolean searchWas;
8787
private int reqId = 0;
@@ -111,12 +111,13 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter {
111111
public View showMoreHeader;
112112
private Runnable cancelShowMoreAnimation;
113113
private ArrayList<Long> filterDialogIds;
114+
private final DialogsActivity dialogsActivity;
114115

115116
private int currentAccount = UserConfig.selectedAccount;
116117

117118
private ArrayList<RecentSearchObject> recentSearchObjects = new ArrayList<>();
118-
private ArrayList<RecentSearchObject> filteredRecentSearchObjects = new ArrayList<>();
119-
private ArrayList<RecentSearchObject> filtered2RecentSearchObjects = new ArrayList<>();
119+
private final ArrayList<RecentSearchObject> filteredRecentSearchObjects = new ArrayList<>();
120+
private final ArrayList<RecentSearchObject> filtered2RecentSearchObjects = new ArrayList<>();
120121
private String filteredRecentQuery = null;
121122
private LongSparseArray<RecentSearchObject> recentSearchObjectsById = new LongSparseArray<>();
122123
private ArrayList<FiltersView.DateData> localTipDates = new ArrayList<>();
@@ -220,9 +221,38 @@ public int getItemCount() {
220221
}
221222
}
222223

223-
public DialogsSearchAdapter(Context context, int messagesSearch, int type, DefaultItemAnimator itemAnimator, boolean allowGlobalSearch) {
224+
private boolean filter(Object obj) {
225+
if (dialogsType != DialogsActivity.DIALOGS_TYPE_START_ATTACH_BOT) {
226+
return true;
227+
}
228+
// add more filters if needed
229+
if (obj instanceof TLRPC.User) {
230+
if (((TLRPC.User) obj).bot) {
231+
return dialogsActivity.allowBots;
232+
}
233+
return dialogsActivity.allowUsers;
234+
} else if (obj instanceof TLRPC.Chat) {
235+
TLRPC.Chat chat = (TLRPC.Chat) obj;
236+
if (ChatObject.isChannel(chat)) {
237+
return dialogsActivity.allowChannels;
238+
} else if (ChatObject.isMegagroup(chat)) {
239+
return dialogsActivity.allowGroups || dialogsActivity.allowMegagroups;
240+
} else {
241+
return dialogsActivity.allowGroups || dialogsActivity.allowLegacyGroups;
242+
}
243+
}
244+
return false;
245+
}
246+
247+
public DialogsSearchAdapter(Context context, DialogsActivity dialogsActivity, int messagesSearch, int type, DefaultItemAnimator itemAnimator, boolean allowGlobalSearch) {
224248
this.itemAnimator = itemAnimator;
225-
searchAdapterHelper = new SearchAdapterHelper(false);
249+
this.dialogsActivity = dialogsActivity;
250+
searchAdapterHelper = new SearchAdapterHelper(false) {
251+
@Override
252+
protected boolean filter(TLObject obj) {
253+
return DialogsSearchAdapter.this.filter(obj);
254+
}
255+
};
226256
searchAdapterHelper.setDelegate(new SearchAdapterHelper.SearchAdapterHelperDelegate() {
227257
@Override
228258
public void onDataSetChanged(int searchId) {
@@ -872,6 +902,12 @@ private void updateSearchResults(final ArrayList<Object> result, final ArrayList
872902
searchResultMessages.clear();
873903
}
874904
searchWas = true;
905+
for (int i = 0; i < result.size(); ++i) {
906+
if (!filter(result.get(i))) {
907+
result.remove(i);
908+
i--;
909+
}
910+
}
875911
final int recentCount = filtered2RecentSearchObjects.size();
876912
for (int a = 0; a < result.size(); a++) {
877913
Object obj = result.get(a);
@@ -1092,7 +1128,7 @@ public void searchDialogs(String text, int folderId) {
10921128

10931129
public int getRecentItemsCount() {
10941130
ArrayList<RecentSearchObject> recent = searchWas ? filtered2RecentSearchObjects : filteredRecentSearchObjects;
1095-
return (!recent.isEmpty() ? recent.size() + 1 : 0) + (!searchWas && !MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0);
1131+
return (!recent.isEmpty() ? recent.size() + 1 : 0) + (hasHints() ? 1 : 0);
10961132
}
10971133

10981134
public int getRecentResultsCount() {
@@ -1175,7 +1211,7 @@ public Object getItem(int i) {
11751211
}
11761212
}
11771213
if (isRecentSearchDisplayed()) {
1178-
int offset = (!searchWas && !MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0);
1214+
int offset = (hasHints() ? 1 : 0);
11791215
ArrayList<RecentSearchObject> recent = searchWas ? filtered2RecentSearchObjects : filteredRecentSearchObjects;
11801216
if (i > offset && i - 1 - offset < recent.size()) {
11811217
TLObject object = recent.get(i - 1 - offset).object;
@@ -1263,7 +1299,7 @@ public boolean isGlobalSearch(int i) {
12631299
return false;
12641300
}
12651301
if (isRecentSearchDisplayed()) {
1266-
int offset = (!searchWas && !MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0);
1302+
int offset = (hasHints() ? 1 : 0);
12671303
ArrayList<RecentSearchObject> recent = searchWas ? filtered2RecentSearchObjects : filteredRecentSearchObjects;
12681304
if (i > offset && i - 1 - offset < recent.size()) {
12691305
return false;
@@ -1413,6 +1449,10 @@ public boolean supportsPredictiveItemAnimations() {
14131449
return new RecyclerListView.Holder(view);
14141450
}
14151451

1452+
private boolean hasHints() {
1453+
return !searchWas && !MediaDataController.getInstance(currentAccount).hints.isEmpty() && (dialogsType != DialogsActivity.DIALOGS_TYPE_START_ATTACH_BOT || dialogsActivity.allowUsers);
1454+
}
1455+
14161456
@Override
14171457
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
14181458
switch (holder.getItemViewType()) {
@@ -1564,7 +1604,7 @@ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
15641604
} else {
15651605
int rawPosition = position;
15661606
if (isRecentSearchDisplayed() || !searchTopics.isEmpty() || !searchContacts.isEmpty()) {
1567-
int offset = (!searchWas && !MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0);
1607+
int offset = hasHints() ? 1 : 0;
15681608
if (position < offset) {
15691609
cell.setText(LocaleController.getString("ChatHints", R.string.ChatHints));
15701610
return;
@@ -1768,7 +1808,7 @@ public int getItemViewType(int i) {
17681808
return i == 0 ? VIEW_TYPE_GRAY_SECTION : VIEW_TYPE_HASHTAG_CELL;
17691809
}
17701810
if (isRecentSearchDisplayed()) {
1771-
int offset = (!searchWas && !MediaDataController.getInstance(currentAccount).hints.isEmpty() ? 1 : 0);
1811+
int offset = hasHints() ? 1 : 0;
17721812
if (i < offset) {
17731813
return VIEW_TYPE_CATEGORY_LIST;
17741814
}
@@ -1889,7 +1929,7 @@ public void filterRecent(String query) {
18891929
filteredRecentSearchObjects.clear();
18901930
final int count = recentSearchObjects.size();
18911931
for (int i = 0; i < count; ++i) {
1892-
if (delegate != null && delegate.getSearchForumDialogId() == recentSearchObjects.get(i).did) {
1932+
if (delegate != null && delegate.getSearchForumDialogId() == recentSearchObjects.get(i).did || !filter(recentSearchObjects.get(i).object)) {
18931933
continue;
18941934
}
18951935
filteredRecentSearchObjects.add(recentSearchObjects.get(i));
@@ -1903,7 +1943,7 @@ public void filterRecent(String query) {
19031943
if (obj == null || obj.object == null) {
19041944
continue;
19051945
}
1906-
if (delegate != null && delegate.getSearchForumDialogId() == obj.did) {
1946+
if (delegate != null && delegate.getSearchForumDialogId() == obj.did || !filter(recentSearchObjects.get(i).object)) {
19071947
continue;
19081948
}
19091949
String title = null, username = null;

‎TMessagesProj/src/main/java/org/telegram/ui/Adapters/SearchAdapterHelper.java

+16-12
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,15 @@ default boolean canApplySearchResults(int searchId) {
6666

6767
private SearchAdapterHelperDelegate delegate;
6868

69-
private ArrayList<Integer> pendingRequestIds = new ArrayList<>();
69+
private final ArrayList<Integer> pendingRequestIds = new ArrayList<>();
7070
private String lastFoundUsername = null;
71-
private ArrayList<TLObject> localServerSearch = new ArrayList<>();
72-
private ArrayList<TLObject> globalSearch = new ArrayList<>();
73-
private LongSparseArray<TLObject> globalSearchMap = new LongSparseArray<>();
74-
private ArrayList<TLObject> groupSearch = new ArrayList<>();
75-
private LongSparseArray<TLObject> groupSearchMap = new LongSparseArray<>();
76-
private LongSparseArray<TLObject> phoneSearchMap = new LongSparseArray<>();
77-
private ArrayList<Object> phonesSearch = new ArrayList<>();
71+
private final ArrayList<TLObject> localServerSearch = new ArrayList<>();
72+
private final ArrayList<TLObject> globalSearch = new ArrayList<>();
73+
private final LongSparseArray<TLObject> globalSearchMap = new LongSparseArray<>();
74+
private final ArrayList<TLObject> groupSearch = new ArrayList<>();
75+
private final LongSparseArray<TLObject> groupSearchMap = new LongSparseArray<>();
76+
private final LongSparseArray<TLObject> phoneSearchMap = new LongSparseArray<>();
77+
private final ArrayList<Object> phonesSearch = new ArrayList<>();
7878
private ArrayList<Object> localSearchResults;
7979
private ArrayList<DialogsSearchAdapter.RecentSearchObject> localRecentResults;
8080

@@ -223,13 +223,13 @@ public void queryServerSearch(String query, boolean allowUsername, boolean allow
223223
chat = chatsMap.get(peer.channel_id);
224224
}
225225
if (chat != null) {
226-
if (!allowChats || canAddGroupsOnly && !ChatObject.canAddBotsToChat(chat) || !allowGlobalResults && ChatObject.isNotInChat(chat)) {
226+
if (!allowChats || canAddGroupsOnly && !ChatObject.canAddBotsToChat(chat) || !allowGlobalResults && ChatObject.isNotInChat(chat) || !filter(chat)) {
227227
continue;
228228
}
229229
globalSearch.add(chat);
230230
globalSearchMap.put(-chat.id, chat);
231231
} else if (user != null) {
232-
if (canAddGroupsOnly || !allowBots && user.bot || !allowSelf && user.self || !allowGlobalResults && b == 1 && !user.contact) {
232+
if (canAddGroupsOnly || !allowBots && user.bot || !allowSelf && user.self || !allowGlobalResults && b == 1 && !user.contact || !filter(user)) {
233233
continue;
234234
}
235235
globalSearch.add(user);
@@ -250,13 +250,13 @@ public void queryServerSearch(String query, boolean allowUsername, boolean allow
250250
chat = chatsMap.get(peer.channel_id);
251251
}
252252
if (chat != null) {
253-
if (!allowChats || canAddGroupsOnly && !ChatObject.canAddBotsToChat(chat) || -chat.id == exceptDialogId) {
253+
if (!allowChats || canAddGroupsOnly && !ChatObject.canAddBotsToChat(chat) || -chat.id == exceptDialogId || !filter(chat)) {
254254
continue;
255255
}
256256
localServerSearch.add(chat);
257257
globalSearchMap.put(-chat.id, chat);
258258
} else if (user != null) {
259-
if (canAddGroupsOnly || !allowBots && user.bot || !allowSelf && user.self || user.id == exceptDialogId) {
259+
if (canAddGroupsOnly || !allowBots && user.bot || !allowSelf && user.self || user.id == exceptDialogId || !filter(user)) {
260260
continue;
261261
}
262262
localServerSearch.add(user);
@@ -625,4 +625,8 @@ public void setHashtags(ArrayList<HashtagObject> arrayList, HashMap<String, Hash
625625
hashtagsLoadedFromDb = true;
626626
delegate.onSetHashtags(arrayList, hashMap);
627627
}
628+
629+
protected boolean filter(TLObject obj) {
630+
return true;
631+
}
628632
}

‎TMessagesProj/src/main/java/org/telegram/ui/ArticleViewer.java

+11-9
Original file line numberDiff line numberDiff line change
@@ -11591,7 +11591,7 @@ private ImageReceiver getImageReceiverView(View view, TLRPC.PageBlock pageBlock,
1159111591
BlockVideoCell cell = (BlockVideoCell) view;
1159211592
if (cell.currentBlock == pageBlock) {
1159311593
view.getLocationInWindow(coords);
11594-
if (cell == currentPlayer && videoPlayer != null && videoPlayer.firstFrameRendered) {
11594+
if (cell == currentPlayer && videoPlayer != null && videoPlayer.firstFrameRendered && cell.textureView.getSurfaceTexture() != null) {
1159511595
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
1159611596
Surface surface = new Surface(cell.textureView.getSurfaceTexture());
1159711597
Bitmap bitmap = Bitmap.createBitmap(cell.textureView.getMeasuredWidth(), cell.textureView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
@@ -11651,14 +11651,16 @@ public void onReleasePlayerBeforeClose(int photoIndex) {
1165111651
videoCell.playFrom = player.getCurrentPosition();
1165211652
videoCell.firstFrameRendered = false;
1165311653
videoCell.textureView.setAlpha(0);
11654-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
11655-
Surface surface = new Surface(textureView.getSurfaceTexture());
11656-
Bitmap bitmap = Bitmap.createBitmap(textureView.getMeasuredWidth(), textureView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
11657-
AndroidUtilities.getBitmapFromSurface(surface, bitmap);
11658-
surface.release();
11659-
videoCell.imageView.setImageBitmap(bitmap);
11660-
} else {
11661-
videoCell.imageView.setImageBitmap(textureView.getBitmap());
11654+
if (textureView.getSurfaceTexture() != null) {
11655+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
11656+
Surface surface = new Surface(textureView.getSurfaceTexture());
11657+
Bitmap bitmap = Bitmap.createBitmap(textureView.getMeasuredWidth(), textureView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
11658+
AndroidUtilities.getBitmapFromSurface(surface, bitmap);
11659+
surface.release();
11660+
videoCell.imageView.setImageBitmap(bitmap);
11661+
} else {
11662+
videoCell.imageView.setImageBitmap(textureView.getBitmap());
11663+
}
1166211664
}
1166311665
}
1166411666
checkVideoPlayer();

‎TMessagesProj/src/main/java/org/telegram/ui/Cells/CheckBoxCell.java

+6
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,12 @@ public void setText(CharSequence text, BufferType type) {
134134
updateTextColor();
135135
}
136136

137+
public void allowMultiline() {
138+
textView.setLines(3);
139+
textView.setMaxLines(3);
140+
textView.setSingleLine(false);
141+
}
142+
137143
public void updateTextColor() {
138144
textView.setTextColor(getThemedColor(currentType == TYPE_CHECK_BOX_DEFAULT || currentType == TYPE_CHECK_BOX_URL ? Theme.key_dialogTextBlack : Theme.key_windowBackgroundWhiteBlackText));
139145
textView.setLinkTextColor(getThemedColor(currentType == TYPE_CHECK_BOX_DEFAULT || currentType == TYPE_CHECK_BOX_URL ? Theme.key_dialogTextLink : Theme.key_windowBackgroundWhiteLinkText));

‎TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java

+1
Original file line numberDiff line numberDiff line change
@@ -1563,6 +1563,7 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
15631563
allowWrite.set(true);
15641564

15651565
cell[0] = new CheckBoxCell(context, 1, fragment.getResourceProvider());
1566+
cell[0].allowMultiline();
15661567
cell[0].setBackgroundDrawable(Theme.getSelectorDrawable(false));
15671568
cell[0].setText(AndroidUtilities.replaceTags(LocaleController.formatString("OpenUrlOption2", R.string.OpenUrlOption2, UserObject.getUserName(user))), "", true, false);
15681569
cell[0].setPadding(LocaleController.isRTL ? AndroidUtilities.dp(16) : AndroidUtilities.dp(8), 0, LocaleController.isRTL ? AndroidUtilities.dp(8) : AndroidUtilities.dp(16), 0);

0 commit comments

Comments
 (0)