fix visual federation bugs

This commit is contained in:
shilangyu 2021-01-02 00:13:13 +00:00
parent 58f964ab66
commit 86ad944bbd
6 changed files with 50 additions and 9 deletions

View File

@ -10,6 +10,7 @@ import '../hooks/delayed_loading.dart';
import '../hooks/logged_in_action.dart';
import '../hooks/memo_future.dart';
import '../hooks/stores.dart';
import '../util/extensions/api.dart';
import '../util/goto.dart';
import '../util/intl.dart';
import '../util/more_icon.dart';
@ -315,10 +316,11 @@ class _CommunityOverview extends StatelessWidget {
text: '@',
style: TextStyle(fontWeight: FontWeight.w200)),
TextSpan(
text: instanceHost,
text: community.originInstanceHost,
style: TextStyle(fontWeight: FontWeight.w600),
recognizer: TapGestureRecognizer()
..onTap = () => goToInstance(context, instanceHost)),
..onTap = () => goToInstance(
context, community.originInstanceHost)),
],
),
),

View File

@ -0,0 +1,36 @@
import 'package:lemmy_api_client/lemmy_api_client.dart';
import '../cleanup_url.dart';
// Extensions to lemmy api objects which give a [.originInstanceHost] getter
// allowing for a convenient way of knowing what is the origin of the object
// For example if a post on lemmy.ml is federated from lemmygrad.ml then
// `post.instanceHost == 'lemmy.ml'
// && post.originInstanceHost == 'lemmygrad.ml``
extension GetInstanceCommunityView on CommunityView {
String get originInstanceHost => _extract(actorId);
}
extension GetInstanceUserView on UserView {
String get originInstanceHost => _extract(actorId);
}
extension GetInstanceCommunityModeratorView on CommunityModeratorView {
String get originInstanceHost => _extract(userActorId);
}
extension GetInstancePostView on PostView {
String get originInstanceHost => _extract(apId);
}
extension GetInstanceUser on User {
String get originInstanceHost => _extract(actorId);
}
extension GetInstanceCommentView on CommentView {
String get originInstanceHost => _extract(apId);
}
// TODO: change it to something more robust? regex?
String _extract(String s) => cleanUpUrl(s.split('/')[2]);

View File

@ -13,6 +13,7 @@ import '../hooks/delayed_loading.dart';
import '../hooks/logged_in_action.dart';
import '../pages/full_post.dart';
import '../url_launcher.dart';
import '../util/extensions/api.dart';
import '../util/goto.dart';
import '../util/more_icon.dart';
import 'bottom_modal.dart';
@ -172,11 +173,11 @@ class Post extends HookWidget {
text: '@',
style: TextStyle(fontWeight: FontWeight.w300)),
TextSpan(
text: instanceHost,
text: post.originInstanceHost,
style: TextStyle(fontWeight: FontWeight.w600),
recognizer: TapGestureRecognizer()
..onTap =
() => goToInstance(context, instanceHost)),
..onTap = () => goToInstance(
context, post.originInstanceHost)),
],
),
)

View File

@ -6,6 +6,7 @@ import 'package:lemmy_api_client/lemmy_api_client.dart';
import 'package:timeago/timeago.dart' as timeago;
import '../hooks/stores.dart';
import '../util/extensions/api.dart';
import '../util/goto.dart';
import '../util/intl.dart';
import '../util/text_color.dart';
@ -221,9 +222,10 @@ class _UserOverview extends HookWidget {
style: theme.textTheme.caption,
),
InkWell(
onTap: () => goToInstance(context, userView.instanceHost),
onTap: () =>
goToInstance(context, userView.originInstanceHost),
child: Text(
'${userView.instanceHost}',
'${userView.originInstanceHost}',
style: theme.textTheme.caption,
),
)

View File

@ -260,7 +260,7 @@ packages:
name: lemmy_api_client
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.2"
version: "0.8.5"
markdown:
dependency: "direct main"
description:

View File

@ -43,7 +43,7 @@ dependencies:
# utils
timeago: ^2.0.27
fuzzy: <1.0.0
lemmy_api_client: ^0.8.2
lemmy_api_client: ^0.8.5
flutter:
sdk: flutter