mirror of
https://github.com/immich-app/immich
synced 2025-11-14 17:36:12 +00:00
* feature(mobile, beta, Android): handle remote asset trash/restore events and rescan media - Handle move to trash and restore from trash for remote assets on Android - Trigger MediaScannerConnection to rescan affected media files * feature(mobile, beta, Android): fix rescan * fix imports * fix checking conditions * refactor naming * fix line breaks * refactor code rollback changes in BackgroundServicePlugin * refactor code (use separate TrashService) * refactor code * parallelize restoreFromTrash calls with Future.wait format trash.provider.dart * try to re-format trash.provider.dart * re-format trash.provider.dart * rename TrashService to TrashSyncService to avoid duplicated names revert changes in original trash.provider.dart * refactor code (minor nitpicks) * process restoreFromTrash sequentially instead of Future.wait * group local assets by checksum before moving to trash delete LocalAssetEntity records when moved to trash refactor code * fix format * use checksum for asset restoration refactro code * fix format * sync trash only for backup-selected assets * feat(db): add local_trashed_asset table and integrate with restoration flow - Add new `local_trashed_asset` table to store metadata of trashed assets - Save trashed asset info into `local_trashed_asset` before deletion - Use `local_trashed_asset` as source for asset restoration - Implement file restoration by `mediaId` * resolve merge conflicts * fix index creating on migration * rework trashed assets handling - add new table trashed_local_asset - mirror trashed assets data in trashed_local_asset. - compute checksums for assets trashed out-of-app. - restore assets present in trashed_local_asset and non-trashed in remote_asset. - simplify moving-to-trash logic based on remote_asset events. * resolve merge conflicts use updated approach for calculating checksums * use CurrentPlatform instead _platform fix mocks * revert redundant changes * Include trashed items in getMediaChanges Process trashed items delta during incremental sync * fix merge conflicts * fix format * trashed_local_asset table mirror of local_asset table structure trashed_local_asset<->local_asset transfer data on move to trash or restore refactor code * refactor and format code * refactor TrashedAsset model fix missed data transfering * refactor code remove unused model * fix label * fix merge conflicts * optimize, refactor code remove redundant code and checking getTrashedAssetsForAlbum for iOS tests for hash trashed assets * format code * fix migration fix tests * fix generated file * reuse exist checksums on trash data update handle restoration errors fix import * format code * sync_stream.service depend on repos refactor assets restoration update dependencies in tests * remove trashed asset model remove trash_sync.service refactor DriftTrashedLocalAssetRepository, LocalSyncService * rework fetching trashed assets data on native side optimize handling trashed assets in local sync service refactor code * update NativeSyncApi on iOS side remove unused code * optimize sync trashed assets call in full sync mode refactor code * fix format * remove albumIds from getTrashedAssets params fix upsert in trashed local asset repo refactor code * fix getTrashedAssets params * fix(trash-sync): clean up NativeSyncApiImplBase and correct applyDelta * refactor(trash-sync): optimize performance and fix minor issues * refactor(trash-sync): add missed index * feat(trash-sync): remove sinceLastCheckpoint param from getTrashedAssets * fix(trash-sync): fix target table * fix(trash-sync): remove unused extension * fix(trash-sync): remove unused code * fix(trash-sync): refactor code * fix(trash-sync): reformat file * fix(trash_sync): refactor code * fix(trash_sync): improve moving to trash * refactor(trash_sync): integrate MANAGE_MEDIA permission request into login flow and advanced settings * refactor(trash_sync): add additional checking for experimental trash sync flag and MANAGE_MEDIA permission. * refactor(trash_sync): resolve merge conflicts * refactor(trash_sync): fix format * resolve merge conflicts add await for alert dialog add missed request * refactor(trash_sync): rework MANAGE_MEDIA info widget show rationale text in permission request alert dialog refactor setting getter * fix(trash_sync): restore missing text values * fix(trash_sync): format file * fix(trash_sync): check backup enabled and remove remote asset existence check * fix(trash_sync): remove checking backup enabled test(trash_sync): cover sync-stream trash/restore paths and dedupe mocks * test(trash_sync): cover trash/restore flows for local_sync_service * chore(e2e): restore test-assets submodule pointer --------- Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com> Co-authored-by: Alex <alex.tran1502@gmail.com>
593 lines
20 KiB
Dart
Generated
593 lines
20 KiB
Dart
Generated
// Autogenerated from Pigeon (v26.0.2), do not edit directly.
|
|
// See also: https://pub.dev/packages/pigeon
|
|
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers
|
|
|
|
import 'dart:async';
|
|
import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List;
|
|
|
|
import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer;
|
|
import 'package:flutter/services.dart';
|
|
|
|
PlatformException _createConnectionError(String channelName) {
|
|
return PlatformException(
|
|
code: 'channel-error',
|
|
message: 'Unable to establish connection on channel: "$channelName".',
|
|
);
|
|
}
|
|
|
|
bool _deepEquals(Object? a, Object? b) {
|
|
if (a is List && b is List) {
|
|
return a.length == b.length && a.indexed.every(((int, dynamic) item) => _deepEquals(item.$2, b[item.$1]));
|
|
}
|
|
if (a is Map && b is Map) {
|
|
return a.length == b.length &&
|
|
a.entries.every(
|
|
(MapEntry<Object?, Object?> entry) =>
|
|
(b as Map<Object?, Object?>).containsKey(entry.key) && _deepEquals(entry.value, b[entry.key]),
|
|
);
|
|
}
|
|
return a == b;
|
|
}
|
|
|
|
class PlatformAsset {
|
|
PlatformAsset({
|
|
required this.id,
|
|
required this.name,
|
|
required this.type,
|
|
this.createdAt,
|
|
this.updatedAt,
|
|
this.width,
|
|
this.height,
|
|
required this.durationInSeconds,
|
|
required this.orientation,
|
|
required this.isFavorite,
|
|
});
|
|
|
|
String id;
|
|
|
|
String name;
|
|
|
|
int type;
|
|
|
|
int? createdAt;
|
|
|
|
int? updatedAt;
|
|
|
|
int? width;
|
|
|
|
int? height;
|
|
|
|
int durationInSeconds;
|
|
|
|
int orientation;
|
|
|
|
bool isFavorite;
|
|
|
|
List<Object?> _toList() {
|
|
return <Object?>[id, name, type, createdAt, updatedAt, width, height, durationInSeconds, orientation, isFavorite];
|
|
}
|
|
|
|
Object encode() {
|
|
return _toList();
|
|
}
|
|
|
|
static PlatformAsset decode(Object result) {
|
|
result as List<Object?>;
|
|
return PlatformAsset(
|
|
id: result[0]! as String,
|
|
name: result[1]! as String,
|
|
type: result[2]! as int,
|
|
createdAt: result[3] as int?,
|
|
updatedAt: result[4] as int?,
|
|
width: result[5] as int?,
|
|
height: result[6] as int?,
|
|
durationInSeconds: result[7]! as int,
|
|
orientation: result[8]! as int,
|
|
isFavorite: result[9]! as bool,
|
|
);
|
|
}
|
|
|
|
@override
|
|
// ignore: avoid_equals_and_hash_code_on_mutable_classes
|
|
bool operator ==(Object other) {
|
|
if (other is! PlatformAsset || other.runtimeType != runtimeType) {
|
|
return false;
|
|
}
|
|
if (identical(this, other)) {
|
|
return true;
|
|
}
|
|
return _deepEquals(encode(), other.encode());
|
|
}
|
|
|
|
@override
|
|
// ignore: avoid_equals_and_hash_code_on_mutable_classes
|
|
int get hashCode => Object.hashAll(_toList());
|
|
}
|
|
|
|
class PlatformAlbum {
|
|
PlatformAlbum({
|
|
required this.id,
|
|
required this.name,
|
|
this.updatedAt,
|
|
required this.isCloud,
|
|
required this.assetCount,
|
|
});
|
|
|
|
String id;
|
|
|
|
String name;
|
|
|
|
int? updatedAt;
|
|
|
|
bool isCloud;
|
|
|
|
int assetCount;
|
|
|
|
List<Object?> _toList() {
|
|
return <Object?>[id, name, updatedAt, isCloud, assetCount];
|
|
}
|
|
|
|
Object encode() {
|
|
return _toList();
|
|
}
|
|
|
|
static PlatformAlbum decode(Object result) {
|
|
result as List<Object?>;
|
|
return PlatformAlbum(
|
|
id: result[0]! as String,
|
|
name: result[1]! as String,
|
|
updatedAt: result[2] as int?,
|
|
isCloud: result[3]! as bool,
|
|
assetCount: result[4]! as int,
|
|
);
|
|
}
|
|
|
|
@override
|
|
// ignore: avoid_equals_and_hash_code_on_mutable_classes
|
|
bool operator ==(Object other) {
|
|
if (other is! PlatformAlbum || other.runtimeType != runtimeType) {
|
|
return false;
|
|
}
|
|
if (identical(this, other)) {
|
|
return true;
|
|
}
|
|
return _deepEquals(encode(), other.encode());
|
|
}
|
|
|
|
@override
|
|
// ignore: avoid_equals_and_hash_code_on_mutable_classes
|
|
int get hashCode => Object.hashAll(_toList());
|
|
}
|
|
|
|
class SyncDelta {
|
|
SyncDelta({required this.hasChanges, required this.updates, required this.deletes, required this.assetAlbums});
|
|
|
|
bool hasChanges;
|
|
|
|
List<PlatformAsset> updates;
|
|
|
|
List<String> deletes;
|
|
|
|
Map<String, List<String>> assetAlbums;
|
|
|
|
List<Object?> _toList() {
|
|
return <Object?>[hasChanges, updates, deletes, assetAlbums];
|
|
}
|
|
|
|
Object encode() {
|
|
return _toList();
|
|
}
|
|
|
|
static SyncDelta decode(Object result) {
|
|
result as List<Object?>;
|
|
return SyncDelta(
|
|
hasChanges: result[0]! as bool,
|
|
updates: (result[1] as List<Object?>?)!.cast<PlatformAsset>(),
|
|
deletes: (result[2] as List<Object?>?)!.cast<String>(),
|
|
assetAlbums: (result[3] as Map<Object?, Object?>?)!.cast<String, List<String>>(),
|
|
);
|
|
}
|
|
|
|
@override
|
|
// ignore: avoid_equals_and_hash_code_on_mutable_classes
|
|
bool operator ==(Object other) {
|
|
if (other is! SyncDelta || other.runtimeType != runtimeType) {
|
|
return false;
|
|
}
|
|
if (identical(this, other)) {
|
|
return true;
|
|
}
|
|
return _deepEquals(encode(), other.encode());
|
|
}
|
|
|
|
@override
|
|
// ignore: avoid_equals_and_hash_code_on_mutable_classes
|
|
int get hashCode => Object.hashAll(_toList());
|
|
}
|
|
|
|
class HashResult {
|
|
HashResult({required this.assetId, this.error, this.hash});
|
|
|
|
String assetId;
|
|
|
|
String? error;
|
|
|
|
String? hash;
|
|
|
|
List<Object?> _toList() {
|
|
return <Object?>[assetId, error, hash];
|
|
}
|
|
|
|
Object encode() {
|
|
return _toList();
|
|
}
|
|
|
|
static HashResult decode(Object result) {
|
|
result as List<Object?>;
|
|
return HashResult(assetId: result[0]! as String, error: result[1] as String?, hash: result[2] as String?);
|
|
}
|
|
|
|
@override
|
|
// ignore: avoid_equals_and_hash_code_on_mutable_classes
|
|
bool operator ==(Object other) {
|
|
if (other is! HashResult || other.runtimeType != runtimeType) {
|
|
return false;
|
|
}
|
|
if (identical(this, other)) {
|
|
return true;
|
|
}
|
|
return _deepEquals(encode(), other.encode());
|
|
}
|
|
|
|
@override
|
|
// ignore: avoid_equals_and_hash_code_on_mutable_classes
|
|
int get hashCode => Object.hashAll(_toList());
|
|
}
|
|
|
|
class _PigeonCodec extends StandardMessageCodec {
|
|
const _PigeonCodec();
|
|
@override
|
|
void writeValue(WriteBuffer buffer, Object? value) {
|
|
if (value is int) {
|
|
buffer.putUint8(4);
|
|
buffer.putInt64(value);
|
|
} else if (value is PlatformAsset) {
|
|
buffer.putUint8(129);
|
|
writeValue(buffer, value.encode());
|
|
} else if (value is PlatformAlbum) {
|
|
buffer.putUint8(130);
|
|
writeValue(buffer, value.encode());
|
|
} else if (value is SyncDelta) {
|
|
buffer.putUint8(131);
|
|
writeValue(buffer, value.encode());
|
|
} else if (value is HashResult) {
|
|
buffer.putUint8(132);
|
|
writeValue(buffer, value.encode());
|
|
} else {
|
|
super.writeValue(buffer, value);
|
|
}
|
|
}
|
|
|
|
@override
|
|
Object? readValueOfType(int type, ReadBuffer buffer) {
|
|
switch (type) {
|
|
case 129:
|
|
return PlatformAsset.decode(readValue(buffer)!);
|
|
case 130:
|
|
return PlatformAlbum.decode(readValue(buffer)!);
|
|
case 131:
|
|
return SyncDelta.decode(readValue(buffer)!);
|
|
case 132:
|
|
return HashResult.decode(readValue(buffer)!);
|
|
default:
|
|
return super.readValueOfType(type, buffer);
|
|
}
|
|
}
|
|
}
|
|
|
|
class NativeSyncApi {
|
|
/// Constructor for [NativeSyncApi]. The [binaryMessenger] named argument is
|
|
/// available for dependency injection. If it is left null, the default
|
|
/// BinaryMessenger will be used which routes to the host platform.
|
|
NativeSyncApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''})
|
|
: pigeonVar_binaryMessenger = binaryMessenger,
|
|
pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : '';
|
|
final BinaryMessenger? pigeonVar_binaryMessenger;
|
|
|
|
static const MessageCodec<Object?> pigeonChannelCodec = _PigeonCodec();
|
|
|
|
final String pigeonVar_messageChannelSuffix;
|
|
|
|
Future<bool> shouldFullSync() async {
|
|
final String pigeonVar_channelName =
|
|
'dev.flutter.pigeon.immich_mobile.NativeSyncApi.shouldFullSync$pigeonVar_messageChannelSuffix';
|
|
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
|
|
pigeonVar_channelName,
|
|
pigeonChannelCodec,
|
|
binaryMessenger: pigeonVar_binaryMessenger,
|
|
);
|
|
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(null);
|
|
final List<Object?>? pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;
|
|
if (pigeonVar_replyList == null) {
|
|
throw _createConnectionError(pigeonVar_channelName);
|
|
} else if (pigeonVar_replyList.length > 1) {
|
|
throw PlatformException(
|
|
code: pigeonVar_replyList[0]! as String,
|
|
message: pigeonVar_replyList[1] as String?,
|
|
details: pigeonVar_replyList[2],
|
|
);
|
|
} else if (pigeonVar_replyList[0] == null) {
|
|
throw PlatformException(
|
|
code: 'null-error',
|
|
message: 'Host platform returned null value for non-null return value.',
|
|
);
|
|
} else {
|
|
return (pigeonVar_replyList[0] as bool?)!;
|
|
}
|
|
}
|
|
|
|
Future<SyncDelta> getMediaChanges() async {
|
|
final String pigeonVar_channelName =
|
|
'dev.flutter.pigeon.immich_mobile.NativeSyncApi.getMediaChanges$pigeonVar_messageChannelSuffix';
|
|
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
|
|
pigeonVar_channelName,
|
|
pigeonChannelCodec,
|
|
binaryMessenger: pigeonVar_binaryMessenger,
|
|
);
|
|
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(null);
|
|
final List<Object?>? pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;
|
|
if (pigeonVar_replyList == null) {
|
|
throw _createConnectionError(pigeonVar_channelName);
|
|
} else if (pigeonVar_replyList.length > 1) {
|
|
throw PlatformException(
|
|
code: pigeonVar_replyList[0]! as String,
|
|
message: pigeonVar_replyList[1] as String?,
|
|
details: pigeonVar_replyList[2],
|
|
);
|
|
} else if (pigeonVar_replyList[0] == null) {
|
|
throw PlatformException(
|
|
code: 'null-error',
|
|
message: 'Host platform returned null value for non-null return value.',
|
|
);
|
|
} else {
|
|
return (pigeonVar_replyList[0] as SyncDelta?)!;
|
|
}
|
|
}
|
|
|
|
Future<void> checkpointSync() async {
|
|
final String pigeonVar_channelName =
|
|
'dev.flutter.pigeon.immich_mobile.NativeSyncApi.checkpointSync$pigeonVar_messageChannelSuffix';
|
|
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
|
|
pigeonVar_channelName,
|
|
pigeonChannelCodec,
|
|
binaryMessenger: pigeonVar_binaryMessenger,
|
|
);
|
|
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(null);
|
|
final List<Object?>? pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;
|
|
if (pigeonVar_replyList == null) {
|
|
throw _createConnectionError(pigeonVar_channelName);
|
|
} else if (pigeonVar_replyList.length > 1) {
|
|
throw PlatformException(
|
|
code: pigeonVar_replyList[0]! as String,
|
|
message: pigeonVar_replyList[1] as String?,
|
|
details: pigeonVar_replyList[2],
|
|
);
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
|
|
Future<void> clearSyncCheckpoint() async {
|
|
final String pigeonVar_channelName =
|
|
'dev.flutter.pigeon.immich_mobile.NativeSyncApi.clearSyncCheckpoint$pigeonVar_messageChannelSuffix';
|
|
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
|
|
pigeonVar_channelName,
|
|
pigeonChannelCodec,
|
|
binaryMessenger: pigeonVar_binaryMessenger,
|
|
);
|
|
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(null);
|
|
final List<Object?>? pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;
|
|
if (pigeonVar_replyList == null) {
|
|
throw _createConnectionError(pigeonVar_channelName);
|
|
} else if (pigeonVar_replyList.length > 1) {
|
|
throw PlatformException(
|
|
code: pigeonVar_replyList[0]! as String,
|
|
message: pigeonVar_replyList[1] as String?,
|
|
details: pigeonVar_replyList[2],
|
|
);
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
|
|
Future<List<String>> getAssetIdsForAlbum(String albumId) async {
|
|
final String pigeonVar_channelName =
|
|
'dev.flutter.pigeon.immich_mobile.NativeSyncApi.getAssetIdsForAlbum$pigeonVar_messageChannelSuffix';
|
|
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
|
|
pigeonVar_channelName,
|
|
pigeonChannelCodec,
|
|
binaryMessenger: pigeonVar_binaryMessenger,
|
|
);
|
|
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(<Object?>[albumId]);
|
|
final List<Object?>? pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;
|
|
if (pigeonVar_replyList == null) {
|
|
throw _createConnectionError(pigeonVar_channelName);
|
|
} else if (pigeonVar_replyList.length > 1) {
|
|
throw PlatformException(
|
|
code: pigeonVar_replyList[0]! as String,
|
|
message: pigeonVar_replyList[1] as String?,
|
|
details: pigeonVar_replyList[2],
|
|
);
|
|
} else if (pigeonVar_replyList[0] == null) {
|
|
throw PlatformException(
|
|
code: 'null-error',
|
|
message: 'Host platform returned null value for non-null return value.',
|
|
);
|
|
} else {
|
|
return (pigeonVar_replyList[0] as List<Object?>?)!.cast<String>();
|
|
}
|
|
}
|
|
|
|
Future<List<PlatformAlbum>> getAlbums() async {
|
|
final String pigeonVar_channelName =
|
|
'dev.flutter.pigeon.immich_mobile.NativeSyncApi.getAlbums$pigeonVar_messageChannelSuffix';
|
|
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
|
|
pigeonVar_channelName,
|
|
pigeonChannelCodec,
|
|
binaryMessenger: pigeonVar_binaryMessenger,
|
|
);
|
|
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(null);
|
|
final List<Object?>? pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;
|
|
if (pigeonVar_replyList == null) {
|
|
throw _createConnectionError(pigeonVar_channelName);
|
|
} else if (pigeonVar_replyList.length > 1) {
|
|
throw PlatformException(
|
|
code: pigeonVar_replyList[0]! as String,
|
|
message: pigeonVar_replyList[1] as String?,
|
|
details: pigeonVar_replyList[2],
|
|
);
|
|
} else if (pigeonVar_replyList[0] == null) {
|
|
throw PlatformException(
|
|
code: 'null-error',
|
|
message: 'Host platform returned null value for non-null return value.',
|
|
);
|
|
} else {
|
|
return (pigeonVar_replyList[0] as List<Object?>?)!.cast<PlatformAlbum>();
|
|
}
|
|
}
|
|
|
|
Future<int> getAssetsCountSince(String albumId, int timestamp) async {
|
|
final String pigeonVar_channelName =
|
|
'dev.flutter.pigeon.immich_mobile.NativeSyncApi.getAssetsCountSince$pigeonVar_messageChannelSuffix';
|
|
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
|
|
pigeonVar_channelName,
|
|
pigeonChannelCodec,
|
|
binaryMessenger: pigeonVar_binaryMessenger,
|
|
);
|
|
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(<Object?>[albumId, timestamp]);
|
|
final List<Object?>? pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;
|
|
if (pigeonVar_replyList == null) {
|
|
throw _createConnectionError(pigeonVar_channelName);
|
|
} else if (pigeonVar_replyList.length > 1) {
|
|
throw PlatformException(
|
|
code: pigeonVar_replyList[0]! as String,
|
|
message: pigeonVar_replyList[1] as String?,
|
|
details: pigeonVar_replyList[2],
|
|
);
|
|
} else if (pigeonVar_replyList[0] == null) {
|
|
throw PlatformException(
|
|
code: 'null-error',
|
|
message: 'Host platform returned null value for non-null return value.',
|
|
);
|
|
} else {
|
|
return (pigeonVar_replyList[0] as int?)!;
|
|
}
|
|
}
|
|
|
|
Future<List<PlatformAsset>> getAssetsForAlbum(String albumId, {int? updatedTimeCond}) async {
|
|
final String pigeonVar_channelName =
|
|
'dev.flutter.pigeon.immich_mobile.NativeSyncApi.getAssetsForAlbum$pigeonVar_messageChannelSuffix';
|
|
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
|
|
pigeonVar_channelName,
|
|
pigeonChannelCodec,
|
|
binaryMessenger: pigeonVar_binaryMessenger,
|
|
);
|
|
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(<Object?>[albumId, updatedTimeCond]);
|
|
final List<Object?>? pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;
|
|
if (pigeonVar_replyList == null) {
|
|
throw _createConnectionError(pigeonVar_channelName);
|
|
} else if (pigeonVar_replyList.length > 1) {
|
|
throw PlatformException(
|
|
code: pigeonVar_replyList[0]! as String,
|
|
message: pigeonVar_replyList[1] as String?,
|
|
details: pigeonVar_replyList[2],
|
|
);
|
|
} else if (pigeonVar_replyList[0] == null) {
|
|
throw PlatformException(
|
|
code: 'null-error',
|
|
message: 'Host platform returned null value for non-null return value.',
|
|
);
|
|
} else {
|
|
return (pigeonVar_replyList[0] as List<Object?>?)!.cast<PlatformAsset>();
|
|
}
|
|
}
|
|
|
|
Future<List<HashResult>> hashAssets(List<String> assetIds, {bool allowNetworkAccess = false}) async {
|
|
final String pigeonVar_channelName =
|
|
'dev.flutter.pigeon.immich_mobile.NativeSyncApi.hashAssets$pigeonVar_messageChannelSuffix';
|
|
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
|
|
pigeonVar_channelName,
|
|
pigeonChannelCodec,
|
|
binaryMessenger: pigeonVar_binaryMessenger,
|
|
);
|
|
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(<Object?>[assetIds, allowNetworkAccess]);
|
|
final List<Object?>? pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;
|
|
if (pigeonVar_replyList == null) {
|
|
throw _createConnectionError(pigeonVar_channelName);
|
|
} else if (pigeonVar_replyList.length > 1) {
|
|
throw PlatformException(
|
|
code: pigeonVar_replyList[0]! as String,
|
|
message: pigeonVar_replyList[1] as String?,
|
|
details: pigeonVar_replyList[2],
|
|
);
|
|
} else if (pigeonVar_replyList[0] == null) {
|
|
throw PlatformException(
|
|
code: 'null-error',
|
|
message: 'Host platform returned null value for non-null return value.',
|
|
);
|
|
} else {
|
|
return (pigeonVar_replyList[0] as List<Object?>?)!.cast<HashResult>();
|
|
}
|
|
}
|
|
|
|
Future<void> cancelHashing() async {
|
|
final String pigeonVar_channelName =
|
|
'dev.flutter.pigeon.immich_mobile.NativeSyncApi.cancelHashing$pigeonVar_messageChannelSuffix';
|
|
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
|
|
pigeonVar_channelName,
|
|
pigeonChannelCodec,
|
|
binaryMessenger: pigeonVar_binaryMessenger,
|
|
);
|
|
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(null);
|
|
final List<Object?>? pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;
|
|
if (pigeonVar_replyList == null) {
|
|
throw _createConnectionError(pigeonVar_channelName);
|
|
} else if (pigeonVar_replyList.length > 1) {
|
|
throw PlatformException(
|
|
code: pigeonVar_replyList[0]! as String,
|
|
message: pigeonVar_replyList[1] as String?,
|
|
details: pigeonVar_replyList[2],
|
|
);
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
|
|
Future<Map<String, List<PlatformAsset>>> getTrashedAssets() async {
|
|
final String pigeonVar_channelName =
|
|
'dev.flutter.pigeon.immich_mobile.NativeSyncApi.getTrashedAssets$pigeonVar_messageChannelSuffix';
|
|
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
|
|
pigeonVar_channelName,
|
|
pigeonChannelCodec,
|
|
binaryMessenger: pigeonVar_binaryMessenger,
|
|
);
|
|
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(null);
|
|
final List<Object?>? pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;
|
|
if (pigeonVar_replyList == null) {
|
|
throw _createConnectionError(pigeonVar_channelName);
|
|
} else if (pigeonVar_replyList.length > 1) {
|
|
throw PlatformException(
|
|
code: pigeonVar_replyList[0]! as String,
|
|
message: pigeonVar_replyList[1] as String?,
|
|
details: pigeonVar_replyList[2],
|
|
);
|
|
} else if (pigeonVar_replyList[0] == null) {
|
|
throw PlatformException(
|
|
code: 'null-error',
|
|
message: 'Host platform returned null value for non-null return value.',
|
|
);
|
|
} else {
|
|
return (pigeonVar_replyList[0] as Map<Object?, Object?>?)!.cast<String, List<PlatformAsset>>();
|
|
}
|
|
}
|
|
}
|