chore: impl suggestions

This commit is contained in:
Yaros
2026-04-30 20:19:25 +02:00
parent a151ebc26d
commit daa81de3e9
6 changed files with 15 additions and 12 deletions
@@ -1,13 +1,15 @@
import 'package:immich_mobile/domain/models/ocr.model.dart';
import 'package:immich_mobile/infrastructure/entities/asset_ocr.entity.drift.dart';
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
import 'package:drift/drift.dart';
class OcrRepository extends DriftDatabaseRepository {
final Drift _db;
const OcrRepository(this._db) : super(_db);
Future<List<Ocr>?> get(String assetId) async {
final query = _db.select(_db.assetOcrEntity)..where((row) => row.assetId.equals(assetId));
Future<List<Ocr>> get(String assetId) async {
final query = _db.select(_db.assetOcrEntity)
..where((row) => row.assetId.equals(assetId) & row.isVisible.equals(true));
final result = await query.get();
return result.map((e) => e.toDto()).toList();
@@ -69,7 +69,7 @@ class SyncApiRepository {
SyncRequestType.peopleV1,
if (serverVersion < const SemVer(major: 2, minor: 6, patch: 0)) SyncRequestType.assetFacesV1,
if (serverVersion >= const SemVer(major: 2, minor: 6, patch: 0)) SyncRequestType.assetFacesV2,
if (serverVersion >= const SemVer(major: 3, minor: 0, patch: 0)) SyncRequestType.assetOcrV1,
SyncRequestType.assetOcrV1,
],
reset: shouldReset,
).toJson(),
@@ -804,7 +804,6 @@ class SyncStreamRepository extends DriftDatabaseRepository {
await _db.batch((batch) {
for (final assetOcr in data) {
final companion = AssetOcrEntityCompanion(
id: Value(assetOcr.id),
assetId: Value(assetOcr.assetId),
recognizedText: Value(assetOcr.text),
x1: Value(assetOcr.x1),
@@ -1,9 +1,11 @@
import 'dart:async';
import 'dart:math' as math;
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
import 'package:immich_mobile/domain/models/ocr.model.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/providers/infrastructure/ocr.provider.dart';
import 'package:immich_mobile/widgets/photo_view/photo_view.dart';
@@ -185,7 +187,7 @@ class _OcrOverlayState extends ConsumerState<OcrOverlay> {
Offset(x4 - minX, y4 - minY),
],
isSelected: isSelected,
context: context,
colorScheme: context.themeData.colorScheme,
),
size: Size(maxX - minX, maxY - minY),
),
@@ -243,19 +245,19 @@ class _OcrOverlayState extends ConsumerState<OcrOverlay> {
class _OcrBoxPainter extends CustomPainter {
final List<Offset> points;
final bool isSelected;
final BuildContext context;
final ColorScheme colorScheme;
const _OcrBoxPainter({required this.points, required this.isSelected, required this.context});
const _OcrBoxPainter({required this.points, required this.isSelected, required this.colorScheme});
@override
void paint(Canvas canvas, Size size) {
final paint = Paint()
..color = isSelected ? Colors.blue : Colors.lightBlue
..color = isSelected ? colorScheme.primary : colorScheme.secondary
..style = PaintingStyle.stroke
..strokeWidth = 2.0;
final fillPaint = Paint()
..color = (isSelected ? Colors.blue : Colors.lightBlue).withValues(alpha: 0.1)
..color = (isSelected ? colorScheme.primary : colorScheme.secondary).withValues(alpha: 0.1)
..style = PaintingStyle.fill;
final path = Path()
@@ -271,6 +273,6 @@ class _OcrBoxPainter extends CustomPainter {
@override
bool shouldRepaint(_OcrBoxPainter oldDelegate) {
return oldDelegate.isSelected != isSelected || oldDelegate.points != points;
return oldDelegate.isSelected != isSelected || listEquals(oldDelegate.points, points);
}
}
@@ -90,7 +90,7 @@ class AssetViewerStateNotifier extends Notifier<AssetViewerState> {
void setAsset(BaseAsset asset) {
if (asset == state.currentAsset) return;
state = state.copyWith(currentAsset: asset, stackIndex: 0);
state = state.copyWith(currentAsset: asset, stackIndex: 0, showingOcr: false);
}
void setOpacity(double opacity) {
@@ -8,7 +8,7 @@ final ocrRepositoryProvider = Provider<OcrRepository>((ref) => OcrRepository(ref
final ocrServiceProvider = Provider<OcrService>((ref) => OcrService(ref.watch(ocrRepositoryProvider)));
final ocrAssetProvider = FutureProvider.family<List<Ocr>?, String>((ref, assetId) async {
final ocrAssetProvider = FutureProvider.autoDispose.family<List<Ocr>?, String>((ref, assetId) async {
final service = ref.watch(ocrServiceProvider);
return service.get(assetId);
});