diff options
Diffstat (limited to 'src/main/java/eu/siacs/conversations/parser/AbstractParser.java')
-rw-r--r-- | src/main/java/eu/siacs/conversations/parser/AbstractParser.java | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/main/java/eu/siacs/conversations/parser/AbstractParser.java b/src/main/java/eu/siacs/conversations/parser/AbstractParser.java index 03f19ed82..c14a7eb0d 100644 --- a/src/main/java/eu/siacs/conversations/parser/AbstractParser.java +++ b/src/main/java/eu/siacs/conversations/parser/AbstractParser.java @@ -51,12 +51,16 @@ public abstract class AbstractParser { return dateFormat.parse(timestamp); } - protected void updateLastseen(long timestamp, final Account account, final Jid from) { - final String presence = from == null || from.isBareJid() ? "" : from.getResourcepart(); - final Contact contact = account.getRoster().getContact(from); + protected void updateLastseen(final AbstractStanza packet, final Account account, final boolean presenceOverwrite) { + updateLastseen(getTimestamp(packet), account, packet.getFrom(), presenceOverwrite); + } + + protected void updateLastseen(long timestamp, final Account account, final Jid from, final boolean presenceOverwrite) { + final String presence = from == null || from.isBareJid() ? "" : from.getResourcepart(); + final Contact contact = account.getRoster().getContact(from); if (timestamp >= contact.lastseen.time) { contact.lastseen.time = timestamp; - if (!presence.isEmpty()) { + if (!presence.isEmpty() && presenceOverwrite) { contact.lastseen.presence = presence; } } |