import 'package:flutter/material.dart'; import '../../globals.dart'; import '../../models/timeline_network_info.dart'; class TimelineNetworkInfoControl extends StatelessWidget { final TimelineNetworkInfo info; const TimelineNetworkInfoControl({super.key, required this.info}); @override Widget build(BuildContext context) { return GestureDetector( onTap: () async => showConfirmDialog(context, info.network == KnownNetworks.unknown ? info.name : info.labelName), child: Text( info.forkAwesomeUnicode, style: const TextStyle(fontFamily: 'ForkAwesome'), ), ); } } extension KnownNetworkExtensions on TimelineNetworkInfo { String get labelName => switch (network) { KnownNetworks.activityPub => 'ActivityPub', KnownNetworks.bluesky => 'Bluesky', KnownNetworks.calckey => 'Calckey', KnownNetworks.diaspora => 'Diaspora', KnownNetworks.drupal => 'Drupal', KnownNetworks.firefish => 'Firefish', KnownNetworks.friendica => 'Friendica', KnownNetworks.funkwhale => 'Funkwhale', KnownNetworks.gnu_social => 'GNU Social', KnownNetworks.hubzilla => 'Hubzilla', KnownNetworks.kbin => 'Kbin', KnownNetworks.lemmy => 'Lemmy', KnownNetworks.mastodon => 'Mastodon', KnownNetworks.nextcloud => 'Nextcloud', KnownNetworks.peertube => 'PeerTube', KnownNetworks.pixelfed => 'Pixelfed', KnownNetworks.pleroma => 'Pleroma', KnownNetworks.plume => 'Plume', KnownNetworks.red => 'Red', KnownNetworks.redmatrix => 'RedMatrix', KnownNetworks.socialhome => 'Socialhome', KnownNetworks.threads => 'Threads', KnownNetworks.wordpress => 'WordPress', KnownNetworks.unknown => 'Unknown', }; String get forkAwesomeUnicode => switch (network) { KnownNetworks.activityPub => '\uf2f2', KnownNetworks.bluesky => '\uf111', KnownNetworks.calckey => '\uf1ec', KnownNetworks.diaspora => '\uf2e5', KnownNetworks.drupal => '\uf1a9', KnownNetworks.firefish => '\uf06d', KnownNetworks.friendica => '\uf2e6', KnownNetworks.funkwhale => '\uf339', KnownNetworks.gnu_social => '\uf2e7', KnownNetworks.hubzilla => '\uf2eb', KnownNetworks.kbin => '\uf058', KnownNetworks.lemmy => '\uf0c0', KnownNetworks.mastodon => '\uf2e1', KnownNetworks.nextcloud => '\uf307', KnownNetworks.peertube => '\uf2e4', KnownNetworks.pixelfed => '\uf314', KnownNetworks.pleroma => '\uf324', KnownNetworks.plume => '\uf356', KnownNetworks.red => '\uf2eb', KnownNetworks.redmatrix => '\uf2eb', KnownNetworks.socialhome => '\uf2ec', KnownNetworks.threads => '\uf16d', KnownNetworks.wordpress => '\uf19a', KnownNetworks.unknown => '\uf059', }; }