From d01df9f05307c87d09446aaf2123c4e79b1e0010 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Fri, 8 Jul 2022 12:29:15 -0400 Subject: [PATCH] Fix message details expires in countdown. --- .../securesms/messagedetails/MessageHeaderViewHolder.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageHeaderViewHolder.java b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageHeaderViewHolder.java index cfa9c5e90a..419326f432 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageHeaderViewHolder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageHeaderViewHolder.java @@ -183,7 +183,12 @@ final class MessageHeaderViewHolder extends RecyclerView.ViewHolder implements G if (expiresUpdater != null) { expiresUpdater.cancel(); } - expiresUpdater = new CountDownTimer(messageRecord.getExpiresIn(), TimeUnit.SECONDS.toMillis(1)) { + + long elapsed = System.currentTimeMillis() - messageRecord.getExpireStarted(); + long remaining = messageRecord.getExpiresIn() - elapsed; + long updateRate = (remaining < TimeUnit.HOURS.toMillis(1)) ? TimeUnit.SECONDS.toMillis(1) : TimeUnit.MINUTES.toMillis(1); + + expiresUpdater = new CountDownTimer(remaining, updateRate) { @Override public void onTick(long millisUntilFinished) { int expirationTime = Math.max((int) (TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished)), 1);