mirror of
https://github.com/DrKLO/Telegram.git
synced 2024-12-31 16:40:45 +01:00
Bug fixes
This commit is contained in:
parent
d3afc8362e
commit
d9b9a721a6
4 changed files with 80 additions and 7 deletions
|
@ -116,6 +116,7 @@ public class MessagesStorage {
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS date_idx_dialogs ON dialogs(date);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS date_idx_dialogs ON dialogs(date);").stepThis().dispose();
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS date_idx_enc_tasks ON enc_tasks(date);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS date_idx_enc_tasks ON enc_tasks(date);").stepThis().dispose();
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS last_mid_idx_dialogs ON dialogs(last_mid);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS last_mid_idx_dialogs ON dialogs(last_mid);").stepThis().dispose();
|
||||||
|
database.executeFast("CREATE INDEX IF NOT EXISTS unread_count_idx_dialogs ON dialogs(unread_count);").stepThis().dispose();
|
||||||
|
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS uid_mid_idx_media ON media(uid, mid);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS uid_mid_idx_media ON media(uid, mid);").stepThis().dispose();
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS mid_idx_media ON media(mid);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS mid_idx_media ON media(mid);").stepThis().dispose();
|
||||||
|
@ -180,6 +181,8 @@ public class MessagesStorage {
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS mid_idx_randoms ON randoms(mid);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS mid_idx_randoms ON randoms(mid);").stepThis().dispose();
|
||||||
|
|
||||||
database.executeFast("CREATE TABLE IF NOT EXISTS sent_files_v2(uid TEXT, type INTEGER, data BLOB, PRIMARY KEY (uid, type))").stepThis().dispose();
|
database.executeFast("CREATE TABLE IF NOT EXISTS sent_files_v2(uid TEXT, type INTEGER, data BLOB, PRIMARY KEY (uid, type))").stepThis().dispose();
|
||||||
|
|
||||||
|
database.executeFast("CREATE INDEX IF NOT EXISTS unread_count_idx_dialogs ON dialogs(unread_count);").stepThis().dispose();
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
FileLog.e("tmessages", e);
|
FileLog.e("tmessages", e);
|
||||||
|
@ -267,6 +270,35 @@ public class MessagesStorage {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void loadUnreadMessages() {
|
||||||
|
storageQueue.postRunnable(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
final HashMap<Long, Integer> pushDialogs = new HashMap<Long, Integer>();
|
||||||
|
int totalCount = 0;
|
||||||
|
SQLiteCursor cursor = database.queryFinalized("SELECT did, unread_count FROM dialogs WHERE unread_count != 0");
|
||||||
|
while (cursor.next()) {
|
||||||
|
long did = cursor.longValue(0);
|
||||||
|
int count = cursor.intValue(1);
|
||||||
|
pushDialogs.put(did, count);
|
||||||
|
totalCount += count;
|
||||||
|
}
|
||||||
|
cursor.dispose();
|
||||||
|
final int totalCountFinal = totalCount;
|
||||||
|
Utilities.RunOnUIThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
NotificationsController.getInstance().processLoadedUnreadMessages(pushDialogs, totalCountFinal);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (Exception e) {
|
||||||
|
FileLog.e("tmessages", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void putWallpapers(final ArrayList<TLRPC.WallPaper> wallPapers) {
|
public void putWallpapers(final ArrayList<TLRPC.WallPaper> wallPapers) {
|
||||||
storageQueue.postRunnable(new Runnable() {
|
storageQueue.postRunnable(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -318,12 +318,6 @@ public class NotificationsController {
|
||||||
name = Utilities.formatName(user.first_name, user.last_name);
|
name = Utilities.formatName(user.first_name, user.last_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(ApplicationLoader.applicationContext)
|
|
||||||
.setContentTitle(name)
|
|
||||||
.setSmallIcon(R.drawable.notification)
|
|
||||||
.setAutoCancel(true)
|
|
||||||
.setContentIntent(contentIntent);
|
|
||||||
|
|
||||||
String detailText = null;
|
String detailText = null;
|
||||||
if (pushDialogs.size() == 1) {
|
if (pushDialogs.size() == 1) {
|
||||||
detailText = LocaleController.formatPluralString("NewMessages", pushMessages.size());
|
detailText = LocaleController.formatPluralString("NewMessages", pushMessages.size());
|
||||||
|
@ -331,6 +325,13 @@ public class NotificationsController {
|
||||||
detailText = String.format("%s %s", LocaleController.formatPluralString("NewMessages", pushMessages.size()), LocaleController.formatPluralString("FromContacts", pushDialogs.size()));
|
detailText = String.format("%s %s", LocaleController.formatPluralString("NewMessages", pushMessages.size()), LocaleController.formatPluralString("FromContacts", pushDialogs.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(ApplicationLoader.applicationContext)
|
||||||
|
.setContentTitle(name)
|
||||||
|
.setSmallIcon(R.drawable.notification)
|
||||||
|
.setAutoCancel(true)
|
||||||
|
.setContentText(detailText)
|
||||||
|
.setContentIntent(contentIntent);
|
||||||
|
|
||||||
String lastMessage = null;
|
String lastMessage = null;
|
||||||
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
|
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
|
||||||
inboxStyle.setBigContentTitle(name);
|
inboxStyle.setBigContentTitle(name);
|
||||||
|
@ -537,4 +538,8 @@ public class NotificationsController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void processLoadedUnreadMessages(HashMap<Long, Integer> dialogs, int totalCount) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,24 @@ public class DispatchQueue extends Thread {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void cancelRunnable(Runnable runnable) {
|
||||||
|
if (handler == null) {
|
||||||
|
synchronized (handlerSyncObject) {
|
||||||
|
if (handler == null) {
|
||||||
|
try {
|
||||||
|
handlerSyncObject.wait();
|
||||||
|
} catch (Throwable t) {
|
||||||
|
t.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (handler != null) {
|
||||||
|
handler.removeCallbacks(runnable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void postRunnable(Runnable runnable) {
|
public void postRunnable(Runnable runnable) {
|
||||||
postRunnable(runnable, 0);
|
postRunnable(runnable, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,6 +85,7 @@ public class PopupNotificationActivity extends Activity implements NotificationC
|
||||||
private float moveStartX = -1;
|
private float moveStartX = -1;
|
||||||
private boolean startedMoving = false;
|
private boolean startedMoving = false;
|
||||||
private Runnable onAnimationEndRunnable = null;
|
private Runnable onAnimationEndRunnable = null;
|
||||||
|
private Runnable wakeLockRunnable = null;
|
||||||
|
|
||||||
private class FrameLayoutTouch extends FrameLayout {
|
private class FrameLayoutTouch extends FrameLayout {
|
||||||
public FrameLayoutTouch(Context context) {
|
public FrameLayoutTouch(Context context) {
|
||||||
|
@ -650,7 +651,21 @@ public class PopupNotificationActivity extends Activity implements NotificationC
|
||||||
currentMessageNum = 0;
|
currentMessageNum = 0;
|
||||||
}
|
}
|
||||||
getNewMessage();
|
getNewMessage();
|
||||||
wakeLock.acquire(7000);
|
wakeLock.acquire();
|
||||||
|
Utilities.stageQueue.postRunnable(wakeLockRunnable = new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Utilities.RunOnUIThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
wakeLockRunnable = null;
|
||||||
|
if (wakeLock.isHeld()) {
|
||||||
|
wakeLock.release();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, 7000);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getNewMessage() {
|
private void getNewMessage() {
|
||||||
|
@ -957,5 +972,8 @@ public class PopupNotificationActivity extends Activity implements NotificationC
|
||||||
if (wakeLock.isHeld()) {
|
if (wakeLock.isHeld()) {
|
||||||
wakeLock.release();
|
wakeLock.release();
|
||||||
}
|
}
|
||||||
|
if (wakeLockRunnable != null) {
|
||||||
|
Utilities.stageQueue.cancelRunnable(wakeLockRunnable);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue