import 'package:simplecloudnotifier/models/client.dart'; class User { final String userID; final String? username; final String timestampCreated; final String? timestampLastRead; final String? timestampLastSent; final int messagesSent; final int quotaUsed; final int quotaRemaining; final int quotaPerDay; final bool isPro; final String defaultChannel; final int maxBodySize; final int maxTitleLength; final int defaultPriority; final int maxChannelNameLength; final int maxChannelDescriptionLength; final int maxSenderNameLength; final int maxUserMessageIDLength; const User({ required this.userID, required this.username, required this.timestampCreated, required this.timestampLastRead, required this.timestampLastSent, required this.messagesSent, required this.quotaUsed, required this.quotaRemaining, required this.quotaPerDay, required this.isPro, required this.defaultChannel, required this.maxBodySize, required this.maxTitleLength, required this.defaultPriority, required this.maxChannelNameLength, required this.maxChannelDescriptionLength, required this.maxSenderNameLength, required this.maxUserMessageIDLength, }); factory User.fromJson(Map json) { return User( userID: json['user_id'] as String, username: json['username'] as String?, timestampCreated: json['timestamp_created'] as String, timestampLastRead: json['timestamp_lastread'] as String?, timestampLastSent: json['timestamp_lastsent'] as String?, messagesSent: json['messages_sent'] as int, quotaUsed: json['quota_used'] as int, quotaRemaining: json['quota_remaining'] as int, quotaPerDay: json['quota_max'] as int, isPro: json['is_pro'] as bool, defaultChannel: json['default_channel'] as String, maxBodySize: json['max_body_size'] as int, maxTitleLength: json['max_title_length'] as int, defaultPriority: json['default_priority'] as int, maxChannelNameLength: json['max_channel_name_length'] as int, maxChannelDescriptionLength: json['max_channel_description_length'] as int, maxSenderNameLength: json['max_sender_name_length'] as int, maxUserMessageIDLength: json['max_user_message_id_length'] as int, ); } } class UserWithClientsAndKeys { final User user; final List clients; final String sendKey; final String readKey; final String adminKey; UserWithClientsAndKeys({ required this.user, required this.clients, required this.sendKey, required this.readKey, required this.adminKey, }); factory UserWithClientsAndKeys.fromJson(Map json) { return UserWithClientsAndKeys( user: User.fromJson(json), clients: Client.fromJsonArray(json['clients'] as List), sendKey: json['send_key'] as String, readKey: json['read_key'] as String, adminKey: json['admin_key'] as String, ); } } class UserPreview { final String userID; final String? username; const UserPreview({ required this.userID, required this.username, }); factory UserPreview.fromJson(Map json) { return UserPreview( userID: json['user_id'] as String, username: json['username'] as String?, ); } }