import 'dart:convert';

import 'package:flutter/services.dart';

class Sauce {
  final String filepath;
  final String alias;
  final String name;
  final String? season;
  final String? episode;
  final String? from;
  final String? to;

  const Sauce(this.filepath,
      this.alias,
      this.name,
      this.season,
      this.episode,
      this.from,
      this.to);

  static Future<Map<String, Sauce>> sauceIndex() async {
    final sauceJson = await rootBundle.loadString('assets/sauce.json');
    Map<String, dynamic> sauce = jsonDecode(sauceJson);

    Map<String, Sauce> sauceIndex = new Map();

    for (MapEntry<String, dynamic> entry in sauce.entries) {
      final value = entry.value as Map<String, dynamic>;
      sauceIndex[entry.key] = Sauce(
        entry.key,
        value['alias'],
        value['name'],
        value['season'],
        value['episode'],
        value['from'],
        value['to']
      );
    }

    return sauceIndex;
  }
}

class Update {
  final String version;
  final String summary;
  final List<String> details;

  const Update(this.version,
      this.summary,
      this.details);

  static Future<Map<String, Update>> updatesIndex() async {
    final updatesJson = await rootBundle.loadString('assets/updates.json');
    Map<String, dynamic> updates = jsonDecode(updatesJson);

    Map<String, Update> updatesIndex = new Map();

    for (MapEntry<String, dynamic> entry in updates.entries) {
      final value = entry.value as Map<String, dynamic>;
      updatesIndex[entry.key] = Update(
        entry.key,
        value['summary'],
        (value['details'] as List).cast<String>()
      );
    }

    return updatesIndex;
  }
}