import 'dart:ui';

class SharedTheme {
  Map json;
  String id;
  bool isPublic;
  String nickname;
  Color backgroundColor;
  Color panelsColor;
  Color accentColor;
  SharedGradeColors gradeColors;

  SharedTheme({
    required this.json,
    required this.id,
    this.isPublic = false,
    this.nickname = 'Anonymous',
    required this.backgroundColor,
    required this.panelsColor,
    required this.accentColor,
    required this.gradeColors,
  });

  factory SharedTheme.fromJson(Map json, SharedGradeColors gradeColors) {
    return SharedTheme(
      json: json,
      id: json['public_id'],
      isPublic: json['is_public'] ?? false,
      nickname: json['nickname'] ?? 'Anonymous',
      backgroundColor: Color(json['background_color']),
      panelsColor: Color(json['panels_color']),
      accentColor: Color(json['accent_color']),
      gradeColors: gradeColors,
    );
  }
}

class SharedGradeColors {
  Map json;
  String id;
  bool isPublic;
  String nickname;
  Color fiveColor;
  Color fourColor;
  Color threeColor;
  Color twoColor;
  Color oneColor;

  SharedGradeColors({
    required this.json,
    required this.id,
    this.isPublic = false,
    this.nickname = 'Anonymous',
    required this.fiveColor,
    required this.fourColor,
    required this.threeColor,
    required this.twoColor,
    required this.oneColor,
  });

  factory SharedGradeColors.fromJson(Map json) {
    return SharedGradeColors(
      json: json,
      id: json['public_id'],
      isPublic: json['is_public'] ?? false,
      nickname: json['nickname'] ?? 'Anonymous',
      fiveColor: Color(json['five_color']),
      fourColor: Color(json['four_color']),
      threeColor: Color(json['three_color']),
      twoColor: Color(json['two_color']),
      oneColor: Color(json['one_color']),
    );
  }
}