diff --git a/lib/utils/interaction_availability_util.dart b/lib/utils/interaction_availability_util.dart index 1b3c999..806a264 100644 --- a/lib/utils/interaction_availability_util.dart +++ b/lib/utils/interaction_availability_util.dart @@ -1,7 +1,9 @@ -import 'package:relatica/models/timeline_entry.dart'; -import 'package:relatica/models/timeline_network_info.dart'; - +import '../globals.dart'; +import '../models/timeline_entry.dart'; +import '../models/timeline_network_info.dart'; import '../models/visibility.dart'; +import '../services/setting_service.dart'; +import 'known_network_extensions.dart'; enum Reshareable { no, @@ -24,13 +26,6 @@ extension InteractionAvailabilityExtension on TimelineEntry { ); } - if (networkInfo.network == KnownNetworks.threads) { - return const ReshareableResult( - isReshareable: Reshareable.no, - reason: "You have requested to not allow resharing of Threads posts.", - ); - } - if (networkInfo.network == KnownNetworks.bluesky) { return const ReshareableResult( isReshareable: Reshareable.no, @@ -39,6 +34,18 @@ extension InteractionAvailabilityExtension on TimelineEntry { ); } + final settingsService = getIt(); + final nc = settingsService.networkCapabilities + .getCapabilities(networkInfo.network); + + if (!nc.reshare) { + return ReshareableResult( + isReshareable: Reshareable.no, + reason: + "User disabled resharing ${networkInfo.network.labelName}. Go into settings to change.", + ); + } + if (visibility.type == VisibilityType.public || visibility.type == VisibilityType.unlisted) { return const ReshareableResult(