diff --git a/assets/i18n/en-US.json b/assets/i18n/en-US.json index 2f683cba..7c5f4a94 100644 --- a/assets/i18n/en-US.json +++ b/assets/i18n/en-US.json @@ -264,14 +264,14 @@ "createStickerPack": "Create a Sticker Pack", "editStickerPack": "Edit Sticker Pack", "deleteStickerPack": "Delete Sticker Pack", - "deleteStickerPackHint": "Are you sure to delete this sticker pack? This action cannot be undone.", + "deleteStickerPackHint": "Are you sure you want to delete this sticker pack? This action cannot be undone.", "stickerPackPrefix": "Prefix", "stickerPackPrefixHint": "The prefix will be added before each stickers' slug in this pack.", "stickers": "Stickers", "createSticker": "Create a Sticker", "editSticker": "Edit Sticker", "deleteSticker": "Delete Sticker", - "deleteStickerHint": "Are you sure to delete this sticker? This action cannot be undone.", + "deleteStickerHint": "Are you sure you want to delete this sticker? This action cannot be undone.", "stickerImage": "Image", "stickerSlug": "Slug", "stickerSlugHint": "The slug will be combined with the prefix to form the sticker's unique identifier.", @@ -350,11 +350,11 @@ "levelingStage12": "Transcendent", "fileUploadingProgress": "Uploading file #{}: {}%", "removeChatMember": "Remove Chat Room Member", - "removeChatMemberHint": "Are you sure to remove this member from the room?", + "removeChatMemberHint": "Are you sure you want to remove this member from the room?", "removeRealmMember": "Remove Realm Member", - "removeRealmMemberHint": "Are you sure to remove this member from the realm?", + "removeRealmMemberHint": "Are you sure you want to remove this member from the realm?", "removePublisherMember": "Remove Publisher Member", - "removePublisherMemberHint": "Are you sure to remove this member from the publisher?", + "removePublisherMemberHint": "Are you sure you want to remove this member from the publisher?", "memberRole": "Member Role", "memberRoleHint": "Greater number has higher permission.", "memberRoleEdit": "Edit role for @{}", @@ -363,9 +363,9 @@ "brokenLink": "Unable open link {}... It might be broken or missing uri parts...", "copyToClipboard": "Copy to clipboard", "leaveChatRoom": "Leave Chat Room", - "leaveChatRoomHint": "Are you sure to leave this chat room?", + "leaveChatRoomHint": "Are you sure you want to leave this chat room?", "leaveRealm": "Leave Realm", - "leaveRealmHint": "Are you sure to leave this realm?", + "leaveRealmHint": "Are you sure you want to leave this realm?", "walletNotFound": "Wallet not found", "walletCreateHint": "You don't have a wallet yet. Create one to start using the Solar Network eWallet.", "walletCreate": "Create a Wallet", @@ -468,7 +468,7 @@ "one": "{} is typing...", "other": "{} are typing..." }, - "authDeviceEditLabel": "Edit Label", + "authDeviceEditLabel": "Edit Device Label", "authDeviceLabelTitle": "Edit Device Label", "authDeviceLabelHint": "Enter a name for this device", "authDeviceSwipeEditHint": "Swipe left to edit label", @@ -536,7 +536,7 @@ "contactMethodPrimary": "Primary", "contactMethodSetPrimary": "Set as Primary", "contactMethodSetPrimaryHint": "Set this contact method as your primary contact method for account recovery and notifications", - "contactMethodDeleteHint": "Are you sure to delete this contact method? This action cannot be undone.", + "contactMethodDeleteHint": "Are you sure you want to delete this contact method? This action cannot be undone.", "contactMethodMakePublic": "Make Public", "contactMethodMakePrivate": "Make Private", "contactMethodPublic": "Public", @@ -662,8 +662,6 @@ "abuseReportSuccess": "Report submitted successfully. Thank you for helping keep our community safe.", "abuseReportError": "Failed to submit report. Please try again.", "abuseReportReasonRequired": "Please provide details about the issue", - "abuseReportSuccessTitle": "Report Submitted", - "abuseReportErrorTitle": "Error", "abuseReportTypeSpam": "Spam or Misleading", "abuseReportTypeHarassment": "Harassment or Abuse", "abuseReportTypeInappropriate": "Inappropriate Content", @@ -845,11 +843,6 @@ "postCategorySports": "Sports", "postCategoryFinance": "Finance", "postCategoryLife": "Life", - "postCategoryArt": "Art", - "postCategoryStudy": "Study", - "postCategoryGaming": "Gaming", - "postCategoryProgramming": "Programming", - "postCategoryMusic": "Music", "links": "Links", "addLink": "Add link", "linkKey": "Link Name", @@ -1062,5 +1055,12 @@ "deleteRecycledFiles": "Delete Recycled Files", "recycledFilesDeleted": "Recycled files deleted successfully", "failedToDeleteRecycledFiles": "Failed to delete recycled files", - "upload": "Upload" + "upload": "Upload", + "fileInfoTitle": "File Information", + "fileHashCopied": "File hash copied to clipboard", + "fileIdCopied": "File ID copied to clipboard", + "fileNameCopied": "File name copied to clipboard", + "fileMetadata": "File Metadata", + "userMetadata": "User Metadata", + "valueCopied": "Value copied to clipboard" } diff --git a/lib/models/file.dart b/lib/models/file.dart index e889c91f..ca93b3d0 100644 --- a/lib/models/file.dart +++ b/lib/models/file.dart @@ -1,4 +1,5 @@ import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:island/models/file_pool.dart'; part 'file.freezed.dart'; part 'file.g.dart'; @@ -42,6 +43,7 @@ sealed class SnCloudFile with _$SnCloudFile { required String? description, required Map? fileMeta, required Map? userMeta, + required SnFilePool? pool, @Default([]) List sensitiveMarks, required String? mimeType, required String? hash, diff --git a/lib/models/file.freezed.dart b/lib/models/file.freezed.dart index ed280738..5dda227f 100644 --- a/lib/models/file.freezed.dart +++ b/lib/models/file.freezed.dart @@ -278,7 +278,7 @@ as bool, /// @nodoc mixin _$SnCloudFile { - String get id; String get name; String? get description; Map? get fileMeta; Map? get userMeta; List get sensitiveMarks; String? get mimeType; String? get hash; int get size; DateTime? get uploadedAt; String? get uploadedTo; DateTime get createdAt; DateTime get updatedAt; DateTime? get deletedAt; + String get id; String get name; String? get description; Map? get fileMeta; Map? get userMeta; SnFilePool? get pool; List get sensitiveMarks; String? get mimeType; String? get hash; int get size; DateTime? get uploadedAt; String? get uploadedTo; DateTime get createdAt; DateTime get updatedAt; DateTime? get deletedAt; /// Create a copy of SnCloudFile /// with the given fields replaced by the non-null parameter values. @JsonKey(includeFromJson: false, includeToJson: false) @@ -291,16 +291,16 @@ $SnCloudFileCopyWith get copyWith => _$SnCloudFileCopyWithImpl Object.hash(runtimeType,id,name,description,const DeepCollectionEquality().hash(fileMeta),const DeepCollectionEquality().hash(userMeta),const DeepCollectionEquality().hash(sensitiveMarks),mimeType,hash,size,uploadedAt,uploadedTo,createdAt,updatedAt,deletedAt); +int get hashCode => Object.hash(runtimeType,id,name,description,const DeepCollectionEquality().hash(fileMeta),const DeepCollectionEquality().hash(userMeta),pool,const DeepCollectionEquality().hash(sensitiveMarks),mimeType,hash,size,uploadedAt,uploadedTo,createdAt,updatedAt,deletedAt); @override String toString() { - return 'SnCloudFile(id: $id, name: $name, description: $description, fileMeta: $fileMeta, userMeta: $userMeta, sensitiveMarks: $sensitiveMarks, mimeType: $mimeType, hash: $hash, size: $size, uploadedAt: $uploadedAt, uploadedTo: $uploadedTo, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)'; + return 'SnCloudFile(id: $id, name: $name, description: $description, fileMeta: $fileMeta, userMeta: $userMeta, pool: $pool, sensitiveMarks: $sensitiveMarks, mimeType: $mimeType, hash: $hash, size: $size, uploadedAt: $uploadedAt, uploadedTo: $uploadedTo, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)'; } @@ -311,11 +311,11 @@ abstract mixin class $SnCloudFileCopyWith<$Res> { factory $SnCloudFileCopyWith(SnCloudFile value, $Res Function(SnCloudFile) _then) = _$SnCloudFileCopyWithImpl; @useResult $Res call({ - String id, String name, String? description, Map? fileMeta, Map? userMeta, List sensitiveMarks, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt + String id, String name, String? description, Map? fileMeta, Map? userMeta, SnFilePool? pool, List sensitiveMarks, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt }); - +$SnFilePoolCopyWith<$Res>? get pool; } /// @nodoc @@ -328,14 +328,15 @@ class _$SnCloudFileCopyWithImpl<$Res> /// Create a copy of SnCloudFile /// with the given fields replaced by the non-null parameter values. -@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? name = null,Object? description = freezed,Object? fileMeta = freezed,Object? userMeta = freezed,Object? sensitiveMarks = null,Object? mimeType = freezed,Object? hash = freezed,Object? size = null,Object? uploadedAt = freezed,Object? uploadedTo = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) { +@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? name = null,Object? description = freezed,Object? fileMeta = freezed,Object? userMeta = freezed,Object? pool = freezed,Object? sensitiveMarks = null,Object? mimeType = freezed,Object? hash = freezed,Object? size = null,Object? uploadedAt = freezed,Object? uploadedTo = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) { return _then(_self.copyWith( id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable as String,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable as String,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable as String?,fileMeta: freezed == fileMeta ? _self.fileMeta : fileMeta // ignore: cast_nullable_to_non_nullable as Map?,userMeta: freezed == userMeta ? _self.userMeta : userMeta // ignore: cast_nullable_to_non_nullable -as Map?,sensitiveMarks: null == sensitiveMarks ? _self.sensitiveMarks : sensitiveMarks // ignore: cast_nullable_to_non_nullable +as Map?,pool: freezed == pool ? _self.pool : pool // ignore: cast_nullable_to_non_nullable +as SnFilePool?,sensitiveMarks: null == sensitiveMarks ? _self.sensitiveMarks : sensitiveMarks // ignore: cast_nullable_to_non_nullable as List,mimeType: freezed == mimeType ? _self.mimeType : mimeType // ignore: cast_nullable_to_non_nullable as String?,hash: freezed == hash ? _self.hash : hash // ignore: cast_nullable_to_non_nullable as String?,size: null == size ? _self.size : size // ignore: cast_nullable_to_non_nullable @@ -347,7 +348,19 @@ as DateTime,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ign as DateTime?, )); } +/// Create a copy of SnCloudFile +/// with the given fields replaced by the non-null parameter values. +@override +@pragma('vm:prefer-inline') +$SnFilePoolCopyWith<$Res>? get pool { + if (_self.pool == null) { + return null; + } + return $SnFilePoolCopyWith<$Res>(_self.pool!, (value) { + return _then(_self.copyWith(pool: value)); + }); +} } @@ -426,10 +439,10 @@ return $default(_that);case _: /// } /// ``` -@optionalTypeArgs TResult maybeWhen(TResult Function( String id, String name, String? description, Map? fileMeta, Map? userMeta, List sensitiveMarks, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt)? $default,{required TResult orElse(),}) {final _that = this; +@optionalTypeArgs TResult maybeWhen(TResult Function( String id, String name, String? description, Map? fileMeta, Map? userMeta, SnFilePool? pool, List sensitiveMarks, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt)? $default,{required TResult orElse(),}) {final _that = this; switch (_that) { case _SnCloudFile() when $default != null: -return $default(_that.id,_that.name,_that.description,_that.fileMeta,_that.userMeta,_that.sensitiveMarks,_that.mimeType,_that.hash,_that.size,_that.uploadedAt,_that.uploadedTo,_that.createdAt,_that.updatedAt,_that.deletedAt);case _: +return $default(_that.id,_that.name,_that.description,_that.fileMeta,_that.userMeta,_that.pool,_that.sensitiveMarks,_that.mimeType,_that.hash,_that.size,_that.uploadedAt,_that.uploadedTo,_that.createdAt,_that.updatedAt,_that.deletedAt);case _: return orElse(); } @@ -447,10 +460,10 @@ return $default(_that.id,_that.name,_that.description,_that.fileMeta,_that.userM /// } /// ``` -@optionalTypeArgs TResult when(TResult Function( String id, String name, String? description, Map? fileMeta, Map? userMeta, List sensitiveMarks, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt) $default,) {final _that = this; +@optionalTypeArgs TResult when(TResult Function( String id, String name, String? description, Map? fileMeta, Map? userMeta, SnFilePool? pool, List sensitiveMarks, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt) $default,) {final _that = this; switch (_that) { case _SnCloudFile(): -return $default(_that.id,_that.name,_that.description,_that.fileMeta,_that.userMeta,_that.sensitiveMarks,_that.mimeType,_that.hash,_that.size,_that.uploadedAt,_that.uploadedTo,_that.createdAt,_that.updatedAt,_that.deletedAt);} +return $default(_that.id,_that.name,_that.description,_that.fileMeta,_that.userMeta,_that.pool,_that.sensitiveMarks,_that.mimeType,_that.hash,_that.size,_that.uploadedAt,_that.uploadedTo,_that.createdAt,_that.updatedAt,_that.deletedAt);} } /// A variant of `when` that fallback to returning `null` /// @@ -464,10 +477,10 @@ return $default(_that.id,_that.name,_that.description,_that.fileMeta,_that.userM /// } /// ``` -@optionalTypeArgs TResult? whenOrNull(TResult? Function( String id, String name, String? description, Map? fileMeta, Map? userMeta, List sensitiveMarks, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt)? $default,) {final _that = this; +@optionalTypeArgs TResult? whenOrNull(TResult? Function( String id, String name, String? description, Map? fileMeta, Map? userMeta, SnFilePool? pool, List sensitiveMarks, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt)? $default,) {final _that = this; switch (_that) { case _SnCloudFile() when $default != null: -return $default(_that.id,_that.name,_that.description,_that.fileMeta,_that.userMeta,_that.sensitiveMarks,_that.mimeType,_that.hash,_that.size,_that.uploadedAt,_that.uploadedTo,_that.createdAt,_that.updatedAt,_that.deletedAt);case _: +return $default(_that.id,_that.name,_that.description,_that.fileMeta,_that.userMeta,_that.pool,_that.sensitiveMarks,_that.mimeType,_that.hash,_that.size,_that.uploadedAt,_that.uploadedTo,_that.createdAt,_that.updatedAt,_that.deletedAt);case _: return null; } @@ -479,7 +492,7 @@ return $default(_that.id,_that.name,_that.description,_that.fileMeta,_that.userM @JsonSerializable() class _SnCloudFile implements SnCloudFile { - const _SnCloudFile({required this.id, required this.name, required this.description, required final Map? fileMeta, required final Map? userMeta, final List sensitiveMarks = const [], required this.mimeType, required this.hash, required this.size, required this.uploadedAt, required this.uploadedTo, required this.createdAt, required this.updatedAt, required this.deletedAt}): _fileMeta = fileMeta,_userMeta = userMeta,_sensitiveMarks = sensitiveMarks; + const _SnCloudFile({required this.id, required this.name, required this.description, required final Map? fileMeta, required final Map? userMeta, required this.pool, final List sensitiveMarks = const [], required this.mimeType, required this.hash, required this.size, required this.uploadedAt, required this.uploadedTo, required this.createdAt, required this.updatedAt, required this.deletedAt}): _fileMeta = fileMeta,_userMeta = userMeta,_sensitiveMarks = sensitiveMarks; factory _SnCloudFile.fromJson(Map json) => _$SnCloudFileFromJson(json); @override final String id; @@ -503,6 +516,7 @@ class _SnCloudFile implements SnCloudFile { return EqualUnmodifiableMapView(value); } +@override final SnFilePool? pool; final List _sensitiveMarks; @override@JsonKey() List get sensitiveMarks { if (_sensitiveMarks is EqualUnmodifiableListView) return _sensitiveMarks; @@ -532,16 +546,16 @@ Map toJson() { @override bool operator ==(Object other) { - return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnCloudFile&&(identical(other.id, id) || other.id == id)&&(identical(other.name, name) || other.name == name)&&(identical(other.description, description) || other.description == description)&&const DeepCollectionEquality().equals(other._fileMeta, _fileMeta)&&const DeepCollectionEquality().equals(other._userMeta, _userMeta)&&const DeepCollectionEquality().equals(other._sensitiveMarks, _sensitiveMarks)&&(identical(other.mimeType, mimeType) || other.mimeType == mimeType)&&(identical(other.hash, hash) || other.hash == hash)&&(identical(other.size, size) || other.size == size)&&(identical(other.uploadedAt, uploadedAt) || other.uploadedAt == uploadedAt)&&(identical(other.uploadedTo, uploadedTo) || other.uploadedTo == uploadedTo)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt)); + return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnCloudFile&&(identical(other.id, id) || other.id == id)&&(identical(other.name, name) || other.name == name)&&(identical(other.description, description) || other.description == description)&&const DeepCollectionEquality().equals(other._fileMeta, _fileMeta)&&const DeepCollectionEquality().equals(other._userMeta, _userMeta)&&(identical(other.pool, pool) || other.pool == pool)&&const DeepCollectionEquality().equals(other._sensitiveMarks, _sensitiveMarks)&&(identical(other.mimeType, mimeType) || other.mimeType == mimeType)&&(identical(other.hash, hash) || other.hash == hash)&&(identical(other.size, size) || other.size == size)&&(identical(other.uploadedAt, uploadedAt) || other.uploadedAt == uploadedAt)&&(identical(other.uploadedTo, uploadedTo) || other.uploadedTo == uploadedTo)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt)); } @JsonKey(includeFromJson: false, includeToJson: false) @override -int get hashCode => Object.hash(runtimeType,id,name,description,const DeepCollectionEquality().hash(_fileMeta),const DeepCollectionEquality().hash(_userMeta),const DeepCollectionEquality().hash(_sensitiveMarks),mimeType,hash,size,uploadedAt,uploadedTo,createdAt,updatedAt,deletedAt); +int get hashCode => Object.hash(runtimeType,id,name,description,const DeepCollectionEquality().hash(_fileMeta),const DeepCollectionEquality().hash(_userMeta),pool,const DeepCollectionEquality().hash(_sensitiveMarks),mimeType,hash,size,uploadedAt,uploadedTo,createdAt,updatedAt,deletedAt); @override String toString() { - return 'SnCloudFile(id: $id, name: $name, description: $description, fileMeta: $fileMeta, userMeta: $userMeta, sensitiveMarks: $sensitiveMarks, mimeType: $mimeType, hash: $hash, size: $size, uploadedAt: $uploadedAt, uploadedTo: $uploadedTo, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)'; + return 'SnCloudFile(id: $id, name: $name, description: $description, fileMeta: $fileMeta, userMeta: $userMeta, pool: $pool, sensitiveMarks: $sensitiveMarks, mimeType: $mimeType, hash: $hash, size: $size, uploadedAt: $uploadedAt, uploadedTo: $uploadedTo, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)'; } @@ -552,11 +566,11 @@ abstract mixin class _$SnCloudFileCopyWith<$Res> implements $SnCloudFileCopyWith factory _$SnCloudFileCopyWith(_SnCloudFile value, $Res Function(_SnCloudFile) _then) = __$SnCloudFileCopyWithImpl; @override @useResult $Res call({ - String id, String name, String? description, Map? fileMeta, Map? userMeta, List sensitiveMarks, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt + String id, String name, String? description, Map? fileMeta, Map? userMeta, SnFilePool? pool, List sensitiveMarks, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt }); - +@override $SnFilePoolCopyWith<$Res>? get pool; } /// @nodoc @@ -569,14 +583,15 @@ class __$SnCloudFileCopyWithImpl<$Res> /// Create a copy of SnCloudFile /// with the given fields replaced by the non-null parameter values. -@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? name = null,Object? description = freezed,Object? fileMeta = freezed,Object? userMeta = freezed,Object? sensitiveMarks = null,Object? mimeType = freezed,Object? hash = freezed,Object? size = null,Object? uploadedAt = freezed,Object? uploadedTo = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) { +@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? name = null,Object? description = freezed,Object? fileMeta = freezed,Object? userMeta = freezed,Object? pool = freezed,Object? sensitiveMarks = null,Object? mimeType = freezed,Object? hash = freezed,Object? size = null,Object? uploadedAt = freezed,Object? uploadedTo = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) { return _then(_SnCloudFile( id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable as String,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable as String,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable as String?,fileMeta: freezed == fileMeta ? _self._fileMeta : fileMeta // ignore: cast_nullable_to_non_nullable as Map?,userMeta: freezed == userMeta ? _self._userMeta : userMeta // ignore: cast_nullable_to_non_nullable -as Map?,sensitiveMarks: null == sensitiveMarks ? _self._sensitiveMarks : sensitiveMarks // ignore: cast_nullable_to_non_nullable +as Map?,pool: freezed == pool ? _self.pool : pool // ignore: cast_nullable_to_non_nullable +as SnFilePool?,sensitiveMarks: null == sensitiveMarks ? _self._sensitiveMarks : sensitiveMarks // ignore: cast_nullable_to_non_nullable as List,mimeType: freezed == mimeType ? _self.mimeType : mimeType // ignore: cast_nullable_to_non_nullable as String?,hash: freezed == hash ? _self.hash : hash // ignore: cast_nullable_to_non_nullable as String?,size: null == size ? _self.size : size // ignore: cast_nullable_to_non_nullable @@ -589,7 +604,19 @@ as DateTime?, )); } +/// Create a copy of SnCloudFile +/// with the given fields replaced by the non-null parameter values. +@override +@pragma('vm:prefer-inline') +$SnFilePoolCopyWith<$Res>? get pool { + if (_self.pool == null) { + return null; + } + return $SnFilePoolCopyWith<$Res>(_self.pool!, (value) { + return _then(_self.copyWith(pool: value)); + }); +} } // dart format on diff --git a/lib/models/file.g.dart b/lib/models/file.g.dart index 62577dc2..16cb2c3c 100644 --- a/lib/models/file.g.dart +++ b/lib/models/file.g.dart @@ -33,6 +33,10 @@ _SnCloudFile _$SnCloudFileFromJson(Map json) => _SnCloudFile( description: json['description'] as String?, fileMeta: json['file_meta'] as Map?, userMeta: json['user_meta'] as Map?, + pool: + json['pool'] == null + ? null + : SnFilePool.fromJson(json['pool'] as Map), sensitiveMarks: (json['sensitive_marks'] as List?) ?.map((e) => (e as num).toInt()) @@ -61,6 +65,7 @@ Map _$SnCloudFileToJson(_SnCloudFile instance) => 'description': instance.description, 'file_meta': instance.fileMeta, 'user_meta': instance.userMeta, + 'pool': instance.pool?.toJson(), 'sensitive_marks': instance.sensitiveMarks, 'mime_type': instance.mimeType, 'hash': instance.hash, diff --git a/lib/widgets/content/file_info_sheet.dart b/lib/widgets/content/file_info_sheet.dart index 9cf5a2aa..a90aea84 100644 --- a/lib/widgets/content/file_info_sheet.dart +++ b/lib/widgets/content/file_info_sheet.dart @@ -21,7 +21,7 @@ class FileInfoSheet extends StatelessWidget { final exifData = item.fileMeta?['exif'] as Map? ?? {}; return SheetScaffold( - titleText: 'File Information', + titleText: 'fileInfoTitle'.tr(), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -81,7 +81,7 @@ class FileInfoSheet extends StatelessWidget { ), onLongPress: () { Clipboard.setData(ClipboardData(text: item.hash!)); - showSnackBar('File hash copied to clipboard'); + showSnackBar('fileHashCopied'.tr()); }, ), ), @@ -101,7 +101,7 @@ class FileInfoSheet extends StatelessWidget { icon: const Icon(Icons.copy), onPressed: () { Clipboard.setData(ClipboardData(text: item.id)); - showSnackBar('File ID copied to clipboard'); + showSnackBar('fileIdCopied'.tr()); }, ), ), @@ -118,10 +118,28 @@ class FileInfoSheet extends StatelessWidget { icon: const Icon(Icons.copy), onPressed: () { Clipboard.setData(ClipboardData(text: item.name)); - showSnackBar('File name copied to clipboard'); + showSnackBar('fileNameCopied'.tr()); }, ), ), + if (item.pool != null) + ListTile( + leading: const Icon(Symbols.calendar_today), + title: Text('File Pool').tr(), + subtitle: Text( + item.pool!.name, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + contentPadding: EdgeInsets.symmetric(horizontal: 24), + trailing: IconButton( + icon: const Icon(Icons.copy), + onPressed: () { + Clipboard.setData(ClipboardData(text: item.pool!.id)); + showSnackBar('fileNameCopied'.tr()); + }, + ), + ), if (exifData.isNotEmpty) ...[ const Divider(height: 1), Theme( @@ -163,7 +181,7 @@ class FileInfoSheet extends StatelessWidget { Clipboard.setData( ClipboardData(text: '${entry.value}'), ); - showSnackBar('Value copied to clipboard'); + showSnackBar('valueCopied'.tr()); }, ), ), @@ -180,7 +198,7 @@ class FileInfoSheet extends StatelessWidget { child: ExpansionTile( tilePadding: const EdgeInsets.symmetric(horizontal: 24), title: Text( - 'File Metadata', + 'fileMetadata'.tr(), style: theme.textTheme.titleMedium?.copyWith( fontWeight: FontWeight.bold, ), @@ -212,7 +230,7 @@ class FileInfoSheet extends StatelessWidget { Clipboard.setData( ClipboardData(text: jsonEncode(entry.value)), ); - showSnackBar('Value copied to clipboard'); + showSnackBar('valueCopied'.tr()); }, ), ), @@ -229,7 +247,7 @@ class FileInfoSheet extends StatelessWidget { child: ExpansionTile( tilePadding: const EdgeInsets.symmetric(horizontal: 24), title: Text( - 'User Metadata', + 'userMetadata'.tr(), style: theme.textTheme.titleMedium?.copyWith( fontWeight: FontWeight.bold, ), @@ -261,7 +279,7 @@ class FileInfoSheet extends StatelessWidget { Clipboard.setData( ClipboardData(text: jsonEncode(entry.value)), ); - showSnackBar('Value copied to clipboard'); + showSnackBar('valueCopied'.tr()); }, ), ),