/// Social platforms surfaced on the Media screen. The enum values are stable
/// identifiers used for icon mapping and snackbar copy.
enum SocialPlatform { instagram, youtube, twitter, tiktok }

/// Immutable domain model for a single social media link card on the Media
/// screen. Pairs a [platform] with the community's [handle], a deep [url],
/// and a friendly [displayName].
class MediaLink {
  const MediaLink({
    required this.platform,
    required this.handle,
    required this.url,
    required this.displayName,
  });

  final SocialPlatform platform;
  final String handle;
  final String url;
  final String displayName;

  @override
  bool operator ==(Object other) {
    if (identical(this, other)) return true;
    if (other is! MediaLink) return false;
    return other.platform == platform &&
        other.handle == handle &&
        other.url == url &&
        other.displayName == displayName;
  }

  @override
  int get hashCode => Object.hash(platform, handle, url, displayName);

  @override
  String toString() => 'MediaLink($platform, $handle)';
}
