Closed broakenmedia closed 6 years ago
As a temporary solution I find that if I offset now
by about -300ms it behaves as expected.
@janakagamini No such luck here! I've gone up to 3 seconds so far from the reference time and it's still happening
OK, just found a way to sort thing, well, at least to make sure it's Just Now instead of 0 minutes.
My app is a client/server of sorts, with the client sending it's timestamp to the server, thus showing how long ago the last "ping" was sent thus:
The issue seems to happen when there are discrepancies between the two devices and the currentTimeMillis being reported. To be expected, to that end, all i need to do is:
long reportedTimeStamp = getDevice_status_timestamp();
long difBetween = System.currentTimeMillis() - reportedTimeStamp;
if(difBetween < 0){
i.e. If NOW is somehow less than the one being reported, just make it NOW
reportedTimeStamp = System.currentTimeMillis();
}
@xbroak Thanks, will try it out!
Great solution @xbroak , works like a bomb.
Where to place this code ?
long reportedTimeStamp = getDevice_status_timestamp(); long difBetween = System.currentTimeMillis() - reportedTimeStamp; if(difBetween < 0){ i.e. If NOW is somehow less than the one being reported, just make it NOW reportedTimeStamp = System.currentTimeMillis(); }
@khitdhikhun you can apply this code like so...
private void setTime(final long timeStamp){ try{
long reportedTimeStamp = timeStamp;
long difBetween = System.currentTimeMillis() - reportedTimeStamp;
if(difBetween < 0){
reportedTimeStamp = System.currentTimeMillis();
}
//RelativeTimeTextView timestamp
timestamp.setReferenceTime(reportedTimeStamp);
} catch (Exception e){
}
}
Here is a method to read time that the post was posted from firebase, i pass the time stamp and apply the piece of code by @xbroak. the results are good.
@Mpendxlo Thanks, I think they just fixed it. It always show"Just now" instead of In 0 min. Sorry for bad english.
One of our testers was still encountering this on the latest version, I don't think it's fixed.
@ovitrif Any repro steps would be helpful. And of course I'm accepting PRs for this one.
The current logic for displaying the "Just now" string is as follows. Both the following conditions have to be satisfied
It is possible that you see the "In 0 mins" text if your reference time is in the future, and less than a minute into the future.
Note that the "In 0 mins" text comes directly from Android'sDateUtils
class, and not from android-ago.
Also note that this is not necessarily a bug - if your reference time is in the very near future, you probably want to show it as "In 0 mins" (although a nicer string would be good - like "Soon").
tried @Mpendxlo solution , but still facing this issue , please fix it
As a work around i kept
if (difBetween < 0) {
refDate = System.currentTimeMillis() - 3000;
}
v1.4.0 of this library has been released. It allows you to customize the display text before it is displayed. You can use it if you want to prevent in 0 mins. I'm closing this issue for now.
Seems to happen basically the moment a new item is added with timestamp = now, shortly after that, the value changes to "Just now" as expected