| 445 | } |
| 446 | |
| 447 | QString OnlineText(Data::LastseenStatus status, TimeId now) { |
| 448 | if (const auto common = OnlineTextCommon(status, now)) { |
| 449 | return *common; |
| 450 | } |
| 451 | const auto till = status.onlineTill(); |
| 452 | Assert(till > 0); |
| 453 | const auto minutes = (now - till) / 60; |
| 454 | if (!minutes) { |
| 455 | return tr::lng_status_lastseen_now(tr::now); |
| 456 | } else if (minutes < 60) { |
| 457 | return tr::lng_status_lastseen_minutes(tr::now, lt_count, minutes); |
| 458 | } |
| 459 | const auto hours = (now - till) / 3600; |
| 460 | if (hours < 12) { |
| 461 | return tr::lng_status_lastseen_hours(tr::now, lt_count, hours); |
| 462 | } |
| 463 | const auto onlineFull = base::unixtime::parse(till); |
| 464 | const auto nowFull = base::unixtime::parse(now); |
| 465 | const auto locale = QLocale(); |
| 466 | if (onlineFull.date() == nowFull.date()) { |
| 467 | const auto onlineTime = locale.toString(onlineFull.time(), QLocale::ShortFormat); |
| 468 | return tr::lng_status_lastseen_today(tr::now, lt_time, onlineTime); |
| 469 | } else if (onlineFull.date().addDays(1) == nowFull.date()) { |
| 470 | const auto onlineTime = locale.toString(onlineFull.time(), QLocale::ShortFormat); |
| 471 | return tr::lng_status_lastseen_yesterday(tr::now, lt_time, onlineTime); |
| 472 | } |
| 473 | const auto date = locale.toString(onlineFull.date(), QLocale::ShortFormat); |
| 474 | return tr::lng_status_lastseen_date(tr::now, lt_date, date); |
| 475 | } |
| 476 | |
| 477 | QString OnlineText(not_null<UserData*> user, TimeId now) { |
| 478 | if (const auto special = OnlineTextSpecial(user)) { |
no test coverage detected