diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java b/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java
index 8c80055e..05e49924 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java
@@ -40,7 +40,7 @@ import com.keylesspalace.tusky.entity.Notification;
import com.keylesspalace.tusky.interfaces.LinkListener;
import com.keylesspalace.tusky.interfaces.StatusActionListener;
import com.keylesspalace.tusky.util.CustomEmojiHelper;
-import com.keylesspalace.tusky.util.DateUtils;
+import com.keylesspalace.tusky.util.TimestampUtils;
import com.keylesspalace.tusky.util.ImageLoadingHelper;
import com.keylesspalace.tusky.util.LinkHelper;
import com.keylesspalace.tusky.util.SmartLengthInputFilter;
@@ -435,7 +435,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
if (createdAt != null) {
long then = createdAt.getTime();
long now = new Date().getTime();
- readout = DateUtils.getRelativeTimeSpanString(timestampInfo.getContext(), then, now);
+ readout = TimestampUtils.getRelativeTimeSpanString(timestampInfo.getContext(), then, now);
readoutAloud = android.text.format.DateUtils.getRelativeTimeSpanString(then, now,
android.text.format.DateUtils.SECOND_IN_MILLIS,
android.text.format.DateUtils.FORMAT_ABBREV_RELATIVE);
diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java
index 4b5c9390..919709af 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java
@@ -4,8 +4,8 @@ import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.Spanned;
import android.text.TextUtils;
+import android.text.format.DateUtils;
import android.view.View;
-import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
@@ -29,7 +29,7 @@ import com.keylesspalace.tusky.entity.Emoji;
import com.keylesspalace.tusky.entity.Status;
import com.keylesspalace.tusky.interfaces.StatusActionListener;
import com.keylesspalace.tusky.util.CustomEmojiHelper;
-import com.keylesspalace.tusky.util.DateUtils;
+import com.keylesspalace.tusky.util.TimestampUtils;
import com.keylesspalace.tusky.util.HtmlUtils;
import com.keylesspalace.tusky.util.ImageLoadingHelper;
import com.keylesspalace.tusky.util.LinkHelper;
@@ -63,8 +63,6 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
private SparkButton reblogButton;
private SparkButton favouriteButton;
private ImageButton moreButton;
- private boolean favourited;
- private boolean reblogged;
protected MediaPreviewImageView[] mediaPreviews;
private ImageView[] mediaOverlays;
private TextView sensitiveMediaWarning;
@@ -122,10 +120,10 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
sensitiveMediaWarning = itemView.findViewById(R.id.status_sensitive_media_warning);
sensitiveMediaShow = itemView.findViewById(R.id.status_sensitive_media_button);
mediaLabels = new TextView[]{
+ itemView.findViewById(R.id.status_media_label_0),
itemView.findViewById(R.id.status_media_label_1),
itemView.findViewById(R.id.status_media_label_2),
- itemView.findViewById(R.id.status_media_label_3),
- itemView.findViewById(R.id.status_media_label_4)
+ itemView.findViewById(R.id.status_media_label_3)
};
contentWarningDescription = itemView.findViewById(R.id.status_content_warning_description);
contentWarningButton = itemView.findViewById(R.id.status_content_warning_button);
@@ -141,8 +139,8 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
((DefaultItemAnimator) pollOptions.getItemAnimator()).setSupportsChangeAnimations(false);
this.useAbsoluteTime = useAbsoluteTime;
- shortSdf = new SimpleDateFormat("HH:mm:ss", Locale.getDefault());
- longSdf = new SimpleDateFormat("MM/dd HH:mm:ss", Locale.getDefault());
+ this.shortSdf = new SimpleDateFormat("HH:mm:ss", Locale.getDefault());
+ this.longSdf = new SimpleDateFormat("MM/dd HH:mm:ss", Locale.getDefault());
this.avatarRadius48dp = itemView.getContext().getResources().getDimensionPixelSize(R.dimen.avatar_radius_48dp);
this.avatarRadius36dp = itemView.getContext().getResources().getDimensionPixelSize(R.dimen.avatar_radius_36dp);
@@ -158,8 +156,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
protected void setUsername(String name) {
Context context = username.getContext();
- String format = context.getString(R.string.status_username_format);
- String usernameText = String.format(format, name);
+ String usernameText = context.getString(R.string.status_username_format, name);
username.setText(usernameText);
}
@@ -184,7 +181,6 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
contentWarningButton.setVisibility(View.VISIBLE);
contentWarningButton.setChecked(expanded);
contentWarningButton.setOnCheckedChangeListener((buttonView, isChecked) -> {
- contentWarningDescription.invalidate();
if (getAdapterPosition() != RecyclerView.NO_POSITION) {
listener.onExpandedChange(isChecked, getAdapterPosition());
}
@@ -250,64 +246,37 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
}
- protected void setCreatedAt(@Nullable Date createdAt) {
+ protected void setCreatedAt(@NonNull Date createdAt) {
if (useAbsoluteTime) {
timestampInfo.setText(getAbsoluteTime(createdAt));
} else {
- String readout;
- if (createdAt != null) {
- long then = createdAt.getTime();
- long now = new Date().getTime();
- readout = DateUtils.getRelativeTimeSpanString(timestampInfo.getContext(), then, now);
- } else {
- // unknown minutes~
- readout = "?m";
- }
+ long then = createdAt.getTime();
+ long now = System.currentTimeMillis();
+ String readout = TimestampUtils.getRelativeTimeSpanString(timestampInfo.getContext(), then, now);
timestampInfo.setText(readout);
}
}
- private String getAbsoluteTime(@Nullable Date createdAt) {
- String time;
- if (createdAt != null) {
- if (android.text.format.DateUtils.isToday(createdAt.getTime())) {
- time = shortSdf.format(createdAt);
- } else {
- time = longSdf.format(createdAt);
- }
+ private String getAbsoluteTime(@NonNull Date createdAt) {
+ if (DateUtils.isToday(createdAt.getTime())) {
+ return shortSdf.format(createdAt);
} else {
- time = "??:??:??";
+ return longSdf.format(createdAt);
}
- return time;
}
- private CharSequence getCreatedAtDescription(@Nullable Date createdAt) {
+ private CharSequence getCreatedAtDescription(@NonNull Date createdAt) {
if (useAbsoluteTime) {
return getAbsoluteTime(createdAt);
} else {
/* This one is for screen-readers. Frequently, they would mispronounce timestamps like "17m"
* as 17 meters instead of minutes. */
- if (createdAt != null) {
- long then = createdAt.getTime();
- long now = new Date().getTime();
- return android.text.format.DateUtils.getRelativeTimeSpanString(then, now,
- android.text.format.DateUtils.SECOND_IN_MILLIS,
- android.text.format.DateUtils.FORMAT_ABBREV_RELATIVE);
- } else {
- // unknown minutes~
- return "? minutes";
- }
- }
- }
-
- protected void showContent(boolean show) {
- if (show) {
- itemView.setVisibility(View.VISIBLE);
- itemView.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
- } else {
- itemView.setVisibility(View.INVISIBLE);
- itemView.getLayoutParams().height = Utils.convertDpToPx(itemView.getContext(), 24);
+ long then = createdAt.getTime();
+ long now = System.currentTimeMillis();
+ return DateUtils.getRelativeTimeSpanString(then, now,
+ DateUtils.SECOND_IN_MILLIS,
+ DateUtils.FORMAT_ABBREV_RELATIVE);
}
}
@@ -321,7 +290,6 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
}
private void setReblogged(boolean reblogged) {
- this.reblogged = reblogged;
reblogButton.setChecked(reblogged);
}
@@ -358,7 +326,6 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
}
protected void setFavourited(boolean favourited) {
- this.favourited = favourited;
favouriteButton.setChecked(favourited);
}
@@ -423,18 +390,20 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
setAttachmentClickListener(mediaPreviews[i], listener, i, attachments.get(i), true);
+ final int mediaPreviewHeight = getMediaPreviewHeight(context);
+
if (n <= 2) {
- mediaPreviews[0].getLayoutParams().height = getMediaPreviewHeight(context) * 2;
- mediaPreviews[1].getLayoutParams().height = getMediaPreviewHeight(context) * 2;
+ mediaPreviews[0].getLayoutParams().height = mediaPreviewHeight * 2;
+ mediaPreviews[1].getLayoutParams().height = mediaPreviewHeight * 2;
} else {
- mediaPreviews[0].getLayoutParams().height = getMediaPreviewHeight(context);
- mediaPreviews[1].getLayoutParams().height = getMediaPreviewHeight(context);
- mediaPreviews[2].getLayoutParams().height = getMediaPreviewHeight(context);
- mediaPreviews[3].getLayoutParams().height = getMediaPreviewHeight(context);
+ mediaPreviews[0].getLayoutParams().height = mediaPreviewHeight;
+ mediaPreviews[1].getLayoutParams().height = mediaPreviewHeight;
+ mediaPreviews[2].getLayoutParams().height = mediaPreviewHeight;
+ mediaPreviews[3].getLayoutParams().height = mediaPreviewHeight;
}
}
- String hiddenContentText;
+ final String hiddenContentText;
if (sensitive) {
hiddenContentText = context.getString(R.string.status_sensitive_media_template,
context.getString(R.string.status_sensitive_media_title),
@@ -514,8 +483,9 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
private void setAttachmentClickListener(View view, StatusActionListener listener,
int index, Attachment attachment, boolean animateTransition) {
view.setOnClickListener(v -> {
- if (getAdapterPosition() != RecyclerView.NO_POSITION) {
- listener.onViewMedia(getAdapterPosition(), index, animateTransition ? v : null);
+ int position = getAdapterPosition();
+ if (position != RecyclerView.NO_POSITION) {
+ listener.onViewMedia(position, index, animateTransition ? v : null);
}
});
view.setOnLongClickListener(v -> {
@@ -525,7 +495,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
});
}
- private CharSequence getAttachmentDescription(Context context, Attachment attachment) {
+ private static CharSequence getAttachmentDescription(Context context, Attachment attachment) {
if (TextUtils.isEmpty(attachment.getDescription())) {
return context
.getString(R.string.description_status_media_no_description_placeholder);
@@ -540,10 +510,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
}
protected void setupButtons(final StatusActionListener listener, final String accountId) {
- /* Originally position was passed through to all these listeners, but it caused several
- * bugs where other statuses in the list would be removed or added and cause the position
- * here to become outdated. So, getting the adapter position at the time the listener is
- * actually called is the appropriate solution. */
+
avatar.setOnClickListener(v -> listener.onViewAccount(accountId));
replyButton.setOnClickListener(v -> {
int position = getAdapterPosition();
@@ -551,13 +518,13 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
listener.onReply(position);
}
});
- if (reblogButton != null) {
+ if(reblogButton != null) {
reblogButton.setEventListener(new SparkEventListener() {
@Override
public void onEvent(ImageView button, boolean buttonState) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
- listener.onReblog(!reblogged, position);
+ listener.onReblog(buttonState, position);
}
}
@@ -570,12 +537,13 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
}
});
}
+
favouriteButton.setEventListener(new SparkEventListener() {
@Override
public void onEvent(ImageView button, boolean buttonState) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
- listener.onFavourite(!favourited, position);
+ listener.onFavourite(buttonState, position);
}
}
@@ -608,7 +576,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
}
public void setupWithStatus(StatusViewData.Concrete status, final StatusActionListener listener,
- boolean mediaPreviewEnabled, boolean showBotOverlay, boolean animateAvatar) {
+ boolean mediaPreviewEnabled, boolean showBotOverlay, boolean animateAvatar) {
this.setupWithStatus(status, listener, mediaPreviewEnabled, showBotOverlay, animateAvatar, null);
}
@@ -653,7 +621,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
setSpoilerAndContent(status.isExpanded(), status.getContent(), status.getSpoilerText(), status.getMentions(), status.getStatusEmojis(), listener);
- setContentDescription(status);
+ setDescriptionForStatus(status);
setupPoll(status.getPoll(),status.getStatusEmojis(), listener);
@@ -674,17 +642,6 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
}
}
-
- private void setContentDescription(@Nullable StatusViewData.Concrete status) {
- if (status == null) {
- itemView.setContentDescription(
- itemView.getContext().getString(R.string.load_more_placeholder_text));
- } else {
- setDescriptionForStatus(status);
- }
-
- }
-
private void setDescriptionForStatus(@NonNull StatusViewData.Concrete status) {
Context context = itemView.getContext();
@@ -706,21 +663,19 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
itemView.setContentDescription(description);
}
- private CharSequence getReblogDescription(Context context,
- @NonNull StatusViewData.Concrete status) {
- CharSequence reblogDescriontion;
+ private static CharSequence getReblogDescription(Context context,
+ @NonNull StatusViewData.Concrete status) {
String rebloggedUsername = status.getRebloggedByUsername();
if (rebloggedUsername != null) {
- reblogDescriontion = context
+ return context
.getString(R.string.status_boosted_format, rebloggedUsername);
} else {
- reblogDescriontion = "";
+ return "";
}
- return reblogDescriontion;
}
- private CharSequence getMediaDescription(Context context,
- @NonNull StatusViewData.Concrete status) {
+ private static CharSequence getMediaDescription(Context context,
+ @NonNull StatusViewData.Concrete status) {
if (status.getAttachments().isEmpty()) {
return "";
}
@@ -740,8 +695,8 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
return context.getString(R.string.description_status_media, mediaDescriptions);
}
- private CharSequence getContentWarningDescription(Context context,
- @NonNull StatusViewData.Concrete status) {
+ private static CharSequence getContentWarningDescription(Context context,
+ @NonNull StatusViewData.Concrete status) {
if (!TextUtils.isEmpty(status.getSpoilerText())) {
return context.getString(R.string.description_status_cw, status.getSpoilerText());
} else {
@@ -749,10 +704,8 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
}
}
- private CharSequence getVisibilityDescription(Context context, Status.Visibility visibility) {
- if (visibility == null) {
- return "";
- }
+ private static CharSequence getVisibilityDescription(Context context, Status.Visibility visibility) {
+
int resource;
switch (visibility) {
case PUBLIC:
@@ -878,7 +831,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
if (useAbsoluteTime) {
pollDurationInfo = context.getString(R.string.poll_info_time_absolute, getAbsoluteTime(poll.getExpiresAt()));
} else {
- String pollDuration = DateUtils.formatPollDuration(pollDescription.getContext(), poll.getExpiresAt().getTime(), timestamp);
+ String pollDuration = TimestampUtils.formatPollDuration(pollDescription.getContext(), poll.getExpiresAt().getTime(), timestamp);
pollDurationInfo = context.getString(R.string.poll_info_time_relative, pollDuration);
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusDetailedViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusDetailedViewHolder.java
index 9d3899a9..ffdceb23 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusDetailedViewHolder.java
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusDetailedViewHolder.java
@@ -29,6 +29,7 @@ import com.keylesspalace.tusky.viewdata.StatusViewData;
import java.text.DateFormat;
import java.util.Date;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
@@ -66,13 +67,9 @@ class StatusDetailedViewHolder extends StatusBaseViewHolder {
}
@Override
- protected void setCreatedAt(@Nullable Date createdAt) {
- if (createdAt != null) {
- DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT);
- timestampInfo.setText(dateFormat.format(createdAt));
- } else {
- timestampInfo.setText("");
- }
+ protected void setCreatedAt(@NonNull Date createdAt) {
+ DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT);
+ timestampInfo.setText(dateFormat.format(createdAt));
}
private void setReblogAndFavCount(int reblogCount, int favCount, StatusActionListener listener) {
@@ -138,7 +135,6 @@ class StatusDetailedViewHolder extends StatusBaseViewHolder {
setApplication(status.getApplication());
-
View.OnLongClickListener longClickListener = view -> {
TextView textView = (TextView) view;
ClipboardManager clipboard = (ClipboardManager) view.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
@@ -224,9 +220,6 @@ class StatusDetailedViewHolder extends StatusBaseViewHolder {
}
private void setStatusVisibility(Status.Visibility visibility) {
- if (visibility == null || this.timestampInfo == null) {
- return;
- }
int visibilityIcon;
switch (visibility) {
@@ -260,7 +253,7 @@ class StatusDetailedViewHolder extends StatusBaseViewHolder {
size
);
visibilityDrawable.setTint(this.timestampInfo.getCurrentTextColor());
- this.timestampInfo.setCompoundDrawables(
+ this.timestampInfo.setCompoundDrawablesWithIntrinsicBounds(
visibilityDrawable,
null,
null,
diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusViewHolder.java
index ade00fef..dba84da4 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusViewHolder.java
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusViewHolder.java
@@ -17,6 +17,7 @@ package com.keylesspalace.tusky.adapter;
import android.content.Context;
import android.text.InputFilter;
+import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import android.widget.ToggleButton;
@@ -53,26 +54,21 @@ public class StatusViewHolder extends StatusBaseViewHolder {
protected void setupWithStatus(StatusViewData.Concrete status, final StatusActionListener listener,
boolean mediaPreviewEnabled, boolean showBotOverlay, boolean animateAvatar,
@Nullable Object payloads) {
- if (status == null || payloads == null) {
- if (status == null) {
- showContent(false);
+ if (payloads == null) {
+
+ setupCollapsedState(status, listener);
+
+ String rebloggedByDisplayName = status.getRebloggedByUsername();
+ if (rebloggedByDisplayName == null) {
+ hideStatusInfo();
} else {
- showContent(true);
- setupCollapsedState(status, listener);
- super.setupWithStatus(status, listener, mediaPreviewEnabled, showBotOverlay, animateAvatar, null);
-
- String rebloggedByDisplayName = status.getRebloggedByUsername();
- if (rebloggedByDisplayName == null) {
- hideStatusInfo();
- } else {
- setRebloggedByDisplayName(rebloggedByDisplayName);
- statusInfo.setOnClickListener(v -> listener.onOpenReblog(getAdapterPosition()));
- }
-
+ setRebloggedByDisplayName(rebloggedByDisplayName);
+ statusInfo.setOnClickListener(v -> listener.onOpenReblog(getAdapterPosition()));
}
- } else {
- super.setupWithStatus(status, listener, mediaPreviewEnabled, showBotOverlay, animateAvatar, payloads);
+
}
+ super.setupWithStatus(status, listener, mediaPreviewEnabled, showBotOverlay, animateAvatar, payloads);
+
}
private void setRebloggedByDisplayName(final String name) {
@@ -92,15 +88,12 @@ public class StatusViewHolder extends StatusBaseViewHolder {
}
void hideStatusInfo() {
- if (statusInfo == null) {
- return;
- }
statusInfo.setVisibility(View.GONE);
}
private void setupCollapsedState(final StatusViewData.Concrete status, final StatusActionListener listener) {
/* input filter for TextViews have to be set before text */
- if (status.isCollapsible() && (status.isExpanded() || status.getSpoilerText() == null || status.getSpoilerText().isEmpty())) {
+ if (status.isCollapsible() && (status.isExpanded() || TextUtils.isEmpty(status.getSpoilerText()))) {
contentCollapseButton.setOnCheckedChangeListener((buttonView, isChecked) -> {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationViewHolder.java
index 9fed2203..6cb69382 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationViewHolder.java
+++ b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationViewHolder.java
@@ -26,7 +26,6 @@ import android.widget.ToggleButton;
import androidx.recyclerview.widget.RecyclerView;
-import com.bumptech.glide.Glide;
import com.keylesspalace.tusky.R;
import com.keylesspalace.tusky.adapter.StatusBaseViewHolder;
import com.keylesspalace.tusky.entity.Attachment;
@@ -56,7 +55,11 @@ public class ConversationViewHolder extends StatusBaseViewHolder {
super(itemView, useAbsoluteTime);
conversationNameTextView = itemView.findViewById(R.id.conversation_name);
contentCollapseButton = itemView.findViewById(R.id.button_toggle_content);
- avatars = new ImageView[]{avatar, itemView.findViewById(R.id.status_avatar_1), itemView.findViewById(R.id.status_avatar_2)};
+ avatars = new ImageView[]{
+ avatar,
+ itemView.findViewById(R.id.status_avatar_1),
+ itemView.findViewById(R.id.status_avatar_2)
+ };
this.listener = listener;
this.mediaPreviewEnabled = mediaPreviewEnabled;
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusViewHolder.kt b/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusViewHolder.kt
index be24070f..60821972 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusViewHolder.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusViewHolder.kt
@@ -130,7 +130,7 @@ class StatusViewHolder(itemView: View,
itemView.timestampInfo.text = if (createdAt != null) {
val then = createdAt.time
val now = System.currentTimeMillis()
- DateUtils.getRelativeTimeSpanString(itemView.timestampInfo.context, then, now)
+ TimestampUtils.getRelativeTimeSpanString(itemView.timestampInfo.context, then, now)
} else {
// unknown minutes~
"?m"
diff --git a/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.java b/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.java
index dbf6be4c..2505649d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.java
+++ b/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.java
@@ -129,7 +129,6 @@ public class LinkHelper {
}
view.setText(builder);
- view.setLinksClickable(true);
view.setMovementMethod(LinkMovementMethod.getInstance());
}
@@ -177,7 +176,6 @@ public class LinkHelper {
start = end;
}
view.setText(builder);
- view.setLinksClickable(true);
view.setMovementMethod(LinkMovementMethod.getInstance());
}
@@ -210,7 +208,7 @@ public class LinkHelper {
try {
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
- Log.w("LinkHelper", "Actvity was not found for intent, " + intent.toString());
+ Log.w("LinkHelper", "Actvity was not found for intent, " + intent);
}
}
@@ -231,7 +229,7 @@ public class LinkHelper {
try {
customTabsIntent.launchUrl(context, uri);
} catch (ActivityNotFoundException e) {
- Log.w("LinkHelper", "Activity was not found for intent " + customTabsIntent.toString());
+ Log.w("LinkHelper", "Activity was not found for intent " + customTabsIntent);
openLinkInBrowser(uri, context);
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/util/StatusViewHelper.kt b/app/src/main/java/com/keylesspalace/tusky/util/StatusViewHelper.kt
index f7353b0a..fc0b7c9d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/util/StatusViewHelper.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/util/StatusViewHelper.kt
@@ -267,7 +267,7 @@ class StatusViewHelper(private val itemView: View) {
if (useAbsoluteTime) {
pollDurationInfo = context.getString(R.string.poll_info_time_absolute, getAbsoluteTime(poll.expiresAt))
} else {
- val pollDuration = DateUtils.formatPollDuration(context, poll.expiresAt!!.time, timestamp)
+ val pollDuration = TimestampUtils.formatPollDuration(context, poll.expiresAt!!.time, timestamp)
pollDurationInfo = context.getString(R.string.poll_info_time_relative, pollDuration)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/util/DateUtils.java b/app/src/main/java/com/keylesspalace/tusky/util/TimestampUtils.java
similarity index 99%
rename from app/src/main/java/com/keylesspalace/tusky/util/DateUtils.java
rename to app/src/main/java/com/keylesspalace/tusky/util/TimestampUtils.java
index 26ef552f..c94b4229 100644
--- a/app/src/main/java/com/keylesspalace/tusky/util/DateUtils.java
+++ b/app/src/main/java/com/keylesspalace/tusky/util/TimestampUtils.java
@@ -19,7 +19,7 @@ import android.content.Context;
import com.keylesspalace.tusky.R;
-public class DateUtils {
+public class TimestampUtils {
private static final long SECOND_IN_MILLIS = 1000;
private static final long MINUTE_IN_MILLIS = SECOND_IN_MILLIS * 60;
diff --git a/app/src/main/res/layout/item_conversation.xml b/app/src/main/res/layout/item_conversation.xml
index 4f6fa811..f0635ba1 100644
--- a/app/src/main/res/layout/item_conversation.xml
+++ b/app/src/main/res/layout/item_conversation.xml
@@ -329,7 +329,7 @@
app:layout_constraintTop_toTopOf="parent" />
+
+
-
-
diff --git a/app/src/main/res/layout/item_status.xml b/app/src/main/res/layout/item_status.xml
index 55e8cb87..2a9614b9 100644
--- a/app/src/main/res/layout/item_status.xml
+++ b/app/src/main/res/layout/item_status.xml
@@ -314,7 +314,7 @@
app:layout_constraintTop_toTopOf="parent" />
+
+
-
-
+
+
-
-