Use clock lib to get current time

This commit is contained in:
Ming Ming 2023-03-13 19:55:39 +08:00
parent 10f1f84dff
commit a2baad029a
19 changed files with 42 additions and 23 deletions

View file

@ -1,5 +1,6 @@
import 'dart:math'; import 'dart:math';
import 'package:clock/clock.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
@ -52,7 +53,7 @@ class Account with EquatableMixin {
} }
static String newId() { static String newId() {
final timestamp = DateTime.now().millisecondsSinceEpoch; final timestamp = clock.now().millisecondsSinceEpoch;
final random = Random().nextInt(0xFFFFFF); final random = Random().nextInt(0xFFFFFF);
return "${timestamp.toRadixString(16)}-${random.toRadixString(16).padLeft(6, '0')}"; return "${timestamp.toRadixString(16)}-${random.toRadixString(16).padLeft(6, '0')}";
} }

View file

@ -1,6 +1,7 @@
/// Helper functions working with remote Nextcloud server /// Helper functions working with remote Nextcloud server
import 'dart:convert'; import 'dart:convert';
import 'package:clock/clock.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
@ -193,13 +194,13 @@ class InitiateLoginResponse {
class InitiateLoginPollOptions { class InitiateLoginPollOptions {
InitiateLoginPollOptions(this.token, String endpoint) InitiateLoginPollOptions(this.token, String endpoint)
: endpoint = Uri.parse(endpoint), : endpoint = Uri.parse(endpoint),
_validUntil = DateTime.now().add(const Duration(minutes: 20)); _validUntil = clock.now().add(const Duration(minutes: 20));
@override @override
String toString() => _$toString(); String toString() => _$toString();
bool isTokenValid() { bool isTokenValid() {
return DateTime.now().isBefore(_validUntil); return clock.now().isBefore(_validUntil);
} }
@Format(r"${kDebugMode ? $? : '***'}") @Format(r"${kDebugMode ? $? : '***'}")

View file

@ -1,3 +1,4 @@
import 'package:clock/clock.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
@ -35,7 +36,7 @@ class Album with EquatableMixin {
this.shares, this.shares,
this.albumFile, this.albumFile,
int? savedVersion, int? savedVersion,
}) : lastUpdated = (lastUpdated ?? DateTime.now()).toUtc(), }) : lastUpdated = (lastUpdated ?? clock.now()).toUtc(),
savedVersion = savedVersion ?? version; savedVersion = savedVersion ?? version;
static Album? fromJson( static Album? fromJson(
@ -227,7 +228,7 @@ class AlbumShare with EquatableMixin {
required this.userId, required this.userId,
this.displayName, this.displayName,
DateTime? sharedAt, DateTime? sharedAt,
}) : sharedAt = (sharedAt ?? DateTime.now()).toUtc(); }) : sharedAt = (sharedAt ?? clock.now()).toUtc();
factory AlbumShare.fromJson(JsonObj json) { factory AlbumShare.fromJson(JsonObj json) {
return AlbumShare( return AlbumShare(

View file

@ -1,6 +1,7 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:math'; import 'dart:math';
import 'package:clock/clock.dart';
import 'package:drift/drift.dart' as sql; import 'package:drift/drift.dart' as sql;
import 'package:kiwi/kiwi.dart'; import 'package:kiwi/kiwi.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
@ -94,7 +95,7 @@ class AlbumRemoteDataSource implements AlbumDataSource {
String _makeAlbumFileName() { String _makeAlbumFileName() {
// just make up something // just make up something
final timestamp = DateTime.now().millisecondsSinceEpoch; final timestamp = clock.now().millisecondsSinceEpoch;
final random = Random().nextInt(0xFFFFFF); final random = Random().nextInt(0xFFFFFF);
return "${timestamp.toRadixString(16)}-${random.toRadixString(16).padLeft(6, '0')}.nc_album.json"; return "${timestamp.toRadixString(16)}-${random.toRadixString(16).padLeft(6, '0')}.nc_album.json";
} }

View file

@ -1,5 +1,6 @@
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:clock/clock.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
@ -93,7 +94,7 @@ class Metadata with EquatableMixin {
this.imageWidth, this.imageWidth,
this.imageHeight, this.imageHeight,
this.exif, this.exif,
}) : lastUpdated = (lastUpdated ?? DateTime.now()).toUtc(); }) : lastUpdated = (lastUpdated ?? clock.now()).toUtc();
@override @override
// ignore: hash_and_equals // ignore: hash_and_equals

View file

@ -1,3 +1,4 @@
import 'package:clock/clock.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
import 'package:nc_photos/api/api_util.dart' as api_util; import 'package:nc_photos/api/api_util.dart' as api_util;
import 'package:nc_photos/entity/file.dart'; import 'package:nc_photos/entity/file.dart';
@ -100,7 +101,8 @@ DateTime getBestDateTime({
DateTime? overrideDateTime, DateTime? overrideDateTime,
DateTime? dateTimeOriginal, DateTime? dateTimeOriginal,
DateTime? lastModified, DateTime? lastModified,
}) => overrideDateTime ?? dateTimeOriginal ?? lastModified ?? DateTime.now().toUtc(); }) =>
overrideDateTime ?? dateTimeOriginal ?? lastModified ?? clock.now().toUtc();
final supportedFormatMimes = [ final supportedFormatMimes = [
"image/jpeg", "image/jpeg",

View file

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'dart:math'; import 'dart:math';
import 'package:clock/clock.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:kiwi/kiwi.dart'; import 'package:kiwi/kiwi.dart';
@ -317,7 +318,7 @@ class ShareHandler {
FileRepo fileRepo, Account account, String name) async { FileRepo fileRepo, Account account, String name) async {
// add a intermediate dir to allow shared dirs having the same name. Since // add a intermediate dir to allow shared dirs having the same name. Since
// the dir names are public, we can't add random pre/suffix // the dir names are public, we can't add random pre/suffix
final timestamp = DateTime.now().millisecondsSinceEpoch; final timestamp = clock.now().millisecondsSinceEpoch;
final random = Random().nextInt(0xFFFFFF); final random = Random().nextInt(0xFFFFFF);
final dirName = final dirName =
"${timestamp.toRadixString(16)}-${random.toRadixString(16).padLeft(6, "0")}"; "${timestamp.toRadixString(16)}-${random.toRadixString(16).padLeft(6, "0")}";

View file

@ -1,3 +1,4 @@
import 'package:clock/clock.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
import 'package:nc_photos/entity/file.dart'; import 'package:nc_photos/entity/file.dart';
@ -44,7 +45,7 @@ class ListPotentialSharedAlbum {
final timestamp = int.parse(match.group(1)!, radix: 16); final timestamp = int.parse(match.group(1)!, radix: 16);
final time = DateTime.fromMillisecondsSinceEpoch(timestamp); final time = DateTime.fromMillisecondsSinceEpoch(timestamp);
_log.fine("[_checkFileName] Timestamp: $time"); _log.fine("[_checkFileName] Timestamp: $time");
if (time.isAfter(DateTime.now())) { if (time.isAfter(clock.now())) {
_log.warning("[_checkFileName] Invalid timestamp: ${f.path}"); _log.warning("[_checkFileName] Invalid timestamp: ${f.path}");
return false; return false;
} }

View file

@ -1,3 +1,4 @@
import 'package:clock/clock.dart';
import 'package:kiwi/kiwi.dart'; import 'package:kiwi/kiwi.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
@ -56,7 +57,7 @@ class PopulateAlbum {
} }
products.addAll((result as List).cast<File>().map((f) => AlbumFileItem( products.addAll((result as List).cast<File>().map((f) => AlbumFileItem(
addedBy: account.userId, addedBy: account.userId,
addedAt: DateTime.now(), addedAt: clock.now(),
file: f, file: f,
))); )));
} }
@ -73,7 +74,7 @@ class PopulateAlbum {
final files = await ListTaggedFile(c)(account, provider.tags); final files = await ListTaggedFile(c)(account, provider.tags);
products.addAll(files.map((f) => AlbumFileItem( products.addAll(files.map((f) => AlbumFileItem(
addedBy: account.userId, addedBy: account.userId,
addedAt: DateTime.now(), addedAt: clock.now(),
file: f, file: f,
))); )));
return products; return products;
@ -93,7 +94,7 @@ class PopulateAlbum {
.where((f) => file_util.isSupportedFormat(f)) .where((f) => file_util.isSupportedFormat(f))
.map((f) => AlbumFileItem( .map((f) => AlbumFileItem(
addedBy: account.userId, addedBy: account.userId,
addedAt: DateTime.now(), addedAt: clock.now(),
file: f, file: f,
)) ))
.toList(); .toList();

View file

@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'package:clock/clock.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
@ -670,7 +671,7 @@ class _AlbumBrowserState extends State<AlbumBrowser>
items: [ items: [
AlbumLabelItem( AlbumLabelItem(
addedBy: widget.account.userId, addedBy: widget.account.userId,
addedAt: DateTime.now(), addedAt: clock.now(),
text: value, text: value,
), ),
..._sortedItems, ..._sortedItems,

View file

@ -1,3 +1,4 @@
import 'package:clock/clock.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
@ -134,7 +135,7 @@ class _PhotoListItemBuilder {
PhotoListItemBuilderResult _fromSortedItems( PhotoListItemBuilderResult _fromSortedItems(
Account account, List<FileDescriptor> files) { Account account, List<FileDescriptor> files) {
final today = DateTime.now(); final today = clock.now();
final memoryAlbumHelper = smartAlbumConfig != null final memoryAlbumHelper = smartAlbumConfig != null
? MemoryAlbumHelper( ? MemoryAlbumHelper(
today: today, dayRange: smartAlbumConfig!.memoriesDayRange) today: today, dayRange: smartAlbumConfig!.memoriesDayRange)

View file

@ -1,3 +1,4 @@
import 'package:clock/clock.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:kiwi/kiwi.dart'; import 'package:kiwi/kiwi.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
@ -48,7 +49,7 @@ class AddSelectionToAlbumHandler {
final selected = selectedFiles final selected = selectedFiles
.map((f) => AlbumFileItem( .map((f) => AlbumFileItem(
addedBy: account.userId, addedBy: account.userId,
addedAt: DateTime.now(), addedAt: clock.now(),
file: f, file: f,
)) ))
.toList(); .toList();

View file

@ -1,3 +1,4 @@
import 'package:clock/clock.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:nc_photos/app_localizations.dart'; import 'package:nc_photos/app_localizations.dart';
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
@ -14,7 +15,7 @@ class DoubleTapExitHandler {
if (!Pref().isDoubleTapExitOr()) { if (!Pref().isDoubleTapExitOr()) {
return true; return true;
} }
final now = DateTime.now().toUtc(); final now = clock.now().toUtc();
_lastBackButtonAt ??= now.subtract(const Duration(days: 1)); _lastBackButtonAt ??= now.subtract(const Duration(days: 1));
if (now.difference(_lastBackButtonAt!) < const Duration(seconds: 5)) { if (now.difference(_lastBackButtonAt!) < const Duration(seconds: 5)) {
return true; return true;

View file

@ -1,5 +1,6 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:clock/clock.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/date_time_extension.dart'; import 'package:nc_photos/date_time_extension.dart';
@ -41,7 +42,7 @@ class MemoryAlbumHelper {
MemoryAlbumHelper({ MemoryAlbumHelper({
DateTime? today, DateTime? today,
required int dayRange, required int dayRange,
}) : today = (today?.toLocal() ?? DateTime.now()).toMidnight(), }) : today = (today?.toLocal() ?? clock.now()).toMidnight(),
dayRange = math.max(dayRange, 0); dayRange = math.max(dayRange, 0);
void addFile(FileDescriptor f) { void addFile(FileDescriptor f) {

View file

@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'package:clock/clock.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:kiwi/kiwi.dart'; import 'package:kiwi/kiwi.dart';
@ -46,7 +47,7 @@ class _SplashState extends State<Splash> {
Future<void> _doWork() async { Future<void> _doWork() async {
if (Pref().getFirstRunTime() == null) { if (Pref().getFirstRunTime() == null) {
await Pref().setFirstRunTime(DateTime.now().millisecondsSinceEpoch); await Pref().setFirstRunTime(clock.now().millisecondsSinceEpoch);
} }
if (_shouldUpgrade()) { if (_shouldUpgrade()) {
setState(() { setState(() {

View file

@ -228,7 +228,7 @@ packages:
source: hosted source: hosted
version: "0.3.5" version: "0.3.5"
clock: clock:
dependency: transitive dependency: "direct main"
description: description:
name: clock name: clock
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"

View file

@ -38,6 +38,7 @@ dependencies:
bloc_concurrency: ^0.2.0 bloc_concurrency: ^0.2.0
cached_network_image: ^3.2.1 cached_network_image: ^3.2.1
circular_reveal_animation: ^2.0.1 circular_reveal_animation: ^2.0.1
clock: ^1.1.1
collection: ^1.15.0 collection: ^1.15.0
connectivity_plus: ^2.0.2 connectivity_plus: ^2.0.2
copy_with: copy_with:

View file

@ -1,3 +1,4 @@
import 'package:clock/clock.dart';
import 'package:nc_photos/entity/exif.dart'; import 'package:nc_photos/entity/exif.dart';
import 'package:nc_photos/entity/file.dart'; import 'package:nc_photos/entity/file.dart';
import 'package:nc_photos/entity/file_descriptor.dart'; import 'package:nc_photos/entity/file_descriptor.dart';
@ -837,7 +838,7 @@ void main() {
}); });
test("lastModified", () { test("lastModified", () {
final now = DateTime.now(); final now = clock.now();
final file = src.copyWith(lastModified: now); final file = src.copyWith(lastModified: now);
expect( expect(
file, file,
@ -1022,7 +1023,7 @@ void main() {
}); });
test("trashbinDeletionTime", () { test("trashbinDeletionTime", () {
final now = DateTime.now(); final now = clock.now();
final file = src.copyWith(trashbinDeletionTime: now); final file = src.copyWith(trashbinDeletionTime: now);
expect( expect(
file, file,

View file

@ -1,3 +1,4 @@
import 'package:clock/clock.dart';
import 'package:nc_photos/di_container.dart'; import 'package:nc_photos/di_container.dart';
import 'package:nc_photos/entity/file_descriptor.dart'; import 'package:nc_photos/entity/file_descriptor.dart';
import 'package:nc_photos/entity/sqlite/database.dart' as sql; import 'package:nc_photos/entity/sqlite/database.dart' as sql;
@ -104,7 +105,7 @@ Future<void> _missing() async {
fdMime: null, fdMime: null,
fdIsArchived: false, fdIsArchived: false,
fdIsFavorite: false, fdIsFavorite: false,
fdDateTime: DateTime.now(), fdDateTime: clock.now(),
), ),
], ],
), ),