Perform capabilities check on liking/unliking

Finishes implementation of Issue #93
merge-requests/67/merge
Hank Grabowski 2024-06-26 15:14:05 -04:00
rodzic dfb3474bd3
commit c7df3ff1ba
2 zmienionych plików z 25 dodań i 3 usunięć

Wyświetl plik

@ -161,12 +161,15 @@ class _InteractionsBarControlState extends State<InteractionsBarControl> {
} }
Widget buildLikeButton() { Widget buildLikeButton() {
final canReact = widget.entry.getCanReact();
final tooltip =
canReact.canDo ? 'Press to toggle like/unlike' : canReact.reason;
return buildButton( return buildButton(
isFavorited ? Icons.thumb_up : Icons.thumb_up_outlined, isFavorited ? Icons.thumb_up : Icons.thumb_up_outlined,
likes, likes,
true, true,
'Press to toggle like/unlike', tooltip,
() async => await toggleFavorited(), canReact.canDo ? () async => await toggleFavorited() : null,
); );
} }

Wyświetl plik

@ -27,12 +27,31 @@ extension InteractionAvailabilityExtension on TimelineEntry {
); );
} }
return InteractionCapabilityResult( return const InteractionCapabilityResult(
canDo: true, canDo: true,
reason: "Can comment on item", reason: "Can comment on item",
); );
} }
InteractionCapabilityResult getCanReact() {
final settingsService = getIt<SettingsService>();
final nc = settingsService.networkCapabilities
.getCapabilities(networkInfo.network);
if (!nc.react) {
return InteractionCapabilityResult(
canDo: false,
reason:
"User disabled reacting on ${networkInfo.network.labelName} items. Go into settings to change.",
);
}
return const InteractionCapabilityResult(
canDo: true,
reason: "Can react on item",
);
}
InteractionCapabilityResult getIsReshareable(bool isMine) { InteractionCapabilityResult getIsReshareable(bool isMine) {
if (isMine) { if (isMine) {
return const InteractionCapabilityResult( return const InteractionCapabilityResult(