diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java index 7461e3388f01083a69ef511517cb758ac985bd33..6dbacc8a7c2b96d7ec88ce0e0e852e86fdf2ffa5 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java @@ -153,7 +153,7 @@ public class NetworkSerializer implements ObjectSerializer<Network> { @NonNull @Override public Network fromLegacy(@NonNull Map<String, QVariant> map) { - final Map<String, QVariant<Map<String, QVariant<Map<String, QVariant>>>>> usersAndChannels = ((QVariant<Map<String, QVariant<Map<String, QVariant<Map<String, QVariant>>>>>>) map.get("QIrcUsersAndChannels")).data; + final Map<String, QVariant<Map<String, QVariant<Map<String, QVariant>>>>> usersAndChannels = ((QVariant<Map<String, QVariant<Map<String, QVariant<Map<String, QVariant>>>>>>) map.get("IrcUsersAndChannels")).data; final Map<String, QVariant<Map<String, QVariant>>> wrappedChannels = usersAndChannels.get("channels").data; final Map<String, QVariant<Map<String, QVariant>>> wrappedUsers = usersAndChannels.get("users").data; final Map<String, QIrcChannel> channels = new HashMap<>(wrappedChannels.size()); diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java index 1ba7b821a2a718d7f44ed34e04e9692c2549305a..7feec17a23b3810b4053e0da7b4a1e93926627fa 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java @@ -44,6 +44,7 @@ import static de.kuschku.util.AndroidAssert.assertNotNull; public class BacklogManager extends ABacklogManager<BacklogManager> { private final Client client; private final BacklogStorage storage; + private final Set<Integer> initialized = new HashSet<>(); public BacklogManager(Client client, BacklogStorage storage) { this.client = client; @@ -53,7 +54,7 @@ public class BacklogManager extends ABacklogManager<BacklogManager> { @Override public void requestMoreBacklog(int bufferId, int amount) { Message last; - if (storage.getUnfiltered(bufferId).isEmpty() || null == (last = storage.getUnfiltered(bufferId).last())) + if (!initialized.contains(bufferId) || null == (last = storage.getUnfiltered(bufferId).last())) requestBacklogInitial(bufferId, amount); else { requestBacklog(bufferId, -1, last.messageId, amount, 0); @@ -62,6 +63,10 @@ public class BacklogManager extends ABacklogManager<BacklogManager> { @Override public void requestBacklogInitial(int id, int amount) { + if (initialized.contains(id)) + return; + + initialized.add(id); requestBacklog(id, -1, -1, amount, 0); } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java index 6059da4f8cb904f64cbcdf7ed03e354f6a7eda34..903312bb471b78b8aa41102d61b0ae638259c88b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java @@ -192,14 +192,12 @@ public class ChatActivity extends AppCompatActivity { } public static boolean isNoColor(Buffer buffer) { - assertNotNull(buffer); - if (buffer instanceof ChannelBuffer) { - QIrcChannel channel = ((ChannelBuffer) buffer).getChannel(); - assertNotNull(channel); - return channel.hasMode('c'); - } else { + if (buffer == null) return false; - } + if (!(buffer instanceof ChannelBuffer)) + return false; + QIrcChannel channel = ((ChannelBuffer) buffer).getChannel(); + return channel != null && channel.hasMode('c'); } @Override @@ -573,7 +571,6 @@ public class ChatActivity extends AppCompatActivity { } private void selectBuffer(@IntRange(from = -1) int bufferId) { - Log.d("libquassel", context.client().bufferManager().channel(context.client().networkManager().network(4).ircChannel("#quassel")).getChannel().topic()); if (bufferId == -1) { swipeView.setEnabled(false); @@ -765,10 +762,19 @@ public class ChatActivity extends AppCompatActivity { if (status.bufferId >= 0) { Buffer buffer = context.client().bufferManager().buffer(status.bufferId); if (buffer != null) { - if (buffer instanceof QueryBuffer) - subtitle = ((QueryBuffer) buffer).getUser().realName(); - else if (buffer instanceof ChannelBuffer) - subtitle = ((ChannelBuffer) buffer).getChannel().topic(); + if (buffer instanceof QueryBuffer) { + QIrcUser user = ((QueryBuffer) buffer).getUser(); + if (user != null) + subtitle = user.realName(); + else + subtitle = ""; + } else if (buffer instanceof ChannelBuffer) { + QIrcChannel channel = ((ChannelBuffer) buffer).getChannel(); + if (channel != null) + subtitle = channel.topic(); + else + subtitle = ""; + } else subtitle = ""; } else {