Files
localsend/packages/localsend_isolates/lib/util/file_speed_helper.dart
T
Tien Do Nam 0d97f4b8c7
CI / format (push) Waiting to run
CI / test (push) Waiting to run
CI / packaging (push) Waiting to run
i18n: polish
2026-08-06 16:10:25 +02:00

44 lines
1.3 KiB
Dart

import 'package:localsend_isolates/util/notification_strings.dart';
const _millisecondsPerSecond = 1000;
const _secondsPerMinute = 60;
const _secondsPerHour = 3600;
int getFileSpeed({
required int start,
required int end,
required int bytes,
}) {
final deltaTime = end - start;
return (_millisecondsPerSecond * bytes) ~/ deltaTime;
}
String getRemainingTime({
required int bytesPerSeconds,
required int remainingBytes,
required NotificationStrings strings,
}) {
if (bytesPerSeconds == 0) {
return remainingBytes == 0 ? strings.remainingTimeMinutes(m: 0, ss: '00') : '∞';
}
final remainingTimeInSeconds = _getRemainingTime(bytesPerSeconds: bytesPerSeconds, remainingBytes: remainingBytes);
if (remainingTimeInSeconds < _secondsPerHour) {
final minutes = remainingTimeInSeconds ~/ _secondsPerMinute;
final seconds = remainingTimeInSeconds % _secondsPerMinute;
return strings.remainingTimeMinutes(m: minutes, ss: seconds.toString().padLeft(2, '0'));
} else {
final hours = remainingTimeInSeconds ~/ _secondsPerHour;
final minutes = (remainingTimeInSeconds % _secondsPerHour) ~/ _secondsPerMinute;
return strings.remainingTimeLong(h: hours, m: minutes);
}
}
int _getRemainingTime({
required int bytesPerSeconds,
required int remainingBytes,
}) {
return remainingBytes ~/ bytesPerSeconds;
}