mirror of
https://github.com/DrKLO/Telegram.git
synced 2024-12-22 14:35:03 +01:00
update to 9.1.2
This commit is contained in:
parent
a2981ddd29
commit
23118a4a6c
10 changed files with 185 additions and 75 deletions
|
@ -24,8 +24,8 @@ public class BuildVars {
|
||||||
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 boolean NO_SCOPED_STORAGE = Build.VERSION.SDK_INT <= 29;
|
public static boolean NO_SCOPED_STORAGE = Build.VERSION.SDK_INT <= 29;
|
||||||
public static int BUILD_VERSION = 2900;
|
public static int BUILD_VERSION = 2902;
|
||||||
public static String BUILD_VERSION_STRING = "9.1.1";
|
public static String BUILD_VERSION_STRING = "9.1.2";
|
||||||
public static int APP_ID = 4;
|
public static int APP_ID = 4;
|
||||||
public static String APP_HASH = "014b35b6184100b085b0d0572f9b5103";
|
public static String APP_HASH = "014b35b6184100b085b0d0572f9b5103";
|
||||||
|
|
||||||
|
|
|
@ -2268,7 +2268,6 @@ public class MessagesStorage extends BaseController {
|
||||||
database.executeFast("DELETE FROM topics").stepThis().dispose();
|
database.executeFast("DELETE FROM topics").stepThis().dispose();
|
||||||
database.executeFast("DELETE FROM media_holes_topics").stepThis().dispose();
|
database.executeFast("DELETE FROM media_holes_topics").stepThis().dispose();
|
||||||
database.executeFast("DELETE FROM media_topics").stepThis().dispose();
|
database.executeFast("DELETE FROM media_topics").stepThis().dispose();
|
||||||
database.executeFast("DELETE FROM media_topics").stepThis().dispose();
|
|
||||||
database.executeFast("DELETE FROM media_counts_topics").stepThis().dispose();
|
database.executeFast("DELETE FROM media_counts_topics").stepThis().dispose();
|
||||||
database.executeFast("DELETE FROM chat_pinned_v2").stepThis().dispose();
|
database.executeFast("DELETE FROM chat_pinned_v2").stepThis().dispose();
|
||||||
database.executeFast("DELETE FROM chat_pinned_count").stepThis().dispose();
|
database.executeFast("DELETE FROM chat_pinned_count").stepThis().dispose();
|
||||||
|
@ -2330,7 +2329,7 @@ public class MessagesStorage extends BaseController {
|
||||||
database.executeFast("DELETE FROM media_holes_v2 WHERE uid = " + did).stepThis().dispose();
|
database.executeFast("DELETE FROM media_holes_v2 WHERE uid = " + did).stepThis().dispose();
|
||||||
MediaDataController.getInstance(currentAccount).clearBotKeyboard(did, null);
|
MediaDataController.getInstance(currentAccount).clearBotKeyboard(did, null);
|
||||||
if (messageId != -1) {
|
if (messageId != -1) {
|
||||||
MessagesStorage.createFirstHoles(did, state5, state6, messageId);
|
MessagesStorage.createFirstHoles(did, state5, state6, messageId, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cursor.dispose();
|
cursor.dispose();
|
||||||
|
@ -2383,6 +2382,17 @@ public class MessagesStorage extends BaseController {
|
||||||
private void saveTopicsInternal(long dialogId, List<TLRPC.TL_forumTopic> topics, boolean replace, boolean inTransaction) {
|
private void saveTopicsInternal(long dialogId, List<TLRPC.TL_forumTopic> topics, boolean replace, boolean inTransaction) {
|
||||||
SQLitePreparedStatement state = null;
|
SQLitePreparedStatement state = null;
|
||||||
try {
|
try {
|
||||||
|
HashSet<Integer> existingTopics = new HashSet<>();
|
||||||
|
for (int i = 0; i < topics.size(); i++) {
|
||||||
|
TLRPC.TL_forumTopic topic = topics.get(i);
|
||||||
|
SQLiteCursor cursor = database.queryFinalized("SELECT did FROM topics WHERE did = " + dialogId + " AND topic_id = " + topic.id);
|
||||||
|
boolean exist = cursor.next();
|
||||||
|
cursor.dispose();
|
||||||
|
cursor = null;
|
||||||
|
if (exist) {
|
||||||
|
existingTopics.add(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (replace) {
|
if (replace) {
|
||||||
database.executeFast("DELETE FROM topics WHERE did = " + dialogId).stepThis().dispose();
|
database.executeFast("DELETE FROM topics WHERE did = " + dialogId).stepThis().dispose();
|
||||||
}
|
}
|
||||||
|
@ -2393,6 +2403,8 @@ public class MessagesStorage extends BaseController {
|
||||||
|
|
||||||
for (int i = 0; i < topics.size(); i++) {
|
for (int i = 0; i < topics.size(); i++) {
|
||||||
TLRPC.TL_forumTopic topic = topics.get(i);
|
TLRPC.TL_forumTopic topic = topics.get(i);
|
||||||
|
boolean exist = existingTopics.contains(i);
|
||||||
|
|
||||||
state.requery();
|
state.requery();
|
||||||
state.bindLong(1, dialogId);
|
state.bindLong(1, dialogId);
|
||||||
state.bindInteger(2, topic.id);
|
state.bindInteger(2, topic.id);
|
||||||
|
@ -2416,8 +2428,21 @@ public class MessagesStorage extends BaseController {
|
||||||
messageData.reuse();
|
messageData.reuse();
|
||||||
data.reuse();
|
data.reuse();
|
||||||
|
|
||||||
closeHolesInTable("messages_holes_topics", dialogId, topic.top_message, topic.top_message, topic.id);
|
if (exist) {
|
||||||
closeHolesInMedia(dialogId, topic.top_message, topic.top_message, -1, 0);
|
closeHolesInTable("messages_holes_topics", dialogId, topic.top_message, topic.top_message, topic.id);
|
||||||
|
closeHolesInMedia(dialogId, topic.top_message, topic.top_message, -1, 0);
|
||||||
|
} else {
|
||||||
|
database.executeFast(String.format(Locale.ENGLISH, "DELETE FROM messages_holes_topics WHERE uid = %d AND topic_id = %d", dialogId, topic.id)).stepThis().dispose();
|
||||||
|
database.executeFast(String.format(Locale.ENGLISH, "DELETE FROM media_holes_topics WHERE uid = %d AND topic_id = %d", dialogId, topic.id)).stepThis().dispose();
|
||||||
|
database.executeFast(String.format(Locale.ENGLISH, "DELETE FROM messages_topics WHERE uid = %d AND topic_id = %d", dialogId, topic.id)).stepThis().dispose();
|
||||||
|
database.executeFast(String.format(Locale.ENGLISH, "DELETE FROM media_topics WHERE uid = %d AND topic_id = %d", dialogId, topic.id)).stepThis().dispose();
|
||||||
|
|
||||||
|
SQLitePreparedStatement state_holes = database.executeFast("REPLACE INTO messages_holes_topics VALUES(?, ?, ?, ?)");
|
||||||
|
SQLitePreparedStatement state_media_holes = database.executeFast("REPLACE INTO media_holes_topics VALUES(?, ?, ?, ?, ?)");
|
||||||
|
createFirstHoles(dialogId, state_holes, state_media_holes, topic.top_message, topic.id);
|
||||||
|
state_holes.dispose();
|
||||||
|
state_holes.dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
resetAllUnreadCounters(false);
|
resetAllUnreadCounters(false);
|
||||||
|
|
||||||
|
@ -4739,7 +4764,7 @@ public class MessagesStorage extends BaseController {
|
||||||
state5 = database.executeFast("REPLACE INTO messages_holes VALUES(?, ?, ?)");
|
state5 = database.executeFast("REPLACE INTO messages_holes VALUES(?, ?, ?)");
|
||||||
state6 = database.executeFast("REPLACE INTO media_holes_v2 VALUES(?, ?, ?, ?)");
|
state6 = database.executeFast("REPLACE INTO media_holes_v2 VALUES(?, ?, ?, ?)");
|
||||||
if (messageId != -1) {
|
if (messageId != -1) {
|
||||||
createFirstHoles(did, state5, state6, messageId);
|
createFirstHoles(did, state5, state6, messageId, 0);
|
||||||
}
|
}
|
||||||
state5.dispose();
|
state5.dispose();
|
||||||
state5 = null;
|
state5 = null;
|
||||||
|
@ -5208,41 +5233,53 @@ public class MessagesStorage extends BaseController {
|
||||||
if (dialogs != null) {
|
if (dialogs != null) {
|
||||||
database.beginTransaction();
|
database.beginTransaction();
|
||||||
SQLitePreparedStatement state = database.executeFast("UPDATE messages_v2 SET data = ? WHERE mid = ? AND uid = ?");
|
SQLitePreparedStatement state = database.executeFast("UPDATE messages_v2 SET data = ? WHERE mid = ? AND uid = ?");
|
||||||
|
SQLitePreparedStatement state_topics = database.executeFast("UPDATE messages_topics SET data = ? WHERE mid = ? AND uid = ?");
|
||||||
for (int b = 0, N2 = dialogs.size(); b < N2; b++) {
|
for (int b = 0, N2 = dialogs.size(); b < N2; b++) {
|
||||||
long dialogId = dialogs.keyAt(b);
|
long dialogId = dialogs.keyAt(b);
|
||||||
ArrayList<Integer> mids = dialogs.valueAt(b);
|
ArrayList<Integer> mids = dialogs.valueAt(b);
|
||||||
for (int a = 0, N = mids.size(); a < N; a++) {
|
for (int a = 0, N = mids.size(); a < N; a++) {
|
||||||
Integer mid = mids.get(a);
|
Integer mid = mids.get(a);
|
||||||
cursor = database.queryFinalized(String.format(Locale.US, "SELECT data FROM messages_v2 WHERE mid = %d AND uid = %d", mid, dialogId));
|
boolean foundMessage = false;
|
||||||
if (cursor.next()) {
|
for (int k = 0; k < 2; k++) {
|
||||||
NativeByteBuffer data = cursor.byteBufferValue(0);
|
boolean isTopic = k == 1;
|
||||||
if (data != null) {
|
if (isTopic) {
|
||||||
TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false);
|
cursor = database.queryFinalized(String.format(Locale.US, "SELECT data FROM messages_topics WHERE mid = %d AND uid = %d", mid, dialogId));
|
||||||
message.readAttachPath(data, getUserConfig().clientUserId);
|
} else {
|
||||||
data.reuse();
|
cursor = database.queryFinalized(String.format(Locale.US, "SELECT data FROM messages_v2 WHERE mid = %d AND uid = %d", mid, dialogId));
|
||||||
if (message.media instanceof TLRPC.TL_messageMediaPoll) {
|
|
||||||
TLRPC.TL_messageMediaPoll media = (TLRPC.TL_messageMediaPoll) message.media;
|
|
||||||
if (poll != null) {
|
|
||||||
media.poll = poll;
|
|
||||||
}
|
|
||||||
if (results != null) {
|
|
||||||
MessageObject.updatePollResults(media, results);
|
|
||||||
}
|
|
||||||
|
|
||||||
data = new NativeByteBuffer(message.getObjectSize());
|
|
||||||
message.serializeToStream(data);
|
|
||||||
state.requery();
|
|
||||||
state.bindByteBuffer(1, data);
|
|
||||||
state.bindInteger(2, mid);
|
|
||||||
state.bindLong(3, dialogId);
|
|
||||||
state.step();
|
|
||||||
data.reuse();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
SQLitePreparedStatement currentState = isTopic ? state_topics : state;
|
||||||
|
if (cursor.next()) {
|
||||||
|
NativeByteBuffer data = cursor.byteBufferValue(0);
|
||||||
|
if (data != null) {
|
||||||
|
TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false);
|
||||||
|
message.readAttachPath(data, getUserConfig().clientUserId);
|
||||||
|
data.reuse();
|
||||||
|
if (message.media instanceof TLRPC.TL_messageMediaPoll) {
|
||||||
|
TLRPC.TL_messageMediaPoll media = (TLRPC.TL_messageMediaPoll) message.media;
|
||||||
|
if (poll != null) {
|
||||||
|
media.poll = poll;
|
||||||
|
}
|
||||||
|
if (results != null) {
|
||||||
|
MessageObject.updatePollResults(media, results);
|
||||||
|
}
|
||||||
|
|
||||||
|
data = new NativeByteBuffer(message.getObjectSize());
|
||||||
|
message.serializeToStream(data);
|
||||||
|
currentState.requery();
|
||||||
|
currentState.bindByteBuffer(1, data);
|
||||||
|
currentState.bindInteger(2, mid);
|
||||||
|
currentState.bindLong(3, dialogId);
|
||||||
|
currentState.step();
|
||||||
|
data.reuse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foundMessage = true;
|
||||||
|
}
|
||||||
|
cursor.dispose();
|
||||||
|
}
|
||||||
|
if (!foundMessage) {
|
||||||
database.executeFast(String.format(Locale.US, "DELETE FROM polls_v2 WHERE mid = %d AND uid = %d", mid, dialogId)).stepThis().dispose();
|
database.executeFast(String.format(Locale.US, "DELETE FROM polls_v2 WHERE mid = %d AND uid = %d", mid, dialogId)).stepThis().dispose();
|
||||||
}
|
}
|
||||||
cursor.dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
state.dispose();
|
state.dispose();
|
||||||
|
@ -14975,19 +15012,27 @@ public class MessagesStorage extends BaseController {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void createFirstHoles(long did, SQLitePreparedStatement state5, SQLitePreparedStatement state6, int messageId) throws Exception {
|
public static void createFirstHoles(long did, SQLitePreparedStatement state5, SQLitePreparedStatement state6, int messageId, int topicId) throws Exception {
|
||||||
state5.requery();
|
state5.requery();
|
||||||
state5.bindLong(1, did);
|
int pointer = 1;
|
||||||
state5.bindInteger(2, messageId == 1 ? 1 : 0);
|
state5.bindLong(pointer++, did);
|
||||||
state5.bindInteger(3, messageId);
|
if (topicId != 0) {
|
||||||
|
state5.bindInteger(pointer++, topicId);
|
||||||
|
}
|
||||||
|
state5.bindInteger(pointer++, messageId == 1 ? 1 : 0);
|
||||||
|
state5.bindInteger(pointer++, messageId);
|
||||||
state5.step();
|
state5.step();
|
||||||
|
|
||||||
for (int b = 0; b < MediaDataController.MEDIA_TYPES_COUNT; b++) {
|
for (int b = 0; b < MediaDataController.MEDIA_TYPES_COUNT; b++) {
|
||||||
state6.requery();
|
state6.requery();
|
||||||
state6.bindLong(1, did);
|
pointer = 1;
|
||||||
state6.bindInteger(2, b);
|
state6.bindLong(pointer++, did);
|
||||||
state6.bindInteger(3, messageId == 1 ? 1 : 0);
|
if (topicId != 0) {
|
||||||
state6.bindInteger(4, messageId);
|
state6.bindInteger(pointer++, topicId);
|
||||||
|
}
|
||||||
|
state6.bindInteger(pointer++, b);
|
||||||
|
state6.bindInteger(pointer++, messageId == 1 ? 1 : 0);
|
||||||
|
state6.bindInteger(pointer++, messageId);
|
||||||
state6.step();
|
state6.step();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15157,7 +15202,7 @@ public class MessagesStorage extends BaseController {
|
||||||
closeHolesInTable("messages_holes", dialog.id, message.id, message.id, 0);
|
closeHolesInTable("messages_holes", dialog.id, message.id, message.id, 0);
|
||||||
closeHolesInMedia(dialog.id, message.id, message.id, -1, 0);
|
closeHolesInMedia(dialog.id, message.id, message.id, -1, 0);
|
||||||
} else {
|
} else {
|
||||||
createFirstHoles(dialog.id, state_holes, state_media_holes, message.id);
|
createFirstHoles(dialog.id, state_holes, state_media_holes, message.id, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,6 @@ import org.telegram.tgnet.TLRPC;
|
||||||
import org.telegram.ui.ActionBar.AlertDialog;
|
import org.telegram.ui.ActionBar.AlertDialog;
|
||||||
import org.telegram.ui.ActionBar.Theme;
|
import org.telegram.ui.ActionBar.Theme;
|
||||||
import org.telegram.ui.LaunchActivity;
|
import org.telegram.ui.LaunchActivity;
|
||||||
import org.w3c.dom.Text;
|
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
|
@ -372,7 +371,11 @@ public class Browser {
|
||||||
}
|
}
|
||||||
intent.putExtra(android.provider.Browser.EXTRA_CREATE_NEW_TAB, true);
|
intent.putExtra(android.provider.Browser.EXTRA_CREATE_NEW_TAB, true);
|
||||||
intent.putExtra(android.provider.Browser.EXTRA_APPLICATION_ID, context.getPackageName());
|
intent.putExtra(android.provider.Browser.EXTRA_APPLICATION_ID, context.getPackageName());
|
||||||
context.startActivity(intent);
|
if (internalUri && context instanceof LaunchActivity) {
|
||||||
|
((LaunchActivity) context).onNewIntent(intent);
|
||||||
|
} else {
|
||||||
|
context.startActivity(intent);
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
FileLog.e(e);
|
FileLog.e(e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -8270,7 +8270,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
}
|
}
|
||||||
radii[a * 2] = radii[a * 2 + 1] = 0;
|
radii[a * 2] = radii[a * 2 + 1] = 0;
|
||||||
}
|
}
|
||||||
if (!out && !drawPinnedBottom && currentPosition == null) {
|
if (!out && !drawPinnedBottom && currentPosition == null && (currentMessageObject == null || currentMessageObject.type != MessageObject.TYPE_POLL)) {
|
||||||
path.moveTo(rect.left + AndroidUtilities.dp(6), rect.top);
|
path.moveTo(rect.left + AndroidUtilities.dp(6), rect.top);
|
||||||
path.lineTo(rect.left + AndroidUtilities.dp(6), rect.bottom - AndroidUtilities.dp(6) - AndroidUtilities.dp(2 + 3));
|
path.lineTo(rect.left + AndroidUtilities.dp(6), rect.bottom - AndroidUtilities.dp(6) - AndroidUtilities.dp(2 + 3));
|
||||||
AndroidUtilities.rectTmp.set(
|
AndroidUtilities.rectTmp.set(
|
||||||
|
@ -10344,12 +10344,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
if (currentMessageObject == null || currentMessageObject != null && currentMessageObject.hasExtendedMedia()) {
|
if (currentMessageObject == null || currentMessageObject != null && currentMessageObject.hasExtendedMedia()) {
|
||||||
return MediaActionDrawable.ICON_NONE;
|
return MediaActionDrawable.ICON_NONE;
|
||||||
}
|
}
|
||||||
if (documentAttachType == DOCUMENT_ATTACH_TYPE_ROUND && currentMessageObject.isVoiceTranscriptionOpen()) {
|
if (documentAttachType == DOCUMENT_ATTACH_TYPE_ROUND && currentMessageObject.isVoiceTranscriptionOpen() && (currentMessageObject != null && currentMessageObject.attachPathExists && !TextUtils.isEmpty(currentMessageObject.messageOwner.attachPath) || currentMessageObject.mediaExists)) {
|
||||||
if (currentMessageObject.isOutOwner()) {
|
|
||||||
radialProgress.setColors(Theme.key_chat_outLoader, Theme.key_chat_outLoaderSelected, Theme.key_chat_outMediaIcon, Theme.key_chat_outMediaIconSelected);
|
|
||||||
} else {
|
|
||||||
radialProgress.setColors(Theme.key_chat_inLoader, Theme.key_chat_inLoaderSelected, Theme.key_chat_inMediaIcon, Theme.key_chat_inMediaIconSelected);
|
|
||||||
}
|
|
||||||
if (buttonState == 1 || buttonState == 4) {
|
if (buttonState == 1 || buttonState == 4) {
|
||||||
return MediaActionDrawable.ICON_PAUSE;
|
return MediaActionDrawable.ICON_PAUSE;
|
||||||
}
|
}
|
||||||
|
@ -10414,6 +10409,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (currentMessageObject != null && isRoundVideo && currentMessageObject.isVoiceTranscriptionOpen()) {
|
||||||
|
return MediaActionDrawable.ICON_PLAY;
|
||||||
|
}
|
||||||
return MediaActionDrawable.ICON_NONE;
|
return MediaActionDrawable.ICON_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10531,7 +10529,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
}
|
}
|
||||||
boolean fromBot = currentMessageObject.messageOwner.params != null && currentMessageObject.messageOwner.params.containsKey("query_id");
|
boolean fromBot = currentMessageObject.messageOwner.params != null && currentMessageObject.messageOwner.params.containsKey("query_id");
|
||||||
|
|
||||||
if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC || documentAttachType == DOCUMENT_ATTACH_TYPE_ROUND && currentMessageObject != null && currentMessageObject.isVoiceTranscriptionOpen()) {
|
if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC || documentAttachType == DOCUMENT_ATTACH_TYPE_ROUND && currentMessageObject != null && currentMessageObject.isVoiceTranscriptionOpen() && fileExists) {
|
||||||
if (currentMessageObject.isOut() && (currentMessageObject.isSending() && !currentMessageObject.isForwarded() || currentMessageObject.isEditing() && currentMessageObject.isEditingMedia()) || currentMessageObject.isSendError() && fromBot) {
|
if (currentMessageObject.isOut() && (currentMessageObject.isSending() && !currentMessageObject.isForwarded() || currentMessageObject.isEditing() && currentMessageObject.isEditingMedia()) || currentMessageObject.isSendError() && fromBot) {
|
||||||
if (!TextUtils.isEmpty(currentMessageObject.messageOwner.attachPath)) {
|
if (!TextUtils.isEmpty(currentMessageObject.messageOwner.attachPath)) {
|
||||||
DownloadController.getInstance(currentAccount).addLoadingFileObserver(currentMessageObject.messageOwner.attachPath, currentMessageObject, this);
|
DownloadController.getInstance(currentAccount).addLoadingFileObserver(currentMessageObject.messageOwner.attachPath, currentMessageObject, this);
|
||||||
|
@ -10910,7 +10908,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
currentMessageObject.putInDownloadsStore = true;
|
currentMessageObject.putInDownloadsStore = true;
|
||||||
}
|
}
|
||||||
if (buttonState == 0 && (!drawVideoImageButton || video)) {
|
if (buttonState == 0 && (!drawVideoImageButton || video)) {
|
||||||
if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC || documentAttachType == DOCUMENT_ATTACH_TYPE_ROUND && currentMessageObject != null && currentMessageObject.isVoiceTranscriptionOpen()) {
|
if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC || documentAttachType == DOCUMENT_ATTACH_TYPE_ROUND && currentMessageObject != null && currentMessageObject.isVoiceTranscriptionOpen() && currentMessageObject.mediaExists) {
|
||||||
if (miniButtonState == 0) {
|
if (miniButtonState == 0) {
|
||||||
FileLoader.getInstance(currentAccount).loadFile(documentAttach, currentMessageObject, FileLoader.PRIORITY_NORMAL_UP, 0);
|
FileLoader.getInstance(currentAccount).loadFile(documentAttach, currentMessageObject, FileLoader.PRIORITY_NORMAL_UP, 0);
|
||||||
currentMessageObject.loadingCancelled = false;
|
currentMessageObject.loadingCancelled = false;
|
||||||
|
@ -14156,7 +14154,12 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
endX += AndroidUtilities.dp(14);
|
endX += AndroidUtilities.dp(14);
|
||||||
buttonX -= AndroidUtilities.dp(10);
|
buttonX -= AndroidUtilities.dp(10);
|
||||||
}
|
}
|
||||||
commentButtonRect.set(buttonX - AndroidUtilities.dp((currentMessageObject == null || !currentMessageObject.isOut()) && !drawPinnedBottom && currentPosition == null ? 6 : 0), (int) buttonY, endX - AndroidUtilities.dp(14), layoutHeight - AndroidUtilities.dp(h));
|
commentButtonRect.set(
|
||||||
|
buttonX - AndroidUtilities.dp((currentMessageObject == null || !currentMessageObject.isOut()) && !drawPinnedBottom && currentPosition == null && (currentMessageObject == null || currentMessageObject.type != MessageObject.TYPE_POLL) ? 6 : 0),
|
||||||
|
(int) buttonY,
|
||||||
|
endX - AndroidUtilities.dp(14),
|
||||||
|
layoutHeight - AndroidUtilities.dp(h)
|
||||||
|
);
|
||||||
if (selectorDrawable[1] != null && selectorDrawableMaskType[1] == 2) {
|
if (selectorDrawable[1] != null && selectorDrawableMaskType[1] == 2) {
|
||||||
int count = canvas.getSaveCount();
|
int count = canvas.getSaveCount();
|
||||||
selectorDrawable[1].setBounds(commentButtonRect);
|
selectorDrawable[1].setBounds(commentButtonRect);
|
||||||
|
@ -16174,7 +16177,8 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
radialProgress.setBackgroundDrawable(isDrawSelectionBackground() ? currentBackgroundSelectedDrawable : currentBackgroundDrawable);
|
radialProgress.setBackgroundDrawable(isDrawSelectionBackground() ? currentBackgroundSelectedDrawable : currentBackgroundDrawable);
|
||||||
}
|
}
|
||||||
boolean restore = false;
|
boolean restore = false;
|
||||||
if (currentMessageObject.isOutOwner() && !currentMessageObject.isSent()) {
|
boolean on = false;
|
||||||
|
if (currentMessageObject != null && currentMessageObject.isRoundVideo() && (getVideoTranscriptionProgress() <= 0 && !currentMessageObject.mediaExists)) {
|
||||||
radialProgress.setProgressRect(
|
radialProgress.setProgressRect(
|
||||||
photoImage.getImageX() + (photoImage.getImageWidth() - radialProgress.getRadius()) / 2f,
|
photoImage.getImageX() + (photoImage.getImageWidth() - radialProgress.getRadius()) / 2f,
|
||||||
photoImage.getImageY() + (photoImage.getImageHeight() - radialProgress.getRadius()) / 2f,
|
photoImage.getImageY() + (photoImage.getImageHeight() - radialProgress.getRadius()) / 2f,
|
||||||
|
@ -16194,11 +16198,11 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||||
restore = true;
|
restore = true;
|
||||||
}
|
}
|
||||||
if ((!isRoundVideo || !hasLinkPreview) && (!currentMessageObject.needDrawBluredPreview() || !MediaController.getInstance().isPlayingMessage(currentMessageObject))) {
|
if ((!isRoundVideo || !hasLinkPreview) && (!currentMessageObject.needDrawBluredPreview() || !MediaController.getInstance().isPlayingMessage(currentMessageObject))) {
|
||||||
if (isRoundVideo) {
|
if (isRoundVideo && !on) {
|
||||||
radialProgress.overrideCircleAlpha = .25f + .75f * (1f - getVideoTranscriptionProgress());
|
radialProgress.overrideCircleAlpha = .25f + .75f * (1f - getVideoTranscriptionProgress());
|
||||||
}
|
}
|
||||||
radialProgress.draw(canvas);
|
radialProgress.draw(canvas);
|
||||||
if (isRoundVideo) {
|
if (isRoundVideo && !on) {
|
||||||
radialProgress.overrideCircleAlpha = 1f;
|
radialProgress.overrideCircleAlpha = 1f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,6 @@ import android.text.Spannable;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
import android.text.SpannableStringBuilder;
|
import android.text.SpannableStringBuilder;
|
||||||
import android.text.Spanned;
|
import android.text.Spanned;
|
||||||
import android.text.StaticLayout;
|
|
||||||
import android.text.TextPaint;
|
import android.text.TextPaint;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.text.style.CharacterStyle;
|
import android.text.style.CharacterStyle;
|
||||||
|
@ -15183,6 +15182,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
needAnimateToMessage = null;
|
needAnimateToMessage = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MessageObject oldMessage = messagesDict[loadIndex].get(messageId);
|
||||||
messagesDict[loadIndex].put(messageId, obj);
|
messagesDict[loadIndex].put(messageId, obj);
|
||||||
ArrayList<MessageObject> dayArray = messagesByDays.get(obj.dateKey);
|
ArrayList<MessageObject> dayArray = messagesByDays.get(obj.dateKey);
|
||||||
|
|
||||||
|
@ -15270,7 +15270,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
|
|
||||||
newRowsCount++;
|
newRowsCount++;
|
||||||
dayArray.add(obj);
|
dayArray.add(obj);
|
||||||
obj.stableId = lastStableId++;
|
if (oldMessage != null) {
|
||||||
|
obj.stableId = oldMessage.stableId;
|
||||||
|
} else {
|
||||||
|
obj.stableId = lastStableId++;
|
||||||
|
}
|
||||||
if (load_type == 1) {
|
if (load_type == 1) {
|
||||||
messages.add(0, obj);
|
messages.add(0, obj);
|
||||||
} else {
|
} else {
|
||||||
|
@ -16522,11 +16526,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
MediaController.getInstance().setTextureView(createTextureView(true), aspectRatioFrameLayout, videoPlayerContainer, true);
|
MediaController.getInstance().setTextureView(createTextureView(true), aspectRatioFrameLayout, videoPlayerContainer, true);
|
||||||
updateTextureViewPosition(true, true);
|
updateTextureViewPosition(true, true);
|
||||||
} else {
|
} else {
|
||||||
MediaController.getInstance().setTextureView(createTextureView(true), aspectRatioFrameLayout, videoPlayerContainer, true, () -> {
|
MediaController.getInstance().setTextureView(createTextureView(true), aspectRatioFrameLayout, videoPlayerContainer, true);
|
||||||
checkTextureViewPosition = true;
|
|
||||||
updateMessagesVisiblePart(false);
|
|
||||||
updateTextureViewPosition(true, false);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26167,9 +26167,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
if (messageObject.isVoice() || messageObject.isRoundVideo()) {
|
if (messageObject.isVoice() || messageObject.isRoundVideo()) {
|
||||||
boolean result = MediaController.getInstance().playMessage(messageObject, muted);
|
boolean result = MediaController.getInstance().playMessage(messageObject, muted);
|
||||||
MediaController.getInstance().setVoiceMessagesPlaylist(result ? createVoiceMessagesPlaylist(messageObject, false) : null, false);
|
MediaController.getInstance().setVoiceMessagesPlaylist(result ? createVoiceMessagesPlaylist(messageObject, false) : null, false);
|
||||||
// if (messageObject.isRoundVideo() && messageObject.isVoiceTranscriptionOpen()) {
|
|
||||||
// AndroidUtilities.runOnUIThread(() -> updateMessagesVisiblePart(false), 450);
|
|
||||||
// }
|
|
||||||
return result;
|
return result;
|
||||||
} else if (messageObject.isMusic()) {
|
} else if (messageObject.isMusic()) {
|
||||||
return MediaController.getInstance().setPlaylist(messages, messageObject, mergeDialogId);
|
return MediaController.getInstance().setPlaylist(messages, messageObject, mergeDialogId);
|
||||||
|
@ -26407,6 +26404,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||||
new PremiumFeatureBottomSheet(ChatActivity.this, PremiumPreviewFragment.PREMIUM_FEATURE_VOICE_TO_TEXT, true).show();
|
new PremiumFeatureBottomSheet(ChatActivity.this, PremiumPreviewFragment.PREMIUM_FEATURE_VOICE_TO_TEXT, true).show();
|
||||||
getMessagesController().pressTranscribeButton();
|
getMessagesController().pressTranscribeButton();
|
||||||
});
|
});
|
||||||
|
try {
|
||||||
|
topUndoView.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING);
|
||||||
|
} catch (Exception ignored) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ import androidx.core.util.Consumer;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
import androidx.dynamicanimation.animation.DynamicAnimation;
|
import androidx.dynamicanimation.animation.DynamicAnimation;
|
||||||
import androidx.dynamicanimation.animation.FloatPropertyCompat;
|
import androidx.dynamicanimation.animation.FloatPropertyCompat;
|
||||||
|
import androidx.dynamicanimation.animation.FloatValueHolder;
|
||||||
import androidx.dynamicanimation.animation.SpringAnimation;
|
import androidx.dynamicanimation.animation.SpringAnimation;
|
||||||
import androidx.dynamicanimation.animation.SpringForce;
|
import androidx.dynamicanimation.animation.SpringForce;
|
||||||
|
|
||||||
|
@ -77,6 +78,8 @@ public class Bulletin {
|
||||||
|
|
||||||
public int tag;
|
public int tag;
|
||||||
public int hash;
|
public int hash;
|
||||||
|
private View.OnLayoutChangeListener containerLayoutListener;
|
||||||
|
private SpringAnimation bottomOffsetSpring;
|
||||||
|
|
||||||
public static Bulletin make(@NonNull FrameLayout containerLayout, @NonNull Layout contentLayout, int duration) {
|
public static Bulletin make(@NonNull FrameLayout containerLayout, @NonNull Layout contentLayout, int duration) {
|
||||||
return new Bulletin(null, containerLayout, contentLayout, duration);
|
return new Bulletin(null, containerLayout, contentLayout, duration);
|
||||||
|
@ -198,6 +201,33 @@ public class Bulletin {
|
||||||
visibleBulletin = this;
|
visibleBulletin = this;
|
||||||
layout.onAttach(this);
|
layout.onAttach(this);
|
||||||
|
|
||||||
|
containerLayout.addOnLayoutChangeListener(containerLayoutListener = (v, left, top1, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
|
||||||
|
if (!top) {
|
||||||
|
int newOffset = currentDelegate != null ? currentDelegate.getBottomOffset(tag) : 0;
|
||||||
|
if (currentBottomOffset != newOffset) {
|
||||||
|
if (bottomOffsetSpring == null || !bottomOffsetSpring.isRunning()) {
|
||||||
|
bottomOffsetSpring = new SpringAnimation(new FloatValueHolder(currentBottomOffset))
|
||||||
|
.setSpring(new SpringForce()
|
||||||
|
.setFinalPosition(newOffset)
|
||||||
|
.setStiffness(900f)
|
||||||
|
.setDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY));
|
||||||
|
bottomOffsetSpring.addUpdateListener((animation, value, velocity) -> {
|
||||||
|
currentBottomOffset = (int) value;
|
||||||
|
updatePosition();
|
||||||
|
});
|
||||||
|
bottomOffsetSpring.addEndListener((animation, canceled, value, velocity) -> {
|
||||||
|
if (bottomOffsetSpring == animation) {
|
||||||
|
bottomOffsetSpring = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
bottomOffsetSpring.getSpring().setFinalPosition(newOffset);
|
||||||
|
}
|
||||||
|
bottomOffsetSpring.start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
layout.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
layout.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onLayoutChange(View v, int left, int t, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
public void onLayoutChange(View v, int left, int t, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
||||||
|
@ -205,7 +235,9 @@ public class Bulletin {
|
||||||
if (showing) {
|
if (showing) {
|
||||||
layout.onShow();
|
layout.onShow();
|
||||||
currentDelegate = findDelegate(containerFragment, containerLayout);
|
currentDelegate = findDelegate(containerFragment, containerLayout);
|
||||||
currentBottomOffset = currentDelegate != null ? currentDelegate.getBottomOffset(tag) : 0;
|
if (bottomOffsetSpring == null || !bottomOffsetSpring.isRunning()) {
|
||||||
|
currentBottomOffset = currentDelegate != null ? currentDelegate.getBottomOffset(tag) : 0;
|
||||||
|
}
|
||||||
if (currentDelegate != null) {
|
if (currentDelegate != null) {
|
||||||
currentDelegate.onShow(Bulletin.this);
|
currentDelegate.onShow(Bulletin.this);
|
||||||
}
|
}
|
||||||
|
@ -314,6 +346,7 @@ public class Bulletin {
|
||||||
layout.onExitTransitionEnd();
|
layout.onExitTransitionEnd();
|
||||||
layout.onHide();
|
layout.onHide();
|
||||||
containerLayout.removeView(parentLayout);
|
containerLayout.removeView(parentLayout);
|
||||||
|
containerLayout.removeOnLayoutChangeListener(containerLayoutListener);
|
||||||
layout.onDetach();
|
layout.onDetach();
|
||||||
}, offset -> {
|
}, offset -> {
|
||||||
if (currentDelegate != null && !layout.top) {
|
if (currentDelegate != null && !layout.top) {
|
||||||
|
@ -332,7 +365,10 @@ public class Bulletin {
|
||||||
layout.onExitTransitionEnd();
|
layout.onExitTransitionEnd();
|
||||||
layout.onHide();
|
layout.onHide();
|
||||||
if (containerLayout != null) {
|
if (containerLayout != null) {
|
||||||
AndroidUtilities.runOnUIThread(() -> containerLayout.removeView(parentLayout));
|
AndroidUtilities.runOnUIThread(() -> {
|
||||||
|
containerLayout.removeView(parentLayout);
|
||||||
|
containerLayout.removeOnLayoutChangeListener(containerLayoutListener);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
layout.onDetach();
|
layout.onDetach();
|
||||||
}
|
}
|
||||||
|
@ -739,12 +775,19 @@ public class Bulletin {
|
||||||
if (top) {
|
if (top) {
|
||||||
translation -= delegate.getTopOffset(bulletin != null ? bulletin.tag : 0);
|
translation -= delegate.getTopOffset(bulletin != null ? bulletin.tag : 0);
|
||||||
} else {
|
} else {
|
||||||
translation += delegate.getBottomOffset(bulletin != null ? bulletin.tag : 0);
|
translation += getBottomOffset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setTranslationY(-translation + inOutOffset * (top ? -1 : 1));
|
setTranslationY(-translation + inOutOffset * (top ? -1 : 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float getBottomOffset() {
|
||||||
|
if (bulletin != null && bulletin.bottomOffsetSpring != null && bulletin.bottomOffsetSpring.isRunning()) {
|
||||||
|
return bulletin.currentBottomOffset;
|
||||||
|
}
|
||||||
|
return delegate.getBottomOffset(bulletin != null ? bulletin.tag : 0);
|
||||||
|
}
|
||||||
|
|
||||||
public interface Callback {
|
public interface Callback {
|
||||||
default void onAttach(@NonNull Layout layout, @NonNull Bulletin bulletin) {
|
default void onAttach(@NonNull Layout layout, @NonNull Bulletin bulletin) {
|
||||||
}
|
}
|
||||||
|
@ -919,7 +962,7 @@ public class Bulletin {
|
||||||
0,
|
0,
|
||||||
delegate.getTopOffset(bulletin.tag) - getY(),
|
delegate.getTopOffset(bulletin.tag) - getY(),
|
||||||
getMeasuredWidth(),
|
getMeasuredWidth(),
|
||||||
((View) getParent()).getMeasuredHeight() - delegate.getBottomOffset(bulletin.tag) - getY()
|
((View) getParent()).getMeasuredHeight() - getBottomOffset() - getY()
|
||||||
);
|
);
|
||||||
background.draw(canvas);
|
background.draw(canvas);
|
||||||
super.dispatchDraw(canvas);
|
super.dispatchDraw(canvas);
|
||||||
|
|
|
@ -420,7 +420,7 @@ public class PremiumFeatureBottomSheet extends BottomSheet implements Notificati
|
||||||
if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_REACTIONS) {
|
if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_REACTIONS) {
|
||||||
premiumButtonView.buttonTextView.setText(LocaleController.getString(R.string.UnlockPremiumReactions));
|
premiumButtonView.buttonTextView.setText(LocaleController.getString(R.string.UnlockPremiumReactions));
|
||||||
premiumButtonView.setIcon(R.raw.unlock_icon);
|
premiumButtonView.setIcon(R.raw.unlock_icon);
|
||||||
} else if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_ADS || startType == PremiumPreviewFragment.PREMIUM_FEATURE_DOWNLOAD_SPEED || startType == PremiumPreviewFragment.PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT) {
|
} else if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_ADS || startType == PremiumPreviewFragment.PREMIUM_FEATURE_DOWNLOAD_SPEED || startType == PremiumPreviewFragment.PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT || startType == PremiumPreviewFragment.PREMIUM_FEATURE_VOICE_TO_TEXT) {
|
||||||
premiumButtonView.buttonTextView.setText(LocaleController.getString(R.string.AboutTelegramPremium));
|
premiumButtonView.buttonTextView.setText(LocaleController.getString(R.string.AboutTelegramPremium));
|
||||||
} else if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_APPLICATION_ICONS) {
|
} else if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_APPLICATION_ICONS) {
|
||||||
premiumButtonView.buttonTextView.setText(LocaleController.getString(R.string.UnlockPremiumIcons));
|
premiumButtonView.buttonTextView.setText(LocaleController.getString(R.string.UnlockPremiumIcons));
|
||||||
|
@ -609,6 +609,9 @@ public class PremiumFeatureBottomSheet extends BottomSheet implements Notificati
|
||||||
} else if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT) {
|
} else if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_ADVANCED_CHAT_MANAGEMENT) {
|
||||||
title.setText(LocaleController.getString(R.string.PremiumPreviewAdvancedChatManagement));
|
title.setText(LocaleController.getString(R.string.PremiumPreviewAdvancedChatManagement));
|
||||||
description.setText(LocaleController.getString(R.string.PremiumPreviewAdvancedChatManagementDescription2));
|
description.setText(LocaleController.getString(R.string.PremiumPreviewAdvancedChatManagementDescription2));
|
||||||
|
} else if (startType == PremiumPreviewFragment.PREMIUM_FEATURE_VOICE_TO_TEXT) {
|
||||||
|
title.setText(LocaleController.getString(R.string.PremiumPreviewVoiceToText));
|
||||||
|
description.setText(LocaleController.getString(R.string.PremiumPreviewVoiceToTextDescription2));
|
||||||
}
|
}
|
||||||
topViewOnFullHeight = false;
|
topViewOnFullHeight = false;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -54,9 +54,19 @@ public class VideoScreenPreview extends FrameLayout implements PagerHeaderView,
|
||||||
String attachFileName;
|
String attachFileName;
|
||||||
ImageReceiver imageReceiver = new ImageReceiver(this);
|
ImageReceiver imageReceiver = new ImageReceiver(this);
|
||||||
|
|
||||||
|
Runnable nextCheck;
|
||||||
|
|
||||||
private void checkVideo() {
|
private void checkVideo() {
|
||||||
if (file != null && file.exists() || SharedConfig.streamMedia) {
|
if (file != null && file.exists() || SharedConfig.streamMedia) {
|
||||||
if (file != null && file.exists()) {
|
if (file != null && file.exists()) {
|
||||||
|
if ((NotificationCenter.getGlobalInstance().getCurrentHeavyOperationFlags() & 512) != 0) {
|
||||||
|
if (nextCheck != null) {
|
||||||
|
AndroidUtilities.cancelRunOnUIThread(nextCheck);
|
||||||
|
}
|
||||||
|
AndroidUtilities.runOnUIThread(nextCheck = this::checkVideo, 300);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
|
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
|
||||||
retriever.setDataSource(ApplicationLoader.applicationContext, Uri.fromFile(file));
|
retriever.setDataSource(ApplicationLoader.applicationContext, Uri.fromFile(file));
|
||||||
int width = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
|
int width = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
|
||||||
|
@ -71,6 +81,7 @@ public class VideoScreenPreview extends FrameLayout implements PagerHeaderView,
|
||||||
runVideoPlayer();
|
runVideoPlayer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
nextCheck = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
int currentAccount;
|
int currentAccount;
|
||||||
|
|
|
@ -5546,6 +5546,7 @@
|
||||||
<string name="LimitReachedAccountsPremium">Sorry, you can\'t add more than **%1$d** accounts.</string>
|
<string name="LimitReachedAccountsPremium">Sorry, you can\'t add more than **%1$d** accounts.</string>
|
||||||
<string name="PremiumPreviewVoiceToText">Voice-to-Text Conversion</string>
|
<string name="PremiumPreviewVoiceToText">Voice-to-Text Conversion</string>
|
||||||
<string name="PremiumPreviewVoiceToTextDescription">Ability to read the transcript of any incoming voice message.</string>
|
<string name="PremiumPreviewVoiceToTextDescription">Ability to read the transcript of any incoming voice message.</string>
|
||||||
|
<string name="PremiumPreviewVoiceToTextDescription2">Subscribe to Telegram Premium to be able to convert voice and video messages to text.</string>
|
||||||
<string name="PremiumPreviewAdvancedChatManagement">Advanced Chat Management</string>
|
<string name="PremiumPreviewAdvancedChatManagement">Advanced Chat Management</string>
|
||||||
<string name="PremiumStickersShort">Premium</string>
|
<string name="PremiumStickersShort">Premium</string>
|
||||||
<string name="PremiumStickers">Premuim Stickers</string>
|
<string name="PremiumStickers">Premuim Stickers</string>
|
||||||
|
|
|
@ -13,8 +13,8 @@
|
||||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||||
# org.gradle.parallel=true
|
# org.gradle.parallel=true
|
||||||
#Sat Mar 12 05:53:50 MSK 2016
|
#Sat Mar 12 05:53:50 MSK 2016
|
||||||
APP_VERSION_NAME=9.1.1
|
APP_VERSION_NAME=9.1.2
|
||||||
APP_VERSION_CODE=2900
|
APP_VERSION_CODE=2902
|
||||||
APP_PACKAGE=org.telegram.messenger
|
APP_PACKAGE=org.telegram.messenger
|
||||||
RELEASE_KEY_PASSWORD=TelegramAndroidPswd
|
RELEASE_KEY_PASSWORD=TelegramAndroidPswd
|
||||||
RELEASE_KEY_ALIAS=tmessages
|
RELEASE_KEY_ALIAS=tmessages
|
||||||
|
|
Loading…
Reference in a new issue