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