mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-18 19:23:31 +00:00
32 lines
799 B
Dart
32 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},
|
||
|
);
|
||
|
}
|