mirror of
https://github.com/immich-app/immich.git
synced 2025-08-11 09:16:31 -04:00
* chore: bump dart sdk to 3.8 * chore: make build * make pigeon * chore: format files --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
52 lines
1.9 KiB
Dart
52 lines
1.9 KiB
Dart
import 'package:flutter/foundation.dart';
|
|
import 'package:immich_mobile/domain/models/user.model.dart';
|
|
import 'package:immich_mobile/infrastructure/repositories/partner.repository.dart';
|
|
import 'package:immich_mobile/repositories/partner_api.repository.dart';
|
|
|
|
class DriftPartnerService {
|
|
final DriftPartnerRepository _driftPartnerRepository;
|
|
final PartnerApiRepository _partnerApiRepository;
|
|
|
|
const DriftPartnerService(this._driftPartnerRepository, this._partnerApiRepository);
|
|
|
|
Future<List<PartnerUserDto>> getSharedWith(String userId) {
|
|
return _driftPartnerRepository.getSharedWith(userId);
|
|
}
|
|
|
|
Future<List<PartnerUserDto>> getSharedBy(String userId) {
|
|
return _driftPartnerRepository.getSharedBy(userId);
|
|
}
|
|
|
|
Future<List<PartnerUserDto>> getAvailablePartners(String currentUserId) async {
|
|
final otherUsers = await _driftPartnerRepository.getAvailablePartners(currentUserId);
|
|
final currentPartners = await _driftPartnerRepository.getSharedBy(currentUserId);
|
|
final available = otherUsers.where((user) {
|
|
return !currentPartners.any((partner) => partner.id == user.id);
|
|
}).toList();
|
|
|
|
return available;
|
|
}
|
|
|
|
Future<void> toggleShowInTimeline(String partnerId, String userId) async {
|
|
final partner = await _driftPartnerRepository.getPartner(partnerId, userId);
|
|
if (partner == null) {
|
|
debugPrint("Partner not found: $partnerId for user: $userId");
|
|
return;
|
|
}
|
|
|
|
await _partnerApiRepository.update(partnerId, inTimeline: !partner.inTimeline);
|
|
|
|
await _driftPartnerRepository.toggleShowInTimeline(partner, userId);
|
|
}
|
|
|
|
Future<void> addPartner(String partnerId, String userId) async {
|
|
await _partnerApiRepository.create(partnerId);
|
|
await _driftPartnerRepository.create(partnerId, userId);
|
|
}
|
|
|
|
Future<void> removePartner(String partnerId, String userId) async {
|
|
await _partnerApiRepository.delete(partnerId);
|
|
await _driftPartnerRepository.delete(partnerId, userId);
|
|
}
|
|
}
|