forked from Cutlery/immich
		
	* feat(server,web,mobile): Add optional password option for share links. Signed-off-by: jarvis2f <137974272+jarvis2f@users.noreply.github.com> * feat(server,web): Update shared-link.controller and page.svelte for improved cookie handling and metadata updates. Signed-off-by: jarvis2f <137974272+jarvis2f@users.noreply.github.com> --------- Signed-off-by: jarvis2f <137974272+jarvis2f@users.noreply.github.com>
		
			
				
	
	
		
			115 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:openapi/api.dart';
 | 
						|
 | 
						|
enum SharedLinkSource { album, individual }
 | 
						|
 | 
						|
class SharedLink {
 | 
						|
  final String id;
 | 
						|
  final String title;
 | 
						|
  final bool allowDownload;
 | 
						|
  final bool allowUpload;
 | 
						|
  final String? thumbAssetId;
 | 
						|
  final String? description;
 | 
						|
  final String? password;
 | 
						|
  final DateTime? expiresAt;
 | 
						|
  final String key;
 | 
						|
  final bool showMetadata;
 | 
						|
  final SharedLinkSource type;
 | 
						|
 | 
						|
  const SharedLink({
 | 
						|
    required this.id,
 | 
						|
    required this.title,
 | 
						|
    required this.allowDownload,
 | 
						|
    required this.allowUpload,
 | 
						|
    required this.thumbAssetId,
 | 
						|
    required this.description,
 | 
						|
    required this.password,
 | 
						|
    required this.expiresAt,
 | 
						|
    required this.key,
 | 
						|
    required this.showMetadata,
 | 
						|
    required this.type,
 | 
						|
  });
 | 
						|
 | 
						|
  SharedLink copyWith({
 | 
						|
    String? id,
 | 
						|
    String? title,
 | 
						|
    String? thumbAssetId,
 | 
						|
    bool? allowDownload,
 | 
						|
    bool? allowUpload,
 | 
						|
    String? description,
 | 
						|
    String? password,
 | 
						|
    DateTime? expiresAt,
 | 
						|
    String? key,
 | 
						|
    bool? showMetadata,
 | 
						|
    SharedLinkSource? type,
 | 
						|
  }) {
 | 
						|
    return SharedLink(
 | 
						|
      id: id ?? this.id,
 | 
						|
      title: title ?? this.title,
 | 
						|
      thumbAssetId: thumbAssetId ?? this.thumbAssetId,
 | 
						|
      allowDownload: allowDownload ?? this.allowDownload,
 | 
						|
      allowUpload: allowUpload ?? this.allowUpload,
 | 
						|
      description: description ?? this.description,
 | 
						|
      password: password ?? this.password,
 | 
						|
      expiresAt: expiresAt ?? this.expiresAt,
 | 
						|
      key: key ?? this.key,
 | 
						|
      showMetadata: showMetadata ?? this.showMetadata,
 | 
						|
      type: type ?? this.type,
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  SharedLink.fromDto(SharedLinkResponseDto dto)
 | 
						|
      : id = dto.id,
 | 
						|
        allowDownload = dto.allowDownload,
 | 
						|
        allowUpload = dto.allowUpload,
 | 
						|
        description = dto.description,
 | 
						|
        password = dto.password,
 | 
						|
        expiresAt = dto.expiresAt,
 | 
						|
        key = dto.key,
 | 
						|
        showMetadata = dto.showMetadata,
 | 
						|
        type = dto.type == SharedLinkType.ALBUM
 | 
						|
            ? SharedLinkSource.album
 | 
						|
            : SharedLinkSource.individual,
 | 
						|
        title = dto.type == SharedLinkType.ALBUM
 | 
						|
            ? dto.album?.albumName.toUpperCase() ?? "UNKNOWN SHARE"
 | 
						|
            : "INDIVIDUAL SHARE",
 | 
						|
        thumbAssetId = dto.type == SharedLinkType.ALBUM
 | 
						|
            ? dto.album?.albumThumbnailAssetId
 | 
						|
            : dto.assets.isNotEmpty
 | 
						|
                ? dto.assets[0].id
 | 
						|
                : null;
 | 
						|
 | 
						|
  @override
 | 
						|
  String toString() =>
 | 
						|
      'SharedLink(id=$id, title=$title, thumbAssetId=$thumbAssetId, allowDownload=$allowDownload, allowUpload=$allowUpload, description=$description, password=$password, expiresAt=$expiresAt, key=$key, showMetadata=$showMetadata, type=$type)';
 | 
						|
 | 
						|
  @override
 | 
						|
  bool operator ==(Object other) =>
 | 
						|
      identical(this, other) ||
 | 
						|
      other is SharedLink &&
 | 
						|
          other.id == id &&
 | 
						|
          other.title == title &&
 | 
						|
          other.thumbAssetId == thumbAssetId &&
 | 
						|
          other.allowDownload == allowDownload &&
 | 
						|
          other.allowUpload == allowUpload &&
 | 
						|
          other.description == description &&
 | 
						|
          other.password == password &&
 | 
						|
          other.expiresAt == expiresAt &&
 | 
						|
          other.key == key &&
 | 
						|
          other.showMetadata == showMetadata &&
 | 
						|
          other.type == type;
 | 
						|
 | 
						|
  @override
 | 
						|
  int get hashCode =>
 | 
						|
      id.hashCode ^
 | 
						|
      title.hashCode ^
 | 
						|
      thumbAssetId.hashCode ^
 | 
						|
      allowDownload.hashCode ^
 | 
						|
      allowUpload.hashCode ^
 | 
						|
      description.hashCode ^
 | 
						|
      password.hashCode ^
 | 
						|
      expiresAt.hashCode ^
 | 
						|
      key.hashCode ^
 | 
						|
      showMetadata.hashCode ^
 | 
						|
      type.hashCode;
 | 
						|
}
 |