mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 11:19:04 +01:00
Show Avatars in AuthorView
This commit is contained in:
@@ -121,7 +121,7 @@ public class ImageFragment extends Fragment
|
||||
|
||||
private void loadImage() {
|
||||
GlideApp.with(this)
|
||||
.load(attachment)
|
||||
.load(attachment.getHeader())
|
||||
// TODO allow if size < maxTextureSize ?
|
||||
// .override(SIZE_ORIGINAL)
|
||||
.diskCacheStrategy(NONE)
|
||||
|
||||
@@ -77,7 +77,7 @@ class ImageViewHolder extends ViewHolder {
|
||||
private void loadImage(AttachmentItem a, Radii r) {
|
||||
Transformation<Bitmap> transformation = new BriarImageTransformation(r);
|
||||
GlideApp.with(imageView)
|
||||
.load(a)
|
||||
.load(a.getHeader())
|
||||
.diskCacheStrategy(NONE)
|
||||
.error(ERROR_RES)
|
||||
.transform(transformation)
|
||||
|
||||
@@ -7,8 +7,8 @@ import com.bumptech.glide.load.data.DataFetcher;
|
||||
import org.briarproject.bramble.api.db.DatabaseExecutor;
|
||||
import org.briarproject.bramble.api.db.DbException;
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
import org.briarproject.briar.android.attachment.AttachmentItem;
|
||||
import org.briarproject.briar.api.media.Attachment;
|
||||
import org.briarproject.briar.api.media.AttachmentHeader;
|
||||
import org.briarproject.briar.api.media.AttachmentReader;
|
||||
|
||||
import java.io.InputStream;
|
||||
@@ -33,7 +33,7 @@ class BriarDataFetcher implements DataFetcher<InputStream> {
|
||||
private final AttachmentReader attachmentReader;
|
||||
@DatabaseExecutor
|
||||
private final Executor dbExecutor;
|
||||
private final AttachmentItem attachment;
|
||||
private final AttachmentHeader attachmentHeader;
|
||||
|
||||
@Nullable
|
||||
private volatile InputStream inputStream;
|
||||
@@ -41,10 +41,11 @@ class BriarDataFetcher implements DataFetcher<InputStream> {
|
||||
|
||||
@Inject
|
||||
BriarDataFetcher(AttachmentReader attachmentReader,
|
||||
@DatabaseExecutor Executor dbExecutor, AttachmentItem attachment) {
|
||||
@DatabaseExecutor Executor dbExecutor,
|
||||
AttachmentHeader attachmentHeader) {
|
||||
this.attachmentReader = attachmentReader;
|
||||
this.dbExecutor = dbExecutor;
|
||||
this.attachment = attachment;
|
||||
this.attachmentHeader = attachmentHeader;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -53,8 +54,7 @@ class BriarDataFetcher implements DataFetcher<InputStream> {
|
||||
dbExecutor.execute(() -> {
|
||||
if (cancel) return;
|
||||
try {
|
||||
Attachment a =
|
||||
attachmentReader.getAttachment(attachment.getHeader());
|
||||
Attachment a = attachmentReader.getAttachment(attachmentHeader);
|
||||
inputStream = a.getStream();
|
||||
callback.onDataReady(inputStream);
|
||||
} catch (DbException e) {
|
||||
|
||||
@@ -2,7 +2,7 @@ package org.briarproject.briar.android.conversation.glide;
|
||||
|
||||
import org.briarproject.bramble.api.db.DatabaseExecutor;
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
import org.briarproject.briar.android.attachment.AttachmentItem;
|
||||
import org.briarproject.briar.api.media.AttachmentHeader;
|
||||
import org.briarproject.briar.api.media.AttachmentReader;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
@@ -23,7 +23,7 @@ public class BriarDataFetcherFactory {
|
||||
this.dbExecutor = dbExecutor;
|
||||
}
|
||||
|
||||
BriarDataFetcher createBriarDataFetcher(AttachmentItem model) {
|
||||
BriarDataFetcher createBriarDataFetcher(AttachmentHeader model) {
|
||||
return new BriarDataFetcher(attachmentReader, dbExecutor, model);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.bumptech.glide.module.AppGlideModule;
|
||||
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
import org.briarproject.briar.android.BriarApplication;
|
||||
import org.briarproject.briar.android.attachment.AttachmentItem;
|
||||
import org.briarproject.briar.api.media.AttachmentHeader;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
@@ -28,7 +28,7 @@ public final class BriarGlideModule extends AppGlideModule {
|
||||
BriarApplication app =
|
||||
(BriarApplication) context.getApplicationContext();
|
||||
BriarModelLoaderFactory factory = new BriarModelLoaderFactory(app);
|
||||
registry.prepend(AttachmentItem.class, InputStream.class, factory);
|
||||
registry.prepend(AttachmentHeader.class, InputStream.class, factory);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.bumptech.glide.signature.ObjectKey;
|
||||
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
|
||||
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
|
||||
import org.briarproject.briar.android.BriarApplication;
|
||||
import org.briarproject.briar.android.attachment.AttachmentItem;
|
||||
import org.briarproject.briar.api.media.AttachmentHeader;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
@@ -17,7 +17,7 @@ import javax.inject.Inject;
|
||||
@MethodsNotNullByDefault
|
||||
@ParametersNotNullByDefault
|
||||
public final class BriarModelLoader
|
||||
implements ModelLoader<AttachmentItem, InputStream> {
|
||||
implements ModelLoader<AttachmentHeader, InputStream> {
|
||||
|
||||
@Inject
|
||||
BriarDataFetcherFactory dataFetcherFactory;
|
||||
@@ -27,7 +27,7 @@ public final class BriarModelLoader
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoadData<InputStream> buildLoadData(AttachmentItem model, int width,
|
||||
public LoadData<InputStream> buildLoadData(AttachmentHeader model, int width,
|
||||
int height, Options options) {
|
||||
ObjectKey key = new ObjectKey(model.getMessageId());
|
||||
BriarDataFetcher dataFetcher =
|
||||
@@ -36,7 +36,7 @@ public final class BriarModelLoader
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handles(AttachmentItem model) {
|
||||
public boolean handles(AttachmentHeader model) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,13 +6,13 @@ import com.bumptech.glide.load.model.MultiModelLoaderFactory;
|
||||
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
import org.briarproject.briar.android.BriarApplication;
|
||||
import org.briarproject.briar.android.attachment.AttachmentItem;
|
||||
import org.briarproject.briar.api.media.AttachmentHeader;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
@NotNullByDefault
|
||||
class BriarModelLoaderFactory
|
||||
implements ModelLoaderFactory<AttachmentItem, InputStream> {
|
||||
implements ModelLoaderFactory<AttachmentHeader, InputStream> {
|
||||
|
||||
private final BriarApplication app;
|
||||
|
||||
@@ -21,7 +21,7 @@ class BriarModelLoaderFactory
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelLoader<AttachmentItem, InputStream> build(
|
||||
public ModelLoader<AttachmentHeader, InputStream> build(
|
||||
MultiModelLoaderFactory multiFactory) {
|
||||
return new BriarModelLoader(app);
|
||||
}
|
||||
|
||||
@@ -8,10 +8,13 @@ import android.view.LayoutInflater;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||
|
||||
import org.briarproject.bramble.api.identity.Author;
|
||||
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||
import org.briarproject.briar.R;
|
||||
import org.briarproject.briar.android.conversation.glide.GlideApp;
|
||||
import org.briarproject.briar.android.util.UiUtils;
|
||||
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@@ -24,10 +27,11 @@ import im.delight.android.identicons.IdenticonDrawable;
|
||||
import static android.content.Context.LAYOUT_INFLATER_SERVICE;
|
||||
import static android.graphics.Typeface.BOLD;
|
||||
import static android.util.TypedValue.COMPLEX_UNIT_PX;
|
||||
import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
|
||||
import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
|
||||
import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
|
||||
import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName;
|
||||
import static org.briarproject.briar.android.util.UiUtils.resolveAttribute;
|
||||
import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
|
||||
import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
|
||||
|
||||
@UiThread
|
||||
public class AuthorView extends ConstraintLayout {
|
||||
@@ -74,8 +78,19 @@ public class AuthorView extends ConstraintLayout {
|
||||
public void setAuthor(Author author, AuthorInfo authorInfo) {
|
||||
authorName
|
||||
.setText(getContactDisplayName(author, authorInfo.getAlias()));
|
||||
IdenticonDrawable d = new IdenticonDrawable(author.getId().getBytes());
|
||||
avatar.setImageDrawable(d);
|
||||
IdenticonDrawable identicon =
|
||||
new IdenticonDrawable(author.getId().getBytes());
|
||||
if (authorInfo.getAvatarHeader() == null) {
|
||||
avatar.setImageDrawable(identicon);
|
||||
} else {
|
||||
GlideApp.with(avatar)
|
||||
.load(authorInfo.getAvatarHeader())
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.error(identicon)
|
||||
.transition(withCrossFade())
|
||||
.into(avatar)
|
||||
.waitForLayout();
|
||||
}
|
||||
|
||||
if (authorInfo.getStatus() != NONE) {
|
||||
trustIndicator.setTrustLevel(authorInfo.getStatus());
|
||||
@@ -117,10 +132,10 @@ public class AuthorView extends ConstraintLayout {
|
||||
|
||||
/**
|
||||
* Styles this view for a different persona.
|
||||
*
|
||||
* <p>
|
||||
* Attention: RSS_FEED and RSS_FEED_REBLOGGED change the avatar
|
||||
* and override the one set by
|
||||
* {@link AuthorView#setAuthor(Author, AuthorInfo)}.
|
||||
* and override the one set by
|
||||
* {@link AuthorView#setAuthor(Author, AuthorInfo)}.
|
||||
*/
|
||||
public void setPersona(int persona) {
|
||||
switch (persona) {
|
||||
|
||||
@@ -46,7 +46,7 @@ class ImagePreviewViewHolder extends ViewHolder {
|
||||
.clear(imageView);
|
||||
} else {
|
||||
GlideApp.with(imageView)
|
||||
.load(item.getItem())
|
||||
.load(item.getItem().getHeader())
|
||||
.diskCacheStrategy(NONE)
|
||||
.error(ERROR_RES)
|
||||
.downsample(FIT_CENTER)
|
||||
|
||||
Reference in New Issue
Block a user