chore: bump line length to 120 (#20191)

This commit is contained in:
shenlong
2025-07-25 08:07:22 +05:30
committed by GitHub
parent 977c9b96ba
commit ad65e9011a
517 changed files with 4520 additions and 9514 deletions
@@ -15,8 +15,7 @@ class ActivityApiRepository extends ApiRepository {
ActivityApiRepository(this._api);
Future<List<Activity>> getAll(String albumId, {String? assetId}) async {
final response =
await checkNull(_api.getActivities(albumId, assetId: assetId));
final response = await checkNull(_api.getActivities(albumId, assetId: assetId));
return response.map(_toActivity).toList();
}
@@ -28,9 +27,7 @@ class ActivityApiRepository extends ApiRepository {
}) async {
final dto = ActivityCreateDto(
albumId: albumId,
type: type == ActivityType.comment
? ReactionType.comment
: ReactionType.like,
type: type == ActivityType.comment ? ReactionType.comment : ReactionType.like,
assetId: assetId,
comment: comment,
);
@@ -43,17 +40,14 @@ class ActivityApiRepository extends ApiRepository {
}
Future<ActivityStats> getStats(String albumId, {String? assetId}) async {
final response =
await checkNull(_api.getActivityStatistics(albumId, assetId: assetId));
final response = await checkNull(_api.getActivityStatistics(albumId, assetId: assetId));
return ActivityStats(comments: response.comments);
}
static Activity _toActivity(ActivityResponseDto dto) => Activity(
id: dto.id,
createdAt: dto.createdAt,
type: dto.type == ReactionType.comment
? ActivityType.comment
: ActivityType.like,
type: dto.type == ReactionType.comment ? ActivityType.comment : ActivityType.like,
user: UserConverter.fromSimpleUserDto(dto.user),
assetId: dto.assetId,
comment: dto.comment,
+8 -18
View File
@@ -4,8 +4,7 @@ import 'package:immich_mobile/domain/models/user.model.dart';
import 'package:immich_mobile/entities/album.entity.dart';
import 'package:immich_mobile/entities/asset.entity.dart';
import 'package:immich_mobile/entities/store.entity.dart';
import 'package:immich_mobile/infrastructure/entities/user.entity.dart'
as entity;
import 'package:immich_mobile/infrastructure/entities/user.entity.dart' as entity;
import 'package:immich_mobile/models/albums/album_search.model.dart';
import 'package:immich_mobile/providers/db.provider.dart';
import 'package:immich_mobile/repositories/database.repository.dart';
@@ -14,8 +13,7 @@ import 'package:isar/isar.dart';
enum AlbumSort { remoteId, localId }
final albumRepositoryProvider =
Provider((ref) => AlbumRepository(ref.watch(dbProvider)));
final albumRepositoryProvider = Provider((ref) => AlbumRepository(ref.watch(dbProvider)));
class AlbumRepository extends DatabaseRepository {
const AlbumRepository(super.db);
@@ -75,8 +73,7 @@ class AlbumRepository extends DatabaseRepository {
} else {
afterWhere = baseQuery.localIdIsNotNull();
}
QueryBuilder<Album, Album, QAfterFilterCondition> filterQuery =
afterWhere.filter().noOp();
QueryBuilder<Album, Album, QAfterFilterCondition> filterQuery = afterWhere.filter().noOp();
if (shared != null) {
filterQuery = filterQuery.sharedEqualTo(true);
}
@@ -101,34 +98,27 @@ class AlbumRepository extends DatabaseRepository {
() => album.sharedUsers.update(unlink: users.map(entity.User.fromDto)),
);
Future<void> addAssets(Album album, List<Asset> assets) =>
txn(() => album.assets.update(link: assets));
Future<void> addAssets(Album album, List<Asset> assets) => txn(() => album.assets.update(link: assets));
Future<void> removeAssets(Album album, List<Asset> assets) =>
txn(() => album.assets.update(unlink: assets));
Future<void> removeAssets(Album album, List<Asset> assets) => txn(() => album.assets.update(unlink: assets));
Future<Album> recalculateMetadata(Album album) async {
album.startDate = await album.assets.filter().fileCreatedAtProperty().min();
album.endDate = await album.assets.filter().fileCreatedAtProperty().max();
album.lastModifiedAssetTimestamp =
await album.assets.filter().updatedAtProperty().max();
album.lastModifiedAssetTimestamp = await album.assets.filter().updatedAtProperty().max();
return album;
}
Future<void> addUsers(Album album, List<UserDto> users) =>
txn(() => album.sharedUsers.update(link: users.map(entity.User.fromDto)));
Future<void> deleteAllLocal() =>
txn(() => db.albums.where().localIdIsNotNull().deleteAll());
Future<void> deleteAllLocal() => txn(() => db.albums.where().localIdIsNotNull().deleteAll());
Future<List<Album>> search(
String searchTerm,
QuickFilterMode filterMode,
) async {
var query = db.albums
.filter()
.nameContains(searchTerm, caseSensitive: false)
.remoteIdIsNotNull();
var query = db.albums.filter().nameContains(searchTerm, caseSensitive: false).remoteIdIsNotNull();
final isarUserId = fastHash(Store.get(StoreKey.currentUser).id);
switch (filterMode) {
@@ -1,11 +1,9 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/constants/enums.dart';
import 'package:immich_mobile/domain/models/album/album.model.dart'
show AlbumAssetOrder, RemoteAlbum;
import 'package:immich_mobile/domain/models/album/album.model.dart' show AlbumAssetOrder, RemoteAlbum;
import 'package:immich_mobile/entities/album.entity.dart';
import 'package:immich_mobile/entities/asset.entity.dart';
import 'package:immich_mobile/infrastructure/entities/user.entity.dart'
as entity;
import 'package:immich_mobile/infrastructure/entities/user.entity.dart' as entity;
import 'package:immich_mobile/infrastructure/utils/user.converter.dart';
import 'package:immich_mobile/providers/api.provider.dart';
import 'package:immich_mobile/repositories/api.repository.dart';
@@ -150,8 +148,7 @@ class AlbumApiRepository extends ApiRepository {
}
Future<Album> addUsers(String albumId, Iterable<String> userIds) async {
final albumUsers =
userIds.map((userId) => AlbumUserAddDto(userId: userId)).toList();
final albumUsers = userIds.map((userId) => AlbumUserAddDto(userId: userId)).toList();
final response = await checkNull(
_api.addUsersToAlbum(
albumId,
@@ -180,11 +177,9 @@ class AlbumApiRepository extends ApiRepository {
sortOrder: dto.order == AssetOrder.asc ? SortOrder.asc : SortOrder.desc,
);
album.remoteAssetCount = dto.assetCount;
album.owner.value =
entity.User.fromDto(UserConverter.fromSimpleUserDto(dto.owner));
album.owner.value = entity.User.fromDto(UserConverter.fromSimpleUserDto(dto.owner));
album.remoteThumbnailAssetId = dto.albumThumbnailAssetId;
final users = dto.albumUsers
.map((albumUser) => UserConverter.fromSimpleUserDto(albumUser.user));
final users = dto.albumUsers.map((albumUser) => UserConverter.fromSimpleUserDto(albumUser.user));
album.sharedUsers.addAll(users.map(entity.User.fromDto));
final assets = dto.assets.map(Asset.remote).toList();
album.assets.addAll(assets);
@@ -202,9 +197,7 @@ class AlbumApiRepository extends ApiRepository {
updatedAt: dto.updatedAt,
thumbnailAssetId: dto.albumThumbnailAssetId,
isActivityEnabled: dto.isActivityEnabled,
order: dto.order == AssetOrder.asc
? AlbumAssetOrder.asc
: AlbumAssetOrder.desc,
order: dto.order == AssetOrder.asc ? AlbumAssetOrder.asc : AlbumAssetOrder.desc,
assetCount: dto.assetCount,
ownerName: dto.owner.name,
);
@@ -7,14 +7,12 @@ import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
import 'package:immich_mobile/repositories/asset_media.repository.dart';
import 'package:photo_manager/photo_manager.dart' hide AssetType;
final albumMediaRepositoryProvider =
Provider((ref) => const AlbumMediaRepository());
final albumMediaRepositoryProvider = Provider((ref) => const AlbumMediaRepository());
class AlbumMediaRepository {
const AlbumMediaRepository();
bool get useCustomFilter =>
Store.get(StoreKey.photoManagerCustomFilter, true);
bool get useCustomFilter => Store.get(StoreKey.photoManagerCustomFilter, true);
FilterOptionGroup? _getAlbumFilter({
DateTimeCond? updateTimeCond,
@@ -34,8 +32,7 @@ class AlbumMediaRepository {
),
containsPathModified: containsPathModified ?? false,
createTimeCond: DateTimeCond.def().copyWith(ignore: true),
updateTimeCond:
updateTimeCond ?? DateTimeCond.def().copyWith(ignore: true),
updateTimeCond: updateTimeCond ?? DateTimeCond.def().copyWith(ignore: true),
orders: orderBy ?? [],
)
: null;
@@ -51,16 +48,13 @@ class AlbumMediaRepository {
}
Future<List<String>> getAssetIds(String albumId) async {
final album =
await AssetPathEntity.fromId(albumId, filterOption: _getAlbumFilter());
final List<AssetEntity> assets =
await album.getAssetListRange(start: 0, end: 0x7fffffffffffffff);
final album = await AssetPathEntity.fromId(albumId, filterOption: _getAlbumFilter());
final List<AssetEntity> assets = await album.getAssetListRange(start: 0, end: 0x7fffffffffffffff);
return assets.map((e) => e.id).toList();
}
Future<int> getAssetCount(String albumId) async {
final album =
await AssetPathEntity.fromId(albumId, filterOption: _getAlbumFilter());
final album = await AssetPathEntity.fromId(albumId, filterOption: _getAlbumFilter());
return album.assetCountAsync;
}
@@ -81,14 +75,11 @@ class AlbumMediaRepository {
min: modifiedFrom ?? DateTime.utc(-271820),
max: modifiedUntil ?? DateTime.utc(275760),
),
orderBy: orderByModificationDate
? [const OrderOption(type: OrderOptionType.updateDate)]
: [],
orderBy: orderByModificationDate ? [const OrderOption(type: OrderOptionType.updateDate)] : [],
),
);
final List<AssetEntity> assets =
await onDevice.getAssetListRange(start: start, end: end);
final List<AssetEntity> assets = await onDevice.getAssetListRange(start: start, end: end);
return assets.map(AssetMediaRepository.toAsset).toList().cast();
}
@@ -103,10 +94,8 @@ class AlbumMediaRepository {
static Album _toAlbum(AssetPathEntity assetPathEntity) {
final Album album = Album(
name: assetPathEntity.name,
createdAt:
assetPathEntity.lastModified?.toUtc() ?? DateTime.now().toUtc(),
modifiedAt:
assetPathEntity.lastModified?.toUtc() ?? DateTime.now().toUtc(),
createdAt: assetPathEntity.lastModified?.toUtc() ?? DateTime.now().toUtc(),
modifiedAt: assetPathEntity.lastModified?.toUtc() ?? DateTime.now().toUtc(),
shared: false,
activityEnabled: false,
);
+16 -39
View File
@@ -11,8 +11,7 @@ import 'package:isar/isar.dart';
enum AssetSort { checksum, ownerIdChecksum }
final assetRepositoryProvider =
Provider((ref) => AssetRepository(ref.watch(dbProvider)));
final assetRepositoryProvider = Provider((ref) => AssetRepository(ref.watch(dbProvider)));
class AssetRepository extends DatabaseRepository {
const AssetRepository(super.db);
@@ -29,8 +28,7 @@ class AssetRepository extends DatabaseRepository {
if (notOwnedBy.length == 1) {
query = query.not().ownerIdEqualTo(isarUserIds.first);
} else if (notOwnedBy.isNotEmpty) {
query =
query.not().anyOf(isarUserIds, (q, int id) => q.ownerIdEqualTo(id));
query = query.not().anyOf(isarUserIds, (q, int id) => q.ownerIdEqualTo(id));
}
if (ownerId != null) {
query = query.ownerIdEqualTo(fastHash(ownerId));
@@ -44,8 +42,7 @@ class AssetRepository extends DatabaseRepository {
};
}
final QueryBuilder<Asset, Asset, QAfterSortBy> sortedQuery =
switch (sortBy) {
final QueryBuilder<Asset, Asset, QAfterSortBy> sortedQuery = switch (sortBy) {
null => query.noOp(),
AssetSort.checksum => query.sortByChecksum(),
AssetSort.ownerIdChecksum => query.sortByOwnerId().thenByChecksum(),
@@ -93,31 +90,18 @@ class AssetRepository extends DatabaseRepository {
}) {
final baseQuery = db.assets.where();
final isarUserIds = fastHash(ownerId);
final QueryBuilder<Asset, Asset, QAfterFilterCondition> filteredQuery =
switch (state) {
final QueryBuilder<Asset, Asset, QAfterFilterCondition> filteredQuery = switch (state) {
null => baseQuery.ownerIdEqualToAnyChecksum(isarUserIds).noOp(),
AssetState.local => baseQuery
.remoteIdIsNull()
.filter()
.localIdIsNotNull()
.ownerIdEqualTo(isarUserIds),
AssetState.remote => baseQuery
.localIdIsNull()
.filter()
.remoteIdIsNotNull()
.ownerIdEqualTo(isarUserIds),
AssetState.merged => baseQuery
.ownerIdEqualToAnyChecksum(isarUserIds)
.filter()
.remoteIdIsNotNull()
.localIdIsNotNull(),
AssetState.local => baseQuery.remoteIdIsNull().filter().localIdIsNotNull().ownerIdEqualTo(isarUserIds),
AssetState.remote => baseQuery.localIdIsNull().filter().remoteIdIsNotNull().ownerIdEqualTo(isarUserIds),
AssetState.merged =>
baseQuery.ownerIdEqualToAnyChecksum(isarUserIds).filter().remoteIdIsNotNull().localIdIsNotNull(),
};
final QueryBuilder<Asset, Asset, QAfterSortBy> query = switch (sortBy) {
null => filteredQuery.noOp(),
AssetSort.checksum => filteredQuery.sortByChecksum(),
AssetSort.ownerIdChecksum =>
filteredQuery.sortByOwnerId().thenByChecksum(),
AssetSort.ownerIdChecksum => filteredQuery.sortByOwnerId().thenByChecksum(),
};
return limit == null ? query.findAll() : query.limit(limit).findAll();
@@ -135,15 +119,11 @@ class AssetRepository extends DatabaseRepository {
int limit = 100,
}) {
final baseQuery = db.assets.where();
final QueryBuilder<Asset, Asset, QAfterFilterCondition> query =
switch (state) {
final QueryBuilder<Asset, Asset, QAfterFilterCondition> query = switch (state) {
null => baseQuery.noOp(),
AssetState.local =>
baseQuery.remoteIdIsNull().filter().localIdIsNotNull(),
AssetState.remote =>
baseQuery.localIdIsNull().filter().remoteIdIsNotNull(),
AssetState.merged =>
baseQuery.localIdIsNotNull().filter().remoteIdIsNotNull(),
AssetState.local => baseQuery.remoteIdIsNull().filter().localIdIsNotNull(),
AssetState.remote => baseQuery.localIdIsNull().filter().remoteIdIsNotNull(),
AssetState.merged => baseQuery.localIdIsNotNull().filter().remoteIdIsNotNull(),
};
return _getMatchesImpl(query, fastHash(ownerId), assets, limit);
}
@@ -154,12 +134,10 @@ class AssetRepository extends DatabaseRepository {
}
Future<void> upsertDuplicatedAssets(Iterable<String> duplicatedAssets) => txn(
() => db.duplicatedAssets
.putAll(duplicatedAssets.map(DuplicatedAsset.new).toList()),
() => db.duplicatedAssets.putAll(duplicatedAssets.map(DuplicatedAsset.new).toList()),
);
Future<List<String>> getAllDuplicatedAssetIds() =>
db.duplicatedAssets.where().idProperty().findAll();
Future<List<String>> getAllDuplicatedAssetIds() => db.duplicatedAssets.where().idProperty().findAll();
Future<Asset?> getByOwnerIdChecksum(int ownerId, String checksum) =>
db.assets.getByOwnerIdChecksum(ownerId, checksum);
@@ -170,8 +148,7 @@ class AssetRepository extends DatabaseRepository {
) =>
db.assets.getAllByOwnerIdChecksum(ownerIds, checksums);
Future<List<Asset>> getAllLocal() =>
db.assets.where().localIdIsNotNull().findAll();
Future<List<Asset>> getAllLocal() => db.assets.where().localIdIsNotNull().findAll();
Future<void> deleteAllByRemoteId(List<String> ids, {AssetState? state}) =>
txn(() => _getAllByRemoteIdImpl(ids, state).deleteAll());
@@ -99,8 +99,7 @@ class AssetApiRepository extends ApiRepository {
}
Future<StackResponse> stack(List<String> ids) async {
final responseDto =
await checkNull(_stacksApi.createStack(StackCreateDto(assetIds: ids)));
final responseDto = await checkNull(_stacksApi.createStack(StackCreateDto(assetIds: ids)));
return responseDto.toStack();
}
@@ -24,8 +24,7 @@ class AssetMediaRepository {
const AssetMediaRepository(this._assetApiRepository);
Future<List<String>> deleteAll(List<String> ids) =>
PhotoManager.editor.deleteWithIds(ids);
Future<List<String>> deleteAll(List<String> ids) => PhotoManager.editor.deleteWithIds(ids);
Future<asset_entity.Asset?> get(String id) async {
final entity = await AssetEntity.fromId(id);
@@ -52,8 +51,7 @@ class AssetMediaRepository {
asset.fileCreatedAt = asset.fileModifiedAt;
}
if (local.latitude != null) {
asset.exifInfo =
ExifInfo(latitude: local.latitude, longitude: local.longitude);
asset.exifInfo = ExifInfo(latitude: local.latitude, longitude: local.longitude);
}
asset.local = local;
return asset;
@@ -82,9 +80,7 @@ class AssetMediaRepository {
? asset.localId
: null;
if (localId != null) {
File? f =
await AssetEntity(id: localId, width: 1, height: 1, typeInt: 0)
.originFile;
File? f = await AssetEntity(id: localId, width: 1, height: 1, typeInt: 0).originFile;
downloadedXFiles.add(XFile(f!.path));
} else if (asset is RemoteAsset) {
final tempDir = await getTemporaryDirectory();
@@ -119,8 +115,6 @@ class AssetMediaRepository {
_log.warning("Failed to delete temporary file: ${file.path}", e);
}
}
return result.status == ShareResultStatus.success
? downloadedXFiles.length
: 0;
return result.status == ShareResultStatus.success ? downloadedXFiles.length : 0;
}
}
+1 -2
View File
@@ -80,8 +80,7 @@ class AuthRepository extends DatabaseRepository {
}
final List<dynamic> jsonList = jsonDecode(jsonString);
final endpointList =
jsonList.map((e) => AuxilaryEndpoint.fromJson(e)).toList();
final endpointList = jsonList.map((e) => AuxilaryEndpoint.fromJson(e)).toList();
return endpointList;
}
@@ -5,8 +5,7 @@ import 'package:immich_mobile/repositories/api.repository.dart';
import 'package:immich_mobile/services/api.service.dart';
import 'package:openapi/api.dart';
final authApiRepositoryProvider =
Provider((ref) => AuthApiRepository(ref.watch(apiServiceProvider)));
final authApiRepositoryProvider = Provider((ref) => AuthApiRepository(ref.watch(apiServiceProvider)));
class AuthApiRepository extends ApiRepository {
final ApiService _apiService;
@@ -35,9 +34,7 @@ class AuthApiRepository extends ApiRepository {
}
Future<void> logout() async {
await _apiService.authenticationApi
.logout()
.timeout(const Duration(seconds: 7));
await _apiService.authenticationApi.logout().timeout(const Duration(seconds: 7));
}
_mapLoginReponse(LoginResponseDto dto) {
@@ -54,8 +51,7 @@ class AuthApiRepository extends ApiRepository {
Future<bool> unlockPinCode(String pinCode) async {
try {
await _apiService.authenticationApi
.unlockAuthSession(SessionUnlockDto(pinCode: pinCode));
await _apiService.authenticationApi.unlockAuthSession(SessionUnlockDto(pinCode: pinCode));
return true;
} catch (_) {
return false;
@@ -63,8 +59,7 @@ class AuthApiRepository extends ApiRepository {
}
Future<void> setupPinCode(String pinCode) {
return _apiService.authenticationApi
.setupPinCode(PinCodeSetupDto(pinCode: pinCode));
return _apiService.authenticationApi.setupPinCode(PinCodeSetupDto(pinCode: pinCode));
}
Future<void> lockPinCode() {
@@ -6,16 +6,14 @@ import 'package:isar/isar.dart';
enum BackupAlbumSort { id }
final backupAlbumRepositoryProvider =
Provider((ref) => BackupAlbumRepository(ref.watch(dbProvider)));
final backupAlbumRepositoryProvider = Provider((ref) => BackupAlbumRepository(ref.watch(dbProvider)));
class BackupAlbumRepository extends DatabaseRepository {
const BackupAlbumRepository(super.db);
Future<List<BackupAlbum>> getAll({BackupAlbumSort? sort}) {
final baseQuery = db.backupAlbums.where();
final QueryBuilder<BackupAlbum, BackupAlbum, QAfterSortBy> query =
switch (sort) {
final QueryBuilder<BackupAlbum, BackupAlbum, QAfterSortBy> query = switch (sort) {
null => baseQuery.noOp(),
BackupAlbumSort.id => baseQuery.sortById(),
};
@@ -28,9 +26,7 @@ class BackupAlbumRepository extends DatabaseRepository {
Future<List<BackupAlbum>> getAllBySelection(BackupSelection backup) =>
db.backupAlbums.filter().selectionEqualTo(backup).findAll();
Future<void> deleteAll(List<int> ids) =>
txn(() => db.backupAlbums.deleteAll(ids));
Future<void> deleteAll(List<int> ids) => txn(() => db.backupAlbums.deleteAll(ids));
Future<void> updateAll(List<BackupAlbum> backupAlbums) =>
txn(() => db.backupAlbums.putAll(backupAlbums));
Future<void> updateAll(List<BackupAlbum> backupAlbums) => txn(() => db.backupAlbums.putAll(backupAlbums));
}
@@ -3,8 +3,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/models/auth/biometric_status.model.dart';
import 'package:local_auth/local_auth.dart';
final biometricRepositoryProvider =
Provider((ref) => BiometricRepository(LocalAuthentication()));
final biometricRepositoryProvider = Provider((ref) => BiometricRepository(LocalAuthentication()));
class BiometricRepository {
final LocalAuthentication _localAuth;
@@ -12,10 +11,8 @@ class BiometricRepository {
const BiometricRepository(this._localAuth);
Future<BiometricStatus> getStatus() async {
final bool canAuthenticateWithBiometrics =
await _localAuth.canCheckBiometrics;
final bool canAuthenticate =
canAuthenticateWithBiometrics || await _localAuth.isDeviceSupported();
final bool canAuthenticateWithBiometrics = await _localAuth.canCheckBiometrics;
final bool canAuthenticate = canAuthenticateWithBiometrics || await _localAuth.isDeviceSupported();
final availableBiometric = await _localAuth.getAvailableBiometrics();
return BiometricStatus(
@@ -11,12 +11,10 @@ abstract class DatabaseRepository implements IDatabaseRepository {
bool get inTxn => Zone.current[_zoneTxn] != null;
Future<T> txn<T>(Future<T> Function() callback) =>
inTxn ? callback() : transaction(callback);
Future<T> txn<T>(Future<T> Function() callback) => inTxn ? callback() : transaction(callback);
@override
Future<T> transaction<T>(Future<T> Function() callback) =>
db.writeTxn(callback);
Future<T> transaction<T>(Future<T> Function() callback) => db.writeTxn(callback);
}
extension Asd<T> on QueryBuilder<T, dynamic, dynamic> {
@@ -122,9 +122,7 @@ class DownloadRepository {
taskId: livePhotoVideoId,
url: url,
headers: headers,
filename: asset.name
.toUpperCase()
.replaceAll(RegExp(r"\.(JPG|HEIC)$"), '.MOV'),
filename: asset.name.toUpperCase().replaceAll(RegExp(r"\.(JPG|HEIC)$"), '.MOV'),
updates: Updates.statusAndProgress,
group: kDownloadGroupLivePhoto,
metaData: json.encode(_dummyMetadata),
@@ -85,8 +85,7 @@ class DriftAlbumApiRepository extends ApiRepository {
}) async {
AssetOrder? apiOrder;
if (order != null) {
apiOrder =
order == AlbumAssetOrder.asc ? AssetOrder.asc : AssetOrder.desc;
apiOrder = order == AlbumAssetOrder.asc ? AssetOrder.asc : AssetOrder.desc;
}
final responseDto = await checkNull(
@@ -113,8 +112,7 @@ class DriftAlbumApiRepository extends ApiRepository {
String albumId,
Iterable<String> userIds,
) async {
final albumUsers =
userIds.map((userId) => AlbumUserAddDto(userId: userId)).toList();
final albumUsers = userIds.map((userId) => AlbumUserAddDto(userId: userId)).toList();
final response = await checkNull(
_api.addUsersToAlbum(
albumId,
@@ -136,8 +134,7 @@ extension on AlbumResponseDto {
updatedAt: updatedAt,
thumbnailAssetId: albumThumbnailAssetId,
isActivityEnabled: isActivityEnabled,
order:
order == AssetOrder.asc ? AlbumAssetOrder.asc : AlbumAssetOrder.desc,
order: order == AssetOrder.asc ? AlbumAssetOrder.asc : AlbumAssetOrder.desc,
assetCount: assetCount,
ownerName: owner.name,
);
+2 -4
View File
@@ -4,8 +4,7 @@ import 'package:immich_mobile/providers/db.provider.dart';
import 'package:immich_mobile/repositories/database.repository.dart';
import 'package:isar/isar.dart';
final etagRepositoryProvider =
Provider((ref) => ETagRepository(ref.watch(dbProvider)));
final etagRepositoryProvider = Provider((ref) => ETagRepository(ref.watch(dbProvider)));
class ETagRepository extends DatabaseRepository {
const ETagRepository(super.db);
@@ -16,8 +15,7 @@ class ETagRepository extends DatabaseRepository {
Future<void> upsertAll(List<ETag> etags) => txn(() => db.eTags.putAll(etags));
Future<void> deleteByIds(List<String> ids) =>
txn(() => db.eTags.deleteAllById(ids));
Future<void> deleteByIds(List<String> ids) => txn(() => db.eTags.deleteAllById(ids));
Future<ETag?> getById(String id) => db.eTags.getById(id);
@@ -6,8 +6,7 @@ import 'package:immich_mobile/entities/asset.entity.dart';
import 'package:immich_mobile/repositories/asset_media.repository.dart';
import 'package:photo_manager/photo_manager.dart' hide AssetType;
final fileMediaRepositoryProvider =
Provider((ref) => const FileMediaRepository());
final fileMediaRepositoryProvider = Provider((ref) => const FileMediaRepository());
class FileMediaRepository {
const FileMediaRepository();
@@ -66,9 +65,7 @@ class FileMediaRepository {
Future<void> clearFileCache() => PhotoManager.clearFileCache();
Future<void> enableBackgroundAccess() =>
PhotoManager.setIgnorePermissionCheck(true);
Future<void> enableBackgroundAccess() => PhotoManager.setIgnorePermissionCheck(true);
Future<void> requestExtendedPermissions() =>
PhotoManager.requestPermissionExtend();
Future<void> requestExtendedPermissions() => PhotoManager.requestPermissionExtend();
}
@@ -69,7 +69,6 @@ class GCastRepository {
}
Future<List<CastDevice>> listDestinations() async {
return await CastDiscoveryService()
.search(timeout: const Duration(seconds: 3));
return await CastDiscoveryService().search(timeout: const Duration(seconds: 3));
}
}
@@ -2,8 +2,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/services/local_files_manager.service.dart';
final localFilesManagerRepositoryProvider = Provider(
(ref) =>
LocalFilesManagerRepository(ref.watch(localFileManagerServiceProvider)),
(ref) => LocalFilesManagerRepository(ref.watch(localFileManagerServiceProvider)),
);
class LocalFilesManagerRepository {
@@ -1,7 +1,6 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/user.model.dart';
import 'package:immich_mobile/infrastructure/entities/user.entity.dart'
as entity;
import 'package:immich_mobile/infrastructure/entities/user.entity.dart' as entity;
import 'package:immich_mobile/providers/db.provider.dart';
import 'package:immich_mobile/repositories/database.repository.dart';
import 'package:isar/isar.dart';
@@ -14,21 +13,11 @@ class PartnerRepository extends DatabaseRepository {
const PartnerRepository(super.db);
Future<List<UserDto>> getSharedBy() async {
return (await db.users
.filter()
.isPartnerSharedByEqualTo(true)
.sortById()
.findAll())
.map((u) => u.toDto())
.toList();
return (await db.users.filter().isPartnerSharedByEqualTo(true).sortById().findAll()).map((u) => u.toDto()).toList();
}
Future<List<UserDto>> getSharedWith() async {
return (await db.users
.filter()
.isPartnerSharedWithEqualTo(true)
.sortById()
.findAll())
return (await db.users.filter().isPartnerSharedWithEqualTo(true).sortById().findAll())
.map((u) => u.toDto())
.toList();
}
@@ -39,11 +28,7 @@ class PartnerRepository extends DatabaseRepository {
}
Stream<List<UserDto>> watchSharedWith() {
return (db.users
.filter()
.isPartnerSharedWithEqualTo(true)
.sortById()
.watch())
return (db.users.filter().isPartnerSharedWithEqualTo(true).sortById().watch())
.map((users) => users.map((u) => u.toDto()).toList());
}
}
@@ -24,9 +24,7 @@ class PartnerApiRepository extends ApiRepository {
Future<List<UserDto>> getAll(Direction direction) async {
final response = await checkNull(
_api.getPartners(
direction == Direction.sharedByMe
? PartnerDirection.by
: PartnerDirection.with_,
direction == Direction.sharedByMe ? PartnerDirection.by : PartnerDirection.with_,
),
);
return response.map(UserConverter.fromPartnerDto).toList();
@@ -1,8 +1,7 @@
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
final secureStorageRepositoryProvider =
Provider((ref) => const SecureStorageRepository(FlutterSecureStorage()));
final secureStorageRepositoryProvider = Provider((ref) => const SecureStorageRepository(FlutterSecureStorage()));
class SecureStorageRepository {
final FlutterSecureStorage _secureStorage;
@@ -9,30 +9,17 @@ import 'package:immich_mobile/utils/hash.dart';
import 'package:immich_mobile/widgets/asset_grid/asset_grid_data_structure.dart';
import 'package:isar/isar.dart';
final timelineRepositoryProvider =
Provider((ref) => TimelineRepository(ref.watch(dbProvider)));
final timelineRepositoryProvider = Provider((ref) => TimelineRepository(ref.watch(dbProvider)));
class TimelineRepository extends DatabaseRepository {
const TimelineRepository(super.db);
Future<List<String>> getTimelineUserIds(String id) {
return db.users
.filter()
.inTimelineEqualTo(true)
.or()
.idEqualTo(id)
.idProperty()
.findAll();
return db.users.filter().inTimelineEqualTo(true).or().idEqualTo(id).idProperty().findAll();
}
Stream<List<String>> watchTimelineUsers(String id) {
return db.users
.filter()
.inTimelineEqualTo(true)
.or()
.idEqualTo(id)
.idProperty()
.watch();
return db.users.filter().inTimelineEqualTo(true).or().idEqualTo(id).idProperty().watch();
}
Stream<RenderList> watchArchiveTimeline(String userId) {
@@ -65,11 +52,7 @@ class TimelineRepository extends DatabaseRepository {
Album album,
GroupAssetsBy groupAssetByOption,
) {
final query = album.assets
.filter()
.isTrashedEqualTo(false)
.not()
.visibilityEqualTo(AssetVisibilityEnum.locked);
final query = album.assets.filter().isTrashedEqualTo(false).not().visibilityEqualTo(AssetVisibilityEnum.locked);
final withSortedOption = switch (album.sortOrder) {
SortOrder.asc => query.sortByFileCreatedAt(),
@@ -80,11 +63,7 @@ class TimelineRepository extends DatabaseRepository {
}
Stream<RenderList> watchTrashTimeline(String userId) {
final query = db.assets
.filter()
.ownerIdEqualTo(fastHash(userId))
.isTrashedEqualTo(true)
.sortByFileCreatedAtDesc();
final query = db.assets.filter().ownerIdEqualTo(fastHash(userId)).isTrashedEqualTo(true).sortByFileCreatedAtDesc();
return _watchRenderList(query, GroupAssetsBy.none);
}