package im.actor.sdk.controllers.conversation.view; import android.graphics.Color; import android.graphics.Typeface; import android.text.TextPaint; import android.view.View; import im.actor.core.entity.Peer; import im.actor.core.viewmodel.CommandCallback; import im.actor.runtime.actors.messages.Void; import im.actor.runtime.android.AndroidContext; import im.actor.sdk.ActorSDK; import im.actor.sdk.R; import im.actor.sdk.controllers.Intents; import im.actor.sdk.view.BaseUrlSpan; public class ReactionSpan extends BaseUrlSpan { private boolean hasMyReaction; Peer peer; long rid; String code; int baseColor; public ReactionSpan(String code, boolean hasMyReaction, Peer peer, long rid, int baseColor) { super(code, false); this.code = code; this.hasMyReaction = hasMyReaction; this.peer = peer; this.rid = rid; this.baseColor = baseColor; } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setColor(hasMyReaction && code.equals("\u2764") ? ActorSDK.sharedActor().style.getConvLikeColor() : baseColor); ds.setUnderlineText(false); } @Override public void onClick(View widget) { if (hasMyReaction) { ActorSDK.sharedActor().getMessenger().removeReaction(peer, rid, code).start(new CommandCallback<Void>() { @Override public void onResult(Void res) { } @Override public void onError(Exception e) { } }); } else { ActorSDK.sharedActor().getMessenger().addReaction(peer, rid, code).start(new CommandCallback<Void>() { @Override public void onResult(Void res) { } @Override public void onError(Exception e) { } }); } } public boolean hasMyReaction() { return hasMyReaction; } }