You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.2 KiB
Dart
44 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
|
|
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
|
import 'package:share_plus/share_plus.dart';
|
|
|
|
import 'package:fluffychat/utils/platform_infos.dart';
|
|
import '../widgets/matrix.dart';
|
|
|
|
abstract class FluffyShare {
|
|
static Future<void> share(
|
|
String text,
|
|
BuildContext context, {
|
|
bool copyOnly = false,
|
|
}) async {
|
|
if (PlatformInfos.isMobile && !copyOnly) {
|
|
final box = context.findRenderObject() as RenderBox;
|
|
return Share.share(
|
|
text,
|
|
sharePositionOrigin: box.localToGlobal(Offset.zero) & box.size,
|
|
);
|
|
}
|
|
await Clipboard.setData(
|
|
ClipboardData(text: text),
|
|
);
|
|
ScaffoldMessenger.of(context).showSnackBar(
|
|
SnackBar(content: Text(L10n.of(context)!.copiedToClipboard)),
|
|
);
|
|
return;
|
|
}
|
|
|
|
static Future<void> shareInviteLink(BuildContext context) async {
|
|
final client = Matrix.of(context).client;
|
|
final ownProfile = await client.fetchOwnProfile();
|
|
await FluffyShare.share(
|
|
L10n.of(context)!.inviteText(
|
|
ownProfile.displayName ?? client.userID!,
|
|
'https://matrix.to/#/${client.userID}?client=im.fluffychat',
|
|
),
|
|
context,
|
|
);
|
|
}
|
|
}
|