drift(mobile): drift auth user sync

This commit is contained in:
wuzihao051119
2025-07-25 12:28:02 +08:00
parent ad65e9011a
commit 4677ceb03c
69 changed files with 9116 additions and 1206 deletions
@@ -12,15 +12,15 @@ class DriftPartnerService {
this._partnerApiRepository,
);
Future<List<PartnerUserDto>> getSharedWith(String userId) {
Future<List<PartnerUser>> getSharedWith(String userId) {
return _driftPartnerRepository.getSharedWith(userId);
}
Future<List<PartnerUserDto>> getSharedBy(String userId) {
Future<List<PartnerUser>> getSharedBy(String userId) {
return _driftPartnerRepository.getSharedBy(userId);
}
Future<List<PartnerUserDto>> getAvailablePartners(
Future<List<PartnerUser>> getAvailablePartners(
String currentUserId,
) async {
final otherUsers = await _driftPartnerRepository.getAvailablePartners(currentUserId);
@@ -108,7 +108,7 @@ class RemoteAlbumService {
return _repository.getDateRange(albumId);
}
Future<List<UserDto>> getSharedUsers(String albumId) {
Future<List<User>> getSharedUsers(String albumId) {
return _repository.getSharedUsers(albumId);
}
@@ -25,7 +25,7 @@ class SyncStreamService {
bool get isCancelled => _cancelChecker?.call() ?? false;
Future<void> sync() {
_logger.info("Remote sync request for userr");
_logger.info("Remote sync request for user");
DLog.log("Remote sync request for user");
// Start the sync stream and handle events
return _syncApiRepository.streamChanges(_handleEvents);
@@ -120,6 +120,8 @@ class SyncStreamService {
) async {
_logger.fine("Processing sync data for $type of length ${data.length}");
switch (type) {
case SyncEntityType.authUserV1:
return _syncStreamRepository.updateAuthUsersV1(data.cast());
case SyncEntityType.userV1:
return _syncStreamRepository.updateUsersV1(data.cast());
case SyncEntityType.userDeleteV1:
@@ -1,8 +1,10 @@
import 'dart:async';
import 'dart:typed_data';
import 'package:immich_mobile/domain/models/setting.model.dart';
import 'package:immich_mobile/domain/models/store.model.dart';
import 'package:immich_mobile/domain/models/user.model.dart';
import 'package:immich_mobile/domain/services/setting.service.dart';
import 'package:immich_mobile/domain/services/store.service.dart';
import 'package:immich_mobile/infrastructure/repositories/user.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/user_api.repository.dart';
@@ -66,3 +68,28 @@ class UserService {
return _isarUserRepository.deleteAll();
}
}
class DriftUserService {
final DriftUserRepository _userRepository;
final SettingsService _settingsService;
const DriftUserService(
this._userRepository,
this._settingsService,
);
Future<User?> getMyUser() {
// TODO: Remove UserDto after new store
final isarCurrentUser = _settingsService.get(Setting.currentUser);
if (isarCurrentUser == null) {
throw Exception('User must be login');
}
return _userRepository.getById(isarCurrentUser.id);
}
Future<List<User>> getAll() {
return _userRepository.getAll();
}
}