mirror of
https://github.com/wrwrabbit/Partisan-Telegram-Android.git
synced 2026-04-29 20:49:37 +00:00
Applied patch from https://github.com/DrKLO/Telegram/pull/99 . Thanks. Added German localization. Thanks to all from https://github.com/DrKLO/Telegram/pull/129 Experimental audio (will not go to market yet, we will switch to opus codec) Improved text drawing perfomance (now Telegram can draw even «War and Peace» in one message) Ability to send multiple photos and documents from external apps Contacts fixes Memory usage optimizations in network code (receiving data) Partly switched to native ByteBuffers (decoding received data) Added support of Telegram API Layer 12 Bug fixes
190 lines
8.6 KiB
Java
190 lines
8.6 KiB
Java
/*
|
|
* This is the source code of Telegram for Android v. 1.3.2.
|
|
* 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.
|
|
*/
|
|
|
|
package org.telegram.messenger;
|
|
|
|
import android.content.Context;
|
|
import android.content.SharedPreferences;
|
|
import android.util.Base64;
|
|
|
|
import org.telegram.ui.ApplicationLoader;
|
|
|
|
import java.io.File;
|
|
|
|
public class UserConfig {
|
|
public static TLRPC.User currentUser;
|
|
public static int clientUserId = 0;
|
|
public static boolean clientActivated = false;
|
|
public static boolean registeredForPush = false;
|
|
public static String pushString = "";
|
|
public static int lastSendMessageId = -210000;
|
|
public static int lastLocalId = -210000;
|
|
public static String contactsHash = "";
|
|
public static String importHash = "";
|
|
private final static Integer sync = 1;
|
|
public static boolean saveIncomingPhotos = false;
|
|
public static int contactsVersion = 1;
|
|
|
|
public static int getNewMessageId() {
|
|
int id;
|
|
synchronized (sync) {
|
|
id = lastSendMessageId;
|
|
lastSendMessageId--;
|
|
}
|
|
return id;
|
|
}
|
|
|
|
public static void saveConfig(boolean withFile) {
|
|
saveConfig(withFile, null);
|
|
}
|
|
|
|
public static void saveConfig(boolean withFile, File oldFile) {
|
|
synchronized (sync) {
|
|
try {
|
|
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("userconfing", Context.MODE_PRIVATE);
|
|
SharedPreferences.Editor editor = preferences.edit();
|
|
editor.putBoolean("registeredForPush", registeredForPush);
|
|
editor.putString("pushString", pushString);
|
|
editor.putInt("lastSendMessageId", lastSendMessageId);
|
|
editor.putInt("lastLocalId", lastLocalId);
|
|
editor.putString("contactsHash", contactsHash);
|
|
editor.putString("importHash", importHash);
|
|
editor.putBoolean("saveIncomingPhotos", saveIncomingPhotos);
|
|
editor.putInt("contactsVersion", contactsVersion);
|
|
if (currentUser != null) {
|
|
if (withFile) {
|
|
SerializedData data = new SerializedData();
|
|
currentUser.serializeToStream(data);
|
|
clientUserId = currentUser.id;
|
|
clientActivated = true;
|
|
String userString = Base64.encodeToString(data.toByteArray(), Base64.DEFAULT);
|
|
editor.putString("user", userString);
|
|
}
|
|
} else {
|
|
editor.remove("user");
|
|
}
|
|
editor.commit();
|
|
if (oldFile != null) {
|
|
oldFile.delete();
|
|
}
|
|
} catch (Exception e) {
|
|
FileLog.e("tmessages", e);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void loadConfig() {
|
|
synchronized (sync) {
|
|
final File configFile = new File(ApplicationLoader.applicationContext.getFilesDir(), "user.dat");
|
|
if (configFile.exists()) {
|
|
try {
|
|
SerializedData data = new SerializedData(configFile);
|
|
int ver = data.readInt32();
|
|
if (ver == 1) {
|
|
int constructor = data.readInt32();
|
|
currentUser = (TLRPC.TL_userSelf)TLClassStore.Instance().TLdeserialize(data, constructor);
|
|
clientUserId = currentUser.id;
|
|
clientActivated = true;
|
|
MessagesStorage.lastDateValue = data.readInt32();
|
|
MessagesStorage.lastPtsValue = data.readInt32();
|
|
MessagesStorage.lastSeqValue = data.readInt32();
|
|
registeredForPush = data.readBool();
|
|
pushString = data.readString();
|
|
lastSendMessageId = data.readInt32();
|
|
lastLocalId = data.readInt32();
|
|
contactsHash = data.readString();
|
|
importHash = data.readString();
|
|
saveIncomingPhotos = data.readBool();
|
|
contactsVersion = 0;
|
|
MessagesStorage.lastQtsValue = data.readInt32();
|
|
MessagesStorage.lastSecretVersion = data.readInt32();
|
|
int val = data.readInt32();
|
|
if (val == 1) {
|
|
MessagesStorage.secretPBytes = data.readByteArray();
|
|
}
|
|
MessagesStorage.secretG = data.readInt32();
|
|
Utilities.stageQueue.postRunnable(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
saveConfig(true, configFile);
|
|
}
|
|
});
|
|
} else if (ver == 2) {
|
|
int constructor = data.readInt32();
|
|
currentUser = (TLRPC.TL_userSelf)TLClassStore.Instance().TLdeserialize(data, constructor);
|
|
clientUserId = currentUser.id;
|
|
clientActivated = true;
|
|
|
|
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("userconfing", Context.MODE_PRIVATE);
|
|
registeredForPush = preferences.getBoolean("registeredForPush", false);
|
|
pushString = preferences.getString("pushString", "");
|
|
lastSendMessageId = preferences.getInt("lastSendMessageId", -210000);
|
|
lastLocalId = preferences.getInt("lastLocalId", -210000);
|
|
contactsHash = preferences.getString("contactsHash", "");
|
|
importHash = preferences.getString("importHash", "");
|
|
saveIncomingPhotos = preferences.getBoolean("saveIncomingPhotos", false);
|
|
contactsVersion = preferences.getInt("contactsVersion", 0);
|
|
}
|
|
if (lastLocalId > -210000) {
|
|
lastLocalId = -210000;
|
|
}
|
|
if (lastSendMessageId > -210000) {
|
|
lastSendMessageId = -210000;
|
|
}
|
|
Utilities.stageQueue.postRunnable(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
saveConfig(true, configFile);
|
|
}
|
|
});
|
|
} catch (Exception e) {
|
|
FileLog.e("tmessages", e);
|
|
}
|
|
} else {
|
|
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("userconfing", Context.MODE_PRIVATE);
|
|
registeredForPush = preferences.getBoolean("registeredForPush", false);
|
|
pushString = preferences.getString("pushString", "");
|
|
lastSendMessageId = preferences.getInt("lastSendMessageId", -210000);
|
|
lastLocalId = preferences.getInt("lastLocalId", -210000);
|
|
contactsHash = preferences.getString("contactsHash", "");
|
|
importHash = preferences.getString("importHash", "");
|
|
saveIncomingPhotos = preferences.getBoolean("saveIncomingPhotos", false);
|
|
contactsVersion = preferences.getInt("contactsVersion", 0);
|
|
String user = preferences.getString("user", null);
|
|
if (user != null) {
|
|
byte[] userBytes = Base64.decode(user, Base64.DEFAULT);
|
|
if (userBytes != null) {
|
|
SerializedData data = new SerializedData(userBytes);
|
|
currentUser = (TLRPC.TL_userSelf)TLClassStore.Instance().TLdeserialize(data, data.readInt32());
|
|
clientUserId = currentUser.id;
|
|
clientActivated = true;
|
|
}
|
|
}
|
|
if (currentUser == null) {
|
|
clientActivated = false;
|
|
clientUserId = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void clearConfig() {
|
|
clientUserId = 0;
|
|
clientActivated = false;
|
|
currentUser = null;
|
|
registeredForPush = false;
|
|
contactsHash = "";
|
|
importHash = "";
|
|
lastLocalId = -210000;
|
|
lastSendMessageId = -210000;
|
|
contactsVersion = 1;
|
|
saveIncomingPhotos = false;
|
|
saveConfig(true);
|
|
MessagesController.Instance.deleteAllAppAccounts();
|
|
}
|
|
}
|