shareEvent static method

Future<void> shareEvent(
  1. Event event
)

Share an Event with date, place, and vanity URL.

Implementation

static Future<void> shareEvent(Event event) async {

  // Vanity URL: emxi.org/{slug} or emxi.org/e/{eventId}
  String vanityUrl = DeeplinkUtilities.generateVanityUrl(type: 'event', id: event.id, slug: event.slug);

  String dateText = event.eventDate > 0
      ? DateFormat.yMMMd(AppLocale.spanish.code)
          .format(DateTime.fromMillisecondsSinceEpoch(event.eventDate))
      : '';
  String placeText = event.place?.name ?? '';

  String sharedText = '${event.name}\n'
      '${dateText.isNotEmpty ? "$dateText\n" : ""}'
      '${placeText.isNotEmpty ? "$placeText\n" : ""}'
      '${event.ownerName.isNotEmpty ? "por ${event.ownerName}\n" : ""}\n'
      '${MessageTranslationConstants.shareAppMsg.tr}\n\n'
      '${AppTranslationConstants.explorePlatform.tr}: $vanityUrl';

  List<XFile> sharedFiles = [];
  if (!kIsWeb) {
    final thumbnailLocalPath = await _getThumbnailPath(
      event.imgUrl, imgName: "${event.ownerName}_${event.name}",
    );
    if (thumbnailLocalPath.isNotEmpty) {
      sharedFiles.add(XFile(thumbnailLocalPath));
    }
  }

  ShareResult shareResult = await SharePlus.instance.share(
    ShareParams(
      text: sharedText,
      files: sharedFiles.isNotEmpty ? sharedFiles : null,
      previewThumbnail: sharedFiles.isNotEmpty ? sharedFiles.first : null,
      uri: kIsWeb ? Uri.tryParse(vanityUrl) : null,
    ),
  );

  if (shareResult.status == ShareResultStatus.success && shareResult.raw != "null") {
    Sint.snackbar(
      MessageTranslationConstants.sharedApp.tr,
      MessageTranslationConstants.sharedAppMsg.tr,
      snackPosition: SnackPosition.bottom,
    );
  }
}