relatica/lib/services/reshared_via_service.dart

32 wiersze
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},
);
}