calculateRetentionDate static method

int calculateRetentionDate(
  1. int installDayUtc,
  2. int nowUtcMillis
)

Calculates retention days using UTC calendar date difference. This counts the number of calendar days between install and now, not the number of 24-hour periods.

Implementation

static int calculateRetentionDate(int installDayUtc, int nowUtcMillis) {
  if (installDayUtc == -1) return -1;

  try {
    final year = installDayUtc ~/ 10000;
    final month = (installDayUtc % 10000) ~/ 100;
    final day = installDayUtc % 100;
    final installDate = DateTime.utc(year, month, day);
    final nowDate = DateTime.fromMillisecondsSinceEpoch(nowUtcMillis, isUtc: true);
    final nowDateOnly = DateTime.utc(nowDate.year, nowDate.month, nowDate.day);
    final days = nowDateOnly.difference(installDate).inDays;
    return days < 0 ? 0 : days;
  } catch (_) {
    return -1;
  }
}