fix updater npe

This commit is contained in:
luvletter2333 2022-03-13 22:57:25 +08:00
parent fa5b44b51e
commit 8311829a9b
No known key found for this signature in database
GPG Key ID: A26A8880836E1978
1 changed files with 65 additions and 53 deletions

View File

@ -39,6 +39,7 @@ public class InternalUpdater {
callback.apply(null, true); callback.apply(null, true);
return; return;
} }
try {
TLRPC.messages_Messages res = (TLRPC.messages_Messages) response; TLRPC.messages_Messages res = (TLRPC.messages_Messages) response;
List<UpdateMetadata> metas = new ArrayList<>(); List<UpdateMetadata> metas = new ArrayList<>();
for (TLRPC.Message message : res.messages) { for (TLRPC.Message message : res.messages) {
@ -77,6 +78,10 @@ public class InternalUpdater {
} }
FileLog.w("Found Update Metadata " + found.versionName + " " + found.versionCode); FileLog.w("Found Update Metadata " + found.versionName + " " + found.versionCode);
callback.apply(found, false); callback.apply(found, false);
} catch (Exception e) {
FileLog.e(e);
callback.apply(null, true);
}
}); });
if (req.peer.access_hash != 0) sendReq.run(); if (req.peer.access_hash != 0) sendReq.run();
else { else {
@ -117,6 +122,7 @@ public class InternalUpdater {
callback.apply(null, err); callback.apply(null, err);
return; return;
} }
TLRPC.TL_messages_getHistory req = new TLRPC.TL_messages_getHistory(); TLRPC.TL_messages_getHistory req = new TLRPC.TL_messages_getHistory();
req.peer = accountInstance.getMessagesController().getInputPeer(-CHANNEL_APKS_ID); req.peer = accountInstance.getMessagesController().getInputPeer(-CHANNEL_APKS_ID);
req.min_id = metadata.apkChannelMessageID; req.min_id = metadata.apkChannelMessageID;
@ -128,6 +134,7 @@ public class InternalUpdater {
callback.apply(null, true); callback.apply(null, true);
return; return;
} }
try {
TLRPC.messages_Messages res = (TLRPC.messages_Messages) response; TLRPC.messages_Messages res = (TLRPC.messages_Messages) response;
FileLog.d("Retrieve update messages, size:" + res.messages.size()); FileLog.d("Retrieve update messages, size:" + res.messages.size());
final String target = metadata.versionName + "-" + BuildConfig.FLAVOR + "-" + FileUtil.getAbi() + "-" + ("debug".equals(BuildConfig.BUILD_TYPE) ? "release" : BuildConfig.BUILD_TYPE) + ".apk"; final String target = metadata.versionName + "-" + BuildConfig.FLAVOR + "-" + FileUtil.getAbi() + "-" + ("debug".equals(BuildConfig.BUILD_TYPE) ? "release" : BuildConfig.BUILD_TYPE) + ".apk";
@ -135,6 +142,7 @@ public class InternalUpdater {
if (res.messages.get(i).media == null) continue; if (res.messages.get(i).media == null) continue;
TLRPC.Document apkDocument = res.messages.get(i).media.document; TLRPC.Document apkDocument = res.messages.get(i).media.document;
if (apkDocument.attributes == null) continue;
String fileName = apkDocument.attributes.size() == 0 ? "" : apkDocument.attributes.get(0).file_name; String fileName = apkDocument.attributes.size() == 0 ? "" : apkDocument.attributes.get(0).file_name;
if (!fileName.contains(target)) if (!fileName.contains(target))
continue; continue;
@ -151,6 +159,10 @@ public class InternalUpdater {
return; return;
} }
callback.apply(null, false); callback.apply(null, false);
} catch (Exception e) {
FileLog.e(e);
callback.apply(null, true);
}
}); });
if (req.peer.access_hash != 0) sendReq.run(); if (req.peer.access_hash != 0) sendReq.run();
else { else {