diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle
index 61a65305789..fbaef363213 100644
--- a/TMessagesProj/build.gradle
+++ b/TMessagesProj/build.gradle
@@ -17,7 +17,7 @@ configurations.all {
}
dependencies {
- implementation 'androidx.core:core:1.16.0'
+ implementation 'androidx.core:core:1.17.0'
implementation 'androidx.palette:palette:1.0.0'
implementation 'androidx.exifinterface:exifinterface:1.3.6'
implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0'
@@ -83,8 +83,8 @@ dependencies {
def isWindows = String.valueOf(DefaultNativePlatform.currentOperatingSystem.toFamilyName() == OperatingSystemFamily.WINDOWS)
android {
- compileSdkVersion 35
- buildToolsVersion '35.0.0'
+ compileSdkVersion 36
+ buildToolsVersion '36.0.0'
ndkVersion "27.2.12479018"
sourceSets.main.jniLibs.srcDirs = ['./jni/']
diff --git a/TMessagesProj/src/main/AndroidManifest.xml b/TMessagesProj/src/main/AndroidManifest.xml
index 6f6d377d029..0c121bc79e0 100644
--- a/TMessagesProj/src/main/AndroidManifest.xml
+++ b/TMessagesProj/src/main/AndroidManifest.xml
@@ -23,6 +23,7 @@
+
@@ -581,6 +582,8 @@
+
+
diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/CancelVideoUploadReceiver.java b/TMessagesProj/src/main/java/org/telegram/messenger/CancelVideoUploadReceiver.java
new file mode 100644
index 00000000000..8168a9354bd
--- /dev/null
+++ b/TMessagesProj/src/main/java/org/telegram/messenger/CancelVideoUploadReceiver.java
@@ -0,0 +1,21 @@
+/*
+ * This is the source code of Telegram for Android v. 5.x.x.
+ * It is licensed under GNU GPL v. 2 or later.
+ * You should have received a copy of the license in this archive (see LICENSE).
+ *
+ * Copyright Nikolai Kudashov, 2013-2018.
+ */
+
+package org.telegram.messenger;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+public class CancelVideoUploadReceiver extends BroadcastReceiver {
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ VideoEncodingService.cancelCurrent();
+ }
+}
diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/VideoEncodingService.java b/TMessagesProj/src/main/java/org/telegram/messenger/VideoEncodingService.java
index 833d984c311..18d08ed8c0e 100644
--- a/TMessagesProj/src/main/java/org/telegram/messenger/VideoEncodingService.java
+++ b/TMessagesProj/src/main/java/org/telegram/messenger/VideoEncodingService.java
@@ -8,9 +8,11 @@
package org.telegram.messenger;
+import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
+import android.text.TextUtils;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
@@ -18,6 +20,7 @@
public class VideoEncodingService extends Service implements NotificationCenter.NotificationCenterDelegate {
private NotificationCompat.Builder builder;
+ private NotificationCompat.ProgressStyle progressStyle;
private MediaController.VideoConvertMessage currentMessage;
private static VideoEncodingService instance;
@@ -54,6 +57,12 @@ public static void stop() {
}
}
+ public static void cancelCurrent() {
+ if (instance != null && instance.currentMessage != null) {
+ SendMessagesHelper.getInstance(instance.currentAccount).cancelSendingMessage(instance.currentMessage.messageObject);
+ }
+ }
+
public IBinder onBind(Intent arg2) {
return null;
}
@@ -87,7 +96,11 @@ public void didReceivedNotification(int id, int account, Object... args) {
float progress = Math.min(1f, loadedSize / (float) totalSize);
Boolean enc = (Boolean) args[3];
int currentProgress = (int) (progress * 100);
- builder.setProgress(100, currentProgress, currentProgress == 0);
+ if (progressStyle != null) {
+ progressStyle.setProgress(currentProgress);
+ } else {
+ builder.setProgress(100, currentProgress, currentProgress == 0);
+ }
updateNotification();
}
} else if (id == NotificationCenter.fileUploaded || id == NotificationCenter.fileUploadFailed) {
@@ -134,6 +147,12 @@ public int onStartCommand(Intent intent, int flags, int startId) {
builder.setWhen(System.currentTimeMillis());
builder.setChannelId(NotificationsController.OTHER_NOTIFICATIONS_CHANNEL);
builder.setContentTitle(LocaleController.getString(R.string.AppName));
+ builder.setOngoing(true);
+ if (NotificationManagerCompat.from(ApplicationLoader.applicationContext).canPostPromotedNotifications()) {
+ builder.setRequestPromotedOngoing(true);
+ }
+ Intent cancelIntent = new Intent(ApplicationLoader.applicationContext, CancelVideoUploadReceiver.class);
+ builder.addAction(0, LocaleController.getString(R.string.Cancel), PendingIntent.getBroadcast(ApplicationLoader.applicationContext, 4, cancelIntent, PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT));
}
setCurrentMessage(videoConvertMessage);
try {
@@ -150,6 +169,9 @@ private void updateBuilderForMessage(MediaController.VideoConvertMessage videoCo
if (videoConvertMessage == null) {
return;
}
+ String name = videoConvertMessage.messageObject != null ? DialogObject.getName(videoConvertMessage.currentAccount, videoConvertMessage.messageObject.getDialogId()) : null;
+ builder.setContentTitle(TextUtils.isEmpty(name) ? LocaleController.getString(R.string.AppName) : name);
+
boolean isGif = videoConvertMessage.messageObject != null && MessageObject.isGifMessage(videoConvertMessage.messageObject.messageOwner);
if (videoConvertMessage.foregroundConversion) {
builder.setTicker(LocaleController.getString(R.string.ConvertingVideo));
@@ -161,8 +183,10 @@ private void updateBuilderForMessage(MediaController.VideoConvertMessage videoCo
builder.setTicker(LocaleController.getString(R.string.SendingVideo));
builder.setContentText(LocaleController.getString(R.string.SendingVideo));
}
- int currentProgress = 0;
- builder.setProgress(100, currentProgress, true);
+ progressStyle = new NotificationCompat.ProgressStyle()
+ .addProgressSegment(new NotificationCompat.ProgressStyle.Segment(100))
+ .setProgress(0);
+ builder.setStyle(progressStyle);
}
private void setCurrentMessage(MediaController.VideoConvertMessage message) {
diff --git a/TMessagesProj_App/build.gradle b/TMessagesProj_App/build.gradle
index 2aa197cb3b8..48b72efa807 100644
--- a/TMessagesProj_App/build.gradle
+++ b/TMessagesProj_App/build.gradle
@@ -21,8 +21,8 @@ dependencies {
}
android {
- compileSdkVersion 35
- buildToolsVersion '35.0.0'
+ compileSdkVersion 36
+ buildToolsVersion '36.0.0'
defaultConfig.applicationId = APP_PACKAGE
diff --git a/TMessagesProj_AppHockeyApp/build.gradle b/TMessagesProj_AppHockeyApp/build.gradle
index 84c1e415c50..07809fb84a7 100644
--- a/TMessagesProj_AppHockeyApp/build.gradle
+++ b/TMessagesProj_AppHockeyApp/build.gradle
@@ -34,8 +34,8 @@ dependencies {
}
android {
- compileSdkVersion 35
- buildToolsVersion '35.0.0'
+ compileSdkVersion 36
+ buildToolsVersion '36.0.0'
defaultConfig.applicationId = APP_PACKAGE
diff --git a/TMessagesProj_AppHuawei/build.gradle b/TMessagesProj_AppHuawei/build.gradle
index a968b466b49..3bec10ab41e 100644
--- a/TMessagesProj_AppHuawei/build.gradle
+++ b/TMessagesProj_AppHuawei/build.gradle
@@ -29,8 +29,8 @@ dependencies {
}
android {
- compileSdkVersion 35
- buildToolsVersion '35.0.0'
+ compileSdkVersion 36
+ buildToolsVersion '36.0.0'
defaultConfig.applicationId = APP_PACKAGE
diff --git a/TMessagesProj_AppStandalone/build.gradle b/TMessagesProj_AppStandalone/build.gradle
index 21cfc7f690f..e1b98047db6 100644
--- a/TMessagesProj_AppStandalone/build.gradle
+++ b/TMessagesProj_AppStandalone/build.gradle
@@ -23,8 +23,8 @@ dependencies {
}
android {
- compileSdkVersion 35
- buildToolsVersion '35.0.0'
+ compileSdkVersion 36
+ buildToolsVersion '36.0.0'
defaultConfig.applicationId = APP_PACKAGE
diff --git a/TMessagesProj_AppTests/build.gradle b/TMessagesProj_AppTests/build.gradle
index 914fb88e1a0..e300982e043 100644
--- a/TMessagesProj_AppTests/build.gradle
+++ b/TMessagesProj_AppTests/build.gradle
@@ -29,8 +29,8 @@ dependencies {
}
android {
- compileSdkVersion 35
- buildToolsVersion '35.0.0'
+ compileSdkVersion 36
+ buildToolsVersion '36.0.0'
defaultConfig.applicationId = APP_PACKAGE