Skip to content

Commit

Permalink
Fixed android replacing old messages as duplicates when invalid exter…
Browse files Browse the repository at this point in the history
…nal ID was received, closes #144
  • Loading branch information
murgo committed May 28, 2013
1 parent de50d72 commit 37eeaad
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 14 deletions.
3 changes: 2 additions & 1 deletion Android/IrssiNotifier/.gitignore
Expand Up @@ -2,4 +2,5 @@ bin/
gen/
out/
.idea/
*.iml
*.iml
proguard_logs
4 changes: 2 additions & 2 deletions Android/IrssiNotifier/AndroidManifest.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fi.iki.murgo.irssinotifier"
android:versionCode="12"
android:versionName="1.6.12" >
android:versionCode="13"
android:versionName="1.6.13" >

<!-- Only this application can receive the messages and registration result -->
<permission
Expand Down
Expand Up @@ -82,17 +82,19 @@ public boolean handleMessage(IrcMessage message) {
database = getWritableDatabase();
boolean isNew = true;

Cursor cur = database.query("IrcMessage", new String[] { "externalId", "message" },
"externalId = ?", new String[] { message.getExternalId() }, null, null, null, "1");
if (cur.moveToFirst()) {
isNew = false;
int messageIndex = cur.getColumnIndex("message");
if (cur.getString(messageIndex).equals(message.getMessage())) {
cur.close();
return false;
if (message.getExternalId() != null) {
Cursor cur = database.query("IrcMessage", new String[] { "externalId", "message" },
"externalId = ?", new String[] { message.getExternalId() }, null, null, null, "1");
if (cur.moveToFirst()) {
isNew = false;
int messageIndex = cur.getColumnIndex("message");
if (cur.getString(messageIndex).equals(message.getMessage())) {
cur.close();
return false;
}
}
cur.close();
}
cur.close();

String channelName = message.getLogicalChannel();
List<Channel> channels = getChannels(database);
Expand Down
Expand Up @@ -32,11 +32,18 @@ public void deserialize(JSONObject obj) {
setChannel(obj.getString("channel"));
setNick(obj.getString("nick"));
setServerTimestamp((long) (Double.parseDouble(obj.getString("server_timestamp")) * 1000));
setExternalId(obj.getString("id"));
if (obj.has("id")) {
String externalId = obj.getString("id");
try {
Integer.parseInt(externalId);
setExternalId(externalId);
} catch (NumberFormatException e) {
// don't do anything with it if it's not a number
}
}
} catch (JSONException e) {
e.printStackTrace();
}

}

public String getMessage() {
Expand Down

0 comments on commit 37eeaad

Please sign in to comment.