magic_metadata.dart 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import 'dart:convert';
  2. // Visibility Constants
  3. const visibilityVisible = 0;
  4. const visibilityArchive = 1;
  5. const visibilityHidden = 2;
  6. // Collection SubType Constants
  7. const subTypeDefaultHidden = 1;
  8. const subTypeSharedFilesCollection = 2;
  9. const magicKeyVisibility = 'visibility';
  10. // key for collection subType
  11. const subTypeKey = 'subType';
  12. const pubMagicKeyEditedTime = 'editedTime';
  13. const pubMagicKeyEditedName = 'editedName';
  14. const pubMagicKeyCaption = "caption";
  15. const pubMagicKeyUploaderName = "uploaderName";
  16. class MagicMetadata {
  17. // 0 -> visible
  18. // 1 -> archived
  19. // 2 -> hidden etc?
  20. int visibility;
  21. MagicMetadata({required this.visibility});
  22. factory MagicMetadata.fromEncodedJson(String encodedJson) =>
  23. MagicMetadata.fromJson(jsonDecode(encodedJson));
  24. factory MagicMetadata.fromJson(dynamic json) => MagicMetadata.fromMap(json);
  25. static fromMap(Map<String, dynamic>? map) {
  26. if (map == null) return null;
  27. return MagicMetadata(
  28. visibility: map[magicKeyVisibility] ?? visibilityVisible,
  29. );
  30. }
  31. }
  32. class PubMagicMetadata {
  33. int? editedTime;
  34. String? editedName;
  35. String? caption;
  36. String? uploaderName;
  37. PubMagicMetadata({
  38. this.editedTime,
  39. this.editedName,
  40. this.caption,
  41. this.uploaderName,
  42. });
  43. factory PubMagicMetadata.fromEncodedJson(String encodedJson) =>
  44. PubMagicMetadata.fromJson(jsonDecode(encodedJson));
  45. factory PubMagicMetadata.fromJson(dynamic json) =>
  46. PubMagicMetadata.fromMap(json);
  47. static fromMap(Map<String, dynamic>? map) {
  48. if (map == null) return null;
  49. return PubMagicMetadata(
  50. editedTime: map[pubMagicKeyEditedTime],
  51. editedName: map[pubMagicKeyEditedName],
  52. caption: map[pubMagicKeyCaption],
  53. uploaderName: map[pubMagicKeyUploaderName],
  54. );
  55. }
  56. }
  57. class CollectionMagicMetadata {
  58. // 0 -> visible
  59. // 1 -> archived
  60. // 2 -> hidden etc?
  61. int visibility;
  62. // null/0 value -> no subType
  63. // 1 -> DEFAULT_HIDDEN COLLECTION for files hidden individually
  64. // 2 -> Collections created for sharing selected files
  65. int? subType;
  66. CollectionMagicMetadata({required this.visibility, this.subType});
  67. Map<String, dynamic> toJson() {
  68. final result = {magicKeyVisibility: visibility};
  69. if (subType != null) {
  70. result[subTypeKey] = subType!;
  71. }
  72. return result;
  73. }
  74. factory CollectionMagicMetadata.fromEncodedJson(String encodedJson) =>
  75. CollectionMagicMetadata.fromJson(jsonDecode(encodedJson));
  76. factory CollectionMagicMetadata.fromJson(dynamic json) =>
  77. CollectionMagicMetadata.fromMap(json);
  78. static fromMap(Map<String, dynamic>? map) {
  79. if (map == null) return null;
  80. return CollectionMagicMetadata(
  81. visibility: map[magicKeyVisibility] ?? visibilityVisible,
  82. subType: map[subTypeKey],
  83. );
  84. }
  85. }