Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class CommunityBanUserEntity with _$CommunityBanUserEntity, IonConnectEntity, Im
required String signature,
required int createdAt,
required CommunityBanUserData data,
EventMessage? eventMessage,
}) = _CommunityBanUserEntity;

const CommunityBanUserEntity._();
Expand All @@ -36,6 +37,7 @@ class CommunityBanUserEntity with _$CommunityBanUserEntity, IonConnectEntity, Im
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: CommunityBanUserData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ class CommunityDefinitionEntity
required String signature,
required int createdAt,
required CommunityDefinitionData data,
EventMessage? eventMessage,
}) = _CommunityDefinitionEntity;

const CommunityDefinitionEntity._();
Expand All @@ -48,6 +49,7 @@ class CommunityDefinitionEntity
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: CommunityDefinitionData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}
String get ownerPubkey => masterPubkey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class CommunityJoinEntity with _$CommunityJoinEntity, IonConnectEntity, Immutabl
required String signature,
required int createdAt,
required CommunityJoinData data,
EventMessage? eventMessage,
}) = _CommunityJoinEntity;

const CommunityJoinEntity._();
Expand All @@ -36,6 +37,7 @@ class CommunityJoinEntity with _$CommunityJoinEntity, IonConnectEntity, Immutabl
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: CommunityJoinData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class CommunityUpdateEntity with _$CommunityUpdateEntity, IonConnectEntity, Immu
required String signature,
required int createdAt,
required CommunityUpdateData data,
EventMessage? eventMessage,
}) = _CommunityUpdateEntity;

const CommunityUpdateEntity._();
Expand All @@ -45,6 +46,7 @@ class CommunityUpdateEntity with _$CommunityUpdateEntity, IonConnectEntity, Immu
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: CommunityUpdateData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class ReplaceablePrivateDirectMessageEntity
required String masterPubkey,
required int createdAt,
required ReplaceablePrivateDirectMessageData data,
EventMessage? eventMessage,
}) = _ReplaceablePrivateDirectMessageEntity;

const ReplaceablePrivateDirectMessageEntity._();
Expand All @@ -53,6 +54,7 @@ class ReplaceablePrivateDirectMessageEntity
createdAt: eventMessage.createdAt,
masterPubkey: eventMessage.masterPubkey,
data: ReplaceablePrivateDirectMessageData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class PrivateMessageReactionEntity
required String masterPubkey,
required int createdAt,
required PrivateMessageReactionEntityData data,
EventMessage? eventMessage,
}) = _PrivateMessageReactionEntity;

const PrivateMessageReactionEntity._();
Expand All @@ -39,6 +40,7 @@ class PrivateMessageReactionEntity
createdAt: eventMessage.createdAt,
masterPubkey: eventMessage.masterPubkey,
data: PrivateMessageReactionEntityData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class BookmarksEntity with IonConnectEntity, CacheableEntity, ReplaceableEntity,
required String signature,
required int createdAt,
required BookmarksData data,
EventMessage? eventMessage,
}) = _BookmarksEntity;

const BookmarksEntity._();
Expand All @@ -40,6 +41,7 @@ class BookmarksEntity with IonConnectEntity, CacheableEntity, ReplaceableEntity,
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: BookmarksData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ class BookmarksSetEntity
required String signature,
required int createdAt,
required BookmarksSetData data,
EventMessage? eventMessage,
}) = _BookmarksSetEntity;

const BookmarksSetEntity._();
Expand All @@ -54,6 +55,7 @@ class BookmarksSetEntity
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: BookmarksSetData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class ArticleEntity
required String signature,
required int createdAt,
required ArticleData data,
EventMessage? eventMessage,
}) = _ArticleEntity;

const ArticleEntity._();
Expand All @@ -59,13 +60,14 @@ class ArticleEntity
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: ArticleData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

static const kind = 30023;

@override
FutureOr<EventMessage> toEntityEventMessage() => toEventMessage(data);
FutureOr<EventMessage> toEntityEventMessage() => eventMessage ?? toEventMessage(data);
}

@freezed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class EventCountErrorEntity with _$EventCountErrorEntity, IonConnectEntity, Immu
required String masterPubkey,
required int createdAt,
required EventCountErrorData data,
EventMessage? eventMessage,
}) = _EventCountErrorEntity;

const EventCountErrorEntity._();
Expand All @@ -40,6 +41,7 @@ class EventCountErrorEntity with _$EventCountErrorEntity, IonConnectEntity, Immu
masterPubkey: eventMessage.masterPubkey,
createdAt: eventMessage.createdAt,
data: data,
eventMessage: eventMessage,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class EventCountRequestEntity
required String signature,
required int createdAt,
required EventCountRequestData data,
EventMessage? eventMessage,
}) = _EventCountRequestEntity;

const EventCountRequestEntity._();
Expand All @@ -41,6 +42,7 @@ class EventCountRequestEntity
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: EventCountRequestData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class EventCountResultEntity
required String signature,
required int createdAt,
required EventCountResultSummary data,
EventMessage? eventMessage,
}) = _EventCountResultEntity;

const EventCountResultEntity._();
Expand Down Expand Up @@ -74,6 +75,7 @@ class EventCountResultEntity
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: summary,
eventMessage: eventMessage,
);

return entity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ class GenericRepostEntity
required String signature,
required int createdAt,
required GenericRepostData data,
EventMessage? eventMessage,
}) = _GenericRepostEntity;

const GenericRepostEntity._();
Expand All @@ -42,6 +43,7 @@ class GenericRepostEntity
createdAt: eventMessage.createdAt,
masterPubkey: eventMessage.masterPubkey,
data: GenericRepostData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ class ModifiablePostEntity
required String signature,
required int createdAt,
required ModifiablePostData data,
EventMessage? eventMessage,
}) = _ModifiablePostEntity;

const ModifiablePostEntity._();
Expand All @@ -68,6 +69,7 @@ class ModifiablePostEntity
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: ModifiablePostData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand All @@ -80,7 +82,7 @@ class ModifiablePostEntity
bool get isStory => data.expiration != null;

@override
FutureOr<EventMessage> toEntityEventMessage() => toEventMessage(data);
FutureOr<EventMessage> toEntityEventMessage() => eventMessage ?? toEventMessage(data);
}

@freezed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class PostEntity
required String signature,
required int createdAt,
required PostData data,
EventMessage? eventMessage,
}) = _PostEntity;

const PostEntity._();
Expand All @@ -52,6 +53,7 @@ class PostEntity
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: PostData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand All @@ -60,7 +62,7 @@ class PostEntity
bool get isStory => data.expiration != null;

@override
FutureOr<EventMessage> toEntityEventMessage() => toEventMessage(data);
FutureOr<EventMessage> toEntityEventMessage() => eventMessage ?? toEventMessage(data);
}

@freezed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class ReactionEntity with _$ReactionEntity, IonConnectEntity, ImmutableEntity, C
required String signature,
required int createdAt,
required ReactionData data,
EventMessage? eventMessage,
}) = _ReactionEntity;

const ReactionEntity._();
Expand All @@ -40,6 +41,7 @@ class ReactionEntity with _$ReactionEntity, IonConnectEntity, ImmutableEntity, C
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: ReactionData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class RepostEntity with _$RepostEntity, IonConnectEntity, ImmutableEntity, Cache
required String signature,
required int createdAt,
required RepostData data,
EventMessage? eventMessage,
}) = _RepostEntity;

const RepostEntity._();
Expand All @@ -40,6 +41,7 @@ class RepostEntity with _$RepostEntity, IonConnectEntity, ImmutableEntity, Cache
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: RepostData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
2 changes: 2 additions & 0 deletions lib/app/features/feed/polls/models/poll_vote.f.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class PollVoteEntity with _$PollVoteEntity, IonConnectEntity, ImmutableEntity, C
required String signature,
required int createdAt,
required PollVoteData data,
EventMessage? eventMessage,
}) = _PollVoteEntity;

const PollVoteEntity._();
Expand All @@ -34,6 +35,7 @@ class PollVoteEntity with _$PollVoteEntity, IonConnectEntity, ImmutableEntity, C
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: PollVoteData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
2 changes: 2 additions & 0 deletions lib/app/features/ion_connect/model/deletion_request.f.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ class DeletionRequestEntity with IonConnectEntity, ImmutableEntity, _$DeletionRe
required String signature,
required int createdAt,
required DeletionRequest data,
EventMessage? eventMessage,
}) = _DeletionRequestEntity;

const DeletionRequestEntity._();
Expand All @@ -46,6 +47,7 @@ class DeletionRequestEntity with IonConnectEntity, ImmutableEntity, _$DeletionRe
signature: eventMessage.sig ?? '',
createdAt: eventMessage.createdAt,
data: DeletionRequest.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
2 changes: 2 additions & 0 deletions lib/app/features/ion_connect/model/events_metadata.f.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class EventsMetadataEntity with IonConnectEntity, ImmutableEntity, _$EventsMetad
required String signature,
required int createdAt,
required EventsMetadataData data,
EventMessage? eventMessage,
}) = _EventsMetadataEntity;

const EventsMetadataEntity._();
Expand All @@ -38,6 +39,7 @@ class EventsMetadataEntity with IonConnectEntity, ImmutableEntity, _$EventsMetad
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: EventsMetadataData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
4 changes: 3 additions & 1 deletion lib/app/features/ion_connect/model/file_metadata.f.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class FileMetadataEntity
required String signature,
required int createdAt,
required FileMetadata data,
EventMessage? eventMessage,
}) = _FileMetadataEntity;

const FileMetadataEntity._();
Expand All @@ -40,13 +41,14 @@ class FileMetadataEntity
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: FileMetadata.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

static const int kind = 1063;

@override
FutureOr<EventMessage> toEntityEventMessage() => toEventMessage(data);
FutureOr<EventMessage> toEntityEventMessage() => eventMessage ?? toEventMessage(data);
}

@freezed
Expand Down
3 changes: 3 additions & 0 deletions lib/app/features/ion_connect/model/ion_connect_entity.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ abstract mixin class IonConnectEntity implements IonConnectEntityReferenceable {
String get signature;
int get createdAt;

// The original event message that was used to create this entity.
EventMessage? get eventMessage;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤔 Shouldn't there be a direct one-to-one mapping between EventMessage and the entity, both ways? Similar to how toJson and fromJson functions correspond with each other.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it is. The idea is to map an entity to an event message without spending resources on mapping using the original event.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ice-deimos
There might be corner cases - If the entity was changed over time, EventMessage generated by an old entity will differ with an EventMessage generated by the latest entity. That might lead to cases when
old EventMessage -> Entity -> EventMessage != old EventMessage

Plus it seems Entity -> EventMessage takes significant amount of resources, so when we call it frequently, for example when we write an entity to the db, it brings freezes.

But using original EventMessage has several flaws: it increases the overall memory usage + if entity was changed (with .copyWith for example, toEventMessage can't return the origianal EventMessage).


FutureOr<EventMessage> toEventMessage(EventSerializable data) {
return data.toEventMessage(
SimpleSigner(pubkey, signature),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class IonConnectGiftWrapEntity with IonConnectEntity, ImmutableEntity, _$IonConn
required String signature,
required int createdAt,
required IonConnectGiftWrapData data,
EventMessage? eventMessage,
}) = _IonConnectGiftWrapEntity;

const IonConnectGiftWrapEntity._();
Expand All @@ -35,6 +36,7 @@ class IonConnectGiftWrapEntity with IonConnectEntity, ImmutableEntity, _$IonConn
signature: eventMessage.sig!,
createdAt: eventMessage.createdAt,
data: IonConnectGiftWrapData.fromEventMessage(eventMessage),
eventMessage: eventMessage,
);
}

Expand Down
Loading