aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/entities/Bookmark.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-02-10 20:26:51 +0100
committerChristian Schneppe <christian@pix-art.de>2018-02-10 20:26:51 +0100
commit41c1665f67b5ee12e864f9bab8daae526cb42f11 (patch)
treee74a6f48732663662fa1fdd2cb5c6d50f22b452d /src/main/java/de/pixart/messenger/entities/Bookmark.java
parent0325594075c2844580cd3d92943aa06f1832e4d4 (diff)
do not cross reference bookmarks and conversations
Diffstat (limited to 'src/main/java/de/pixart/messenger/entities/Bookmark.java')
-rw-r--r--src/main/java/de/pixart/messenger/entities/Bookmark.java26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/Bookmark.java b/src/main/java/de/pixart/messenger/entities/Bookmark.java
index 34dddd6d9..8074c9430 100644
--- a/src/main/java/de/pixart/messenger/entities/Bookmark.java
+++ b/src/main/java/de/pixart/messenger/entities/Bookmark.java
@@ -2,6 +2,7 @@ package de.pixart.messenger.entities;
import android.content.Context;
+import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -13,7 +14,7 @@ import de.pixart.messenger.xmpp.jid.Jid;
public class Bookmark extends Element implements ListItem {
private Account account;
- private Conversation mJoinedConversation;
+ private WeakReference<Conversation> conversation;
public Bookmark(final Account account, final Jid jid) {
super("conference");
@@ -49,8 +50,9 @@ public class Bookmark extends Element implements ListItem {
@Override
public String getDisplayName() {
- if (this.mJoinedConversation != null) {
- return this.mJoinedConversation.getName();
+ final Conversation c = getConversation();
+ if (c != null) {
+ return c.getName();
} else if (getBookmarkName() != null
&& !getBookmarkName().trim().isEmpty()) {
return getBookmarkName().trim();
@@ -146,12 +148,15 @@ public class Bookmark extends Element implements ListItem {
return this.account;
}
- public Conversation getConversation() {
- return this.mJoinedConversation;
+ public synchronized Conversation getConversation() {
+ return this.conversation != null ? this.conversation.get() : null;
}
- public void setConversation(Conversation conversation) {
- this.mJoinedConversation = conversation;
+ public synchronized void setConversation(Conversation conversation) {
+ if (this.conversation != null) {
+ this.conversation.clear();
+ }
+ this.conversation = new WeakReference<>(conversation);
}
public String getBookmarkName() {
@@ -167,11 +172,4 @@ public class Bookmark extends Element implements ListItem {
return false;
}
}
-
- public void unregisterConversation() {
- if (this.mJoinedConversation != null) {
- this.mJoinedConversation.deregisterWithBookmark();
- }
- this.mJoinedConversation = null;
- }
}