private void TL_BadMsgNotification(TL.Object obj) { int error_code = obj.getInt("error_code"); Message msg = TLMessage.get(obj.getLong("bad_msg_id")); Common.logError("bad_msg: " + error_code + " " + msg.obj.name + ":" + msg.obj.type); if (error_code == 16 || error_code == 17) { time_delta = (int) ((cur_message_id >> 32) - Common.getUnixTime()); last_message_id = 0; } if (error_code == 32 || error_code == 33) { Common.logError("cur seq: " + cur_msg_seq); Common.logError("old seq: " + seqno); if (!bad_seq) { session = GEN_session_id(); seqno = 0; send_ping(); bad_seq = true; } // seqno = cur_msg_seq + (cur_msg_seq % 2) + 100; // session = GEN_session_id(); // seqno = 0; } if (obj.id == 0xedab447b) { // bad_server_salt server_salt = obj.getLong("new_server_salt"); dcState.set("server_salt", server_salt); } retry(obj.getLong("bad_msg_id")); }
public void onAuthorized() { dcState.set("auth_key", auth_key); dcState.set("server_salt", server_salt); long upd_delta = (long) Common.getUnixTime() - (long) dc_date; if (Main.mtp == this && upd_delta > 5 * 60) api_help_getConfig(); if (!bind && this != Main.mtp) { final MTProto m = this; Common.logError("exportAuthorization"); Main.mtp.api( new TL.OnResultRPC() { @Override public void onResultRPC(TL.Object result, Object param, boolean error) { if (!error) return; if (result.id != 0xdf969c2d) return; // auth.ExportedAuthorization Common.logError("importAuthorization"); m.api( null, null, "auth.importAuthorization", result.getInt("id"), result.getBytes("bytes")); } }, null, "auth.exportAuthorization", dcState.getInt("id")); return; } if (bind) cb.onBind(); send_queue(); }
public String getStatus() { if (status != null) { if (status.id == 0xedb93949) { // userStatusOnline if (User.self == this) return Main.getResStr(R.string.status_online_user); return typing ? Main.getResStr(R.string.status_typing_user) : Main.getResStr(R.string.status_online_user); } if (status.id == 0x8c703f) { // userStatusOffline if (User.self == this) return Main.getResStr(R.string.status_offline_user); int date = status.getInt("was_online"); int delta = Common.getUnixTime() - date; if (delta < 5 * 60) // < 5 min return Main.getResStr(R.string.status_offline1); if (delta < 60 * 60) // < 1 hour return String.format(Main.getResStr(R.string.status_offline2), delta / 60); if (delta < 2 * 60 * 60) // < 2 hours return Main.getResStr(R.string.status_offline3); if (delta < 24 * 60 * 60) // < 24 hours return String.format(Main.getResStr(R.string.status_offline4), delta / 60 / 60); return new SimpleDateFormat("dd MMM").format(date * 1000L); } } return "null"; }
public void setTyping(int chat_id, boolean isTyping) { Common.logError(getTitle() + " is typing " + isTyping); if (typing != isTyping) { typing = isTyping; if (typing) { typing_time = Common.getUnixTime() + 6; typing_chat_id = chat_id; } ; Dialog dialog = chat_id != -1 ? Dialog.getDialog(-1, chat_id, true) : Dialog.getDialog(id, -1, true); Main.main.updateDialogItem(dialog); Main.main.updateUser(this); } }