mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-18 18:13:31 +00:00
31 lines
799 B
Dart
31 lines
799 B
Dart
class ReshareViaService {
|
|
final _postsVia = <String, ResharedViaData>{};
|
|
|
|
ResharedViaData? getForPost(String postId) => _postsVia[postId];
|
|
|
|
void upsertResharedVia({required String postId, required String resharerId}) {
|
|
final resharedData = _postsVia.putIfAbsent(
|
|
postId,
|
|
() => ResharedViaData(postId: postId),
|
|
);
|
|
|
|
_postsVia[postId] = resharedData.withUpsertedResharer(resharerId);
|
|
}
|
|
}
|
|
|
|
class ResharedViaData {
|
|
final String postId;
|
|
final Set<String> resharers;
|
|
|
|
bool get hasResharedVia => resharers.isNotEmpty;
|
|
|
|
const ResharedViaData({
|
|
required this.postId,
|
|
this.resharers = const {},
|
|
});
|
|
|
|
ResharedViaData withUpsertedResharer(String resharerId) => ResharedViaData(
|
|
postId: postId,
|
|
resharers: {resharerId, ...resharers},
|
|
);
|
|
}
|