shareThreadAttachment function
Implementation
Future<void> shareThreadAttachment({required BuildContext context, required RoomClient room, required String path}) async {
final box = context.findRenderObject() as RenderBox?;
final sharePositionOrigin = box == null ? null : box.localToGlobal(Offset.zero) & box.size;
final url = await room.storage.downloadUrl(path);
final response = await http.get(Uri.parse(url));
if (response.statusCode < 200 || response.statusCode >= 300) {
throw HttpException('Download failed with status ${response.statusCode}', uri: Uri.parse(url));
}
final fileName = p.basename(path);
final tempDirectory = await getTemporaryDirectory();
final file = File(p.join(tempDirectory.path, fileName));
await file.writeAsBytes(response.bodyBytes, flush: true);
await SharePlus.instance.share(
ShareParams(
files: [XFile(file.path, mimeType: lookupMimeType(fileName))],
sharePositionOrigin: sharePositionOrigin,
),
);
}