mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-17 05:09:53 +01:00
Merge branch '297-flickering-contacts' into 'master'
Fix flicker when loading contact list Fixes #297. See merge request !144
This commit is contained in:
@@ -155,6 +155,11 @@ public class ContactListFragment extends BaseEventFragment {
|
|||||||
loadContacts();
|
loadContacts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
adapter.clear();
|
||||||
|
}
|
||||||
|
|
||||||
private void loadContacts() {
|
private void loadContacts() {
|
||||||
listener.runOnDbThread(new Runnable() {
|
listener.runOnDbThread(new Runnable() {
|
||||||
@@ -195,7 +200,6 @@ public class ContactListFragment extends BaseEventFragment {
|
|||||||
private void displayContacts(final List<ContactListItem> contacts) {
|
private void displayContacts(final List<ContactListItem> contacts) {
|
||||||
listener.runOnUiThread(new Runnable() {
|
listener.runOnUiThread(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
adapter.clear();
|
|
||||||
if (contacts.size() == 0) list.showData();
|
if (contacts.size() == 0) list.showData();
|
||||||
else adapter.addAll(contacts);
|
else adapter.addAll(contacts);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,8 +81,8 @@ import im.delight.android.identicons.IdenticonDrawable;
|
|||||||
import static android.widget.Toast.LENGTH_SHORT;
|
import static android.widget.Toast.LENGTH_SHORT;
|
||||||
import static java.util.logging.Level.INFO;
|
import static java.util.logging.Level.INFO;
|
||||||
import static java.util.logging.Level.WARNING;
|
import static java.util.logging.Level.WARNING;
|
||||||
import static org.briarproject.android.contact.ConversationItem.OutgoingItem;
|
|
||||||
import static org.briarproject.android.contact.ConversationItem.IncomingItem;
|
import static org.briarproject.android.contact.ConversationItem.IncomingItem;
|
||||||
|
import static org.briarproject.android.contact.ConversationItem.OutgoingItem;
|
||||||
|
|
||||||
public class ConversationActivity extends BriarActivity
|
public class ConversationActivity extends BriarActivity
|
||||||
implements EventListener, OnClickListener,
|
implements EventListener, OnClickListener,
|
||||||
@@ -302,6 +302,8 @@ public class ConversationActivity extends BriarActivity
|
|||||||
// so let the list know to hide progress bar
|
// so let the list know to hide progress bar
|
||||||
list.showData();
|
list.showData();
|
||||||
} else {
|
} else {
|
||||||
|
List<ConversationItem> items =
|
||||||
|
new ArrayList<ConversationItem>();
|
||||||
for (PrivateMessageHeader h : headers) {
|
for (PrivateMessageHeader h : headers) {
|
||||||
ConversationMessageItem item =
|
ConversationMessageItem item =
|
||||||
(ConversationMessageItem) ConversationItem
|
(ConversationMessageItem) ConversationItem
|
||||||
@@ -309,7 +311,7 @@ public class ConversationActivity extends BriarActivity
|
|||||||
byte[] body = bodyCache.get(h.getId());
|
byte[] body = bodyCache.get(h.getId());
|
||||||
if (body == null) loadMessageBody(h);
|
if (body == null) loadMessageBody(h);
|
||||||
else item.setBody(body);
|
else item.setBody(body);
|
||||||
adapter.add(item);
|
items.add(item);
|
||||||
}
|
}
|
||||||
for (IntroductionMessage m : introductions) {
|
for (IntroductionMessage m : introductions) {
|
||||||
ConversationItem item;
|
ConversationItem item;
|
||||||
@@ -322,8 +324,9 @@ public class ConversationActivity extends BriarActivity
|
|||||||
contactName,
|
contactName,
|
||||||
(IntroductionResponse) m);
|
(IntroductionResponse) m);
|
||||||
}
|
}
|
||||||
adapter.add(item);
|
items.add(item);
|
||||||
}
|
}
|
||||||
|
adapter.addAll(items);
|
||||||
// Scroll to the bottom
|
// Scroll to the bottom
|
||||||
list.scrollToPosition(adapter.getItemCount() - 1);
|
list.scrollToPosition(adapter.getItemCount() - 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,19 +18,21 @@ import org.briarproject.api.introduction.SessionId;
|
|||||||
import org.briarproject.api.messaging.PrivateMessageHeader;
|
import org.briarproject.api.messaging.PrivateMessageHeader;
|
||||||
import org.briarproject.util.StringUtils;
|
import org.briarproject.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import im.delight.android.identicons.IdenticonDrawable;
|
import im.delight.android.identicons.IdenticonDrawable;
|
||||||
|
|
||||||
import static android.support.v7.util.SortedList.INVALID_POSITION;
|
import static android.support.v7.util.SortedList.INVALID_POSITION;
|
||||||
import static android.support.v7.widget.RecyclerView.ViewHolder;
|
import static android.support.v7.widget.RecyclerView.ViewHolder;
|
||||||
import static org.briarproject.android.contact.ConversationItem.INTRODUCTION_IN;
|
import static org.briarproject.android.contact.ConversationItem.INTRODUCTION_IN;
|
||||||
import static org.briarproject.android.contact.ConversationItem.INTRODUCTION_OUT;
|
import static org.briarproject.android.contact.ConversationItem.INTRODUCTION_OUT;
|
||||||
|
import static org.briarproject.android.contact.ConversationItem.IncomingItem;
|
||||||
import static org.briarproject.android.contact.ConversationItem.MSG_IN;
|
import static org.briarproject.android.contact.ConversationItem.MSG_IN;
|
||||||
import static org.briarproject.android.contact.ConversationItem.MSG_IN_UNREAD;
|
import static org.briarproject.android.contact.ConversationItem.MSG_IN_UNREAD;
|
||||||
import static org.briarproject.android.contact.ConversationItem.MSG_OUT;
|
import static org.briarproject.android.contact.ConversationItem.MSG_OUT;
|
||||||
import static org.briarproject.android.contact.ConversationItem.NOTICE_IN;
|
import static org.briarproject.android.contact.ConversationItem.NOTICE_IN;
|
||||||
import static org.briarproject.android.contact.ConversationItem.NOTICE_OUT;
|
import static org.briarproject.android.contact.ConversationItem.NOTICE_OUT;
|
||||||
import static org.briarproject.android.contact.ConversationItem.OutgoingItem;
|
import static org.briarproject.android.contact.ConversationItem.OutgoingItem;
|
||||||
import static org.briarproject.android.contact.ConversationItem.IncomingItem;
|
|
||||||
|
|
||||||
class ConversationAdapter extends RecyclerView.Adapter {
|
class ConversationAdapter extends RecyclerView.Adapter {
|
||||||
|
|
||||||
@@ -367,6 +369,10 @@ class ConversationAdapter extends RecyclerView.Adapter {
|
|||||||
items.clear();
|
items.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addAll(List<ConversationItem> items) {
|
||||||
|
this.items.addAll(items);
|
||||||
|
}
|
||||||
|
|
||||||
private static class MessageHolder extends RecyclerView.ViewHolder {
|
private static class MessageHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
public ViewGroup layout;
|
public ViewGroup layout;
|
||||||
|
|||||||
@@ -131,6 +131,12 @@ public class ContactChooserFragment extends BaseFragment {
|
|||||||
loadContacts();
|
loadContacts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
adapter.clear();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUniqueTag() {
|
public String getUniqueTag() {
|
||||||
return TAG;
|
return TAG;
|
||||||
@@ -175,7 +181,6 @@ public class ContactChooserFragment extends BaseFragment {
|
|||||||
introductionActivity.runOnUiThread(new Runnable() {
|
introductionActivity.runOnUiThread(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
adapter.setLocalAuthor(localAuthorId);
|
adapter.setLocalAuthor(localAuthorId);
|
||||||
adapter.clear();
|
|
||||||
if (contacts.size() == 0) list.showData();
|
if (contacts.size() == 0) list.showData();
|
||||||
else adapter.addAll(contacts);
|
else adapter.addAll(contacts);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user