Skip to content
Permalink
1be5d21d08
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
8417 lines (8261 sloc) 465 KB
package org.telegram.messenger;
import android.text.TextUtils;
import android.util.Log;
import android.util.SparseArray;
import android.util.SparseIntArray;
import com.google.p098a.C1768f;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.Semaphore;
import java.util.concurrent.atomic.AtomicLong;
import org.telegram.SQLite.C2486a;
import org.telegram.SQLite.SQLiteCursor;
import org.telegram.SQLite.SQLiteDatabase;
import org.telegram.SQLite.SQLitePreparedStatement;
import org.telegram.customization.Model.TMData;
import org.telegram.customization.Model.UserState;
import org.telegram.customization.p151g.C2497d;
import org.telegram.customization.p151g.C2818c;
import org.telegram.messenger.ContactsController.Contact;
import org.telegram.messenger.MediaController.SearchImage;
import org.telegram.messenger.exoplayer2.C3446C;
import org.telegram.messenger.query.BotQuery;
import org.telegram.messenger.query.MessagesQuery;
import org.telegram.messenger.query.SharedMediaQuery;
import org.telegram.messenger.support.widget.helper.ItemTouchHelper.Callback;
import org.telegram.p149a.C2488b;
import org.telegram.tgnet.AbstractSerializedData;
import org.telegram.tgnet.ConnectionsManager;
import org.telegram.tgnet.NativeByteBuffer;
import org.telegram.tgnet.RequestDelegate;
import org.telegram.tgnet.TLObject;
import org.telegram.tgnet.TLRPC$TL_contact;
import org.telegram.tgnet.TLRPC$TL_decryptedMessageActionScreenshotMessages;
import org.telegram.tgnet.TLRPC$TL_decryptedMessageActionSetMessageTTL;
import org.telegram.tgnet.TLRPC$TL_dialog;
import org.telegram.tgnet.TLRPC$TL_documentEmpty;
import org.telegram.tgnet.TLRPC$TL_inputMediaGame;
import org.telegram.tgnet.TLRPC$TL_inputMessageEntityMentionName;
import org.telegram.tgnet.TLRPC$TL_message;
import org.telegram.tgnet.TLRPC$TL_messageActionGameScore;
import org.telegram.tgnet.TLRPC$TL_messageActionHistoryClear;
import org.telegram.tgnet.TLRPC$TL_messageActionPaymentSent;
import org.telegram.tgnet.TLRPC$TL_messageActionPinMessage;
import org.telegram.tgnet.TLRPC$TL_messageEncryptedAction;
import org.telegram.tgnet.TLRPC$TL_messageEntityMentionName;
import org.telegram.tgnet.TLRPC$TL_messageMediaDocument;
import org.telegram.tgnet.TLRPC$TL_messageMediaPhoto;
import org.telegram.tgnet.TLRPC$TL_messageMediaUnsupported;
import org.telegram.tgnet.TLRPC$TL_messageMediaUnsupported_old;
import org.telegram.tgnet.TLRPC$TL_messageMediaWebPage;
import org.telegram.tgnet.TLRPC$TL_message_secret;
import org.telegram.tgnet.TLRPC$TL_messages_botCallbackAnswer;
import org.telegram.tgnet.TLRPC$TL_messages_botResults;
import org.telegram.tgnet.TLRPC$TL_messages_deleteMessages;
import org.telegram.tgnet.TLRPC$TL_messages_dialogs;
import org.telegram.tgnet.TLRPC$TL_messages_messages;
import org.telegram.tgnet.TLRPC$TL_peerChannel;
import org.telegram.tgnet.TLRPC$TL_peerNotifySettings;
import org.telegram.tgnet.TLRPC$TL_peerNotifySettingsEmpty;
import org.telegram.tgnet.TLRPC$TL_photoEmpty;
import org.telegram.tgnet.TLRPC$TL_photos_photos;
import org.telegram.tgnet.TLRPC$TL_replyInlineMarkup;
import org.telegram.tgnet.TLRPC$TL_updates_channelDifferenceTooLong;
import org.telegram.tgnet.TLRPC$TL_userStatusLastMonth;
import org.telegram.tgnet.TLRPC$TL_userStatusLastWeek;
import org.telegram.tgnet.TLRPC$TL_userStatusRecently;
import org.telegram.tgnet.TLRPC$WallPaper;
import org.telegram.tgnet.TLRPC$WebPage;
import org.telegram.tgnet.TLRPC$messages_Dialogs;
import org.telegram.tgnet.TLRPC$messages_Messages;
import org.telegram.tgnet.TLRPC$photos_Photos;
import org.telegram.tgnet.TLRPC.BotInfo;
import org.telegram.tgnet.TLRPC.ChannelParticipant;
import org.telegram.tgnet.TLRPC.Chat;
import org.telegram.tgnet.TLRPC.ChatFull;
import org.telegram.tgnet.TLRPC.ChatParticipant;
import org.telegram.tgnet.TLRPC.ChatParticipants;
import org.telegram.tgnet.TLRPC.Document;
import org.telegram.tgnet.TLRPC.EncryptedChat;
import org.telegram.tgnet.TLRPC.InputChannel;
import org.telegram.tgnet.TLRPC.InputMedia;
import org.telegram.tgnet.TLRPC.InputPeer;
import org.telegram.tgnet.TLRPC.Message;
import org.telegram.tgnet.TLRPC.MessageEntity;
import org.telegram.tgnet.TLRPC.MessageMedia;
import org.telegram.tgnet.TLRPC.Photo;
import org.telegram.tgnet.TLRPC.PhotoSize;
import org.telegram.tgnet.TLRPC.TL_channelFull;
import org.telegram.tgnet.TLRPC.TL_channels_deleteMessages;
import org.telegram.tgnet.TLRPC.TL_chatChannelParticipant;
import org.telegram.tgnet.TLRPC.TL_chatFull;
import org.telegram.tgnet.TLRPC.TL_chatInviteEmpty;
import org.telegram.tgnet.TLRPC.TL_chatParticipant;
import org.telegram.tgnet.TLRPC.TL_chatParticipantAdmin;
import org.telegram.tgnet.TLRPC.TL_chatParticipants;
import org.telegram.tgnet.TLRPC.User;
public class MessagesStorage {
private static volatile MessagesStorage Instance = null;
public static int lastDateValue = 0;
public static int lastPtsValue = 0;
public static int lastQtsValue = 0;
public static int lastSecretVersion = 0;
public static int lastSeqValue = 0;
public static int secretG = 0;
public static byte[] secretPBytes = null;
private File cacheFile;
private SQLiteDatabase database;
private int lastSavedDate = 0;
private int lastSavedPts = 0;
private int lastSavedQts = 0;
private int lastSavedSeq = 0;
private AtomicLong lastTaskId = new AtomicLong(System.currentTimeMillis());
private DispatchQueue storageQueue = new DispatchQueue("storageQueue");
/* renamed from: org.telegram.messenger.MessagesStorage$4 */
class C32804 implements Runnable {
C32804() {
}
public void run() {
HashMap hashMap = new HashMap();
Map all = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", 0).getAll();
for (Entry entry : all.entrySet()) {
String str = (String) entry.getKey();
if (str.startsWith("notify2_")) {
Integer num = (Integer) entry.getValue();
if (num.intValue() == 2 || num.intValue() == 3) {
long j;
String replace = str.replace("notify2_", TtmlNode.ANONYMOUS_REGION_ID);
if (num.intValue() == 2) {
j = 1;
} else {
num = (Integer) all.get("notifyuntil_" + replace);
j = num != null ? (((long) num.intValue()) << 32) | 1 : 1;
}
try {
hashMap.put(Long.valueOf(Long.parseLong(replace)), Long.valueOf(j));
} catch (Exception e) {
e.printStackTrace();
} catch (Throwable th) {
FileLog.m13728e(th);
return;
}
} else if (num.intValue() == 3) {
}
}
}
try {
MessagesStorage.this.database.m12168d();
SQLitePreparedStatement a = MessagesStorage.this.database.m12164a("REPLACE INTO dialog_settings VALUES(?, ?)");
for (Entry entry2 : hashMap.entrySet()) {
a.m12180d();
a.m12175a(1, ((Long) entry2.getKey()).longValue());
a.m12175a(2, ((Long) entry2.getValue()).longValue());
a.m12178b();
}
a.m12181e();
MessagesStorage.this.database.m12169e();
} catch (Throwable th2) {
FileLog.m13728e(th2);
}
}
}
/* renamed from: org.telegram.messenger.MessagesStorage$7 */
class C32947 implements Runnable {
C32947() {
}
public void run() {
try {
SQLiteCursor b = MessagesStorage.this.database.m12165b("SELECT id, data FROM pending_tasks WHERE 1", new Object[0]);
while (b.m12152a()) {
final long d = b.m12158d(0);
AbstractSerializedData g = b.m12161g(1);
if (g != null) {
int readInt32 = g.readInt32(false);
final int readInt322;
final int readInt323;
switch (readInt32) {
case 0:
final Chat TLdeserialize = Chat.TLdeserialize(g, g.readInt32(false), false);
if (TLdeserialize != null) {
Utilities.stageQueue.postRunnable(new Runnable() {
public void run() {
MessagesController.getInstance().loadUnknownChannel(TLdeserialize, d);
}
});
break;
}
break;
case 1:
readInt322 = g.readInt32(false);
readInt323 = g.readInt32(false);
Utilities.stageQueue.postRunnable(new Runnable() {
public void run() {
MessagesController.getInstance().getChannelDifference(readInt322, readInt323, d, null);
}
});
break;
case 2:
case 5:
case 8:
final TLRPC$TL_dialog tLRPC$TL_dialog = new TLRPC$TL_dialog();
tLRPC$TL_dialog.id = g.readInt64(false);
tLRPC$TL_dialog.top_message = g.readInt32(false);
tLRPC$TL_dialog.read_inbox_max_id = g.readInt32(false);
tLRPC$TL_dialog.read_outbox_max_id = g.readInt32(false);
tLRPC$TL_dialog.unread_count = g.readInt32(false);
tLRPC$TL_dialog.last_message_date = g.readInt32(false);
tLRPC$TL_dialog.pts = g.readInt32(false);
tLRPC$TL_dialog.flags = g.readInt32(false);
if (readInt32 >= 5) {
tLRPC$TL_dialog.pinned = g.readBool(false);
tLRPC$TL_dialog.pinnedNum = g.readInt32(false);
}
if (readInt32 >= 8) {
tLRPC$TL_dialog.unread_mentions_count = g.readInt32(false);
}
final InputPeer TLdeserialize2 = InputPeer.TLdeserialize(g, g.readInt32(false), false);
AndroidUtilities.runOnUIThread(new Runnable() {
public void run() {
MessagesController.getInstance().checkLastDialogMessage(tLRPC$TL_dialog, TLdeserialize2, d);
}
});
break;
case 3:
long readInt64 = g.readInt64(false);
SendMessagesHelper.getInstance().sendGame(InputPeer.TLdeserialize(g, g.readInt32(false), false), (TLRPC$TL_inputMediaGame) InputMedia.TLdeserialize(g, g.readInt32(false), false), readInt64, d);
break;
case 4:
final long readInt642 = g.readInt64(false);
final boolean readBool = g.readBool(false);
final InputPeer TLdeserialize3 = InputPeer.TLdeserialize(g, g.readInt32(false), false);
final long j = d;
AndroidUtilities.runOnUIThread(new Runnable() {
public void run() {
MessagesController.getInstance().pinDialog(readInt642, readBool, TLdeserialize3, j);
}
});
break;
case 6:
readInt322 = g.readInt32(false);
readInt323 = g.readInt32(false);
final InputChannel TLdeserialize4 = InputChannel.TLdeserialize(g, g.readInt32(false), false);
Utilities.stageQueue.postRunnable(new Runnable() {
public void run() {
MessagesController.getInstance().getChannelDifference(readInt322, readInt323, d, TLdeserialize4);
}
});
break;
case 7:
readInt323 = g.readInt32(false);
readInt32 = g.readInt32(false);
TLObject TLdeserialize5 = TLRPC$TL_messages_deleteMessages.TLdeserialize(g, readInt32, false);
if (TLdeserialize5 == null) {
TLdeserialize5 = TL_channels_deleteMessages.TLdeserialize(g, readInt32, false);
}
if (TLdeserialize5 != null) {
AndroidUtilities.runOnUIThread(new Runnable() {
public void run() {
MessagesController.getInstance().deleteMessages(null, null, null, readInt323, true, d, TLdeserialize5);
}
});
break;
} else {
MessagesStorage.this.removePendingTask(d);
break;
}
}
g.reuse();
}
}
b.m12155b();
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
}
private class Hole {
public int end;
public int start;
public int type;
public Hole(int i, int i2) {
this.start = i;
this.end = i2;
}
public Hole(int i, int i2, int i3) {
this.type = i;
this.start = i2;
this.end = i3;
}
}
public interface IntCallback {
void run(int i);
}
public MessagesStorage() {
this.storageQueue.setPriority(10);
openDatabase(true);
}
public static void addUsersAndChatsFromMessage(Message message, ArrayList<Integer> arrayList, ArrayList<Integer> arrayList2) {
int i = 0;
if (message.from_id != 0) {
if (message.from_id > 0) {
if (!arrayList.contains(Integer.valueOf(message.from_id))) {
arrayList.add(Integer.valueOf(message.from_id));
}
} else if (!arrayList2.contains(Integer.valueOf(-message.from_id))) {
arrayList2.add(Integer.valueOf(-message.from_id));
}
}
if (!(message.via_bot_id == 0 || arrayList.contains(Integer.valueOf(message.via_bot_id)))) {
arrayList.add(Integer.valueOf(message.via_bot_id));
}
if (message.action != null) {
if (!(message.action.user_id == 0 || arrayList.contains(Integer.valueOf(message.action.user_id)))) {
arrayList.add(Integer.valueOf(message.action.user_id));
}
if (!(message.action.channel_id == 0 || arrayList2.contains(Integer.valueOf(message.action.channel_id)))) {
arrayList2.add(Integer.valueOf(message.action.channel_id));
}
if (!(message.action.chat_id == 0 || arrayList2.contains(Integer.valueOf(message.action.chat_id)))) {
arrayList2.add(Integer.valueOf(message.action.chat_id));
}
if (!message.action.users.isEmpty()) {
for (int i2 = 0; i2 < message.action.users.size(); i2++) {
Integer num = (Integer) message.action.users.get(i2);
if (!arrayList.contains(num)) {
arrayList.add(num);
}
}
}
}
if (!message.entities.isEmpty()) {
while (i < message.entities.size()) {
MessageEntity messageEntity = (MessageEntity) message.entities.get(i);
if (messageEntity instanceof TLRPC$TL_messageEntityMentionName) {
arrayList.add(Integer.valueOf(((TLRPC$TL_messageEntityMentionName) messageEntity).user_id));
} else if (messageEntity instanceof TLRPC$TL_inputMessageEntityMentionName) {
arrayList.add(Integer.valueOf(((TLRPC$TL_inputMessageEntityMentionName) messageEntity).user_id.user_id));
}
i++;
}
}
if (!(message.media == null || message.media.user_id == 0 || arrayList.contains(Integer.valueOf(message.media.user_id)))) {
arrayList.add(Integer.valueOf(message.media.user_id));
}
if (message.fwd_from != null) {
if (!(message.fwd_from.from_id == 0 || arrayList.contains(Integer.valueOf(message.fwd_from.from_id)))) {
arrayList.add(Integer.valueOf(message.fwd_from.from_id));
}
if (!(message.fwd_from.channel_id == 0 || arrayList2.contains(Integer.valueOf(message.fwd_from.channel_id)))) {
arrayList2.add(Integer.valueOf(message.fwd_from.channel_id));
}
if (message.fwd_from.saved_from_peer != null) {
if (message.fwd_from.saved_from_peer.user_id != 0) {
if (!arrayList2.contains(Integer.valueOf(message.fwd_from.saved_from_peer.user_id))) {
arrayList.add(Integer.valueOf(message.fwd_from.saved_from_peer.user_id));
}
} else if (message.fwd_from.saved_from_peer.channel_id != 0) {
if (!arrayList2.contains(Integer.valueOf(message.fwd_from.saved_from_peer.channel_id))) {
arrayList2.add(Integer.valueOf(message.fwd_from.saved_from_peer.channel_id));
}
} else if (!(message.fwd_from.saved_from_peer.chat_id == 0 || arrayList2.contains(Integer.valueOf(message.fwd_from.saved_from_peer.chat_id)))) {
arrayList2.add(Integer.valueOf(message.fwd_from.saved_from_peer.chat_id));
}
}
}
if (message.ttl < 0 && !arrayList2.contains(Integer.valueOf(-message.ttl))) {
arrayList2.add(Integer.valueOf(-message.ttl));
}
}
private void cleanupInternal() {
lastDateValue = 0;
lastSeqValue = 0;
lastPtsValue = 0;
lastQtsValue = 0;
lastSecretVersion = 0;
this.lastSavedSeq = 0;
this.lastSavedPts = 0;
this.lastSavedDate = 0;
this.lastSavedQts = 0;
secretPBytes = null;
secretG = 0;
if (this.database != null) {
this.database.m12166b();
this.database = null;
}
if (this.cacheFile != null) {
this.cacheFile.delete();
this.cacheFile = null;
}
}
private void closeHolesInTable(String str, long j, int i, int i2) {
SQLiteCursor b = this.database.m12165b(String.format(Locale.US, "SELECT start, end FROM " + str + " WHERE uid = %d AND ((end >= %d AND end <= %d) OR (start >= %d AND start <= %d) OR (start >= %d AND end <= %d) OR (start <= %d AND end >= %d))", new Object[]{Long.valueOf(j), Integer.valueOf(i), Integer.valueOf(i2), Integer.valueOf(i), Integer.valueOf(i2), Integer.valueOf(i), Integer.valueOf(i2), Integer.valueOf(i), Integer.valueOf(i2)}), new Object[0]);
ArrayList arrayList = null;
while (b.m12152a()) {
ArrayList arrayList2 = arrayList == null ? new ArrayList() : arrayList;
int b2 = b.m12154b(0);
int b3 = b.m12154b(1);
if (b2 == b3 && b2 == 1) {
arrayList = arrayList2;
} else {
arrayList2.add(new Hole(b2, b3));
arrayList = arrayList2;
}
}
b.m12155b();
if (arrayList != null) {
for (int i3 = 0; i3 < arrayList.size(); i3++) {
Hole hole = (Hole) arrayList.get(i3);
if (i2 >= hole.end - 1 && i <= hole.start + 1) {
this.database.m12164a(String.format(Locale.US, "DELETE FROM " + str + " WHERE uid = %d AND start = %d AND end = %d", new Object[]{Long.valueOf(j), Integer.valueOf(hole.start), Integer.valueOf(hole.end)})).m12179c().m12181e();
} else if (i2 >= hole.end - 1) {
if (hole.end != i) {
try {
this.database.m12164a(String.format(Locale.US, "UPDATE " + str + " SET end = %d WHERE uid = %d AND start = %d AND end = %d", new Object[]{Integer.valueOf(i), Long.valueOf(j), Integer.valueOf(hole.start), Integer.valueOf(hole.end)})).m12179c().m12181e();
} catch (Throwable e) {
try {
FileLog.m13728e(e);
} catch (Throwable e2) {
FileLog.m13728e(e2);
return;
}
}
}
continue;
} else if (i > hole.start + 1) {
this.database.m12164a(String.format(Locale.US, "DELETE FROM " + str + " WHERE uid = %d AND start = %d AND end = %d", new Object[]{Long.valueOf(j), Integer.valueOf(hole.start), Integer.valueOf(hole.end)})).m12179c().m12181e();
SQLitePreparedStatement a = this.database.m12164a("REPLACE INTO " + str + " VALUES(?, ?, ?)");
a.m12180d();
a.m12175a(1, j);
a.m12174a(2, hole.start);
a.m12174a(3, i);
a.m12178b();
a.m12180d();
a.m12175a(1, j);
a.m12174a(2, i2);
a.m12174a(3, hole.end);
a.m12178b();
a.m12181e();
} else if (hole.start != i2) {
try {
this.database.m12164a(String.format(Locale.US, "UPDATE " + str + " SET start = %d WHERE uid = %d AND start = %d AND end = %d", new Object[]{Integer.valueOf(i2), Long.valueOf(j), Integer.valueOf(hole.start), Integer.valueOf(hole.end)})).m12179c().m12181e();
} catch (Throwable e22) {
FileLog.m13728e(e22);
}
} else {
continue;
}
}
}
}
public static void createFirstHoles(long j, SQLitePreparedStatement sQLitePreparedStatement, SQLitePreparedStatement sQLitePreparedStatement2, int i) {
sQLitePreparedStatement.m12180d();
sQLitePreparedStatement.m12175a(1, j);
sQLitePreparedStatement.m12174a(2, i == 1 ? 1 : 0);
sQLitePreparedStatement.m12174a(3, i);
sQLitePreparedStatement.m12178b();
for (int i2 = 0; i2 < 5; i2++) {
sQLitePreparedStatement2.m12180d();
sQLitePreparedStatement2.m12175a(1, j);
sQLitePreparedStatement2.m12174a(2, i2);
sQLitePreparedStatement2.m12174a(3, i == 1 ? 1 : 0);
sQLitePreparedStatement2.m12174a(4, i);
sQLitePreparedStatement2.m12178b();
}
}
private void doneHolesInTable(String str, long j, int i) {
if (i == 0) {
this.database.m12164a(String.format(Locale.US, "DELETE FROM " + str + " WHERE uid = %d", new Object[]{Long.valueOf(j)})).m12179c().m12181e();
} else {
this.database.m12164a(String.format(Locale.US, "DELETE FROM " + str + " WHERE uid = %d AND start = 0", new Object[]{Long.valueOf(j)})).m12179c().m12181e();
}
SQLitePreparedStatement a = this.database.m12164a("REPLACE INTO " + str + " VALUES(?, ?, ?)");
a.m12180d();
a.m12175a(1, j);
a.m12174a(2, 1);
a.m12174a(3, 1);
a.m12178b();
a.m12181e();
}
private void fixNotificationSettings() {
this.storageQueue.postRunnable(new C32804());
}
private void fixUnsupportedMedia(Message message) {
if (message != null) {
if (message.media instanceof TLRPC$TL_messageMediaUnsupported_old) {
if (message.media.bytes.length == 0) {
message.media.bytes = new byte[1];
message.media.bytes[0] = (byte) 73;
}
} else if (message.media instanceof TLRPC$TL_messageMediaUnsupported) {
message.media = new TLRPC$TL_messageMediaUnsupported_old();
message.media.bytes = new byte[1];
message.media.bytes[0] = (byte) 73;
message.flags |= 512;
}
}
}
private String formatUserSearchName(User user) {
StringBuilder stringBuilder = new StringBuilder(TtmlNode.ANONYMOUS_REGION_ID);
if (user.first_name != null && user.first_name.length() > 0) {
stringBuilder.append(user.first_name);
}
if (user.last_name != null && user.last_name.length() > 0) {
if (stringBuilder.length() > 0) {
stringBuilder.append(" ");
}
stringBuilder.append(user.last_name);
}
stringBuilder.append(";;;");
if (user.username != null && user.username.length() > 0) {
stringBuilder.append(user.username);
}
return stringBuilder.toString().toLowerCase();
}
public static MessagesStorage getInstance() {
MessagesStorage messagesStorage = Instance;
if (messagesStorage == null) {
synchronized (MessagesStorage.class) {
messagesStorage = Instance;
if (messagesStorage == null) {
messagesStorage = new MessagesStorage();
Instance = messagesStorage;
}
}
}
return messagesStorage;
}
private int getMessageMediaType(Message message) {
return (!(message instanceof TLRPC$TL_message) || (!((message.media instanceof TLRPC$TL_messageMediaPhoto) || (message.media instanceof TLRPC$TL_messageMediaDocument)) || message.media.ttl_seconds == 0)) ? ((message instanceof TLRPC$TL_message_secret) && (((message.media instanceof TLRPC$TL_messageMediaPhoto) && message.ttl > 0 && message.ttl <= 60) || MessageObject.isVoiceMessage(message) || MessageObject.isVideoMessage(message) || MessageObject.isRoundVideoMessage(message))) ? 1 : ((message.media instanceof TLRPC$TL_messageMediaPhoto) || MessageObject.isVideoMessage(message)) ? 0 : -1 : 1;
}
private boolean isValidKeyboardToSave(Message message) {
return (message.reply_markup == null || (message.reply_markup instanceof TLRPC$TL_replyInlineMarkup) || (message.reply_markup.selective && !message.mentioned)) ? false : true;
}
private void loadPendingTasks() {
this.storageQueue.postRunnable(new C32947());
}
private ArrayList<Long> markMessagesAsDeletedInternal(int i, int i2) {
try {
Integer[] numArr;
ArrayList<Long> arrayList = new ArrayList();
HashMap hashMap = new HashMap();
long j = (((long) i) << 32) | ((long) i2);
ArrayList arrayList2 = new ArrayList();
int clientUserId = UserConfig.getClientUserId();
SQLiteCursor b = this.database.m12165b(String.format(Locale.US, "SELECT uid, data, read_state, out, mention FROM messages WHERE uid = %d AND mid <= %d", new Object[]{Integer.valueOf(-i), Long.valueOf(j)}), new Object[0]);
while (b.m12152a()) {
try {
long d = b.m12158d(0);
if (d != ((long) clientUserId)) {
int b2 = b.m12154b(2);
if (b.m12154b(3) == 0) {
numArr = (Integer[]) hashMap.get(Long.valueOf(d));
if (numArr == null) {
numArr = new Integer[]{Integer.valueOf(0), Integer.valueOf(0)};
hashMap.put(Long.valueOf(d), numArr);
}
if (b2 < 2) {
Integer num = numArr[1];
numArr[1] = Integer.valueOf(numArr[1].intValue() + 1);
}
if (b2 == 0 || b2 == 2) {
Integer num2 = numArr[0];
numArr[0] = Integer.valueOf(numArr[0].intValue() + 1);
}
}
if (((int) d) == 0) {
AbstractSerializedData g = b.m12161g(1);
if (g != null) {
Message TLdeserialize = Message.TLdeserialize(g, g.readInt32(false), false);
g.reuse();
if (TLdeserialize == null) {
continue;
} else if (TLdeserialize.media instanceof TLRPC$TL_messageMediaPhoto) {
Iterator it = TLdeserialize.media.photo.sizes.iterator();
while (it.hasNext()) {
r0 = FileLoader.getPathToAttach((PhotoSize) it.next());
if (r0 != null && r0.toString().length() > 0) {
arrayList2.add(r0);
}
}
} else if (TLdeserialize.media instanceof TLRPC$TL_messageMediaDocument) {
r0 = FileLoader.getPathToAttach(TLdeserialize.media.document);
if (r0 != null && r0.toString().length() > 0) {
arrayList2.add(r0);
}
r0 = FileLoader.getPathToAttach(TLdeserialize.media.document.thumb);
if (r0 != null && r0.toString().length() > 0) {
arrayList2.add(r0);
}
}
} else {
continue;
}
} else {
continue;
}
}
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
b.m12155b();
FileLoader.getInstance().deleteFiles(arrayList2, 0);
for (Entry entry : hashMap.entrySet()) {
Long l = (Long) entry.getKey();
numArr = (Integer[]) entry.getValue();
SQLiteCursor b3 = this.database.m12165b("SELECT unread_count, unread_count_i FROM dialogs WHERE did = " + l, new Object[0]);
clientUserId = 0;
int i3 = 0;
if (b3.m12152a()) {
clientUserId = b3.m12154b(0);
i3 = b3.m12154b(1);
}
b3.m12155b();
arrayList.add(l);
SQLitePreparedStatement a = this.database.m12164a("UPDATE dialogs SET unread_count = ?, unread_count_i = ? WHERE did = ?");
a.m12180d();
a.m12174a(1, Math.max(0, clientUserId - numArr[0].intValue()));
a.m12174a(2, Math.max(0, i3 - numArr[1].intValue()));
a.m12175a(3, l.longValue());
a.m12178b();
a.m12181e();
}
this.database.m12164a(String.format(Locale.US, "DELETE FROM messages WHERE uid = %d AND mid <= %d", new Object[]{Integer.valueOf(-i), Long.valueOf(j)})).m12179c().m12181e();
this.database.m12164a(String.format(Locale.US, "DELETE FROM media_v2 WHERE uid = %d AND mid <= %d", new Object[]{Integer.valueOf(-i), Long.valueOf(j)})).m12179c().m12181e();
this.database.m12164a("DELETE FROM media_counts_v2 WHERE 1").m12179c().m12181e();
return arrayList;
} catch (Throwable e2) {
FileLog.m13728e(e2);
return null;
}
}
private ArrayList<Long> markMessagesAsDeletedInternal(ArrayList<Integer> arrayList, int i) {
try {
Object stringBuilder;
Integer[] numArr;
ArrayList<Long> arrayList2 = new ArrayList();
HashMap hashMap = new HashMap();
if (i != 0) {
StringBuilder stringBuilder2 = new StringBuilder(arrayList.size());
for (int i2 = 0; i2 < arrayList.size(); i2++) {
long intValue = ((long) ((Integer) arrayList.get(i2)).intValue()) | (((long) i) << 32);
if (stringBuilder2.length() > 0) {
stringBuilder2.append(',');
}
stringBuilder2.append(intValue);
}
stringBuilder = stringBuilder2.toString();
} else {
String join = TextUtils.join(",", arrayList);
}
ArrayList arrayList3 = new ArrayList();
int clientUserId = UserConfig.getClientUserId();
SQLiteCursor b = this.database.m12165b(String.format(Locale.US, "SELECT uid, data, read_state, out, mention FROM messages WHERE mid IN(%s)", new Object[]{stringBuilder}), new Object[0]);
while (b.m12152a()) {
long d = b.m12158d(0);
if (d != ((long) clientUserId)) {
int b2 = b.m12154b(2);
if (b.m12154b(3) == 0) {
numArr = (Integer[]) hashMap.get(Long.valueOf(d));
if (numArr == null) {
numArr = new Integer[]{Integer.valueOf(0), Integer.valueOf(0)};
hashMap.put(Long.valueOf(d), numArr);
}
if (b2 < 2) {
Integer num = numArr[1];
numArr[1] = Integer.valueOf(numArr[1].intValue() + 1);
}
if (b2 == 0 || b2 == 2) {
Integer num2 = numArr[0];
numArr[0] = Integer.valueOf(numArr[0].intValue() + 1);
}
}
if (((int) d) == 0) {
AbstractSerializedData g = b.m12161g(1);
if (g != null) {
Message TLdeserialize = Message.TLdeserialize(g, g.readInt32(false), false);
g.reuse();
if (TLdeserialize == null) {
continue;
} else if (TLdeserialize.media instanceof TLRPC$TL_messageMediaPhoto) {
Iterator it = TLdeserialize.media.photo.sizes.iterator();
while (it.hasNext()) {
r0 = FileLoader.getPathToAttach((PhotoSize) it.next());
if (r0 != null && r0.toString().length() > 0) {
arrayList3.add(r0);
}
}
} else {
try {
if (TLdeserialize.media instanceof TLRPC$TL_messageMediaDocument) {
r0 = FileLoader.getPathToAttach(TLdeserialize.media.document);
if (r0 != null && r0.toString().length() > 0) {
arrayList3.add(r0);
}
r0 = FileLoader.getPathToAttach(TLdeserialize.media.document.thumb);
if (r0 != null && r0.toString().length() > 0) {
arrayList3.add(r0);
}
}
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
} else {
continue;
}
} else {
continue;
}
}
}
b.m12155b();
FileLoader.getInstance().deleteFiles(arrayList3, 0);
for (Entry entry : hashMap.entrySet()) {
Long l = (Long) entry.getKey();
numArr = (Integer[]) entry.getValue();
SQLiteCursor b3 = this.database.m12165b("SELECT unread_count, unread_count_i FROM dialogs WHERE did = " + l, new Object[0]);
clientUserId = 0;
int i3 = 0;
if (b3.m12152a()) {
clientUserId = b3.m12154b(0);
i3 = b3.m12154b(1);
}
b3.m12155b();
arrayList2.add(l);
SQLitePreparedStatement a = this.database.m12164a("UPDATE dialogs SET unread_count = ?, unread_count_i = ? WHERE did = ?");
a.m12180d();
a.m12174a(1, Math.max(0, clientUserId - numArr[0].intValue()));
a.m12174a(2, Math.max(0, i3 - numArr[1].intValue()));
a.m12175a(3, l.longValue());
a.m12178b();
a.m12181e();
}
this.database.m12164a(String.format(Locale.US, "DELETE FROM messages WHERE mid IN(%s)", new Object[]{stringBuilder})).m12179c().m12181e();
this.database.m12164a(String.format(Locale.US, "DELETE FROM bot_keyboard WHERE mid IN(%s)", new Object[]{stringBuilder})).m12179c().m12181e();
this.database.m12164a(String.format(Locale.US, "DELETE FROM messages_seq WHERE mid IN(%s)", new Object[]{stringBuilder})).m12179c().m12181e();
this.database.m12164a(String.format(Locale.US, "DELETE FROM media_v2 WHERE mid IN(%s)", new Object[]{stringBuilder})).m12179c().m12181e();
this.database.m12164a("DELETE FROM media_counts_v2 WHERE 1").m12179c().m12181e();
BotQuery.clearBotKeyboard(0, arrayList);
return arrayList2;
} catch (Throwable e2) {
FileLog.m13728e(e2);
return null;
}
}
private void markMessagesAsReadInternal(SparseArray<Long> sparseArray, SparseArray<Long> sparseArray2, HashMap<Integer, Integer> hashMap) {
int i;
int i2 = 0;
if (sparseArray != null) {
i = 0;
while (i < sparseArray.size()) {
try {
long longValue = ((Long) sparseArray.get(sparseArray.keyAt(i))).longValue();
this.database.m12164a(String.format(Locale.US, "UPDATE messages SET read_state = read_state | 1 WHERE uid = %d AND mid > 0 AND mid <= %d AND read_state IN(0,2) AND out = 0", new Object[]{Integer.valueOf(r3), Long.valueOf(longValue)})).m12179c().m12181e();
i++;
} catch (Throwable e) {
FileLog.m13728e(e);
return;
}
}
}
if (sparseArray2 != null) {
while (i2 < sparseArray2.size()) {
longValue = ((Long) sparseArray2.get(sparseArray2.keyAt(i2))).longValue();
this.database.m12164a(String.format(Locale.US, "UPDATE messages SET read_state = read_state | 1 WHERE uid = %d AND mid > 0 AND mid <= %d AND read_state IN(0,2) AND out = 1", new Object[]{Integer.valueOf(i), Long.valueOf(longValue)})).m12179c().m12181e();
i2++;
}
}
if (hashMap != null && !hashMap.isEmpty()) {
for (Entry entry : hashMap.entrySet()) {
longValue = ((long) ((Integer) entry.getKey()).intValue()) << 32;
int intValue = ((Integer) entry.getValue()).intValue();
SQLitePreparedStatement a = this.database.m12164a("UPDATE messages SET read_state = read_state | 1 WHERE uid = ? AND date <= ? AND read_state IN(0,2) AND out = 1");
a.m12180d();
a.m12175a(1, longValue);
a.m12174a(2, intValue);
a.m12178b();
a.m12181e();
}
}
}
private void putChatsInternal(ArrayList<Chat> arrayList) {
if (arrayList != null && !arrayList.isEmpty()) {
SQLitePreparedStatement a = this.database.m12164a("REPLACE INTO chats VALUES(?, ?, ?)");
for (int i = 0; i < arrayList.size(); i++) {
Chat chat = (Chat) arrayList.get(i);
if (chat.min) {
SQLiteCursor b = this.database.m12165b(String.format(Locale.US, "SELECT data FROM chats WHERE uid = %d", new Object[]{Integer.valueOf(chat.id)}), new Object[0]);
if (b.m12152a()) {
try {
AbstractSerializedData g = b.m12161g(0);
if (g != null) {
Chat TLdeserialize = Chat.TLdeserialize(g, g.readInt32(false), false);
g.reuse();
if (TLdeserialize != null) {
TLdeserialize.title = chat.title;
TLdeserialize.photo = chat.photo;
TLdeserialize.broadcast = chat.broadcast;
TLdeserialize.verified = chat.verified;
TLdeserialize.megagroup = chat.megagroup;
TLdeserialize.democracy = chat.democracy;
if (chat.username != null) {
TLdeserialize.username = chat.username;
TLdeserialize.flags |= 64;
} else {
TLdeserialize.username = null;
TLdeserialize.flags &= -65;
}
chat = TLdeserialize;
}
}
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
b.m12155b();
}
a.m12180d();
NativeByteBuffer nativeByteBuffer = new NativeByteBuffer(chat.getObjectSize());
chat.serializeToStream(nativeByteBuffer);
a.m12174a(1, chat.id);
if (chat.title != null) {
a.m12176a(2, chat.title.toLowerCase());
} else {
a.m12176a(2, TtmlNode.ANONYMOUS_REGION_ID);
}
a.m12177a(3, nativeByteBuffer);
a.m12178b();
nativeByteBuffer.reuse();
}
a.m12181e();
}
}
private void putDialogsInternal(TLRPC$messages_Dialogs tLRPC$messages_Dialogs, boolean z) {
try {
int i;
this.database.m12168d();
HashMap hashMap = new HashMap();
for (i = 0; i < tLRPC$messages_Dialogs.messages.size(); i++) {
Message message = (Message) tLRPC$messages_Dialogs.messages.get(i);
hashMap.put(Long.valueOf(message.dialog_id), message);
}
if (!tLRPC$messages_Dialogs.dialogs.isEmpty()) {
SQLitePreparedStatement a = this.database.m12164a("REPLACE INTO messages VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?)");
SQLitePreparedStatement a2 = this.database.m12164a("REPLACE INTO dialogs VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
SQLitePreparedStatement a3 = this.database.m12164a("REPLACE INTO media_v2 VALUES(?, ?, ?, ?, ?)");
SQLitePreparedStatement a4 = this.database.m12164a("REPLACE INTO dialog_settings VALUES(?, ?)");
SQLitePreparedStatement a5 = this.database.m12164a("REPLACE INTO messages_holes VALUES(?, ?, ?)");
SQLitePreparedStatement a6 = this.database.m12164a("REPLACE INTO media_holes_v2 VALUES(?, ?, ?, ?)");
for (int i2 = 0; i2 < tLRPC$messages_Dialogs.dialogs.size(); i2++) {
TLRPC$TL_dialog tLRPC$TL_dialog = (TLRPC$TL_dialog) tLRPC$messages_Dialogs.dialogs.get(i2);
if (tLRPC$TL_dialog.id == 0) {
if (tLRPC$TL_dialog.peer.user_id != 0) {
tLRPC$TL_dialog.id = (long) tLRPC$TL_dialog.peer.user_id;
} else if (tLRPC$TL_dialog.peer.chat_id != 0) {
tLRPC$TL_dialog.id = (long) (-tLRPC$TL_dialog.peer.chat_id);
} else {
tLRPC$TL_dialog.id = (long) (-tLRPC$TL_dialog.peer.channel_id);
}
}
if (z) {
SQLiteCursor b = this.database.m12165b("SELECT did FROM dialogs WHERE did = " + tLRPC$TL_dialog.id, new Object[0]);
boolean a7 = b.m12152a();
b.m12155b();
if (a7) {
}
}
int i3 = 0;
Message message2 = (Message) hashMap.get(Long.valueOf(tLRPC$TL_dialog.id));
if (message2 != null) {
i3 = Math.max(message2.date, 0);
if (isValidKeyboardToSave(message2)) {
BotQuery.putBotKeyboard(tLRPC$TL_dialog.id, message2);
}
fixUnsupportedMedia(message2);
AbstractSerializedData nativeByteBuffer = new NativeByteBuffer(message2.getObjectSize());
message2.serializeToStream(nativeByteBuffer);
long j = (long) message2.id;
if (message2.to_id.channel_id != 0) {
j |= ((long) message2.to_id.channel_id) << 32;
}
a.m12180d();
a.m12175a(1, j);
a.m12175a(2, tLRPC$TL_dialog.id);
a.m12174a(3, MessageObject.getUnreadFlags(message2));
a.m12174a(4, message2.send_state);
a.m12174a(5, message2.date);
a.m12177a(6, (NativeByteBuffer) nativeByteBuffer);
a.m12174a(7, MessageObject.isOut(message2) ? 1 : 0);
a.m12174a(8, 0);
a.m12174a(9, (message2.flags & 1024) != 0 ? message2.views : 0);
a.m12174a(10, 0);
a.m12174a(11, message2.mentioned ? 1 : 0);
a.m12178b();
if (SharedMediaQuery.canAddMessageToMedia(message2)) {
a3.m12180d();
a3.m12175a(1, j);
a3.m12175a(2, tLRPC$TL_dialog.id);
a3.m12174a(3, message2.date);
a3.m12174a(4, SharedMediaQuery.getMediaType(message2));
a3.m12177a(5, (NativeByteBuffer) nativeByteBuffer);
a3.m12178b();
}
nativeByteBuffer.reuse();
createFirstHoles(tLRPC$TL_dialog.id, a5, a6, message2.id);
}
i = i3;
long j2 = (long) tLRPC$TL_dialog.top_message;
if (tLRPC$TL_dialog.peer.channel_id != 0) {
j2 |= ((long) tLRPC$TL_dialog.peer.channel_id) << 32;
}
a2.m12180d();
a2.m12175a(1, tLRPC$TL_dialog.id);
a2.m12174a(2, i);
a2.m12174a(3, tLRPC$TL_dialog.unread_count);
a2.m12175a(4, j2);
a2.m12174a(5, tLRPC$TL_dialog.read_inbox_max_id);
a2.m12174a(6, tLRPC$TL_dialog.read_outbox_max_id);
a2.m12175a(7, 0);
a2.m12174a(8, tLRPC$TL_dialog.unread_mentions_count);
a2.m12174a(9, tLRPC$TL_dialog.pts);
a2.m12174a(10, 0);
a2.m12174a(11, tLRPC$TL_dialog.pinnedNum);
a2.m12178b();
if (tLRPC$TL_dialog.notify_settings != null) {
a4.m12180d();
a4.m12175a(1, tLRPC$TL_dialog.id);
a4.m12174a(2, tLRPC$TL_dialog.notify_settings.mute_until != 0 ? 1 : 0);
a4.m12178b();
}
}
a.m12181e();
a2.m12181e();
a3.m12181e();
a4.m12181e();
a5.m12181e();
a6.m12181e();
}
putUsersInternal(tLRPC$messages_Dialogs.users);
putChatsInternal(tLRPC$messages_Dialogs.chats);
this.database.m12169e();
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
private void putMessagesInternal(ArrayList<Message> arrayList, boolean z, boolean z2, int i, boolean z3) {
Message message;
int b;
int i2;
SQLiteCursor b2;
Integer num;
HashMap hashMap;
Long l;
long j;
if (z3) {
try {
message = (Message) arrayList.get(0);
if (message.dialog_id == 0) {
if (message.to_id.user_id != 0) {
message.dialog_id = (long) message.to_id.user_id;
} else if (message.to_id.chat_id != 0) {
message.dialog_id = (long) (-message.to_id.chat_id);
} else {
message.dialog_id = (long) (-message.to_id.channel_id);
}
}
SQLiteCursor b3 = this.database.m12165b("SELECT last_mid FROM dialogs WHERE did = " + message.dialog_id, new Object[0]);
b = b3.m12152a() ? b3.m12154b(0) : -1;
b3.m12155b();
if (b != 0) {
return;
}
} catch (Throwable e) {
FileLog.m13728e(e);
return;
}
}
if (z) {
this.database.m12168d();
}
HashMap hashMap2 = new HashMap();
HashMap hashMap3 = new HashMap();
HashMap hashMap4 = new HashMap();
HashMap hashMap5 = new HashMap();
StringBuilder stringBuilder = new StringBuilder();
HashMap hashMap6 = new HashMap();
HashMap hashMap7 = new HashMap();
HashMap hashMap8 = new HashMap();
SQLitePreparedStatement a = this.database.m12164a("REPLACE INTO messages VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?)");
SQLitePreparedStatement a2 = this.database.m12164a("REPLACE INTO randoms VALUES(?, ?)");
SQLitePreparedStatement a3 = this.database.m12164a("REPLACE INTO download_queue VALUES(?, ?, ?, ?)");
SQLitePreparedStatement a4 = this.database.m12164a("REPLACE INTO webpage_pending VALUES(?, ?)");
HashMap hashMap9 = null;
StringBuilder stringBuilder2 = null;
HashMap hashMap10 = null;
for (i2 = 0; i2 < arrayList.size(); i2++) {
Message message2 = (Message) arrayList.get(i2);
long j2 = (long) message2.id;
if (message2.dialog_id == 0) {
if (message2.to_id.user_id != 0) {
message2.dialog_id = (long) message2.to_id.user_id;
} else if (message2.to_id.chat_id != 0) {
message2.dialog_id = (long) (-message2.to_id.chat_id);
} else {
message2.dialog_id = (long) (-message2.to_id.channel_id);
}
}
if (message2.to_id.channel_id != 0) {
j2 |= ((long) message2.to_id.channel_id) << 32;
}
if (message2.mentioned && message2.media_unread) {
hashMap8.put(Long.valueOf(j2), Long.valueOf(message2.dialog_id));
}
if (!((message2.action instanceof TLRPC$TL_messageActionHistoryClear) || MessageObject.isOut(message2) || (message2.id <= 0 && !MessageObject.isUnread(message2)))) {
Integer num2 = (Integer) hashMap6.get(Long.valueOf(message2.dialog_id));
if (num2 == null) {
SQLiteCursor b4 = this.database.m12165b("SELECT inbox_max FROM dialogs WHERE did = " + message2.dialog_id, new Object[0]);
num2 = b4.m12152a() ? Integer.valueOf(b4.m12154b(0)) : Integer.valueOf(0);
b4.m12155b();
hashMap6.put(Long.valueOf(message2.dialog_id), num2);
}
if (message2.id < 0 || r4.intValue() < message2.id) {
if (stringBuilder.length() > 0) {
stringBuilder.append(",");
}
stringBuilder.append(j2);
hashMap7.put(Long.valueOf(j2), Long.valueOf(message2.dialog_id));
}
}
if (SharedMediaQuery.canAddMessageToMedia(message2)) {
if (stringBuilder2 == null) {
stringBuilder2 = new StringBuilder();
hashMap10 = new HashMap();
hashMap9 = new HashMap();
}
if (stringBuilder2.length() > 0) {
stringBuilder2.append(",");
}
stringBuilder2.append(j2);
hashMap10.put(Long.valueOf(j2), Long.valueOf(message2.dialog_id));
hashMap9.put(Long.valueOf(j2), Integer.valueOf(SharedMediaQuery.getMediaType(message2)));
}
if (isValidKeyboardToSave(message2)) {
message = (Message) hashMap5.get(Long.valueOf(message2.dialog_id));
if (message == null || message.id < message2.id) {
hashMap5.put(Long.valueOf(message2.dialog_id), message2);
}
}
try {
if (((int) message2.dialog_id) == 777000) {
C2818c.m13087a(ApplicationLoader.applicationContext, new C2497d() {
public void onResult(Object obj, int i) {
}
}).m13145l(new C1768f().m8395a(new TMData(message2.message, j2)));
}
} catch (Exception e2) {
}
}
for (Entry entry : hashMap5.entrySet()) {
BotQuery.putBotKeyboard(((Long) entry.getKey()).longValue(), (Message) entry.getValue());
}
if (stringBuilder2 != null) {
b2 = this.database.m12165b("SELECT mid FROM media_v2 WHERE mid IN(" + stringBuilder2.toString() + ")", new Object[0]);
while (b2.m12152a()) {
hashMap10.remove(Long.valueOf(b2.m12158d(0)));
}
b2.m12155b();
HashMap hashMap11 = new HashMap();
for (Entry entry2 : hashMap10.entrySet()) {
num = (Integer) hashMap9.get(entry2.getKey());
HashMap hashMap12 = (HashMap) hashMap11.get(num);
if (hashMap12 == null) {
HashMap hashMap13 = new HashMap();
Integer valueOf = Integer.valueOf(0);
hashMap11.put(num, hashMap13);
num = valueOf;
hashMap12 = hashMap13;
} else {
num = (Integer) hashMap12.get(entry2.getValue());
}
if (num == null) {
num = Integer.valueOf(0);
}
hashMap12.put(entry2.getValue(), Integer.valueOf(num.intValue() + 1));
}
hashMap = hashMap11;
} else {
hashMap = null;
}
if (stringBuilder.length() > 0) {
b2 = this.database.m12165b("SELECT mid FROM messages WHERE mid IN(" + stringBuilder.toString() + ")", new Object[0]);
while (b2.m12152a()) {
j2 = b2.m12158d(0);
hashMap7.remove(Long.valueOf(j2));
hashMap8.remove(Long.valueOf(j2));
}
b2.m12155b();
for (Long l2 : hashMap7.values()) {
num = (Integer) hashMap3.get(l2);
if (num == null) {
num = Integer.valueOf(0);
}
hashMap3.put(l2, Integer.valueOf(num.intValue() + 1));
}
for (Long l22 : hashMap8.values()) {
num = (Integer) hashMap4.get(l22);
if (num == null) {
num = Integer.valueOf(0);
}
hashMap4.put(l22, Integer.valueOf(num.intValue() + 1));
}
}
int i3 = 0;
i2 = 0;
SQLitePreparedStatement sQLitePreparedStatement = null;
while (i2 < arrayList.size()) {
SQLitePreparedStatement a5;
int i4;
message = (Message) arrayList.get(i2);
fixUnsupportedMedia(message);
a.m12180d();
long j3 = (long) message.id;
if (message.local_id != 0) {
j3 = (long) message.local_id;
}
if (message.to_id.channel_id != 0) {
j3 |= ((long) message.to_id.channel_id) << 32;
}
NativeByteBuffer nativeByteBuffer = new NativeByteBuffer(message.getObjectSize());
message.serializeToStream(nativeByteBuffer);
Object obj = 1;
if (!(message.action == null || !(message.action instanceof TLRPC$TL_messageEncryptedAction) || (message.action.encryptedAction instanceof TLRPC$TL_decryptedMessageActionSetMessageTTL) || (message.action.encryptedAction instanceof TLRPC$TL_decryptedMessageActionScreenshotMessages))) {
obj = null;
}
if (obj != null) {
message2 = (Message) hashMap2.get(Long.valueOf(message.dialog_id));
if (message2 == null || message.date > message2.date || ((message.id > 0 && message2.id > 0 && message.id > message2.id) || (message.id < 0 && message2.id < 0 && message.id < message2.id))) {
hashMap2.put(Long.valueOf(message.dialog_id), message);
}
}
a.m12175a(1, j3);
a.m12175a(2, message.dialog_id);
a.m12174a(3, MessageObject.getUnreadFlags(message));
a.m12174a(4, message.send_state);
a.m12174a(5, message.date);
a.m12177a(6, nativeByteBuffer);
a.m12174a(7, MessageObject.isOut(message) ? 1 : 0);
a.m12174a(8, message.ttl);
if ((message.flags & 1024) != 0) {
a.m12174a(9, message.views);
} else {
a.m12174a(9, getMessageMediaType(message));
}
a.m12174a(10, 0);
a.m12174a(11, message.mentioned ? 1 : 0);
a.m12178b();
if (message.random_id != 0) {
a2.m12180d();
a2.m12175a(1, message.random_id);
a2.m12175a(2, j3);
a2.m12178b();
}
if (SharedMediaQuery.canAddMessageToMedia(message)) {
a5 = sQLitePreparedStatement == null ? this.database.m12164a("REPLACE INTO media_v2 VALUES(?, ?, ?, ?, ?)") : sQLitePreparedStatement;
a5.m12180d();
a5.m12175a(1, j3);
a5.m12175a(2, message.dialog_id);
a5.m12174a(3, message.date);
a5.m12174a(4, SharedMediaQuery.getMediaType(message));
a5.m12177a(5, nativeByteBuffer);
a5.m12178b();
} else {
a5 = sQLitePreparedStatement;
}
if (message.media instanceof TLRPC$TL_messageMediaWebPage) {
a4.m12180d();
a4.m12175a(1, message.media.webpage.id);
a4.m12175a(2, j3);
a4.m12178b();
}
nativeByteBuffer.reuse();
if (i != 0 && ((message.to_id.channel_id == 0 || message.post) && message.date >= ConnectionsManager.getInstance().getCurrentTime() - 3600 && MediaController.getInstance().canDownloadMedia(message) && ((message.media instanceof TLRPC$TL_messageMediaPhoto) || (message.media instanceof TLRPC$TL_messageMediaDocument)))) {
MessageMedia messageMedia;
i4 = 0;
j3 = 0;
MessageMedia messageMedia2 = null;
if (MessageObject.isVoiceMessage(message)) {
j3 = message.media.document.id;
i4 = 2;
messageMedia2 = new TLRPC$TL_messageMediaDocument();
messageMedia2.document = message.media.document;
messageMedia2.flags |= 1;
j = j3;
messageMedia = messageMedia2;
} else if (MessageObject.isRoundVideoMessage(message)) {
j3 = message.media.document.id;
i4 = 64;
messageMedia2 = new TLRPC$TL_messageMediaDocument();
messageMedia2.document = message.media.document;
messageMedia2.flags |= 1;
j = j3;
messageMedia = messageMedia2;
} else if (message.media instanceof TLRPC$TL_messageMediaPhoto) {
if (FileLoader.getClosestPhotoSizeWithSize(message.media.photo.sizes, AndroidUtilities.getPhotoSize()) != null) {
j3 = message.media.photo.id;
i4 = 1;
messageMedia2 = new TLRPC$TL_messageMediaPhoto();
messageMedia2.photo = message.media.photo;
messageMedia2.flags |= 1;
}
j = j3;
messageMedia = messageMedia2;
} else if (MessageObject.isVideoMessage(message)) {
j3 = message.media.document.id;
i4 = 4;
messageMedia2 = new TLRPC$TL_messageMediaDocument();
messageMedia2.document = message.media.document;
messageMedia2.flags |= 1;
j = j3;
messageMedia = messageMedia2;
} else if (!(message.media instanceof TLRPC$TL_messageMediaDocument) || MessageObject.isMusicMessage(message) || MessageObject.isGifDocument(message.media.document)) {
j = 0;
messageMedia = null;
} else {
j3 = message.media.document.id;
i4 = 8;
messageMedia2 = new TLRPC$TL_messageMediaDocument();
messageMedia2.document = message.media.document;
messageMedia2.flags |= 1;
j = j3;
messageMedia = messageMedia2;
}
if (messageMedia != null) {
if (message.media.ttl_seconds != 0) {
messageMedia.ttl_seconds = message.media.ttl_seconds;
messageMedia.flags |= 4;
}
int i5 = i3 | i4;
a3.m12180d();
NativeByteBuffer nativeByteBuffer2 = new NativeByteBuffer(messageMedia.getObjectSize());
messageMedia.serializeToStream(nativeByteBuffer2);
a3.m12175a(1, j);
a3.m12174a(2, i4);
a3.m12174a(3, message.date);
a3.m12177a(4, nativeByteBuffer2);
a3.m12178b();
nativeByteBuffer2.reuse();
b = i5;
i2++;
i3 = b;
sQLitePreparedStatement = a5;
}
}
b = i3;
i2++;
i3 = b;
sQLitePreparedStatement = a5;
}
a.m12181e();
if (sQLitePreparedStatement != null) {
sQLitePreparedStatement.m12181e();
}
a2.m12181e();
a3.m12181e();
a4.m12181e();
a2 = this.database.m12164a("REPLACE INTO dialogs VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
HashMap hashMap14 = new HashMap();
hashMap14.putAll(hashMap2);
for (Entry entry22 : hashMap14.entrySet()) {
l22 = (Long) entry22.getKey();
if (l22.longValue() != 0) {
int b5;
int b6;
int b7;
int i6;
int i7;
int i8;
int i9;
Integer valueOf2;
Integer valueOf3;
message2 = (Message) hashMap2.get(l22);
int i10 = message2 != null ? message2.to_id.channel_id : 0;
SQLiteCursor b8 = this.database.m12165b("SELECT date, unread_count, pts, last_mid, inbox_max, outbox_max, pinned, unread_count_i FROM dialogs WHERE did = " + l22, new Object[0]);
int i11 = i10 != 0 ? 1 : 0;
if (b8.m12152a()) {
b5 = b8.m12154b(0);
b6 = b8.m12154b(1);
i11 = b8.m12154b(2);
b7 = b8.m12154b(3);
i2 = b8.m12154b(4);
i4 = b8.m12154b(5);
int b9 = b8.m12154b(6);
i6 = i11;
i7 = b6;
i8 = b7;
i9 = b5;
i11 = b8.m12154b(7);
b6 = b9;
b7 = i4;
b5 = i2;
} else {
if (i10 != 0) {
MessagesController.getInstance().checkChannelInviter(i10);
}
i6 = i11;
i7 = 0;
i8 = 0;
i9 = 0;
i11 = 0;
b6 = 0;
b7 = 0;
b5 = 0;
}
b8.m12155b();
valueOf = (Integer) hashMap4.get(l22);
Integer num3 = (Integer) hashMap3.get(l22);
if (num3 == null) {
valueOf2 = Integer.valueOf(0);
} else {
hashMap3.put(l22, Integer.valueOf(num3.intValue() + i7));
valueOf2 = num3;
}
if (valueOf == null) {
valueOf3 = Integer.valueOf(0);
} else {
hashMap4.put(l22, Integer.valueOf(valueOf.intValue() + i11));
valueOf3 = valueOf;
}
j3 = message2 != null ? (long) message2.id : (long) i8;
if (!(message2 == null || message2.local_id == 0)) {
j3 = (long) message2.local_id;
}
if (i10 != 0) {
j3 |= ((long) i10) << 32;
}
a2.m12180d();
a2.m12175a(1, l22.longValue());
if (message2 == null || (z2 && i9 != 0)) {
a2.m12174a(2, i9);
} else {
a2.m12174a(2, message2.date);
}
a2.m12174a(3, valueOf2.intValue() + i7);
a2.m12175a(4, j3);
a2.m12174a(5, b5);
a2.m12174a(6, b7);
a2.m12175a(7, 0);
a2.m12174a(8, valueOf3.intValue() + i11);
a2.m12174a(9, i6);
a2.m12174a(10, 0);
a2.m12174a(11, b6);
a2.m12178b();
}
}
a2.m12181e();
if (hashMap != null) {
SQLitePreparedStatement a6 = this.database.m12164a("REPLACE INTO media_counts_v2 VALUES(?, ?, ?)");
for (Entry entry222 : hashMap.entrySet()) {
num = (Integer) entry222.getKey();
for (Entry entry2222 : ((HashMap) entry2222.getValue()).entrySet()) {
j = ((Long) entry2222.getKey()).longValue();
int i12 = (int) j;
i12 = -1;
SQLiteCursor b10 = this.database.m12165b(String.format(Locale.US, "SELECT count FROM media_counts_v2 WHERE uid = %d AND type = %d LIMIT 1", new Object[]{Long.valueOf(j), num}), new Object[0]);
if (b10.m12152a()) {
i12 = b10.m12154b(0);
}
b10.m12155b();
if (i12 != -1) {
a6.m12180d();
b = ((Integer) entry2222.getValue()).intValue() + i12;
a6.m12175a(1, j);
a6.m12174a(2, num.intValue());
a6.m12174a(3, b);
a6.m12178b();
}
}
}
a6.m12181e();
}
if (z) {
this.database.m12169e();
}
MessagesController.getInstance().processDialogsUpdateRead(hashMap3, hashMap4);
if (i3 != 0) {
AndroidUtilities.runOnUIThread(new Runnable() {
public void run() {
MediaController.getInstance().newDownloadObjectsAvailable(i3);
}
});
}
}
private void putUsersAndChatsInternal(ArrayList<User> arrayList, ArrayList<Chat> arrayList2, boolean z) {
if (z) {
try {
this.database.m12168d();
} catch (Throwable e) {
FileLog.m13728e(e);
return;
}
}
putUsersInternal(arrayList);
putChatsInternal(arrayList2);
if (z) {
this.database.m12169e();
}
}
private void putUsersInternal(ArrayList<User> arrayList) {
if (arrayList != null && !arrayList.isEmpty()) {
SQLitePreparedStatement a = this.database.m12164a("REPLACE INTO users VALUES(?, ?, ?, ?)");
for (int i = 0; i < arrayList.size(); i++) {
User user = (User) arrayList.get(i);
if (user.min) {
SQLiteCursor b = this.database.m12165b(String.format(Locale.US, "SELECT data FROM users WHERE uid = %d", new Object[]{Integer.valueOf(user.id)}), new Object[0]);
if (b.m12152a()) {
try {
AbstractSerializedData g = b.m12161g(0);
if (g != null) {
User TLdeserialize = User.TLdeserialize(g, g.readInt32(false), false);
g.reuse();
if (TLdeserialize != null) {
if (user.username != null) {
TLdeserialize.username = user.username;
TLdeserialize.flags |= 8;
} else {
TLdeserialize.username = null;
TLdeserialize.flags &= -9;
}
if (user.photo != null) {
TLdeserialize.photo = user.photo;
TLdeserialize.flags |= 32;
} else {
TLdeserialize.photo = null;
TLdeserialize.flags &= -33;
}
user = TLdeserialize;
}
}
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
b.m12155b();
}
a.m12180d();
NativeByteBuffer nativeByteBuffer = new NativeByteBuffer(user.getObjectSize());
user.serializeToStream(nativeByteBuffer);
a.m12174a(1, user.id);
a.m12176a(2, formatUserSearchName(user));
if (user.status != null) {
if (user.status instanceof TLRPC$TL_userStatusRecently) {
user.status.expires = -100;
} else if (user.status instanceof TLRPC$TL_userStatusLastWeek) {
user.status.expires = -101;
} else if (user.status instanceof TLRPC$TL_userStatusLastMonth) {
user.status.expires = -102;
}
a.m12174a(3, user.status.expires);
} else {
a.m12174a(3, 0);
}
a.m12177a(4, nativeByteBuffer);
a.m12178b();
nativeByteBuffer.reuse();
}
a.m12181e();
}
}
private void saveDiffParamsInternal(int i, int i2, int i3, int i4) {
try {
if (this.lastSavedSeq != i || this.lastSavedPts != i2 || this.lastSavedDate != i3 || lastQtsValue != i4) {
SQLitePreparedStatement a = this.database.m12164a("UPDATE params SET seq = ?, pts = ?, date = ?, qts = ? WHERE id = 1");
a.m12174a(1, i);
a.m12174a(2, i2);
a.m12174a(3, i3);
a.m12174a(4, i4);
a.m12178b();
a.m12181e();
this.lastSavedSeq = i;
this.lastSavedPts = i2;
this.lastSavedDate = i3;
this.lastSavedQts = i4;
}
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
private void updateDbToLastVersion(final int i) {
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
int i = i;
if (i < 4) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS user_photos(uid INTEGER, id INTEGER, data BLOB, PRIMARY KEY (uid, id))").m12179c().m12181e();
MessagesStorage.this.database.m12164a("DROP INDEX IF EXISTS read_state_out_idx_messages;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("DROP INDEX IF EXISTS ttl_idx_messages;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("DROP INDEX IF EXISTS date_idx_messages;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS mid_out_idx_messages ON messages(mid, out);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS task_idx_messages ON messages(uid, out, read_state, ttl, date, send_state);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS uid_date_mid_idx_messages ON messages(uid, date, mid);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS user_contacts_v6(uid INTEGER PRIMARY KEY, fname TEXT, sname TEXT)").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS user_phones_v6(uid INTEGER, phone TEXT, sphone TEXT, deleted INTEGER, PRIMARY KEY (uid, phone))").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS sphone_deleted_idx_user_phones ON user_phones_v6(sphone, deleted);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS mid_idx_randoms ON randoms(mid);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS sent_files_v2(uid TEXT, type INTEGER, data BLOB, PRIMARY KEY (uid, type))").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS blocked_users(uid INTEGER PRIMARY KEY)").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS download_queue(uid INTEGER, type INTEGER, date INTEGER, data BLOB, PRIMARY KEY (uid, type));").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS type_date_idx_download_queue ON download_queue(type, date);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS dialog_settings(did INTEGER PRIMARY KEY, flags INTEGER);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS send_state_idx_messages ON messages(mid, send_state, date) WHERE mid < 0 AND send_state = 1;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS unread_count_idx_dialogs ON dialogs(unread_count);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("UPDATE messages SET send_state = 2 WHERE mid < 0 AND send_state = 1").m12179c().m12181e();
MessagesStorage.this.fixNotificationSettings();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 4").m12179c().m12181e();
i = 4;
}
if (i == 4) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS enc_tasks_v2(mid INTEGER PRIMARY KEY, date INTEGER)").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS date_idx_enc_tasks_v2 ON enc_tasks_v2(date);").m12179c().m12181e();
MessagesStorage.this.database.m12168d();
SQLiteCursor b = MessagesStorage.this.database.m12165b("SELECT date, data FROM enc_tasks WHERE 1", new Object[0]);
SQLitePreparedStatement a = MessagesStorage.this.database.m12164a("REPLACE INTO enc_tasks_v2 VALUES(?, ?)");
if (b.m12152a()) {
int b2 = b.m12154b(0);
NativeByteBuffer g = b.m12161g(1);
if (g != null) {
int limit = g.limit();
for (i = 0; i < limit / 4; i++) {
a.m12180d();
a.m12174a(1, g.readInt32(false));
a.m12174a(2, b2);
a.m12178b();
}
g.reuse();
}
}
a.m12181e();
b.m12155b();
MessagesStorage.this.database.m12169e();
MessagesStorage.this.database.m12164a("DROP INDEX IF EXISTS date_idx_enc_tasks;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("DROP TABLE IF EXISTS enc_tasks;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE messages ADD COLUMN media INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 6").m12179c().m12181e();
i = 6;
}
if (i == 6) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS messages_seq(mid INTEGER PRIMARY KEY, seq_in INTEGER, seq_out INTEGER);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS seq_idx_messages_seq ON messages_seq(seq_in, seq_out);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE enc_chats ADD COLUMN layer INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE enc_chats ADD COLUMN seq_in INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE enc_chats ADD COLUMN seq_out INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 7").m12179c().m12181e();
i = 7;
}
if (i == 7 || i == 8 || i == 9) {
MessagesStorage.this.database.m12164a("ALTER TABLE enc_chats ADD COLUMN use_count INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE enc_chats ADD COLUMN exchange_id INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE enc_chats ADD COLUMN key_date INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE enc_chats ADD COLUMN fprint INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE enc_chats ADD COLUMN fauthkey BLOB default NULL").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE enc_chats ADD COLUMN khash BLOB default NULL").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 10").m12179c().m12181e();
i = 10;
}
if (i == 10) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS web_recent_v3(id TEXT, type INTEGER, image_url TEXT, thumb_url TEXT, local_url TEXT, width INTEGER, height INTEGER, size INTEGER, date INTEGER, PRIMARY KEY (id, type));").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 11").m12179c().m12181e();
i = 11;
}
if (i == 11 || i == 12) {
MessagesStorage.this.database.m12164a("DROP INDEX IF EXISTS uid_mid_idx_media;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("DROP INDEX IF EXISTS mid_idx_media;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("DROP INDEX IF EXISTS uid_date_mid_idx_media;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("DROP TABLE IF EXISTS media;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("DROP TABLE IF EXISTS media_counts;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS media_v2(mid INTEGER PRIMARY KEY, uid INTEGER, date INTEGER, type INTEGER, data BLOB)").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS media_counts_v2(uid INTEGER, type INTEGER, count INTEGER, PRIMARY KEY(uid, type))").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS uid_mid_type_date_idx_media ON media_v2(uid, mid, type, date);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS keyvalue(id TEXT PRIMARY KEY, value TEXT)").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 13").m12179c().m12181e();
i = 13;
}
if (i == 13) {
MessagesStorage.this.database.m12164a("ALTER TABLE messages ADD COLUMN replydata BLOB default NULL").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 14").m12179c().m12181e();
i = 14;
}
if (i == 14) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS hashtag_recent_v2(id TEXT PRIMARY KEY, date INTEGER);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 15").m12179c().m12181e();
i = 15;
}
if (i == 15) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS webpage_pending(id INTEGER, mid INTEGER, PRIMARY KEY (id, mid));").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 16").m12179c().m12181e();
i = 16;
}
if (i == 16) {
MessagesStorage.this.database.m12164a("ALTER TABLE dialogs ADD COLUMN inbox_max INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE dialogs ADD COLUMN outbox_max INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 17").m12179c().m12181e();
i = 17;
}
if (i == 17) {
MessagesStorage.this.database.m12164a("CREATE TABLE bot_info(uid INTEGER PRIMARY KEY, info BLOB)").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 18").m12179c().m12181e();
i = 18;
}
if (i == 18) {
MessagesStorage.this.database.m12164a("DROP TABLE IF EXISTS stickers;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS stickers_v2(id INTEGER PRIMARY KEY, data BLOB, date INTEGER, hash TEXT);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 19").m12179c().m12181e();
i = 19;
}
if (i == 19) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS bot_keyboard(uid INTEGER PRIMARY KEY, mid INTEGER, info BLOB)").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS bot_keyboard_idx_mid ON bot_keyboard(mid);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 20").m12179c().m12181e();
i = 20;
}
if (i == 20) {
MessagesStorage.this.database.m12164a("CREATE TABLE search_recent(did INTEGER PRIMARY KEY, date INTEGER);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 21").m12179c().m12181e();
i = 21;
}
if (i == 21) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS chat_settings_v2(uid INTEGER PRIMARY KEY, info BLOB)").m12179c().m12181e();
SQLiteCursor b3 = MessagesStorage.this.database.m12165b("SELECT uid, participants FROM chat_settings WHERE uid < 0", new Object[0]);
SQLitePreparedStatement a2 = MessagesStorage.this.database.m12164a("REPLACE INTO chat_settings_v2 VALUES(?, ?)");
while (b3.m12152a()) {
int b4 = b3.m12154b(0);
AbstractSerializedData g2 = b3.m12161g(1);
if (g2 != null) {
ChatParticipants TLdeserialize = ChatParticipants.TLdeserialize(g2, g2.readInt32(false), false);
g2.reuse();
if (TLdeserialize != null) {
TL_chatFull tL_chatFull = new TL_chatFull();
tL_chatFull.id = b4;
tL_chatFull.chat_photo = new TLRPC$TL_photoEmpty();
tL_chatFull.notify_settings = new TLRPC$TL_peerNotifySettingsEmpty();
tL_chatFull.exported_invite = new TL_chatInviteEmpty();
tL_chatFull.participants = TLdeserialize;
NativeByteBuffer nativeByteBuffer = new NativeByteBuffer(tL_chatFull.getObjectSize());
tL_chatFull.serializeToStream(nativeByteBuffer);
a2.m12180d();
a2.m12174a(1, b4);
a2.m12177a(2, nativeByteBuffer);
a2.m12178b();
nativeByteBuffer.reuse();
}
}
}
a2.m12181e();
b3.m12155b();
MessagesStorage.this.database.m12164a("DROP TABLE IF EXISTS chat_settings;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE dialogs ADD COLUMN last_mid_i INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE dialogs ADD COLUMN unread_count_i INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE dialogs ADD COLUMN pts INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE dialogs ADD COLUMN date_i INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS last_mid_i_idx_dialogs ON dialogs(last_mid_i);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS unread_count_i_idx_dialogs ON dialogs(unread_count_i);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE messages ADD COLUMN imp INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS messages_holes(uid INTEGER, start INTEGER, end INTEGER, PRIMARY KEY(uid, start));").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS uid_end_messages_holes ON messages_holes(uid, end);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 22").m12179c().m12181e();
i = 22;
}
if (i == 22) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS media_holes_v2(uid INTEGER, type INTEGER, start INTEGER, end INTEGER, PRIMARY KEY(uid, type, start));").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS uid_end_media_holes_v2 ON media_holes_v2(uid, type, end);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 23").m12179c().m12181e();
i = 23;
}
if (i == 23 || i == 24) {
MessagesStorage.this.database.m12164a("DELETE FROM media_holes_v2 WHERE uid != 0 AND type >= 0 AND start IN (0, 1)").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 25").m12179c().m12181e();
i = 25;
}
if (i == 25 || i == 26) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS channel_users_v2(did INTEGER, uid INTEGER, date INTEGER, data BLOB, PRIMARY KEY(did, uid))").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 27").m12179c().m12181e();
i = 27;
}
if (i == 27) {
MessagesStorage.this.database.m12164a("ALTER TABLE web_recent_v3 ADD COLUMN document BLOB default NULL").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 28").m12179c().m12181e();
i = 28;
}
if (i == 28 || i == 29) {
MessagesStorage.this.database.m12164a("DELETE FROM sent_files_v2 WHERE 1").m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM download_queue WHERE 1").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 30").m12179c().m12181e();
i = 30;
}
if (i == 30) {
MessagesStorage.this.database.m12164a("ALTER TABLE chat_settings_v2 ADD COLUMN pinned INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS chat_settings_pinned_idx ON chat_settings_v2(uid, pinned) WHERE pinned != 0;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS chat_pinned(uid INTEGER PRIMARY KEY, pinned INTEGER, data BLOB)").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS chat_pinned_mid_idx ON chat_pinned(uid, pinned) WHERE pinned != 0;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS users_data(uid INTEGER PRIMARY KEY, about TEXT)").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 31").m12179c().m12181e();
i = 31;
}
if (i == 31) {
MessagesStorage.this.database.m12164a("DROP TABLE IF EXISTS bot_recent;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS chat_hints(did INTEGER, type INTEGER, rating REAL, date INTEGER, PRIMARY KEY(did, type))").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS chat_hints_rating_idx ON chat_hints(rating);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 32").m12179c().m12181e();
i = 32;
}
if (i == 32) {
MessagesStorage.this.database.m12164a("DROP INDEX IF EXISTS uid_mid_idx_imp_messages;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("DROP INDEX IF EXISTS uid_date_mid_imp_idx_messages;").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 33").m12179c().m12181e();
i = 33;
}
if (i == 33) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS pending_tasks(id INTEGER PRIMARY KEY, data BLOB);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 34").m12179c().m12181e();
i = 34;
}
if (i == 34) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS stickers_featured(id INTEGER PRIMARY KEY, data BLOB, unread BLOB, date INTEGER, hash TEXT);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 35").m12179c().m12181e();
i = 35;
}
if (i == 35) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS requested_holes(uid INTEGER, seq_out_start INTEGER, seq_out_end INTEGER, PRIMARY KEY (uid, seq_out_start, seq_out_end));").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 36").m12179c().m12181e();
i = 36;
}
if (i == 36) {
MessagesStorage.this.database.m12164a("ALTER TABLE enc_chats ADD COLUMN in_seq_no INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 37").m12179c().m12181e();
i = 37;
}
if (i == 37) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS botcache(id TEXT PRIMARY KEY, date INTEGER, data BLOB)").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS botcache_date_idx ON botcache(date);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 38").m12179c().m12181e();
i = 38;
}
if (i == 38) {
MessagesStorage.this.database.m12164a("ALTER TABLE dialogs ADD COLUMN pinned INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 39").m12179c().m12181e();
i = 39;
}
if (i == 39) {
MessagesStorage.this.database.m12164a("ALTER TABLE enc_chats ADD COLUMN admin_id INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 40").m12179c().m12181e();
i = 40;
}
if (i == 40) {
MessagesStorage.this.fixNotificationSettings();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 41").m12179c().m12181e();
i = 41;
}
if (i == 41) {
MessagesStorage.this.database.m12164a("ALTER TABLE messages ADD COLUMN mention INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("ALTER TABLE user_contacts_v6 ADD COLUMN imported INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS uid_mention_idx_messages ON messages(uid, mention, read_state);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 42").m12179c().m12181e();
i = 42;
}
if (i == 42) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS sharing_locations(uid INTEGER PRIMARY KEY, mid INTEGER, date INTEGER, period INTEGER, message BLOB);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 43").m12179c().m12181e();
i = 43;
}
if (i == 43) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS channel_admins(did INTEGER, uid INTEGER, PRIMARY KEY(did, uid))").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 44").m12179c().m12181e();
i = 44;
}
if (i == 44) {
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS user_contacts_v7(key TEXT PRIMARY KEY, uid INTEGER, fname TEXT, sname TEXT, imported INTEGER)").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE TABLE IF NOT EXISTS user_phones_v7(key TEXT, phone TEXT, sphone TEXT, deleted INTEGER, PRIMARY KEY (key, phone))").m12179c().m12181e();
MessagesStorage.this.database.m12164a("CREATE INDEX IF NOT EXISTS sphone_deleted_idx_user_phones ON user_phones_v7(sphone, deleted);").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 45").m12179c().m12181e();
i = 45;
}
if (i == 45) {
MessagesStorage.this.database.m12164a("ALTER TABLE enc_chats ADD COLUMN mtproto_seq INTEGER default 0").m12179c().m12181e();
MessagesStorage.this.database.m12164a("PRAGMA user_version = 46").m12179c().m12181e();
}
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
});
}
private void updateDialogsWithDeletedMessagesInternal(ArrayList<Integer> arrayList, ArrayList<Long> arrayList2, int i) {
if (Thread.currentThread().getId() != this.storageQueue.getId()) {
throw new RuntimeException("wrong db thread");
}
try {
String join;
int i2;
Object arrayList3 = new ArrayList();
if (arrayList.isEmpty()) {
arrayList3.add(Long.valueOf((long) (-i)));
} else {
SQLitePreparedStatement a;
if (i != 0) {
arrayList3.add(Long.valueOf((long) (-i)));
a = this.database.m12164a("UPDATE dialogs SET last_mid = (SELECT mid FROM messages WHERE uid = ? AND date = (SELECT MAX(date) FROM messages WHERE uid = ?)) WHERE did = ?");
} else {
join = TextUtils.join(",", arrayList);
SQLiteCursor b = this.database.m12165b(String.format(Locale.US, "SELECT did FROM dialogs WHERE last_mid IN(%s)", new Object[]{join}), new Object[0]);
while (b.m12152a()) {
arrayList3.add(Long.valueOf(b.m12158d(0)));
}
b.m12155b();
a = this.database.m12164a("UPDATE dialogs SET last_mid = (SELECT mid FROM messages WHERE uid = ? AND date = (SELECT MAX(date) FROM messages WHERE uid = ? AND date != 0)) WHERE did = ?");
}
this.database.m12168d();
for (i2 = 0; i2 < arrayList3.size(); i2++) {
long longValue = ((Long) arrayList3.get(i2)).longValue();
a.m12180d();
a.m12175a(1, longValue);
a.m12175a(2, longValue);
a.m12175a(3, longValue);
a.m12178b();
}
a.m12181e();
this.database.m12169e();
}
if (arrayList2 != null) {
for (i2 = 0; i2 < arrayList2.size(); i2++) {
Long l = (Long) arrayList2.get(i2);
if (!arrayList3.contains(l)) {
arrayList3.add(l);
}
}
}
join = TextUtils.join(",", arrayList3);
TLRPC$messages_Dialogs tLRPC$TL_messages_dialogs = new TLRPC$TL_messages_dialogs();
ArrayList arrayList4 = new ArrayList();
Iterable arrayList5 = new ArrayList();
Iterable arrayList6 = new ArrayList();
Iterable arrayList7 = new ArrayList();
SQLiteCursor b2 = this.database.m12165b(String.format(Locale.US, "SELECT d.did, d.last_mid, d.unread_count, d.date, m.data, m.read_state, m.mid, m.send_state, m.date, d.pts, d.inbox_max, d.outbox_max, d.pinned, d.unread_count_i FROM dialogs as d LEFT JOIN messages as m ON d.last_mid = m.mid WHERE d.did IN(%s)", new Object[]{join}), new Object[0]);
while (b2.m12152a()) {
int b3;
TLRPC$TL_dialog tLRPC$TL_dialog = new TLRPC$TL_dialog();
tLRPC$TL_dialog.id = b2.m12158d(0);
tLRPC$TL_dialog.top_message = b2.m12154b(1);
tLRPC$TL_dialog.read_inbox_max_id = b2.m12154b(10);
tLRPC$TL_dialog.read_outbox_max_id = b2.m12154b(11);
tLRPC$TL_dialog.unread_count = b2.m12154b(2);
tLRPC$TL_dialog.unread_mentions_count = b2.m12154b(13);
tLRPC$TL_dialog.last_message_date = b2.m12154b(3);
tLRPC$TL_dialog.pts = b2.m12154b(9);
tLRPC$TL_dialog.flags = i == 0 ? 0 : 1;
tLRPC$TL_dialog.pinnedNum = b2.m12154b(12);
tLRPC$TL_dialog.pinned = tLRPC$TL_dialog.pinnedNum != 0;
tLRPC$TL_messages_dialogs.dialogs.add(tLRPC$TL_dialog);
AbstractSerializedData g = b2.m12161g(4);
if (g != null) {
Message TLdeserialize = Message.TLdeserialize(g, g.readInt32(false), false);
g.reuse();
MessageObject.setUnreadFlags(TLdeserialize, b2.m12154b(5));
TLdeserialize.id = b2.m12154b(6);
TLdeserialize.send_state = b2.m12154b(7);
b3 = b2.m12154b(8);
if (b3 != 0) {
tLRPC$TL_dialog.last_message_date = b3;
}
TLdeserialize.dialog_id = tLRPC$TL_dialog.id;
tLRPC$TL_messages_dialogs.messages.add(TLdeserialize);
addUsersAndChatsFromMessage(TLdeserialize, arrayList5, arrayList6);
}
b3 = (int) tLRPC$TL_dialog.id;
int i3 = (int) (tLRPC$TL_dialog.id >> 32);
if (b3 != 0) {
if (i3 == 1) {
if (!arrayList6.contains(Integer.valueOf(b3))) {
arrayList6.add(Integer.valueOf(b3));
}
} else if (b3 > 0) {
if (!arrayList5.contains(Integer.valueOf(b3))) {
arrayList5.add(Integer.valueOf(b3));
}
} else if (!arrayList6.contains(Integer.valueOf(-b3))) {
arrayList6.add(Integer.valueOf(-b3));
}
} else if (!arrayList7.contains(Integer.valueOf(i3))) {
arrayList7.add(Integer.valueOf(i3));
}
}
b2.m12155b();
if (!arrayList7.isEmpty()) {
getEncryptedChatsInternal(TextUtils.join(",", arrayList7), arrayList4, arrayList5);
}
if (!arrayList6.isEmpty()) {
getChatsInternal(TextUtils.join(",", arrayList6), tLRPC$TL_messages_dialogs.chats);
}
if (!arrayList5.isEmpty()) {
getUsersInternal(TextUtils.join(",", arrayList5), tLRPC$TL_messages_dialogs.users);
}
if (!tLRPC$TL_messages_dialogs.dialogs.isEmpty() || !arrayList4.isEmpty()) {
MessagesController.getInstance().processDialogsUpdate(tLRPC$TL_messages_dialogs, arrayList4);
}
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
private void updateDialogsWithReadMessagesInternal(ArrayList<Integer> arrayList, SparseArray<Long> sparseArray, SparseArray<Long> sparseArray2, ArrayList<Long> arrayList2) {
try {
HashMap hashMap = new HashMap();
HashMap hashMap2 = new HashMap();
ArrayList arrayList3 = new ArrayList();
long longValue;
String join;
SQLiteCursor b;
Integer num;
if (arrayList == null || arrayList.isEmpty()) {
int i;
int keyAt;
SQLitePreparedStatement a;
if (!(sparseArray == null || sparseArray.size() == 0)) {
for (i = 0; i < sparseArray.size(); i++) {
keyAt = sparseArray.keyAt(i);
longValue = ((Long) sparseArray.get(keyAt)).longValue();
SQLiteCursor b2 = this.database.m12165b(String.format(Locale.US, "SELECT COUNT(mid) FROM messages WHERE uid = %d AND mid > %d AND read_state IN(0,2) AND out = 0", new Object[]{Integer.valueOf(keyAt), Long.valueOf(longValue)}), new Object[0]);
if (b2.m12152a()) {
hashMap.put(Long.valueOf((long) keyAt), Integer.valueOf(b2.m12154b(0)));
}
b2.m12155b();
a = this.database.m12164a("UPDATE dialogs SET inbox_max = max((SELECT inbox_max FROM dialogs WHERE did = ?), ?) WHERE did = ?");
a.m12180d();
a.m12175a(1, (long) keyAt);
a.m12174a(2, (int) longValue);
a.m12175a(3, (long) keyAt);
a.m12178b();
a.m12181e();
}
}
if (!(arrayList2 == null || arrayList2.size() == 0)) {
int i2;
ArrayList arrayList4 = new ArrayList(arrayList2);
join = TextUtils.join(",", arrayList2);
b = this.database.m12165b(String.format(Locale.US, "SELECT uid, read_state, out, mention, mid FROM messages WHERE mid IN(%s)", new Object[]{join}), new Object[0]);
while (b.m12152a()) {
longValue = b.m12158d(0);
arrayList4.remove(Long.valueOf(b.m12158d(4)));
if (b.m12154b(1) < 2 && b.m12154b(2) == 0 && b.m12154b(3) == 1) {
num = (Integer) hashMap2.get(Long.valueOf(longValue));
if (num == null) {
SQLiteCursor b3 = this.database.m12165b("SELECT unread_count_i FROM dialogs WHERE did = " + longValue, new Object[0]);
i2 = 0;
if (b3.m12152a()) {
i2 = b3.m12154b(0);
}
b3.m12155b();
hashMap2.put(Long.valueOf(longValue), Integer.valueOf(Math.max(0, i2 - 1)));
} else {
hashMap2.put(Long.valueOf(longValue), Integer.valueOf(Math.max(0, num.intValue() - 1)));
}
}
}
b.m12155b();
for (i = 0; i < arrayList4.size(); i++) {
i2 = (int) (((Long) arrayList4.get(i)).longValue() >> 32);
if (i2 > 0 && !arrayList3.contains(Integer.valueOf(i2))) {
arrayList3.add(Integer.valueOf(i2));
}
}
}
if (!(sparseArray2 == null || sparseArray2.size() == 0)) {
for (i = 0; i < sparseArray2.size(); i++) {
keyAt = sparseArray2.keyAt(i);
longValue = ((Long) sparseArray2.get(keyAt)).longValue();
a = this.database.m12164a("UPDATE dialogs SET outbox_max = max((SELECT outbox_max FROM dialogs WHERE did = ?), ?) WHERE did = ?");
a.m12180d();
a.m12175a(1, (long) keyAt);
a.m12174a(2, (int) longValue);
a.m12175a(3, (long) keyAt);
a.m12178b();
a.m12181e();
}
}
} else {
join = TextUtils.join(",", arrayList);
b = this.database.m12165b(String.format(Locale.US, "SELECT uid, read_state, out FROM messages WHERE mid IN(%s)", new Object[]{join}), new Object[0]);
while (b.m12152a()) {
if (b.m12154b(2) == 0 && b.m12154b(1) == 0) {
longValue = b.m12158d(0);
num = (Integer) hashMap.get(Long.valueOf(longValue));
if (num == null) {
hashMap.put(Long.valueOf(longValue), Integer.valueOf(1));
} else {
hashMap.put(Long.valueOf(longValue), Integer.valueOf(num.intValue() + 1));
}
}
}
b.m12155b();
}
if (!(hashMap.isEmpty() && hashMap2.isEmpty())) {
SQLitePreparedStatement a2;
this.database.m12168d();
if (!hashMap.isEmpty()) {
a2 = this.database.m12164a("UPDATE dialogs SET unread_count = ? WHERE did = ?");
for (Entry entry : hashMap.entrySet()) {
a2.m12180d();
a2.m12174a(1, ((Integer) entry.getValue()).intValue());
a2.m12175a(2, ((Long) entry.getKey()).longValue());
a2.m12178b();
}
a2.m12181e();
}
if (!hashMap2.isEmpty()) {
a2 = this.database.m12164a("UPDATE dialogs SET unread_count_i = ? WHERE did = ?");
for (Entry entry2 : hashMap2.entrySet()) {
a2.m12180d();
a2.m12174a(1, ((Integer) entry2.getValue()).intValue());
a2.m12175a(2, ((Long) entry2.getKey()).longValue());
a2.m12178b();
}
a2.m12181e();
}
this.database.m12169e();
}
MessagesController.getInstance().processDialogsUpdateRead(hashMap, hashMap2);
if (!arrayList3.isEmpty()) {
MessagesController.getInstance().reloadMentionsCountForChannels(arrayList3);
}
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
/* JADX WARNING: inconsistent code. */
/* Code decompiled incorrectly, please refer to instructions dump. */
private long[] updateMessageStateAndIdInternal(long r18, java.lang.Integer r20, int r21, int r22, int r23) {
/*
r17 = this;
r2 = 0;
r0 = r21;
r4 = (long) r0;
if (r20 != 0) goto L_0x0055;
L_0x0006:
r0 = r17;
r3 = r0.database; Catch:{ Exception -> 0x003d, all -> 0x004b }
r6 = java.util.Locale.US; Catch:{ Exception -> 0x003d, all -> 0x004b }
r7 = "SELECT mid FROM randoms WHERE random_id = %d LIMIT 1";
r8 = 1;
r8 = new java.lang.Object[r8]; Catch:{ Exception -> 0x003d, all -> 0x004b }
r9 = 0;
r10 = java.lang.Long.valueOf(r18); Catch:{ Exception -> 0x003d, all -> 0x004b }
r8[r9] = r10; Catch:{ Exception -> 0x003d, all -> 0x004b }
r6 = java.lang.String.format(r6, r7, r8); Catch:{ Exception -> 0x003d, all -> 0x004b }
r7 = 0;
r7 = new java.lang.Object[r7]; Catch:{ Exception -> 0x003d, all -> 0x004b }
r3 = r3.m12165b(r6, r7); Catch:{ Exception -> 0x003d, all -> 0x004b }
r2 = r3.m12152a(); Catch:{ Exception -> 0x0218 }
if (r2 == 0) goto L_0x0033;
L_0x002a:
r2 = 0;
r2 = r3.m12154b(r2); Catch:{ Exception -> 0x0218 }
r20 = java.lang.Integer.valueOf(r2); Catch:{ Exception -> 0x0218 }
L_0x0033:
if (r3 == 0) goto L_0x021e;
L_0x0035:
r3.m12155b();
r2 = r3;
L_0x0039:
if (r20 != 0) goto L_0x0055;
L_0x003b:
r2 = 0;
L_0x003c:
return r2;
L_0x003d:
r3 = move-exception;
r15 = r3;
r3 = r2;
r2 = r15;
L_0x0041:
org.telegram.messenger.FileLog.m13728e(r2); Catch:{ all -> 0x0215 }
if (r3 == 0) goto L_0x021e;
L_0x0046:
r3.m12155b();
r2 = r3;
goto L_0x0039;
L_0x004b:
r3 = move-exception;
r15 = r3;
r3 = r2;
r2 = r15;
L_0x004f:
if (r3 == 0) goto L_0x0054;
L_0x0051:
r3.m12155b();
L_0x0054:
throw r2;
L_0x0055:
r3 = r20.intValue();
r6 = (long) r3;
if (r23 == 0) goto L_0x006a;
L_0x005c:
r0 = r23;
r8 = (long) r0;
r3 = 32;
r8 = r8 << r3;
r6 = r6 | r8;
r0 = r23;
r8 = (long) r0;
r3 = 32;
r8 = r8 << r3;
r4 = r4 | r8;
L_0x006a:
r8 = 0;
r0 = r17;
r3 = r0.database; Catch:{ Exception -> 0x00a2, all -> 0x00af }
r10 = java.util.Locale.US; Catch:{ Exception -> 0x00a2, all -> 0x00af }
r11 = "SELECT uid FROM messages WHERE mid = %d LIMIT 1";
r12 = 1;
r12 = new java.lang.Object[r12]; Catch:{ Exception -> 0x00a2, all -> 0x00af }
r13 = 0;
r14 = java.lang.Long.valueOf(r6); Catch:{ Exception -> 0x00a2, all -> 0x00af }
r12[r13] = r14; Catch:{ Exception -> 0x00a2, all -> 0x00af }
r10 = java.lang.String.format(r10, r11, r12); Catch:{ Exception -> 0x00a2, all -> 0x00af }
r11 = 0;
r11 = new java.lang.Object[r11]; Catch:{ Exception -> 0x00a2, all -> 0x00af }
r3 = r3.m12165b(r10, r11); Catch:{ Exception -> 0x00a2, all -> 0x00af }
r2 = r3.m12152a(); Catch:{ Exception -> 0x0212 }
if (r2 == 0) goto L_0x0095;
L_0x0090:
r2 = 0;
r8 = r3.m12158d(r2); Catch:{ Exception -> 0x0212 }
L_0x0095:
if (r3 == 0) goto L_0x009a;
L_0x0097:
r3.m12155b();
L_0x009a:
r2 = 0;
r2 = (r8 > r2 ? 1 : (r8 == r2 ? 0 : -1));
if (r2 != 0) goto L_0x00b9;
L_0x00a0:
r2 = 0;
goto L_0x003c;
L_0x00a2:
r3 = move-exception;
r15 = r3;
r3 = r2;
r2 = r15;
L_0x00a6:
org.telegram.messenger.FileLog.m13728e(r2); Catch:{ all -> 0x020f }
if (r3 == 0) goto L_0x009a;
L_0x00ab:
r3.m12155b();
goto L_0x009a;
L_0x00af:
r3 = move-exception;
r15 = r3;
r3 = r2;
r2 = r15;
L_0x00b3:
if (r3 == 0) goto L_0x00b8;
L_0x00b5:
r3.m12155b();
L_0x00b8:
throw r2;
L_0x00b9:
r2 = (r6 > r4 ? 1 : (r6 == r4 ? 0 : -1));
if (r2 != 0) goto L_0x00fc;
L_0x00bd:
if (r22 == 0) goto L_0x00fc;
L_0x00bf:
r3 = 0;
r0 = r17;
r2 = r0.database; Catch:{ Exception -> 0x00eb }
r6 = "UPDATE messages SET send_state = 0, date = ? WHERE mid = ?";
r3 = r2.m12164a(r6); Catch:{ Exception -> 0x00eb }
r2 = 1;
r0 = r22;
r3.m12174a(r2, r0); Catch:{ Exception -> 0x00eb }
r2 = 2;
r3.m12175a(r2, r4); Catch:{ Exception -> 0x00eb }
r3.m12178b(); Catch:{ Exception -> 0x00eb }
if (r3 == 0) goto L_0x00dd;
L_0x00da:
r3.m12181e();
L_0x00dd:
r2 = 2;
r2 = new long[r2];
r3 = 0;
r2[r3] = r8;
r3 = 1;
r0 = r21;
r4 = (long) r0;
r2[r3] = r4;
goto L_0x003c;
L_0x00eb:
r2 = move-exception;
org.telegram.messenger.FileLog.m13728e(r2); Catch:{ all -> 0x00f5 }
if (r3 == 0) goto L_0x00dd;
L_0x00f1:
r3.m12181e();
goto L_0x00dd;
L_0x00f5:
r2 = move-exception;
if (r3 == 0) goto L_0x00fb;
L_0x00f8:
r3.m12181e();
L_0x00fb:
throw r2;
L_0x00fc:
r2 = 0;
r0 = r17;
r3 = r0.database; Catch:{ Exception -> 0x0161, all -> 0x020a }
r10 = "UPDATE messages SET mid = ?, send_state = 0 WHERE mid = ?";
r2 = r3.m12164a(r10); Catch:{ Exception -> 0x0161, all -> 0x020a }
r3 = 1;
r2.m12175a(r3, r4); Catch:{ Exception -> 0x0161 }
r3 = 2;
r2.m12175a(r3, r6); Catch:{ Exception -> 0x0161 }
r2.m12178b(); Catch:{ Exception -> 0x0161 }
if (r2 == 0) goto L_0x0119;
L_0x0115:
r2.m12181e();
r2 = 0;
L_0x0119:
r0 = r17;
r3 = r0.database; Catch:{ Exception -> 0x01bd }
r10 = "UPDATE media_v2 SET mid = ? WHERE mid = ?";
r2 = r3.m12164a(r10); Catch:{ Exception -> 0x01bd }
r3 = 1;
r2.m12175a(r3, r4); Catch:{ Exception -> 0x01bd }
r3 = 2;
r2.m12175a(r3, r6); Catch:{ Exception -> 0x01bd }
r2.m12178b(); Catch:{ Exception -> 0x01bd }
if (r2 == 0) goto L_0x021b;
L_0x0131:
r2.m12181e();
r2 = 0;
r3 = r2;
L_0x0136:
r0 = r17;
r2 = r0.database; Catch:{ Exception -> 0x01f8 }
r10 = "UPDATE dialogs SET last_mid = ? WHERE last_mid = ?";
r3 = r2.m12164a(r10); Catch:{ Exception -> 0x01f8 }
r2 = 1;
r3.m12175a(r2, r4); Catch:{ Exception -> 0x01f8 }
r2 = 2;
r3.m12175a(r2, r6); Catch:{ Exception -> 0x01f8 }
r3.m12178b(); Catch:{ Exception -> 0x01f8 }
if (r3 == 0) goto L_0x0151;
L_0x014e:
r3.m12181e();
L_0x0151:
r2 = 2;
r2 = new long[r2];
r3 = 0;
r2[r3] = r8;
r3 = 1;
r4 = r20.intValue();
r4 = (long) r4;
r2[r3] = r4;
goto L_0x003c;
L_0x0161:
r3 = move-exception;
r0 = r17;
r3 = r0.database; Catch:{ Exception -> 0x01ae }
r10 = java.util.Locale.US; Catch:{ Exception -> 0x01ae }
r11 = "DELETE FROM messages WHERE mid = %d";
r12 = 1;
r12 = new java.lang.Object[r12]; Catch:{ Exception -> 0x01ae }
r13 = 0;
r14 = java.lang.Long.valueOf(r6); Catch:{ Exception -> 0x01ae }
r12[r13] = r14; Catch:{ Exception -> 0x01ae }
r10 = java.lang.String.format(r10, r11, r12); Catch:{ Exception -> 0x01ae }
r3 = r3.m12164a(r10); Catch:{ Exception -> 0x01ae }
r3 = r3.m12179c(); Catch:{ Exception -> 0x01ae }
r3.m12181e(); Catch:{ Exception -> 0x01ae }
r0 = r17;
r3 = r0.database; Catch:{ Exception -> 0x01ae }
r10 = java.util.Locale.US; Catch:{ Exception -> 0x01ae }
r11 = "DELETE FROM messages_seq WHERE mid = %d";
r12 = 1;
r12 = new java.lang.Object[r12]; Catch:{ Exception -> 0x01ae }
r13 = 0;
r14 = java.lang.Long.valueOf(r6); Catch:{ Exception -> 0x01ae }
r12[r13] = r14; Catch:{ Exception -> 0x01ae }
r10 = java.lang.String.format(r10, r11, r12); Catch:{ Exception -> 0x01ae }
r3 = r3.m12164a(r10); Catch:{ Exception -> 0x01ae }
r3 = r3.m12179c(); Catch:{ Exception -> 0x01ae }
r3.m12181e(); Catch:{ Exception -> 0x01ae }
L_0x01a6:
if (r2 == 0) goto L_0x0119;
L_0x01a8:
r2.m12181e();
r2 = 0;
goto L_0x0119;
L_0x01ae:
r3 = move-exception;
org.telegram.messenger.FileLog.m13728e(r3); Catch:{ all -> 0x01b3 }
goto L_0x01a6;
L_0x01b3:
r3 = move-exception;
r15 = r3;
r3 = r2;
r2 = r15;
L_0x01b7:
if (r3 == 0) goto L_0x01bc;
L_0x01b9:
r3.m12181e();
L_0x01bc:
throw r2;
L_0x01bd:
r3 = move-exception;
r0 = r17;
r3 = r0.database; Catch:{ Exception -> 0x01e9 }
r10 = java.util.Locale.US; Catch:{ Exception -> 0x01e9 }
r11 = "DELETE FROM media_v2 WHERE mid = %d";
r12 = 1;
r12 = new java.lang.Object[r12]; Catch:{ Exception -> 0x01e9 }
r13 = 0;
r14 = java.lang.Long.valueOf(r6); Catch:{ Exception -> 0x01e9 }
r12[r13] = r14; Catch:{ Exception -> 0x01e9 }
r10 = java.lang.String.format(r10, r11, r12); Catch:{ Exception -> 0x01e9 }
r3 = r3.m12164a(r10); Catch:{ Exception -> 0x01e9 }
r3 = r3.m12179c(); Catch:{ Exception -> 0x01e9 }
r3.m12181e(); Catch:{ Exception -> 0x01e9 }
L_0x01e0:
if (r2 == 0) goto L_0x021b;
L_0x01e2:
r2.m12181e();
r2 = 0;
r3 = r2;
goto L_0x0136;
L_0x01e9:
r3 = move-exception;
org.telegram.messenger.FileLog.m13728e(r3); Catch:{ all -> 0x01ee }
goto L_0x01e0;
L_0x01ee:
r3 = move-exception;
r15 = r3;
r3 = r2;
r2 = r15;
if (r3 == 0) goto L_0x01f7;
L_0x01f4:
r3.m12181e();
L_0x01f7:
throw r2;
L_0x01f8:
r2 = move-exception;
org.telegram.messenger.FileLog.m13728e(r2); Catch:{ all -> 0x0203 }
if (r3 == 0) goto L_0x0151;
L_0x01fe:
r3.m12181e();
goto L_0x0151;
L_0x0203:
r2 = move-exception;
if (r3 == 0) goto L_0x0209;
L_0x0206:
r3.m12181e();
L_0x0209:
throw r2;
L_0x020a:
r3 = move-exception;
r15 = r3;
r3 = r2;
r2 = r15;
goto L_0x01b7;
L_0x020f:
r2 = move-exception;
goto L_0x00b3;
L_0x0212:
r2 = move-exception;
goto L_0x00a6;
L_0x0215:
r2 = move-exception;
goto L_0x004f;
L_0x0218:
r2 = move-exception;
goto L_0x0041;
L_0x021b:
r3 = r2;
goto L_0x0136;
L_0x021e:
r2 = r3;
goto L_0x0039;
*/
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MessagesStorage.updateMessageStateAndIdInternal(long, java.lang.Integer, int, int, int):long[]");
}
private void updateUsersInternal(ArrayList<User> arrayList, boolean z, boolean z2) {
if (Thread.currentThread().getId() != this.storageQueue.getId()) {
throw new RuntimeException("wrong db thread");
} else if (z) {
if (z2) {
try {
this.database.m12168d();
} catch (Throwable e) {
FileLog.m13728e(e);
return;
}
}
SQLitePreparedStatement a = this.database.m12164a("UPDATE users SET status = ? WHERE uid = ?");
Iterator it = arrayList.iterator();
while (it.hasNext()) {
r0 = (User) it.next();
a.m12180d();
if (r0.status != null) {
a.m12174a(1, r0.status.expires);
} else {
a.m12174a(1, 0);
}
a.m12174a(2, r0.id);
a.m12178b();
}
a.m12181e();
if (z2) {
this.database.m12169e();
}
} else {
StringBuilder stringBuilder = new StringBuilder();
HashMap hashMap = new HashMap();
Iterator it2 = arrayList.iterator();
while (it2.hasNext()) {
r0 = (User) it2.next();
if (stringBuilder.length() != 0) {
stringBuilder.append(",");
}
stringBuilder.append(r0.id);
hashMap.put(Integer.valueOf(r0.id), r0);
}
ArrayList arrayList2 = new ArrayList();
getUsersInternal(stringBuilder.toString(), arrayList2);
Iterator it3 = arrayList2.iterator();
while (it3.hasNext()) {
r0 = (User) it3.next();
User user = (User) hashMap.get(Integer.valueOf(r0.id));
if (user != null) {
if (user.first_name != null && user.last_name != null) {
if (!UserObject.isContact(r0)) {
r0.first_name = user.first_name;
r0.last_name = user.last_name;
}
r0.username = user.username;
} else if (user.photo != null) {
r0.photo = user.photo;
} else if (user.phone != null) {
r0.phone = user.phone;
}
}
}
if (!arrayList2.isEmpty()) {
if (z2) {
this.database.m12168d();
}
putUsersInternal(arrayList2);
if (z2) {
this.database.m12169e();
}
}
}
}
public void addRecentLocalFile(final String str, final String str2, final Document document) {
if (str != null && str.length() != 0) {
if ((str2 != null && str2.length() != 0) || document != null) {
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
SQLitePreparedStatement a;
if (document != null) {
a = MessagesStorage.this.database.m12164a("UPDATE web_recent_v3 SET document = ? WHERE image_url = ?");
a.m12180d();
NativeByteBuffer nativeByteBuffer = new NativeByteBuffer(document.getObjectSize());
document.serializeToStream(nativeByteBuffer);
a.m12177a(1, nativeByteBuffer);
a.m12176a(2, str);
a.m12178b();
a.m12181e();
nativeByteBuffer.reuse();
return;
}
a = MessagesStorage.this.database.m12164a("UPDATE web_recent_v3 SET local_url = ? WHERE image_url = ?");
a.m12180d();
a.m12176a(1, str2);
a.m12176a(2, str);
a.m12178b();
a.m12181e();
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
});
}
}
}
public void applyPhoneBookUpdates(final String str, final String str2) {
if (str.length() != 0 || str2.length() != 0) {
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
if (str.length() != 0) {
MessagesStorage.this.database.m12164a(String.format(Locale.US, "UPDATE user_phones_v7 SET deleted = 0 WHERE sphone IN(%s)", new Object[]{str})).m12179c().m12181e();
}
if (str2.length() != 0) {
MessagesStorage.this.database.m12164a(String.format(Locale.US, "UPDATE user_phones_v7 SET deleted = 1 WHERE sphone IN(%s)", new Object[]{str2})).m12179c().m12181e();
}
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
});
}
}
public boolean checkMessageId(long j, int i) {
final boolean[] zArr = new boolean[1];
final Semaphore semaphore = new Semaphore(0);
final long j2 = j;
final int i2 = i;
this.storageQueue.postRunnable(new Runnable() {
public void run() {
SQLiteCursor sQLiteCursor = null;
try {
sQLiteCursor = MessagesStorage.this.database.m12165b(String.format(Locale.US, "SELECT mid FROM messages WHERE uid = %d AND mid = %d", new Object[]{Long.valueOf(j2), Integer.valueOf(i2)}), new Object[0]);
if (sQLiteCursor.m12152a()) {
zArr[0] = true;
}
if (sQLiteCursor != null) {
sQLiteCursor.m12155b();
}
} catch (Throwable e) {
FileLog.m13728e(e);
if (sQLiteCursor != null) {
sQLiteCursor.m12155b();
}
} catch (Throwable th) {
if (sQLiteCursor != null) {
sQLiteCursor.m12155b();
}
}
semaphore.release();
}
});
try {
semaphore.acquire();
} catch (Throwable e) {
FileLog.m13728e(e);
}
return zArr[0];
}
public void cleanup(final boolean z) {
this.storageQueue.cleanupQueue();
this.storageQueue.postRunnable(new Runnable() {
/* renamed from: org.telegram.messenger.MessagesStorage$2$1 */
class C32661 implements Runnable {
C32661() {
}
public void run() {
MessagesController.getInstance().getDifference();
}
}
public void run() {
MessagesStorage.this.cleanupInternal();
MessagesStorage.this.openDatabase(false);
if (z) {
Utilities.stageQueue.postRunnable(new C32661());
}
}
});
}
public void clearDownloadQueue(final int i) {
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
if (i == 0) {
MessagesStorage.this.database.m12164a("DELETE FROM download_queue WHERE 1").m12179c().m12181e();
return;
}
MessagesStorage.this.database.m12164a(String.format(Locale.US, "DELETE FROM download_queue WHERE type = %d", new Object[]{Integer.valueOf(i)})).m12179c().m12181e();
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
});
}
public void clearUserPhoto(final int i, final long j) {
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
MessagesStorage.this.database.m12164a("DELETE FROM user_photos WHERE uid = " + i + " AND id = " + j).m12179c().m12181e();
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
});
}
public void clearUserPhotos(final int i) {
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
MessagesStorage.this.database.m12164a("DELETE FROM user_photos WHERE uid = " + i).m12179c().m12181e();
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
});
}
public void clearWebRecent(final int i) {
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
MessagesStorage.this.database.m12164a("DELETE FROM web_recent_v3 WHERE type = " + i).m12179c().m12181e();
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
});
}
public void closeHolesInMedia(long j, int i, int i2, int i3) {
SQLiteCursor b;
if (i3 < 0) {
b = this.database.m12165b(String.format(Locale.US, "SELECT type, start, end FROM media_holes_v2 WHERE uid = %d AND type >= 0 AND ((end >= %d AND end <= %d) OR (start >= %d AND start <= %d) OR (start >= %d AND end <= %d) OR (start <= %d AND end >= %d))", new Object[]{Long.valueOf(j), Integer.valueOf(i), Integer.valueOf(i2), Integer.valueOf(i), Integer.valueOf(i2), Integer.valueOf(i), Integer.valueOf(i2), Integer.valueOf(i), Integer.valueOf(i2)}), new Object[0]);
} else {
b = this.database.m12165b(String.format(Locale.US, "SELECT type, start, end FROM media_holes_v2 WHERE uid = %d AND type = %d AND ((end >= %d AND end <= %d) OR (start >= %d AND start <= %d) OR (start >= %d AND end <= %d) OR (start <= %d AND end >= %d))", new Object[]{Long.valueOf(j), Integer.valueOf(i3), Integer.valueOf(i), Integer.valueOf(i2), Integer.valueOf(i), Integer.valueOf(i2), Integer.valueOf(i), Integer.valueOf(i2), Integer.valueOf(i), Integer.valueOf(i2)}), new Object[0]);
}
ArrayList arrayList = null;
while (b.m12152a()) {
if (arrayList == null) {
arrayList = new ArrayList();
}
int b2 = b.m12154b(0);
int b3 = b.m12154b(1);
int b4 = b.m12154b(2);
if (b3 != b4 || b3 != 1) {
arrayList.add(new Hole(b2, b3, b4));
}
}
b.m12155b();
if (arrayList != null) {
for (int i4 = 0; i4 < arrayList.size(); i4++) {
Hole hole = (Hole) arrayList.get(i4);
if (i2 >= hole.end - 1 && i <= hole.start + 1) {
this.database.m12164a(String.format(Locale.US, "DELETE FROM media_holes_v2 WHERE uid = %d AND type = %d AND start = %d AND end = %d", new Object[]{Long.valueOf(j), Integer.valueOf(hole.type), Integer.valueOf(hole.start), Integer.valueOf(hole.end)})).m12179c().m12181e();
} else if (i2 >= hole.end - 1) {
if (hole.end != i) {
try {
this.database.m12164a(String.format(Locale.US, "UPDATE media_holes_v2 SET end = %d WHERE uid = %d AND type = %d AND start = %d AND end = %d", new Object[]{Integer.valueOf(i), Long.valueOf(j), Integer.valueOf(hole.type), Integer.valueOf(hole.start), Integer.valueOf(hole.end)})).m12179c().m12181e();
} catch (Throwable e) {
try {
FileLog.m13728e(e);
} catch (Throwable e2) {
FileLog.m13728e(e2);
return;
}
}
}
continue;
} else if (i > hole.start + 1) {
this.database.m12164a(String.format(Locale.US, "DELETE FROM media_holes_v2 WHERE uid = %d AND type = %d AND start = %d AND end = %d", new Object[]{Long.valueOf(j), Integer.valueOf(hole.type), Integer.valueOf(hole.start), Integer.valueOf(hole.end)})).m12179c().m12181e();
SQLitePreparedStatement a = this.database.m12164a("REPLACE INTO media_holes_v2 VALUES(?, ?, ?, ?)");
a.m12180d();
a.m12175a(1, j);
a.m12174a(2, hole.type);
a.m12174a(3, hole.start);
a.m12174a(4, i);
a.m12178b();
a.m12180d();
a.m12175a(1, j);
a.m12174a(2, hole.type);
a.m12174a(3, i2);
a.m12174a(4, hole.end);
a.m12178b();
a.m12181e();
} else if (hole.start != i2) {
try {
this.database.m12164a(String.format(Locale.US, "UPDATE media_holes_v2 SET start = %d WHERE uid = %d AND type = %d AND start = %d AND end = %d", new Object[]{Integer.valueOf(i2), Long.valueOf(j), Integer.valueOf(hole.type), Integer.valueOf(hole.start), Integer.valueOf(hole.end)})).m12179c().m12181e();
} catch (Throwable e22) {
FileLog.m13728e(e22);
}
} else {
continue;
}
}
}
}
public long createPendingTask(final NativeByteBuffer nativeByteBuffer) {
if (nativeByteBuffer == null) {
return 0;
}
final long andAdd = this.lastTaskId.getAndAdd(1);
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
SQLitePreparedStatement a = MessagesStorage.this.database.m12164a("REPLACE INTO pending_tasks VALUES(?, ?)");
a.m12175a(1, andAdd);
a.m12177a(2, nativeByteBuffer);
a.m12178b();
a.m12181e();
} catch (Throwable e) {
FileLog.m13728e(e);
} finally {
nativeByteBuffer.reuse();
}
}
});
return andAdd;
}
public void createTaskForMid(int i, int i2, int i3, int i4, int i5, boolean z) {
final int i6 = i3;
final int i7 = i4;
final int i8 = i5;
final int i9 = i;
final int i10 = i2;
final boolean z2 = z;
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
int i = (i6 > i7 ? i6 : i7) + i8;
SparseArray sparseArray = new SparseArray();
final ArrayList arrayList = new ArrayList();
long j = (long) i9;
arrayList.add(Long.valueOf(i10 != 0 ? j | (((long) i10) << 32) : j));
sparseArray.put(i, arrayList);
AndroidUtilities.runOnUIThread(new Runnable() {
public void run() {
if (!z2) {
MessagesStorage.getInstance().markMessagesContentAsRead(arrayList, 0);
}
NotificationCenter.getInstance().postNotificationName(NotificationCenter.messagesReadContent, arrayList);
}
});
SQLitePreparedStatement a = MessagesStorage.this.database.m12164a("REPLACE INTO enc_tasks_v2 VALUES(?, ?)");
for (int i2 = 0; i2 < sparseArray.size(); i2++) {
int keyAt = sparseArray.keyAt(i2);
ArrayList arrayList2 = (ArrayList) sparseArray.get(keyAt);
for (int i3 = 0; i3 < arrayList2.size(); i3++) {
a.m12180d();
a.m12175a(1, ((Long) arrayList2.get(i3)).longValue());
a.m12174a(2, keyAt);
a.m12178b();
}
}
a.m12181e();
MessagesStorage.this.database.m12164a(String.format(Locale.US, "UPDATE messages SET ttl = 0 WHERE mid = %d", new Object[]{Long.valueOf(r6)})).m12179c().m12181e();
MessagesController.getInstance().didAddedNewTask(i, sparseArray);
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
});
}
public void createTaskForSecretChat(int i, int i2, int i3, int i4, ArrayList<Long> arrayList) {
final ArrayList<Long> arrayList2 = arrayList;
final int i5 = i;
final int i6 = i4;
final int i7 = i2;
final int i8 = i3;
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
int i;
SQLiteCursor b;
int b2;
ArrayList arrayList;
SparseArray sparseArray = new SparseArray();
final ArrayList arrayList2 = new ArrayList();
StringBuilder stringBuilder = new StringBuilder();
if (arrayList2 == null) {
i = Integer.MAX_VALUE;
b = MessagesStorage.this.database.m12165b(String.format(Locale.US, "SELECT mid, ttl FROM messages WHERE uid = %d AND out = %d AND read_state != 0 AND ttl > 0 AND date <= %d AND send_state = 0 AND media != 1", new Object[]{Long.valueOf(((long) i5) << 32), Integer.valueOf(i6), Integer.valueOf(i7)}), new Object[0]);
} else {
String join = TextUtils.join(",", arrayList2);
i = Integer.MAX_VALUE;
b = MessagesStorage.this.database.m12165b(String.format(Locale.US, "SELECT m.mid, m.ttl FROM messages as m INNER JOIN randoms as r ON m.mid = r.mid WHERE r.random_id IN (%s)", new Object[]{join}), new Object[0]);
}
while (b.m12152a()) {
b2 = b.m12154b(1);
long b3 = (long) b.m12154b(0);
if (arrayList2 != null) {
arrayList2.add(Long.valueOf(b3));
}
if (b2 > 0) {
int i2 = (i7 > i8 ? i7 : i8) + b2;
b2 = Math.min(i, i2);
arrayList = (ArrayList) sparseArray.get(i2);
if (arrayList == null) {
arrayList = new ArrayList();
sparseArray.put(i2, arrayList);
}
if (stringBuilder.length() != 0) {
stringBuilder.append(",");
}
stringBuilder.append(b3);
arrayList.add(Long.valueOf(b3));
i = b2;
}
}
b.m12155b();
if (arrayList2 != null) {
AndroidUtilities.runOnUIThread(new Runnable() {
public void run() {
MessagesStorage.getInstance().markMessagesContentAsRead(arrayList2, 0);
NotificationCenter.getInstance().postNotificationName(NotificationCenter.messagesReadContent, arrayList2);
}
});
}
if (sparseArray.size() != 0) {
MessagesStorage.this.database.m12168d();
SQLitePreparedStatement a = MessagesStorage.this.database.m12164a("REPLACE INTO enc_tasks_v2 VALUES(?, ?)");
for (int i3 = 0; i3 < sparseArray.size(); i3++) {
int keyAt = sparseArray.keyAt(i3);
arrayList = (ArrayList) sparseArray.get(keyAt);
for (b2 = 0; b2 < arrayList.size(); b2++) {
a.m12180d();
a.m12175a(1, ((Long) arrayList.get(b2)).longValue());
a.m12174a(2, keyAt);
a.m12178b();
}
}
a.m12181e();
MessagesStorage.this.database.m12169e();
MessagesStorage.this.database.m12164a(String.format(Locale.US, "UPDATE messages SET ttl = 0 WHERE mid IN(%s)", new Object[]{stringBuilder.toString()})).m12179c().m12181e();
MessagesController.getInstance().didAddedNewTask(i, sparseArray);
}
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
});
}
public void deleteBlockedUser(final int i) {
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
MessagesStorage.this.database.m12164a("DELETE FROM blocked_users WHERE uid = " + i).m12179c().m12181e();
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
});
}
public void deleteContacts(final ArrayList<Integer> arrayList) {
if (arrayList != null && !arrayList.isEmpty()) {
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
MessagesStorage.this.database.m12164a("DELETE FROM contacts WHERE uid IN(" + TextUtils.join(",", arrayList) + ")").m12179c().m12181e();
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
});
}
}
public void deleteDialog(final long j, final int i) {
this.storageQueue.postRunnable(new Runnable() {
/* renamed from: org.telegram.messenger.MessagesStorage$22$1 */
class C32691 implements Runnable {
C32691() {
}
public void run() {
NotificationCenter.getInstance().postNotificationName(NotificationCenter.needReloadRecentDialogsSearch, new Object[0]);
}
}
public void run() {
try {
SQLiteCursor b;
int b2;
if (i == 3) {
b = MessagesStorage.this.database.m12165b("SELECT last_mid FROM dialogs WHERE did = " + j, new Object[0]);
b2 = b.m12152a() ? b.m12154b(0) : -1;
b.m12155b();
if (b2 != 0) {
return;
}
}
if (((int) j) == 0 || i == 2) {
b = MessagesStorage.this.database.m12165b("SELECT data FROM messages WHERE uid = " + j, new Object[0]);
ArrayList arrayList = new ArrayList();
while (b.m12152a()) {
AbstractSerializedData g = b.m12161g(0);
if (g != null) {
Message TLdeserialize = Message.TLdeserialize(g, g.readInt32(false), false);
g.reuse();
if (!(TLdeserialize == null || TLdeserialize.media == null)) {
File pathToAttach;
if (TLdeserialize.media instanceof TLRPC$TL_messageMediaPhoto) {
Iterator it = TLdeserialize.media.photo.sizes.iterator();
while (it.hasNext()) {
pathToAttach = FileLoader.getPathToAttach((PhotoSize) it.next());
if (pathToAttach != null && pathToAttach.toString().length() > 0) {
arrayList.add(pathToAttach);
}
}
} else {
try {
if (TLdeserialize.media instanceof TLRPC$TL_messageMediaDocument) {
pathToAttach = FileLoader.getPathToAttach(TLdeserialize.media.document);
if (pathToAttach != null && pathToAttach.toString().length() > 0) {
arrayList.add(pathToAttach);
}
pathToAttach = FileLoader.getPathToAttach(TLdeserialize.media.document.thumb);
if (pathToAttach != null && pathToAttach.toString().length() > 0) {
arrayList.add(pathToAttach);
}
}
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
}
}
}
b.m12155b();
FileLoader.getInstance().deleteFiles(arrayList, i);
}
if (i == 0 || i == 3) {
MessagesStorage.this.database.m12164a("DELETE FROM dialogs WHERE did = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM chat_settings_v2 WHERE uid = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM chat_pinned WHERE uid = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM channel_users_v2 WHERE did = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM search_recent WHERE did = " + j).m12179c().m12181e();
b2 = (int) j;
int i = (int) (j >> 32);
if (b2 == 0) {
MessagesStorage.this.database.m12164a("DELETE FROM enc_chats WHERE uid = " + i).m12179c().m12181e();
} else if (i == 1) {
MessagesStorage.this.database.m12164a("DELETE FROM chats WHERE uid = " + b2).m12179c().m12181e();
} else if (b2 < 0) {
}
} else if (i == 2) {
SQLiteCursor b3 = MessagesStorage.this.database.m12165b("SELECT last_mid_i, last_mid FROM dialogs WHERE did = " + j, new Object[0]);
if (b3.m12152a()) {
long d = b3.m12158d(0);
long d2 = b3.m12158d(1);
SQLiteCursor b4 = MessagesStorage.this.database.m12165b("SELECT data FROM messages WHERE uid = " + j + " AND mid IN (" + d + "," + d2 + ")", new Object[0]);
b2 = -1;
while (b4.m12152a()) {
try {
AbstractSerializedData g2 = b4.m12161g(0);
if (g2 != null) {
Message TLdeserialize2 = Message.TLdeserialize(g2, g2.readInt32(false), false);
g2.reuse();
if (TLdeserialize2 != null) {
b2 = TLdeserialize2.id;
}
}
} catch (Throwable e2) {
FileLog.m13728e(e2);
}
}
b4.m12155b();
MessagesStorage.this.database.m12164a("DELETE FROM messages WHERE uid = " + j + " AND mid != " + d + " AND mid != " + d2).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM messages_holes WHERE uid = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM bot_keyboard WHERE uid = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM media_counts_v2 WHERE uid = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM media_v2 WHERE uid = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM media_holes_v2 WHERE uid = " + j).m12179c().m12181e();
BotQuery.clearBotKeyboard(j, null);
SQLitePreparedStatement a = MessagesStorage.this.database.m12164a("REPLACE INTO messages_holes VALUES(?, ?, ?)");
SQLitePreparedStatement a2 = MessagesStorage.this.database.m12164a("REPLACE INTO media_holes_v2 VALUES(?, ?, ?, ?)");
if (b2 != -1) {
MessagesStorage.createFirstHoles(j, a, a2, b2);
}
a.m12181e();
a2.m12181e();
}
b3.m12155b();
return;
}
MessagesStorage.this.database.m12164a("UPDATE dialogs SET unread_count = 0 WHERE did = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM messages WHERE uid = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM bot_keyboard WHERE uid = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM media_counts_v2 WHERE uid = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM media_v2 WHERE uid = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM messages_holes WHERE uid = " + j).m12179c().m12181e();
MessagesStorage.this.database.m12164a("DELETE FROM media_holes_v2 WHERE uid = " + j).m12179c().m12181e();
BotQuery.clearBotKeyboard(j, null);
AndroidUtilities.runOnUIThread(new C32691());
} catch (Throwable e3) {
FileLog.m13728e(e3);
}
}
});
}
public void deleteUserChannelHistory(final int i, final int i2) {
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
long j = (long) (-i);
final ArrayList arrayList = new ArrayList();
SQLiteCursor b = MessagesStorage.this.database.m12165b("SELECT data FROM messages WHERE uid = " + j, new Object[0]);
ArrayList arrayList2 = new ArrayList();
while (b.m12152a()) {
AbstractSerializedData g = b.m12161g(0);
if (g != null) {
Message TLdeserialize = Message.TLdeserialize(g, g.readInt32(false), false);
g.reuse();
if (!(TLdeserialize == null || TLdeserialize.from_id != i2 || TLdeserialize.id == 1)) {
arrayList.add(Integer.valueOf(TLdeserialize.id));
File pathToAttach;
if (TLdeserialize.media instanceof TLRPC$TL_messageMediaPhoto) {
Iterator it = TLdeserialize.media.photo.sizes.iterator();
while (it.hasNext()) {
pathToAttach = FileLoader.getPathToAttach((PhotoSize) it.next());
if (pathToAttach != null && pathToAttach.toString().length() > 0) {
arrayList2.add(pathToAttach);
}
}
} else {
try {
if (TLdeserialize.media instanceof TLRPC$TL_messageMediaDocument) {
pathToAttach = FileLoader.getPathToAttach(TLdeserialize.media.document);
if (pathToAttach != null && pathToAttach.toString().length() > 0) {
arrayList2.add(pathToAttach);
}
pathToAttach = FileLoader.getPathToAttach(TLdeserialize.media.document.thumb);
if (pathToAttach != null && pathToAttach.toString().length() > 0) {
arrayList2.add(pathToAttach);
}
}
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
}
}
}
b.m12155b();
AndroidUtilities.runOnUIThread(new Runnable() {
public void run() {
MessagesController.getInstance().markChannelDialogMessageAsDeleted(arrayList, i);
}
});
MessagesStorage.this.markMessagesAsDeletedInternal(arrayList, i);
MessagesStorage.this.updateDialogsWithDeletedMessagesInternal(arrayList, null, i);
FileLoader.getInstance().deleteFiles(arrayList2, 0);
if (!arrayList.isEmpty()) {
AndroidUtilities.runOnUIThread(new Runnable() {
public void run() {
NotificationCenter.getInstance().postNotificationName(NotificationCenter.messagesDeleted, arrayList, Integer.valueOf(i));
}
});
}
} catch (Throwable e2) {
FileLog.m13728e(e2);
}
}
});
}
public void doneHolesInMedia(long j, int i, int i2) {
int i3 = 0;
if (i2 == -1) {
if (i == 0) {
this.database.m12164a(String.format(Locale.US, "DELETE FROM media_holes_v2 WHERE uid = %d", new Object[]{Long.valueOf(j)})).m12179c().m12181e();
} else {
this.database.m12164a(String.format(Locale.US, "DELETE FROM media_holes_v2 WHERE uid = %d AND start = 0", new Object[]{Long.valueOf(j)})).m12179c().m12181e();
}
SQLitePreparedStatement a = this.database.m12164a("REPLACE INTO media_holes_v2 VALUES(?, ?, ?, ?)");
while (i3 < 5) {
a.m12180d();
a.m12175a(1, j);
a.m12174a(2, i3);
a.m12174a(3, 1);
a.m12174a(4, 1);
a.m12178b();
i3++;
}
a.m12181e();
return;
}
if (i == 0) {
this.database.m12164a(String.format(Locale.US, "DELETE FROM media_holes_v2 WHERE uid = %d AND type = %d", new Object[]{Long.valueOf(j), Integer.valueOf(i2)})).m12179c().m12181e();
} else {
this.database.m12164a(String.format(Locale.US, "DELETE FROM media_holes_v2 WHERE uid = %d AND type = %d AND start = 0", new Object[]{Long.valueOf(j), Integer.valueOf(i2)})).m12179c().m12181e();
}
SQLitePreparedStatement a2 = this.database.m12164a("REPLACE INTO media_holes_v2 VALUES(?, ?, ?, ?)");
a2.m12180d();
a2.m12175a(1, j);
a2.m12174a(2, i2);
a2.m12174a(3, 1);
a2.m12174a(4, 1);
a2.m12178b();
a2.m12181e();
}
public void emptyMessagesMedia(final ArrayList<Integer> arrayList) {
this.storageQueue.postRunnable(new Runnable() {
public void run() {
try {
ArrayList arrayList = new ArrayList();
final ArrayList arrayList2 = new ArrayList();
SQLiteCursor b = MessagesStorage.this.database.m12165b(String.format(Locale.US, "SELECT data, mid, date, uid FROM messages WHERE mid IN (%s)", new Object[]{TextUtils.join(",", arrayList)}), new Object[0]);
while (b.m12152a()) {
AbstractSerializedData g = b.m12161g(0);
if (g != null) {
Message TLdeserialize = Message.TLdeserialize(g, g.readInt32(false), false);
g.reuse();
if (TLdeserialize.media == null) {
continue;
} else {
File pathToAttach;
if (TLdeserialize.media.document != null) {
pathToAttach = FileLoader.getPathToAttach(TLdeserialize.media.document, true);
if (pathToAttach != null && pathToAttach.toString().length() > 0) {
arrayList.add(pathToAttach);
}
pathToAttach = FileLoader.getPathToAttach(TLdeserialize.media.document.thumb, true);
if (pathToAttach != null && pathToAttach.toString().length() > 0) {
arrayList.add(pathToAttach);
}
TLdeserialize.media.document = new TLRPC$TL_documentEmpty();
} else if (TLdeserialize.media.photo != null) {
Iterator it = TLdeserialize.media.photo.sizes.iterator();
while (it.hasNext()) {
pathToAttach = FileLoader.getPathToAttach((PhotoSize) it.next(), true);
if (pathToAttach != null && pathToAttach.toString().length() > 0) {
arrayList.add(pathToAttach);
}
}
TLdeserialize.media.photo = new TLRPC$TL_photoEmpty();
}
TLdeserialize.media.flags &= -2;
TLdeserialize.id = b.m12154b(1);
TLdeserialize.date = b.m12154b(2);
TLdeserialize.dialog_id = b.m12158d(3);
arrayList2.add(TLdeserialize);
}
}
}
b.m12155b();
if (!arrayList2.isEmpty()) {
SQLitePreparedStatement a = MessagesStorage.this.database.m12164a("REPLACE INTO messages VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, ?)");
for (int i = 0; i < arrayList2.size(); i++) {
Message message = (Message) arrayList2.get(i);
NativeByteBuffer nativeByteBuffer = new NativeByteBuffer(message.getObjectSize());
message.serializeToStream(nativeByteBuffer);
a.m12180d();
a.m12175a(1, (long) message.id);
a.m12175a(2, message.dialog_id);
a.m12174a(3, MessageObject.getUnreadFlags(message));
a.m12174a(4, message.send_state);
a.m12174a(5, message.date);
a.m12177a(6, nativeByteBuffer);
a.m12174a(7, MessageObject.isOut(message) ? 1 : 0);
a.m12174a(8, message.ttl);
if ((message.flags & 1024) != 0) {
a.m12174a(9, message.views);
} else {
a.m12174a(9, MessagesStorage.this.getMessageMediaType(message));
}
a.m12174a(10, 0);
a.m12174a(11, message.mentioned ? 1 : 0);
a.m12178b();
nativeByteBuffer.reuse();
}
a.m12181e();
AndroidUtilities.runOnUIThread(new Runnable() {
public void run() {
for (int i = 0; i < arrayList2.size(); i++) {
NotificationCenter.getInstance().postNotificationName(NotificationCenter.updateMessageMedia, arrayList2.get(i));
}
}
});
}
FileLoader.getInstance().deleteFiles(arrayList, 0);
} catch (Throwable e) {
FileLog.m13728e(e);
}
}
});