mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-24 02:18:50 +01:00
Move utility to package
This commit is contained in:
parent
7306d3cedf
commit
cd5e771044
4 changed files with 29 additions and 31 deletions
|
@ -8,7 +8,6 @@ import 'package:nc_photos/entity/sqlite/files_query_builder.dart';
|
|||
import 'package:nc_photos/entity/sqlite/isolate_util.dart';
|
||||
import 'package:nc_photos/entity/sqlite/table.dart';
|
||||
import 'package:nc_photos/entity/sqlite/type_converter.dart';
|
||||
import 'package:nc_photos/iterable_extension.dart';
|
||||
import 'package:nc_photos/k.dart' as k;
|
||||
import 'package:nc_photos/mobile/platform.dart'
|
||||
if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform;
|
||||
|
|
|
@ -15,9 +15,9 @@ import 'package:nc_photos/entity/recognize_face.dart';
|
|||
import 'package:nc_photos/entity/recognize_face_item.dart';
|
||||
import 'package:nc_photos/entity/sqlite/database.dart' as sql;
|
||||
import 'package:nc_photos/entity/tag.dart';
|
||||
import 'package:nc_photos/iterable_extension.dart';
|
||||
import 'package:nc_photos/object_extension.dart';
|
||||
import 'package:np_api/np_api.dart' as api;
|
||||
import 'package:np_async/np_async.dart';
|
||||
import 'package:np_common/or_null.dart';
|
||||
import 'package:np_common/type.dart';
|
||||
import 'package:np_string/np_string.dart';
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:np_collection/np_collection.dart';
|
||||
|
||||
extension IterableExtension<T> on Iterable<T> {
|
||||
Future<List<U>> computeAll<U>(ComputeCallback<T, U> callback) async {
|
||||
final list = asList();
|
||||
if (list.isEmpty) {
|
||||
return [];
|
||||
} else {
|
||||
return await compute(
|
||||
_computeAllImpl<T, U>, _ComputeAllMessage(callback, list));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class _ComputeAllMessage<T, U> {
|
||||
const _ComputeAllMessage(this.callback, this.data);
|
||||
|
||||
final ComputeCallback<T, U> callback;
|
||||
final List<T> data;
|
||||
}
|
||||
|
||||
Future<List<U>> _computeAllImpl<T, U>(_ComputeAllMessage<T, U> message) async {
|
||||
final result = await Future.wait(
|
||||
message.data.map((e) async => await message.callback(e)));
|
||||
return result;
|
||||
}
|
|
@ -1,5 +1,8 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:np_collection/np_collection.dart';
|
||||
|
||||
Future<void> wait(
|
||||
FutureOr<bool> Function() condition, {
|
||||
Duration? pollInterval,
|
||||
|
@ -8,3 +11,28 @@ Future<void> wait(
|
|||
await Future.delayed(pollInterval ?? const Duration(milliseconds: 500));
|
||||
}
|
||||
}
|
||||
|
||||
extension IterableExtension<T> on Iterable<T> {
|
||||
Future<List<U>> computeAll<U>(ComputeCallback<T, U> callback) async {
|
||||
final list = asList();
|
||||
if (list.isEmpty) {
|
||||
return [];
|
||||
} else {
|
||||
return await compute(
|
||||
_computeAllImpl<T, U>, _ComputeAllMessage(callback, list));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class _ComputeAllMessage<T, U> {
|
||||
const _ComputeAllMessage(this.callback, this.data);
|
||||
|
||||
final ComputeCallback<T, U> callback;
|
||||
final List<T> data;
|
||||
}
|
||||
|
||||
Future<List<U>> _computeAllImpl<T, U>(_ComputeAllMessage<T, U> message) async {
|
||||
final result = await Future.wait(
|
||||
message.data.map((e) async => await message.callback(e)));
|
||||
return result;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue