mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-17 05:09:53 +01:00
[android] attach some smaller image attachment issues
This commit is contained in:
@@ -135,10 +135,6 @@ public class AttachmentItem implements Parcelable {
|
|||||||
return toHexString(instanceId);
|
return toHexString(instanceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean hasSize() {
|
|
||||||
return width != 0 && height != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int describeContents() {
|
public int describeContents() {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -156,6 +152,10 @@ public class AttachmentItem implements Parcelable {
|
|||||||
dest.writeString(state.name());
|
dest.writeString(state.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is used to identity if two items are the same,
|
||||||
|
* irrespective of their state or size.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(@Nullable Object o) {
|
public boolean equals(@Nullable Object o) {
|
||||||
return o instanceof AttachmentItem &&
|
return o instanceof AttachmentItem &&
|
||||||
@@ -164,4 +164,8 @@ public class AttachmentItem implements Parcelable {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return header.getMessageId().hashCode();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,6 +49,13 @@ public interface AttachmentRetriever {
|
|||||||
* Loads an {@link AttachmentItem}
|
* Loads an {@link AttachmentItem}
|
||||||
* that arrived via an {@link AttachmentReceivedEvent}
|
* that arrived via an {@link AttachmentReceivedEvent}
|
||||||
* and notifies the associated {@link LiveData}.
|
* and notifies the associated {@link LiveData}.
|
||||||
|
*
|
||||||
|
* Note that you need to call {@link #getAttachmentItems(PrivateMessageHeader)}
|
||||||
|
* first to get the LiveData.
|
||||||
|
*
|
||||||
|
* It is possible that no LiveData is available,
|
||||||
|
* because the message of the AttachmentItem did not arrive, yet.
|
||||||
|
* In this case, the load wil be deferred until the message arrives.
|
||||||
*/
|
*/
|
||||||
@DatabaseExecutor
|
@DatabaseExecutor
|
||||||
void loadAttachmentItem(MessageId attachmentId);
|
void loadAttachmentItem(MessageId attachmentId);
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
package org.briarproject.briar.android.attachment;
|
|
||||||
|
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
|
||||||
import org.briarproject.briar.api.messaging.AttachmentHeader;
|
|
||||||
|
|
||||||
import javax.annotation.concurrent.Immutable;
|
|
||||||
|
|
||||||
@Immutable
|
|
||||||
@NotNullByDefault
|
|
||||||
class UnavailableItem {
|
|
||||||
|
|
||||||
private final MessageId conversationMessageId;
|
|
||||||
private final AttachmentHeader header;
|
|
||||||
private final boolean needsSize;
|
|
||||||
|
|
||||||
UnavailableItem(MessageId conversationMessageId,
|
|
||||||
AttachmentHeader header, boolean needsSize) {
|
|
||||||
this.conversationMessageId = conversationMessageId;
|
|
||||||
this.header = header;
|
|
||||||
this.needsSize = needsSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
MessageId getConversationMessageId() {
|
|
||||||
return conversationMessageId;
|
|
||||||
}
|
|
||||||
|
|
||||||
AttachmentHeader getHeader() {
|
|
||||||
return header;
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean needsSize() {
|
|
||||||
return needsSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -640,16 +640,14 @@ public class ConversationActivity extends BriarActivity
|
|||||||
&& adapter.isScrolledToBottom(layoutManager);
|
&& adapter.isScrolledToBottom(layoutManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@UiThread
|
||||||
private void updateMessageAttachment(MessageId m, AttachmentItem item) {
|
private void updateMessageAttachment(MessageId m, AttachmentItem item) {
|
||||||
runOnUiThreadUnlessDestroyed(() -> {
|
Pair<Integer, ConversationMessageItem> pair = adapter.getMessageItem(m);
|
||||||
Pair<Integer, ConversationMessageItem> pair =
|
if (pair != null && pair.getSecond().updateAttachments(item)) {
|
||||||
adapter.getMessageItem(m);
|
boolean scroll = shouldScrollWhenUpdatingMessage();
|
||||||
if (pair != null && pair.getSecond().updateAttachments(item)) {
|
adapter.notifyItemChanged(pair.getFirst());
|
||||||
boolean scroll = shouldScrollWhenUpdatingMessage();
|
if (scroll) scrollToBottom();
|
||||||
adapter.notifyItemChanged(pair.getFirst());
|
}
|
||||||
if (scroll) scrollToBottom();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ class ImageAdapter extends Adapter<ImageViewHolder> {
|
|||||||
// get item
|
// get item
|
||||||
requireNonNull(conversationItem);
|
requireNonNull(conversationItem);
|
||||||
AttachmentItem item = items.get(position);
|
AttachmentItem item = items.get(position);
|
||||||
// set onClick listener, if not missing or error
|
// set onClick listener
|
||||||
imageViewHolder.itemView.setOnClickListener(v ->
|
imageViewHolder.itemView.setOnClickListener(v ->
|
||||||
listener.onAttachmentClicked(v, conversationItem, item)
|
listener.onAttachmentClicked(v, conversationItem, item)
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user