import "package:supabase_flutter/supabase_flutter.dart"; enum ChannelKind { text, operations, voice, announcement, unknown } abstract class BaseChannel { BaseChannel({ required this.client, required this.id, required this.organizationId, required this.name, required this.description, required this.slug, required this.kind, required this.isPrivate, required this.position, }); final SupabaseClient client; final String id; final String organizationId; final String name; final String description; final String slug; final ChannelKind kind; final bool isPrivate; final int position; Map toJson() { return { "id": id, "organization_id": organizationId, "name": name, "description": description, "slug": slug, "type": kind.name, "is_private": isPrivate, "position": position, }; } static ChannelKind channelKindFromApi(Object? rawType) { final value = (rawType ?? "").toString().trim().toLowerCase(); switch (value) { case "text": return ChannelKind.text; case "operations": return ChannelKind.operations; case "voice": return ChannelKind.voice; case "announcement": return ChannelKind.announcement; default: return ChannelKind.unknown; } } static Map asMap(Object? value) { if (value is Map) return value; if (value is Map) return value.cast(); return {}; } static List asList(Object? value) { if (value is List) return value; return const []; } }