Commit dc2aa663 authored by Filipe de Lima Brito's avatar Filipe de Lima Brito

Update Avatar class.

parent c97b4a1d
package chat.rocket.android.helper;
import chat.rocket.android.log.RCLog;
import chat.rocket.android.widget.AbsoluteUrl;
import chat.rocket.android.widget.RocketChatAvatar;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
/**
* Helper for rendering user avatar image.
*/
public class Avatar {
private final AbsoluteUrl absoluteUrl;
private final String username;
public Avatar(AbsoluteUrl absoluteUrl, String username) {
this.absoluteUrl = absoluteUrl;
this.username = username;
}
private String getImageUrl() {
//from Rocket.Chat:packages/rocketchat-ui/lib/avatar.coffee
//REMARK! this is often SVG image! (see: Rocket.Chat:server/startup/avatar.coffee)
try {
final String avatarUrl = "/avatar/" + URLEncoder.encode(username, "UTF-8");
if (absoluteUrl == null) {
return avatarUrl;
}
return absoluteUrl.from(avatarUrl);
} catch (UnsupportedEncodingException exception) {
RCLog.e(exception, "failed to get URL for user: %s", username);
return null;
}
}
/**
* render avatar into RocketChatAvatar.
*/
public void into(final RocketChatAvatar rocketChatAvatar, boolean showFailureImage) {
if (showFailureImage) {
rocketChatAvatar.showFailureImage();
} else {
rocketChatAvatar.loadImage(getImageUrl());
}
}
}
\ No newline at end of file
package chat.rocket.android.helper
import chat.rocket.android.widget.AbsoluteUrl
import chat.rocket.android.widget.RocketChatAvatar
import java.net.URLEncoder
class Avatar(val absoluteUrl: AbsoluteUrl, val username: String) {
val imageUrl: String
/** REMARK
* This is often a SVG image (see Rocket.Chat:server/startup/avatar.js)
*/
get() {
return absoluteUrl.from("/avatar/" + URLEncoder.encode(username, "UTF-8"))
}
/**
* render avatar into RocketChatAvatar.
*/
fun into(rocketChatAvatar: RocketChatAvatar) {
rocketChatAvatar.loadImage(imageUrl)
}
}
\ No newline at end of file
...@@ -5,33 +5,36 @@ import android.support.graphics.drawable.VectorDrawableCompat ...@@ -5,33 +5,36 @@ import android.support.graphics.drawable.VectorDrawableCompat
import chat.rocket.android.widget.R import chat.rocket.android.widget.R
import com.facebook.drawee.backends.pipeline.Fresco import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.drawee.drawable.ProgressBarDrawable import com.facebook.drawee.drawable.ProgressBarDrawable
import com.facebook.drawee.generic.GenericDraweeHierarchy
import com.facebook.drawee.view.SimpleDraweeView import com.facebook.drawee.view.SimpleDraweeView
class FrescoAvatarHelper { class FrescoHelper {
companion object { companion object {
@JvmStatic fun loadImage(draweeView: SimpleDraweeView, imageUri: String) {
@JvmStatic fun loadImage(draweeView: SimpleDraweeView, imageUrl: String) { draweeView.setImageURI(imageUri)
val hierarchy = draweeView.hierarchy
hierarchy.setPlaceholderImage(VectorDrawableCompat.create(draweeView.resources, R.drawable.ic_avatar_placeholder, null))
hierarchy.setFailureImage(VectorDrawableCompat.create(draweeView.resources, R.drawable.ic_avatar_failure, null))
hierarchy.setProgressBarImage(ProgressBarDrawable())
val controller = Fresco.newDraweeControllerBuilder()
.setUri(Uri.parse(imageUrl))
.setOldController(draweeView.controller)
.build()
draweeView.controller = controller
} }
@JvmStatic fun showFailureImage(draweeView: SimpleDraweeView) { /** TODO
val hierarchy = draweeView.hierarchy * Replace with:
hierarchy.setPlaceholderImage(VectorDrawableCompat.create(draweeView.resources, R.drawable.ic_avatar_failure, null)) * @JvmStatic fun loadImageWithCustomization(draweeView: SimpleDraweeView,
hierarchy.setFailureImage(VectorDrawableCompat.create(draweeView.resources, R.drawable.ic_avatar_failure, null)) * imageUri: String,
* placeholderImageDrawableId : Int = R.drawable.image_dummy,
failureImageDrawableId: Int = R.drawable.image_error) {
* [...]
* }
* It is need to convert java files which uses loadImageWithCustomization(...) method to use the above method signature.
* See: https://kotlinlang.org/docs/reference/functions.html#default-arguments.
*/
@JvmStatic fun loadImageWithCustomization(draweeView: SimpleDraweeView, imageUri: String) {
val hierarchy: GenericDraweeHierarchy = draweeView.hierarchy
hierarchy.setPlaceholderImage(VectorDrawableCompat.create(draweeView.resources, R.drawable.image_dummy, null))
hierarchy.setFailureImage(VectorDrawableCompat.create(draweeView.resources, R.drawable.image_error, null))
hierarchy.setProgressBarImage(ProgressBarDrawable())
val controller = Fresco.newDraweeControllerBuilder() val controller = Fresco.newDraweeControllerBuilder()
.setUri(Uri.parse(imageUri))
.setAutoPlayAnimations(true) .setAutoPlayAnimations(true)
.setTapToRetryEnabled(true)
.build() .build()
draweeView.controller = controller draweeView.controller = controller
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment