Initial commit
This commit is contained in:
54
lib/utils/tatu_share.dart
Normal file
54
lib/utils/tatu_share.dart
Normal file
@@ -0,0 +1,54 @@
|
||||
// SPDX-FileCopyrightText: 2019-Present Christian Kußowski
|
||||
// SPDX-FileCopyrightText: 2019-Present Contributors to FluffyChat
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import 'package:tatchat/l10n/l10n.dart';
|
||||
import 'package:tatchat/utils/platform_infos.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:material_ui/material_ui.dart';
|
||||
import 'package:share_plus/share_plus.dart';
|
||||
|
||||
import '../widgets/matrix.dart';
|
||||
|
||||
abstract class TatuShare {
|
||||
static Future<void> share(
|
||||
String text,
|
||||
BuildContext context, {
|
||||
bool copyOnly = false,
|
||||
}) async {
|
||||
final l10n = L10n.of(context);
|
||||
final scaffoldMessenger = ScaffoldMessenger.of(context);
|
||||
if (PlatformInfos.isMobile && !copyOnly) {
|
||||
final box = context.findRenderObject() as RenderBox;
|
||||
await SharePlus.instance.share(
|
||||
ShareParams(
|
||||
text: text,
|
||||
sharePositionOrigin: box.localToGlobal(Offset.zero) & box.size,
|
||||
),
|
||||
);
|
||||
return;
|
||||
}
|
||||
await Clipboard.setData(ClipboardData(text: text));
|
||||
if (!PlatformInfos.isMobile) {
|
||||
scaffoldMessenger.showSnackBar(
|
||||
SnackBar(showCloseIcon: true, content: Text(l10n.copiedToClipboard)),
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
static Future<void> shareInviteLink(BuildContext context) async {
|
||||
final l10n = L10n.of(context);
|
||||
final client = Matrix.of(context).client;
|
||||
final ownProfile = await client.fetchOwnProfile();
|
||||
if (!context.mounted) return;
|
||||
await TatuShare.share(
|
||||
l10n.inviteText(
|
||||
ownProfile.displayName ?? client.userID!,
|
||||
'https://matrix.to/#/${client.userID}?client=im.tatuchat',
|
||||
),
|
||||
context,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user