feat: view shared links inside of mobile app

This commit is contained in:
bwees
2025-07-31 13:38:14 -05:00
parent f972b8d514
commit c8c6f86518
20 changed files with 434 additions and 61 deletions
@@ -1,7 +1,9 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/album/album.model.dart';
import 'package:immich_mobile/domain/models/album/shared_album.model.dart';
import 'package:immich_mobile/providers/api.provider.dart';
import 'package:immich_mobile/repositories/api.repository.dart';
import 'package:immich_mobile/repositories/asset_api.repository.dart';
// ignore: import_rule_openapi
import 'package:openapi/api.dart';
@@ -87,6 +89,11 @@ class DriftAlbumApiRepository extends ApiRepository {
final response = await checkNull(_api.addUsersToAlbum(albumId, AddUsersDto(albumUsers: albumUsers)));
return response.toRemoteAlbum();
}
Future<SharedRemoteAlbum?> getShared(String albumId) async {
final responseDto = await checkNull(_api.getAlbumInfo(albumId));
return responseDto.toSharedRemoteAlbum();
}
}
extension on AlbumResponseDto {
@@ -105,4 +112,21 @@ extension on AlbumResponseDto {
ownerName: owner.name,
);
}
SharedRemoteAlbum toSharedRemoteAlbum() {
return SharedRemoteAlbum(
id: id,
name: albumName,
ownerId: owner.id,
description: description,
createdAt: createdAt,
updatedAt: updatedAt,
thumbnailAssetId: albumThumbnailAssetId,
isActivityEnabled: isActivityEnabled,
order: order == AssetOrder.asc ? AlbumAssetOrder.asc : AlbumAssetOrder.desc,
assetCount: assetCount,
ownerName: owner.name,
assets: assets.map((e) => e.toDto()).toList(),
);
}
}