Skip to content

Commit bce4f93

Browse files
authored
refactor(mobile): (1) user.interface.dart (#19322)
* refactor(mobile): user.interface.dart * generate files * refactor(mobile): (2) user_api.interface.dart (#19323) * refactor(mobile): (2) user_api.interface.dart * generate files * refactor(mobile): (3) sync_stream.interface.dart (#19325)
1 parent a4c0dc5 commit bce4f93

22 files changed

+82
-157
lines changed

mobile/lib/constants/enums.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ enum TextSearchType {
1010
}
1111

1212
enum AssetVisibilityEnum { timeline, hidden, archive, locked }
13+
14+
enum SortUserBy { id }

mobile/lib/domain/interfaces/sync_stream.interface.dart

Lines changed: 0 additions & 18 deletions
This file was deleted.

mobile/lib/domain/interfaces/user.interface.dart

Lines changed: 0 additions & 22 deletions
This file was deleted.

mobile/lib/domain/interfaces/user_api.interface.dart

Lines changed: 0 additions & 15 deletions
This file was deleted.

mobile/lib/domain/services/sync_stream.service.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
import 'dart:async';
22

33
import 'package:immich_mobile/domain/interfaces/sync_api.interface.dart';
4-
import 'package:immich_mobile/domain/interfaces/sync_stream.interface.dart';
54
import 'package:immich_mobile/domain/models/sync_event.model.dart';
5+
import 'package:immich_mobile/infrastructure/repositories/sync_stream.repository.dart';
66
import 'package:logging/logging.dart';
77
import 'package:openapi/api.dart';
88

99
class SyncStreamService {
1010
final Logger _logger = Logger('SyncStreamService');
1111

1212
final ISyncApiRepository _syncApiRepository;
13-
final ISyncStreamRepository _syncStreamRepository;
13+
final SyncStreamRepository _syncStreamRepository;
1414
final bool Function()? _cancelChecker;
1515

1616
SyncStreamService({
1717
required ISyncApiRepository syncApiRepository,
18-
required ISyncStreamRepository syncStreamRepository,
18+
required SyncStreamRepository syncStreamRepository,
1919
bool Function()? cancelChecker,
2020
}) : _syncApiRepository = syncApiRepository,
2121
_syncStreamRepository = syncStreamRepository,

mobile/lib/domain/services/user.service.dart

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
import 'dart:async';
22
import 'dart:typed_data';
33

4-
import 'package:immich_mobile/domain/interfaces/user.interface.dart';
5-
import 'package:immich_mobile/domain/interfaces/user_api.interface.dart';
64
import 'package:immich_mobile/domain/models/store.model.dart';
75
import 'package:immich_mobile/domain/models/user.model.dart';
86
import 'package:immich_mobile/domain/services/store.service.dart';
7+
import 'package:immich_mobile/infrastructure/repositories/user.repository.dart';
8+
import 'package:immich_mobile/infrastructure/repositories/user_api.repository.dart';
99
import 'package:logging/logging.dart';
1010

1111
class UserService {
1212
final Logger _log = Logger("UserService");
13-
final IUserRepository _userRepository;
14-
final IUserApiRepository _userApiRepository;
13+
final IsarUserRepository _isarUserRepository;
14+
final UserApiRepository _userApiRepository;
1515
final StoreService _storeService;
1616

1717
UserService({
18-
required IUserRepository userRepository,
19-
required IUserApiRepository userApiRepository,
18+
required IsarUserRepository isarUserRepository,
19+
required UserApiRepository userApiRepository,
2020
required StoreService storeService,
21-
}) : _userRepository = userRepository,
21+
}) : _isarUserRepository = isarUserRepository,
2222
_userApiRepository = userApiRepository,
2323
_storeService = storeService;
2424

@@ -38,7 +38,7 @@ class UserService {
3838
final user = await _userApiRepository.getMyUser();
3939
if (user == null) return null;
4040
await _storeService.put(StoreKey.currentUser, user);
41-
await _userRepository.update(user);
41+
await _isarUserRepository.update(user);
4242
return user;
4343
}
4444

@@ -50,7 +50,7 @@ class UserService {
5050
);
5151
final updatedUser = getMyUser().copyWith(profileImagePath: path);
5252
await _storeService.put(StoreKey.currentUser, updatedUser);
53-
await _userRepository.update(updatedUser);
53+
await _isarUserRepository.update(updatedUser);
5454
return path;
5555
} catch (e) {
5656
_log.warning("Failed to upload profile image", e);
@@ -59,10 +59,10 @@ class UserService {
5959
}
6060

6161
Future<List<UserDto>> getAll() async {
62-
return await _userRepository.getAll();
62+
return await _isarUserRepository.getAll();
6363
}
6464

6565
Future<void> deleteAll() {
66-
return _userRepository.deleteAll();
66+
return _isarUserRepository.deleteAll();
6767
}
6868
}

mobile/lib/infrastructure/repositories/sync_stream.repository.dart

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'package:drift/drift.dart';
2-
import 'package:immich_mobile/domain/interfaces/sync_stream.interface.dart';
32
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
43
import 'package:immich_mobile/infrastructure/entities/exif.entity.drift.dart';
54
import 'package:immich_mobile/infrastructure/entities/partner.entity.drift.dart';
@@ -10,14 +9,12 @@ import 'package:logging/logging.dart';
109
import 'package:openapi/api.dart' as api show AssetVisibility;
1110
import 'package:openapi/api.dart' hide AssetVisibility;
1211

13-
class DriftSyncStreamRepository extends DriftDatabaseRepository
14-
implements ISyncStreamRepository {
12+
class SyncStreamRepository extends DriftDatabaseRepository {
1513
final Logger _logger = Logger('DriftSyncStreamRepository');
1614
final Drift _db;
1715

18-
DriftSyncStreamRepository(super.db) : _db = db;
16+
SyncStreamRepository(super.db) : _db = db;
1917

20-
@override
2118
Future<void> deleteUsersV1(Iterable<SyncUserDeleteV1> data) async {
2219
try {
2320
await _db.batch((batch) {
@@ -34,7 +31,6 @@ class DriftSyncStreamRepository extends DriftDatabaseRepository
3431
}
3532
}
3633

37-
@override
3834
Future<void> updateUsersV1(Iterable<SyncUserV1> data) async {
3935
try {
4036
await _db.batch((batch) {
@@ -57,7 +53,6 @@ class DriftSyncStreamRepository extends DriftDatabaseRepository
5753
}
5854
}
5955

60-
@override
6156
Future<void> deletePartnerV1(Iterable<SyncPartnerDeleteV1> data) async {
6257
try {
6358
await _db.batch((batch) {
@@ -77,7 +72,6 @@ class DriftSyncStreamRepository extends DriftDatabaseRepository
7772
}
7873
}
7974

80-
@override
8175
Future<void> updatePartnerV1(Iterable<SyncPartnerV1> data) async {
8276
try {
8377
await _db.batch((batch) {
@@ -101,7 +95,6 @@ class DriftSyncStreamRepository extends DriftDatabaseRepository
10195
}
10296
}
10397

104-
@override
10598
Future<void> deleteAssetsV1(Iterable<SyncAssetDeleteV1> data) async {
10699
try {
107100
await _deleteAssetsV1(data);
@@ -111,7 +104,6 @@ class DriftSyncStreamRepository extends DriftDatabaseRepository
111104
}
112105
}
113106

114-
@override
115107
Future<void> updateAssetsV1(Iterable<SyncAssetV1> data) async {
116108
try {
117109
await _updateAssetsV1(data);
@@ -121,7 +113,6 @@ class DriftSyncStreamRepository extends DriftDatabaseRepository
121113
}
122114
}
123115

124-
@override
125116
Future<void> deletePartnerAssetsV1(Iterable<SyncAssetDeleteV1> data) async {
126117
try {
127118
await _deleteAssetsV1(data);
@@ -131,7 +122,6 @@ class DriftSyncStreamRepository extends DriftDatabaseRepository
131122
}
132123
}
133124

134-
@override
135125
Future<void> updatePartnerAssetsV1(Iterable<SyncAssetV1> data) async {
136126
try {
137127
await _updateAssetsV1(data);
@@ -141,7 +131,6 @@ class DriftSyncStreamRepository extends DriftDatabaseRepository
141131
}
142132
}
143133

144-
@override
145134
Future<void> updateAssetsExifV1(Iterable<SyncAssetExifV1> data) async {
146135
try {
147136
await _updateAssetExifV1(data);
@@ -151,7 +140,6 @@ class DriftSyncStreamRepository extends DriftDatabaseRepository
151140
}
152141
}
153142

154-
@override
155143
Future<void> updatePartnerAssetsExifV1(Iterable<SyncAssetExifV1> data) async {
156144
try {
157145
await _updateAssetExifV1(data);

mobile/lib/infrastructure/repositories/user.repository.dart

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,26 @@
1-
import 'package:immich_mobile/domain/interfaces/user.interface.dart';
1+
import 'package:immich_mobile/constants/enums.dart';
22
import 'package:immich_mobile/domain/models/user.model.dart';
33
import 'package:immich_mobile/infrastructure/entities/user.entity.dart'
44
as entity;
55
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
66
import 'package:isar/isar.dart';
77

8-
class IsarUserRepository extends IsarDatabaseRepository
9-
implements IUserRepository {
8+
class IsarUserRepository extends IsarDatabaseRepository {
109
final Isar _db;
1110
const IsarUserRepository(super.db) : _db = db;
1211

13-
@override
1412
Future<void> delete(List<String> ids) async {
1513
await transaction(() async {
1614
await _db.users.deleteAllById(ids);
1715
});
1816
}
1917

20-
@override
2118
Future<void> deleteAll() async {
2219
await transaction(() async {
2320
await _db.users.clear();
2421
});
2522
}
2623

27-
@override
2824
Future<List<UserDto>> getAll({SortUserBy? sortBy}) async {
2925
return (await _db.users
3026
.where()
@@ -39,33 +35,28 @@ class IsarUserRepository extends IsarDatabaseRepository
3935
.toList();
4036
}
4137

42-
@override
4338
Future<UserDto?> getByUserId(String id) async {
4439
return (await _db.users.getById(id))?.toDto();
4540
}
4641

47-
@override
4842
Future<List<UserDto?>> getByUserIds(List<String> ids) async {
4943
return (await _db.users.getAllById(ids)).map((u) => u?.toDto()).toList();
5044
}
5145

52-
@override
5346
Future<bool> insert(UserDto user) async {
5447
await transaction(() async {
5548
await _db.users.put(entity.User.fromDto(user));
5649
});
5750
return true;
5851
}
5952

60-
@override
6153
Future<UserDto> update(UserDto user) async {
6254
await transaction(() async {
6355
await _db.users.put(entity.User.fromDto(user));
6456
});
6557
return user;
6658
}
6759

68-
@override
6960
Future<bool> updateAll(List<UserDto> users) async {
7061
await transaction(() async {
7162
await _db.users.putAll(users.map(entity.User.fromDto).toList());

mobile/lib/infrastructure/repositories/user_api.repository.dart

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
import 'dart:typed_data';
22

33
import 'package:http/http.dart';
4-
import 'package:immich_mobile/domain/interfaces/user_api.interface.dart';
54
import 'package:immich_mobile/domain/models/user.model.dart';
65
import 'package:immich_mobile/infrastructure/repositories/api.repository.dart';
76
import 'package:immich_mobile/infrastructure/utils/user.converter.dart';
87
import 'package:openapi/api.dart';
98

10-
class UserApiRepository extends ApiRepository implements IUserApiRepository {
9+
class UserApiRepository extends ApiRepository {
1110
final UsersApi _api;
1211
const UserApiRepository(this._api);
1312

14-
@override
1513
Future<UserDto?> getMyUser() async {
1614
final (adminDto, preferenceDto) =
1715
await (_api.getMyUser(), _api.getMyPreferences()).wait;
@@ -20,7 +18,6 @@ class UserApiRepository extends ApiRepository implements IUserApiRepository {
2018
return UserConverter.fromAdminDto(adminDto, preferenceDto);
2119
}
2220

23-
@override
2421
Future<String> createProfileImage({
2522
required String name,
2623
required Uint8List data,
@@ -33,7 +30,6 @@ class UserApiRepository extends ApiRepository implements IUserApiRepository {
3330
return res.profileImagePath;
3431
}
3532

36-
@override
3733
Future<List<UserDto>> getAll() async {
3834
final dto = await checkNull(_api.searchUsers());
3935
return dto.map(UserConverter.fromSimpleUserDto).toList();

mobile/lib/providers/infrastructure/sync.provider.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ final syncApiRepositoryProvider = Provider(
2626
);
2727

2828
final syncStreamRepositoryProvider = Provider(
29-
(ref) => DriftSyncStreamRepository(ref.watch(driftProvider)),
29+
(ref) => SyncStreamRepository(ref.watch(driftProvider)),
3030
);
3131

3232
final localSyncServiceProvider = Provider(
Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
import 'package:hooks_riverpod/hooks_riverpod.dart';
2-
import 'package:immich_mobile/domain/interfaces/user.interface.dart';
3-
import 'package:immich_mobile/domain/interfaces/user_api.interface.dart';
42
import 'package:immich_mobile/domain/services/user.service.dart';
53
import 'package:immich_mobile/infrastructure/repositories/user.repository.dart';
64
import 'package:immich_mobile/infrastructure/repositories/user_api.repository.dart';
@@ -12,16 +10,16 @@ import 'package:riverpod_annotation/riverpod_annotation.dart';
1210
part 'user.provider.g.dart';
1311

1412
@Riverpod(keepAlive: true)
15-
IUserRepository userRepository(Ref ref) =>
13+
IsarUserRepository userRepository(Ref ref) =>
1614
IsarUserRepository(ref.watch(isarProvider));
1715

1816
@Riverpod(keepAlive: true)
19-
IUserApiRepository userApiRepository(Ref ref) =>
17+
UserApiRepository userApiRepository(Ref ref) =>
2018
UserApiRepository(ref.watch(apiServiceProvider).usersApi);
2119

2220
@Riverpod(keepAlive: true)
2321
UserService userService(Ref ref) => UserService(
24-
userRepository: ref.watch(userRepositoryProvider),
22+
isarUserRepository: ref.watch(userRepositoryProvider),
2523
userApiRepository: ref.watch(userApiRepositoryProvider),
2624
storeService: ref.watch(storeServiceProvider),
2725
);

0 commit comments

Comments
 (0)