Skip to content

Commit da4131e

Browse files
committed
Fixed a bug which prevented chats or contacts from being loaded
1 parent d04f67f commit da4131e

File tree

9 files changed

+26
-81
lines changed

9 files changed

+26
-81
lines changed
0 Bytes
Binary file not shown.
1019 Bytes
Binary file not shown.

gradle/wrapper/gradle-wrapper.jar

57.8 KB
Binary file not shown.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zip
4+
zipStoreBase=GRADLE_USER_HOME
5+
zipStorePath=wrapper/dists

gradlew

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradlew.bat

Lines changed: 7 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/icu/jnet/whatsjava/helper/TimeLimitedList.java

Lines changed: 0 additions & 44 deletions
This file was deleted.

src/main/java/icu/jnet/whatsjava/messages/WAMessageParser.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,17 @@ public static Object[] jsonToObjects(String json) {
2525
if(json != null) {
2626
JsonArray node = JsonParser.parseString(json).getAsJsonArray();
2727

28-
if(!node.get(1).isJsonNull() && !node.get(2).isJsonNull()) {
28+
if(!node.get(1).isJsonNull()) {
2929
JsonObject attributes = node.get(1).getAsJsonObject();
3030
// Attributes key values
3131
Set<String> keys = attributes.keySet();
3232

33-
// Contains node content
34-
JsonArray childrenArray = node.get(2).getAsJsonArray();
35-
3633
if (keys.contains("type")) {
3734
String typeValue = attributes.get("type").getAsString();
3835

36+
// Contains node content
37+
JsonArray childrenArray = node.get(2).isJsonArray() ? node.get(2).getAsJsonArray() : null;
38+
3939
switch (typeValue) {
4040
case "message":
4141
objects = messageToObject(childrenArray);

src/main/java/icu/jnet/whatsjava/whatsapp/WABackendConnector.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
import icu.jnet.whatsjava.listener.ClientActionInterface;
1111
import icu.jnet.whatsjava.listener.ClientActionListener;
1212
import icu.jnet.whatsjava.messages.WAMessageParser;
13-
import org.apache.commons.codec.DecoderException;
14-
import org.apache.commons.codec.binary.Hex;
1513

1614
import java.io.IOException;
15+
import java.util.ArrayList;
1716
import java.util.Base64;
17+
import java.util.List;
1818

1919
public class WABackendConnector extends WebSocketAdapter implements PayloadGenerator {
2020

@@ -34,11 +34,8 @@ public class WABackendConnector extends WebSocketAdapter implements PayloadGener
3434
// WebSocket object that is used for communication with the WhatsApp web server.
3535
protected WebSocket ws;
3636

37-
// Last received messages from onTextMessage callback
38-
private final TimeLimitedList<String> onTextMessageBuffer = new TimeLimitedList<>();
39-
// Last received messages from onBinaryMessage callback
40-
private final TimeLimitedList<String> onBinaryMessageBuffer = new TimeLimitedList<>();
41-
37+
// Last received messages from onTextMessage and onBinaryMessage callback
38+
private final List<String> textMessageBuffer = new ArrayList<>();
4239

4340
public WABackendConnector() {
4441
this.auth = AuthCredentials.loadAuthCredentials(credentialsPath);
@@ -209,19 +206,15 @@ String sendBinary(String json, byte[] waTags, String... search) {
209206
* @return
210207
*/
211208
private String waitForTextMessage(String... search) {
209+
textMessageBuffer.clear();
212210
if(search.length > 0) {
213211
for(int i = 0; i < 200; i++) {
214212
for(String s : search) {
215-
for(String message : onTextMessageBuffer) {
213+
for(String message : textMessageBuffer) {
216214
if(message.contains(s)) {
217215
return message;
218216
}
219217
}
220-
for(String message : onBinaryMessageBuffer) {
221-
if (message.contains(s)) {
222-
return message;
223-
}
224-
}
225218
}
226219
Utils.waitMill(100);
227220
}
@@ -231,7 +224,7 @@ private String waitForTextMessage(String... search) {
231224

232225
@Override
233226
public void onTextMessage(WebSocket websocket, String message) throws Exception {
234-
onTextMessageBuffer.add(message);
227+
textMessageBuffer.add(message);
235228
}
236229

237230
@Override
@@ -241,7 +234,7 @@ public void onBinaryMessage(WebSocket websocket, byte[] binaryMessage) throws Ex
241234

242235
// Use protobuf to make messages of the type "message" human readable
243236
String decoded = new BinaryDecoder().decode(decrypted);
244-
onBinaryMessageBuffer.add(decoded);
237+
textMessageBuffer.add(decoded);
245238
WAMessageParser.jsonToObjects(decoded);
246239
}
247240

0 commit comments

Comments
 (0)