mirror of
https://github.com/immich-app/immich.git
synced 2026-04-16 07:31:55 -04:00
* feat: mobile editing fix: openapi patch this sucks :pepehands: chore: migrate some changes from the filtering PR chore: color tweak fix: hide edit button on server versions chore: translation * chore: code review changes chore: code review * sealed class * const constant * enum * concurrent queries * chore: major cleanup to use riverpod provider * fix: aspect ratio selection * chore: typesafe websocket event parsing * fix: wrong disable state for save button * chore: remove isCancelled shim * chore: cleanup postframe callback usage * chore: clean import --------- Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
41 lines
1.6 KiB
Dart
41 lines
1.6 KiB
Dart
import 'package:drift/drift.dart';
|
|
import 'package:immich_mobile/domain/models/asset_edit.model.dart';
|
|
import 'package:immich_mobile/extensions/object_extensions.dart';
|
|
import 'package:immich_mobile/infrastructure/entities/asset_edit.entity.drift.dart';
|
|
import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.dart';
|
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
|
import 'package:openapi/api.dart' hide AssetEditAction;
|
|
|
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_asset_edit_asset_id ON asset_edit_entity (asset_id)')
|
|
class AssetEditEntity extends Table with DriftDefaultsMixin {
|
|
const AssetEditEntity();
|
|
|
|
TextColumn get id => text()();
|
|
|
|
TextColumn get assetId => text().references(RemoteAssetEntity, #id, onDelete: KeyAction.cascade)();
|
|
|
|
IntColumn get action => intEnum<AssetEditAction>()();
|
|
|
|
BlobColumn get parameters => blob().map(editParameterConverter)();
|
|
|
|
IntColumn get sequence => integer()();
|
|
|
|
@override
|
|
Set<Column> get primaryKey => {id};
|
|
}
|
|
|
|
final JsonTypeConverter2<Map<String, Object?>, Uint8List, Object?> editParameterConverter = TypeConverter.jsonb(
|
|
fromJson: (json) => json as Map<String, Object?>,
|
|
);
|
|
|
|
extension AssetEditEntityDataDomainEx on AssetEditEntityData {
|
|
AssetEdit? toDto() {
|
|
return switch (action) {
|
|
AssetEditAction.crop => CropParameters.fromJson(parameters)?.let(CropEdit.new),
|
|
AssetEditAction.rotate => RotateParameters.fromJson(parameters)?.let(RotateEdit.new),
|
|
AssetEditAction.mirror => MirrorParameters.fromJson(parameters)?.let(MirrorEdit.new),
|
|
AssetEditAction.other => null,
|
|
};
|
|
}
|
|
}
|