mirror of
https://github.com/DrKLO/Telegram.git
synced 2024-12-22 14:35:03 +01:00
update to 2.3.6
This commit is contained in:
parent
c824df619a
commit
27b74b537e
8 changed files with 196 additions and 98 deletions
|
@ -141,7 +141,6 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
|
|||
void setTimeDifference(int diff) {
|
||||
boolean store = Math.abs(diff - timeDifference) > 25;
|
||||
timeDifference = diff;
|
||||
//_timeOffsetFromUTC = _timeDifference + (int)[[NSTimeZone localTimeZone] secondsFromGMT];
|
||||
if (store) {
|
||||
saveSession();
|
||||
}
|
||||
|
@ -596,18 +595,6 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
|
|||
datacenter.connection.datacenterId = datacenter.datacenterId;
|
||||
}
|
||||
datacenter.connection.connect();
|
||||
/*if (it == currentDatacenterId) {
|
||||
boolean isConnecting = datacenter.connection.channelToken != 0;
|
||||
if (isConnecting) {
|
||||
_isWaitingForFirstData = true;
|
||||
}
|
||||
|
||||
if (_isConnecting != isConnecting)
|
||||
{
|
||||
_isConnecting = isConnecting;
|
||||
[self dispatchConnectingState];
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
for (int it : downloadTransportsToResume) {
|
||||
|
@ -1092,7 +1079,7 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
|
|||
}
|
||||
|
||||
for (int num : unauthorizedDatacenterIds) {
|
||||
if (num != currentDatacenterId && num != movingToDatacenterId && UserConfig.clientUserId != 0/* && unavailableDatacenterIds.get(num) == null*/) {
|
||||
if (num != currentDatacenterId && num != movingToDatacenterId && UserConfig.clientUserId != 0) {
|
||||
boolean notFound = true;
|
||||
for (Action actor : actionQueue) {
|
||||
if (actor instanceof ExportAuthorizationAction) {
|
||||
|
@ -1205,7 +1192,6 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
|
|||
|
||||
currentSize += protoMessage.bytes;
|
||||
|
||||
// || currentMessages.size() == 5
|
||||
if (currentSize >= 3 * 1024 || a == messagesToSend.size() - 1) {
|
||||
ArrayList<Integer> quickAckId = new ArrayList<Integer>();
|
||||
byte[] transportData = createConnectionData(currentMessages, sessionId, quickAckId, connection);
|
||||
|
@ -1450,8 +1436,9 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
|
|||
|
||||
saveSession();
|
||||
|
||||
//if (sessionId == datacenter.authSessionId && [datacenter.datacenterId isEqualToValue:currentDatacenterId])
|
||||
// [TGTelegraphInstance stateUpdateRequired];
|
||||
if (sessionId == datacenter.authSessionId && datacenter.datacenterId == currentDatacenterId && UserConfig.clientActivated) {
|
||||
MessagesController.Instance.getDifference();
|
||||
}
|
||||
arr.add(newSession.unique_id);
|
||||
}
|
||||
} else if (message instanceof TLRPC.TL_msg_container) {
|
||||
|
@ -1894,20 +1881,6 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
|
|||
|
||||
@Override
|
||||
public void tcpConnectionConnected(TcpConnection connection) {
|
||||
/*int requestClass = [transport transportRequestClass];
|
||||
if ([transport datacenter].datacenterId == _currentDatacenterId && requestClass & TGRequestClassGeneric)
|
||||
{
|
||||
if (_isConnecting)
|
||||
{
|
||||
_isConnecting = false;
|
||||
_isWaitingForFirstData = true;
|
||||
[self dispatchConnectingState];
|
||||
}
|
||||
|
||||
if (!_isReady)
|
||||
return;
|
||||
}*/
|
||||
|
||||
Datacenter datacenter = datacenterWithId(connection.datacenterId);
|
||||
if (datacenter.authKey != null) {
|
||||
processRequestQueue(connection.transportRequestClass, connection.datacenterId);
|
||||
|
|
|
@ -402,18 +402,6 @@ public class Emoji {
|
|||
if(bmps[info.page] == null) {
|
||||
loadPageAsync(info.page);
|
||||
}
|
||||
/*drawables.add(new WeakReference<EmojiDrawable>(ed));
|
||||
try {
|
||||
for (int a = 0; a < drawables.size(); a++) {
|
||||
WeakReference<EmojiDrawable> it = drawables.get(a);
|
||||
if (it.get() == null) {
|
||||
drawables.remove(a);
|
||||
a--;
|
||||
}
|
||||
}
|
||||
} catch(Throwable x) {
|
||||
x.printStackTrace();
|
||||
}*/
|
||||
return ed;
|
||||
}
|
||||
|
||||
|
@ -507,6 +495,7 @@ public class Emoji {
|
|||
s = Spannable.Factory.getInstance().newSpannable(cs);
|
||||
}
|
||||
long buf = 0;
|
||||
int emojiCount = 0;
|
||||
for (int i = 0; i < cs.length(); i++) {
|
||||
char c = cs.charAt(i);
|
||||
if (c == 0xD83C || c == 0xD83D || (buf != 0 && (buf & 0xFFFFFFFF00000000L) == 0 && (c >= 0xDDE6 && c <= 0xDDFA))) {
|
||||
|
@ -518,6 +507,7 @@ public class Emoji {
|
|||
Drawable d = Emoji.getEmojiDrawable(buf);
|
||||
if (d != null){
|
||||
EmojiSpan span = new EmojiSpan(d, DynamicDrawableSpan.ALIGN_BOTTOM);
|
||||
emojiCount++;
|
||||
if (c>= 0xDDE6 && c <= 0xDDFA) {
|
||||
s.setSpan(span, i - 3, i + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
} else {
|
||||
|
@ -535,6 +525,7 @@ public class Emoji {
|
|||
Drawable d = Emoji.getEmojiDrawable(buf);
|
||||
if(d != null) {
|
||||
EmojiSpan span = new EmojiSpan(d, DynamicDrawableSpan.ALIGN_BOTTOM);
|
||||
emojiCount++;
|
||||
s.setSpan(span, i - 1, i + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
buf = 0;
|
||||
|
@ -544,9 +535,13 @@ public class Emoji {
|
|||
Drawable d = Emoji.getEmojiDrawable(c);
|
||||
if(d != null){
|
||||
EmojiSpan span = new EmojiSpan(d, DynamicDrawableSpan.ALIGN_BOTTOM);
|
||||
emojiCount++;
|
||||
s.setSpan(span, i, i + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
}
|
||||
if (emojiCount >= 50) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
|
|
@ -19,10 +19,10 @@ import java.security.NoSuchAlgorithmException;
|
|||
import java.util.Locale;
|
||||
|
||||
public class FileUploadOperation {
|
||||
private final int uploadChunkSize = 1024 * 32;
|
||||
private int uploadChunkSize = 1024 * 32;
|
||||
private String uploadingFilePath;
|
||||
public int state = 0;
|
||||
private byte[] readBuffer = new byte[uploadChunkSize];
|
||||
private byte[] readBuffer;
|
||||
public FileUploadOperationDelegate delegate;
|
||||
private long requestToken = 0;
|
||||
private int currentPartNum = 0;
|
||||
|
@ -103,6 +103,9 @@ public class FileUploadOperation {
|
|||
File cacheFile = new File(uploadingFilePath);
|
||||
stream = new FileInputStream(cacheFile);
|
||||
totalFileSize = cacheFile.length();
|
||||
|
||||
uploadChunkSize = (int)Math.max(32, Math.ceil(totalFileSize / (1024.0f * 3000))) * 1024;
|
||||
readBuffer = new byte[uploadChunkSize];
|
||||
}
|
||||
int readed = stream.read(readBuffer);
|
||||
int toAdd = 0;
|
||||
|
|
|
@ -25,7 +25,6 @@ import android.util.Log;
|
|||
import com.google.android.gms.gcm.GoogleCloudMessaging;
|
||||
|
||||
import org.json.JSONObject;
|
||||
import org.telegram.TL.TLRPC;
|
||||
import org.telegram.ui.ApplicationLoader;
|
||||
import org.telegram.ui.LaunchActivity;
|
||||
|
||||
|
@ -118,8 +117,6 @@ public class GcmBroadcastReceiver extends BroadcastReceiver {
|
|||
|
||||
int chat_id = 0;
|
||||
int user_id = 0;
|
||||
TLRPC.User user = null;
|
||||
TLRPC.Chat chat = null;
|
||||
String custom = extras.getString("custom");
|
||||
try {
|
||||
if (custom != null) {
|
||||
|
@ -171,7 +168,6 @@ public class GcmBroadcastReceiver extends BroadcastReceiver {
|
|||
}
|
||||
|
||||
boolean needVibrate;
|
||||
boolean needPreview = true;
|
||||
String choosenSoundPath = null;
|
||||
|
||||
if (chat_id != 0) {
|
||||
|
@ -192,6 +188,8 @@ public class GcmBroadcastReceiver extends BroadcastReceiver {
|
|||
} else if (chatSound != null) {
|
||||
choosenSoundPath = chatSound;
|
||||
}
|
||||
} else {
|
||||
choosenSoundPath = globalSound;
|
||||
}
|
||||
|
||||
intent.setAction("com.tmessages.openchat" + Math.random() + Integer.MAX_VALUE);
|
||||
|
@ -205,11 +203,9 @@ public class GcmBroadcastReceiver extends BroadcastReceiver {
|
|||
.setStyle(new NotificationCompat.BigTextStyle()
|
||||
.bigText(msg))
|
||||
.setContentText(msg)
|
||||
.setAutoCancel(true);
|
||||
.setAutoCancel(true)
|
||||
.setTicker(msg);
|
||||
|
||||
if (needPreview) {
|
||||
mBuilder.setTicker(msg);
|
||||
}
|
||||
if (needVibrate) {
|
||||
mBuilder.setVibrate(new long[]{0, 100, 0, 100});
|
||||
}
|
||||
|
|
|
@ -11,11 +11,15 @@ package org.telegram.messenger;
|
|||
import android.accounts.Account;
|
||||
import android.accounts.AccountManager;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.ContentProviderOperation;
|
||||
import android.content.ContentProviderResult;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.database.Cursor;
|
||||
|
@ -27,6 +31,8 @@ import android.os.Build;
|
|||
import android.os.Vibrator;
|
||||
import android.provider.BaseColumns;
|
||||
import android.provider.ContactsContract;
|
||||
import android.provider.Settings;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.text.Html;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
|
@ -38,6 +44,7 @@ import org.telegram.TL.TLObject;
|
|||
import org.telegram.TL.TLRPC;
|
||||
import org.telegram.objects.MessageObject;
|
||||
import org.telegram.ui.ApplicationLoader;
|
||||
import org.telegram.ui.LaunchActivity;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
|
@ -4100,11 +4107,12 @@ public class MessagesController implements NotificationCenter.NotificationCenter
|
|||
return;
|
||||
}
|
||||
|
||||
if (ApplicationLoader.lastPauseTime == 0) {
|
||||
boolean inAppSounds = preferences.getBoolean("EnableInAppSounds", true);
|
||||
boolean inAppVibrate = preferences.getBoolean("EnableInAppVibrate", true);
|
||||
boolean inAppPreview = preferences.getBoolean("EnableInAppPreview", true);
|
||||
|
||||
if ((inAppSounds || inAppVibrate || inAppPreview) && ApplicationLoader.lastPauseTime == 0) {
|
||||
if (inAppSounds || inAppVibrate || inAppPreview) {
|
||||
long dialog_id = messageObject.messageOwner.dialog_id;
|
||||
int user_id = messageObject.messageOwner.from_id;
|
||||
int chat_id = 0;
|
||||
|
@ -4156,6 +4164,126 @@ public class MessagesController implements NotificationCenter.NotificationCenter
|
|||
playNotificationSound();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
long dialog_id = messageObject.messageOwner.dialog_id;
|
||||
int chat_id = messageObject.messageOwner.to_id.chat_id;
|
||||
int user_id = messageObject.messageOwner.to_id.user_id;
|
||||
if (dialog_id == 0) {
|
||||
if (chat_id != 0) {
|
||||
dialog_id = -chat_id;
|
||||
} else if (user_id != 0) {
|
||||
dialog_id = user_id;
|
||||
}
|
||||
}
|
||||
if ((int)dialog_id != 0) {
|
||||
return; //temporary disable notifications for normal chats
|
||||
}
|
||||
|
||||
if (dialog_id != 0) {
|
||||
String key = "notify_" + dialog_id;
|
||||
boolean value = preferences.getBoolean(key, true);
|
||||
if (!value) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
boolean groupEnabled = preferences.getBoolean("EnableGroup", true);
|
||||
if (chat_id != 0 && !globalEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
boolean globalVibrate = preferences.getBoolean("EnableVibrateAll", true);
|
||||
boolean groupVibrate = preferences.getBoolean("EnableVibrateGroup", true);
|
||||
|
||||
String defaultPath = null;
|
||||
Uri defaultUri = Settings.System.DEFAULT_NOTIFICATION_URI;
|
||||
if (defaultUri != null) {
|
||||
defaultPath = defaultUri.getPath();
|
||||
}
|
||||
|
||||
String globalSound = preferences.getString("GlobalSoundPath", defaultPath);
|
||||
String chatSound = preferences.getString("GroupSoundPath", defaultPath);
|
||||
String userSoundPath = null;
|
||||
String chatSoundPath = null;
|
||||
|
||||
NotificationManager mNotificationManager = (NotificationManager)Utilities.applicationContext.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
Intent intent = new Intent(Utilities.applicationContext, LaunchActivity.class);
|
||||
String msg;
|
||||
|
||||
if ((int)dialog_id != 0) {
|
||||
if (chat_id != 0) {
|
||||
intent.putExtra("chatId", chat_id);
|
||||
}
|
||||
if (user_id != 0) {
|
||||
intent.putExtra("userId", user_id);
|
||||
}
|
||||
msg = messageObject.messageOwner.message;
|
||||
} else {
|
||||
msg = Utilities.applicationContext.getString(R.string.YouHaveNewMessage);
|
||||
}
|
||||
|
||||
boolean needVibrate = false;
|
||||
|
||||
if (user_id != 0) {
|
||||
userSoundPath = preferences.getString("sound_path_" + user_id, null);
|
||||
needVibrate = globalVibrate;
|
||||
}
|
||||
if (chat_id != 0) {
|
||||
chatSoundPath = preferences.getString("sound_chat_path_" + chat_id, null);
|
||||
needVibrate = groupVibrate;
|
||||
}
|
||||
|
||||
String choosenSoundPath = null;
|
||||
|
||||
if (user_id != 0) {
|
||||
if (userSoundPath != null) {
|
||||
choosenSoundPath = userSoundPath;
|
||||
} else if (globalSound != null) {
|
||||
choosenSoundPath = globalSound;
|
||||
}
|
||||
} else if (chat_id != 0) {
|
||||
if (chatSoundPath != null) {
|
||||
choosenSoundPath = chatSoundPath;
|
||||
} else if (chatSound != null) {
|
||||
choosenSoundPath = chatSound;
|
||||
}
|
||||
} else {
|
||||
choosenSoundPath = globalSound;
|
||||
}
|
||||
|
||||
intent.setAction("com.tmessages.openchat" + Math.random() + Integer.MAX_VALUE);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
PendingIntent contentIntent = PendingIntent.getActivity(Utilities.applicationContext, 0, intent, PendingIntent.FLAG_ONE_SHOT);
|
||||
|
||||
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(Utilities.applicationContext)
|
||||
.setContentTitle(Utilities.applicationContext.getString(R.string.AppName))
|
||||
.setSmallIcon(R.drawable.notification)
|
||||
.setStyle(new NotificationCompat.BigTextStyle()
|
||||
.bigText(msg))
|
||||
.setContentText(msg)
|
||||
.setAutoCancel(true)
|
||||
.setTicker(msg);
|
||||
|
||||
if (needVibrate) {
|
||||
mBuilder.setVibrate(new long[]{0, 100, 0, 100});
|
||||
}
|
||||
if (choosenSoundPath != null && !choosenSoundPath.equals("NoSound")) {
|
||||
if (choosenSoundPath.equals(defaultPath)) {
|
||||
mBuilder.setSound(defaultUri);
|
||||
} else {
|
||||
mBuilder.setSound(Uri.parse(choosenSoundPath));
|
||||
}
|
||||
}
|
||||
|
||||
mBuilder.setContentIntent(contentIntent);
|
||||
mNotificationManager.cancel(1);
|
||||
Notification notification = mBuilder.build();
|
||||
notification.ledARGB = 0xff00ff00;
|
||||
notification.ledOnMS = 1000;
|
||||
notification.ledOffMS = 1000;
|
||||
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
|
||||
mNotificationManager.notify(1, notification);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateInterfaceWithMessages(long uid, ArrayList<MessageObject> messages) {
|
||||
|
|
|
@ -104,9 +104,6 @@ public class TcpConnection extends PyroClientAdapter {
|
|||
}
|
||||
|
||||
public void suspendConnection(boolean task) {
|
||||
if (ConnectionsManager.DEBUG_VERSION) {
|
||||
Log.d("tmessages", "suspend connnection " + this);
|
||||
}
|
||||
if (task) {
|
||||
selector.scheduleTask(new Runnable() {
|
||||
@Override
|
||||
|
@ -118,6 +115,9 @@ public class TcpConnection extends PyroClientAdapter {
|
|||
if (connectionState == TcpConnectionState.TcpConnectionStageIdle || connectionState == TcpConnectionState.TcpConnectionStageSuspended) {
|
||||
return;
|
||||
}
|
||||
if (ConnectionsManager.DEBUG_VERSION) {
|
||||
Log.d("tmessages", "suspend connnection " + this);
|
||||
}
|
||||
connectionState = TcpConnectionState.TcpConnectionStageSuspended;
|
||||
if (client != null) {
|
||||
client.dropConnection();
|
||||
|
@ -130,9 +130,12 @@ public class TcpConnection extends PyroClientAdapter {
|
|||
reconnectTimer.cancel();
|
||||
reconnectTimer = null;
|
||||
}
|
||||
if (connectionState == TcpConnectionState.TcpConnectionStageIdle) {
|
||||
if (connectionState == TcpConnectionState.TcpConnectionStageIdle || connectionState == TcpConnectionState.TcpConnectionStageSuspended) {
|
||||
return;
|
||||
}
|
||||
if (ConnectionsManager.DEBUG_VERSION) {
|
||||
Log.d("tmessages", "suspend connnection " + this);
|
||||
}
|
||||
connectionState = TcpConnectionState.TcpConnectionStageSuspended;
|
||||
if (client != null) {
|
||||
client.dropConnection();
|
||||
|
|
|
@ -2165,14 +2165,14 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
|
|||
Intent pickIntent = new Intent();
|
||||
pickIntent.setType("video/*");
|
||||
pickIntent.setAction(Intent.ACTION_GET_CONTENT);
|
||||
pickIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 1024 * 1024 * 100);
|
||||
pickIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 1024 * 1024 * 1000);
|
||||
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
|
||||
File video = Utilities.generateVideoPath();
|
||||
if (video != null) {
|
||||
if(android.os.Build.VERSION.SDK_INT > 10) {
|
||||
takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(video));
|
||||
}
|
||||
takeVideoIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 1024 * 1024 * 100);
|
||||
takeVideoIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 1024 * 1024 * 1000);
|
||||
currentPicturePath = video.getAbsolutePath();
|
||||
}
|
||||
Intent chooserIntent = Intent.createChooser(pickIntent, "");
|
||||
|
|
|
@ -198,7 +198,7 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen
|
|||
((ApplicationActivity)parentActivity).presentFragment(fragment, "key_" + dialog_id, false);
|
||||
} else if (i == 4 && dialog_id != 0 && currentEncryptedChat instanceof TLRPC.TL_encryptedChat) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
|
||||
builder.setTitle(getStringEntry(R.string.TextSize));
|
||||
builder.setTitle(getStringEntry(R.string.MessageLifetime));
|
||||
builder.setItems(new CharSequence[]{
|
||||
getStringEntry(R.string.ShortMessageLifetimeForever),
|
||||
getStringEntry(R.string.ShortMessageLifetime2s),
|
||||
|
|
Loading…
Reference in a new issue