Merge branch 'bluesky-reshare-update' into 'main'

Allow Bluesky post resharing for Friendica versions 2024.08 and higher

See merge request mysocialportal/relatica!64
This commit is contained in:
HankG 2024-08-31 20:34:51 +00:00
commit bde307ab8d
5 changed files with 22 additions and 7 deletions

View file

@ -19,6 +19,8 @@
only the "My Posts" timeline and no bottom navigation bar. So one can't get to search, notifications, only the "My Posts" timeline and no bottom navigation bar. So one can't get to search, notifications,
contacts, etc. One can create new posts, comments, and edits to those things contacts, etc. One can create new posts, comments, and edits to those things
though. ([Feature #95](https://gitlab.com/mysocialportal/relatica/-/issues/95)) though. ([Feature #95](https://gitlab.com/mysocialportal/relatica/-/issues/95))
* Add resharing of Bluesky posts if connected to a Friendica server running 2024.08 or
later. ([Feature #107](https://gitlab.com/mysocialportal/relatica/-/issues/107))
* Shows the Circles, Groups, and Channels timelines if connected to a Friendica server running 2024.08 or * Shows the Circles, Groups, and Channels timelines if connected to a Friendica server running 2024.08 or
later.([Feature #108](https://gitlab.com/mysocialportal/relatica/-/issues/108)) later.([Feature #108](https://gitlab.com/mysocialportal/relatica/-/issues/108))

View file

@ -98,7 +98,7 @@ class FriendicaVersion implements Comparable<FriendicaVersion> {
@override @override
String toString() { String toString() {
return 'FriendicaVersion{releaseDate: $releaseDate, extra: $extra}'; return '${releaseDate.year}.${releaseDate.month}$extra';
} }
String toVersionString() { String toVersionString() {
@ -156,6 +156,8 @@ final FriendicaVersion v2023_04_01 = FriendicaVersion(
); );
final FriendicaVersion v2023_05 = FriendicaVersion(DateTime(2023, 05)); final FriendicaVersion v2023_05 = FriendicaVersion(DateTime(2023, 05));
final FriendicaVersion v2023_09 = FriendicaVersion(DateTime(2023, 09)); final FriendicaVersion v2023_09 = FriendicaVersion(DateTime(2023, 09));
final FriendicaVersion v2024_03 = FriendicaVersion(DateTime(2024, 03));
final FriendicaVersion v2024_08 = FriendicaVersion(DateTime(2024, 08));
final knownFriendicaVersions = [ final knownFriendicaVersions = [
// 2018 Versions // 2018 Versions
@ -196,6 +198,10 @@ final knownFriendicaVersions = [
v2023_04_01, v2023_04_01,
v2023_05, v2023_05,
v2023_09, v2023_09,
// 2024 Versions
v2024_03,
v2024_08,
]; ];
FriendicaVersion latestVersion() => knownFriendicaVersions.last; FriendicaVersion latestVersion() => knownFriendicaVersions.last;

View file

@ -44,7 +44,7 @@ class NetworkCapabilitiesSettings {
KnownNetworks.bluesky => NetworkCapabilitiesItem( KnownNetworks.bluesky => NetworkCapabilitiesItem(
network: e, network: e,
react: true, react: true,
reshare: false, reshare: true,
comment: true, comment: true,
), ),
KnownNetworks.threads => NetworkCapabilitiesItem( KnownNetworks.threads => NetworkCapabilitiesItem(

View file

@ -9,6 +9,7 @@ import '../models/friendica_version.dart';
import '../models/friendica_version_requirement.dart'; import '../models/friendica_version_requirement.dart';
enum RelaticaFeatures { enum RelaticaFeatures {
blueskyReshare('Resharing Bluesky Posts'),
diasporaReshare('Resharing Diaspora Posts'), diasporaReshare('Resharing Diaspora Posts'),
directMessageCreation('Direct message creation with OAuth login'), directMessageCreation('Direct message creation with OAuth login'),
postSpoilerText('Spoiler Text on Posts'), postSpoilerText('Spoiler Text on Posts'),
@ -73,6 +74,7 @@ class FriendicaVersionChecker {
static final featureVersionRequirement = static final featureVersionRequirement =
<RelaticaFeatures, FriendicaVersionRequirement>{ <RelaticaFeatures, FriendicaVersionRequirement>{
RelaticaFeatures.blueskyReshare: FriendicaVersionRequirement(v2024_08),
RelaticaFeatures.diasporaReshare: FriendicaVersionRequirement(v2023_04), RelaticaFeatures.diasporaReshare: FriendicaVersionRequirement(v2023_04),
RelaticaFeatures.directMessageCreation: FriendicaVersionRequirement( RelaticaFeatures.directMessageCreation: FriendicaVersionRequirement(
v2023_04, v2023_04,

View file

@ -2,6 +2,7 @@ import '../globals.dart';
import '../models/timeline_entry.dart'; import '../models/timeline_entry.dart';
import '../models/timeline_network_info.dart'; import '../models/timeline_network_info.dart';
import '../models/visibility.dart'; import '../models/visibility.dart';
import '../services/feature_version_checker.dart';
import '../services/setting_service.dart'; import '../services/setting_service.dart';
import 'known_network_extensions.dart'; import 'known_network_extensions.dart';
@ -61,11 +62,15 @@ extension InteractionAvailabilityExtension on TimelineEntry {
} }
if (networkInfo.network == KnownNetworks.bluesky) { if (networkInfo.network == KnownNetworks.bluesky) {
return const InteractionCapabilityResult( final result = getIt<FriendicaVersionChecker>()
canDo: false, .canUseFeatureResult(RelaticaFeatures.blueskyReshare);
reason:
"Resharing of Bluesky posts through the API isn't supported by Friendica.", if (result.isFailure) {
); return InteractionCapabilityResult(
canDo: false,
reason: result.error.message,
);
}
} }
final settingsService = getIt<SettingsService>(); final settingsService = getIt<SettingsService>();