import 'package:flutter/cupertino.dart';
import 'package:flutter_html/flutter_html.dart';
import 'package:isekai_wiki/api/restbase/page.dart';
import 'package:isekai_wiki/components/safearea_builder.dart';
import 'package:isekai_wiki/components/wikipage_parser.dart';

import '../components/isekai_nav_bar.dart';
import '../components/isekai_page_scaffold.dart';
import '../styles.dart';

class MinimumArticleData {
  final String title;
  final String? description;
  final String? mainCategory;
  final DateTime? updateTime;

  MinimumArticleData({required this.title, this.description, this.mainCategory, this.updateTime});
}

class ArticleCategoryData {
  final String name;
  final String identity;

  ArticleCategoryData({required this.name, required this.identity});
}

class ArticlePage extends StatefulWidget {
  final MinimumArticleData? initialArticleData;
  final String? targetPage;

  const ArticlePage({super.key, this.targetPage, this.initialArticleData});

  @override
  State<StatefulWidget> createState() => _ArticlePageState();
}

class _ArticlePageState extends State<ArticlePage> {
  bool loading = true;
  String title = "";
  String description = "";
  String content = "";
  String contentHtml = "";
  List<String> categories = [];

  Future<void> _loadPageContent() async {
    if (widget.targetPage != null) {
      var resContentHtml = await RestfulPageApi.getPageHtml(widget.targetPage!);
      if (resContentHtml != null) {
        setState(() {
          contentHtml = resContentHtml;
        });
      }
    }
  }

  @override
  void initState() {
    title = widget.initialArticleData?.title ?? "";
    description = widget.initialArticleData?.description ?? "";
    if (widget.initialArticleData?.mainCategory != null) {
      categories.add(widget.initialArticleData!.mainCategory!);
    }
    super.initState();
    _loadPageContent();
  }

  @override
  Widget build(BuildContext context) {
    return IsekaiPageScaffold(
      navigationBar: IsekaiNavigationBar(
        middle: Text(title),
      ),
      child: SafeAreaBuilder(
        builder: (context, padding) => WikiPageParser(
          contentHtml: contentHtml,
          padding: padding,
        ),
      ),
    );
  }
}