import 'package:get/get.dart';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/widgets.dart';

import '../../../services/api_service/kr_api.user.dart';
import '../../../utils/kr_common_util.dart';

class KRMessage {
  final String title;
  final List<String> content; // content 是一个字符串列表

  KRMessage({required this.title, required this.content});
}

class HIHelpController extends GetxController {
  final KRUserApi kr_userApi = KRUserApi();
  // 通知列表数据
  final RxList<KRMessage> kr_messages = <KRMessage>[
    KRMessage(
      title: '客户端下载问题',
      content: [
        'iOS设备下载客户端，需要使用除中国大陆以外的Apple ID，[link]点击这里[/link]获取海外Apple ID注册教程。',
        'Mac OS设备下载客户端，可以直接前往Hi快VPN官网下载dmg格式文件安装。',
        'Android设备下载客户端，可以直接前往Hi快VPN官网下载apk格式文件安装。',
        'PC设备下载客户端，可以直接前往Hi快VPN官网下载exe格式文件安装。',
      ],
    ),
    KRMessage(
      title: '套餐支付问题',
      content: [
        '支付页面无法打开：尝试更换网络，或检查并断开连接其它VPN软件。',
        '支付页面无法正确显示：请退出客户端重新进入，如仍无法正确显示，请截图并联系在线客服。',
        '支付成功但套餐未正确激活：请退出客户端后五分钟重新进入，如仍未正确激活，请截图您的支付记录，与在线客服联系，核实后会帮您手动激活。',
      ],
    ),
    KRMessage(
      title: '账号问题',
      content: [
        '每部设备在安装客户端后会自动生成一个账号，购买套餐后可以正常使用，如需登陆其他设备使用，则需要绑定邮箱。更换设备前建议先绑定邮箱。',
        '注销账号后会自动清除您已经购买的套餐信息，无法找回，请谨慎对待您的账号。',
        '无法收到邮箱验证码：请检查营销邮件箱或垃圾邮件箱。',
      ],
    ),
    KRMessage(
      title: '连接相关问题',
      content: [
        '无法连接：请检查设备网络是否畅通，如仍无法连接，请退出客户端并重新启动设备。',
        '连接后速度慢，无法打开页面：请进入菜单-节点列表，手动切换节点或选择自动匹配最快网络。',
        '连接后无法打开本地页面：请进入菜单-节点列表，切换为智能模式即可绕过本地ip，但会暴露您的ip地址。选择全局模式则可以保证您始终处于隐私ip状态。',
      ],
    ),
    KRMessage(
      title: '线路相关问题',
      content: [
        'Hi快VPN所有线路均为IEPL专线，最大程度保证线路纯净与连接速度。',
        'Hi快VPN所有线路均不限流量不限带宽，请放心使用。',
        'Hi快VPN所有线路均不保存任何用户网络日志，最大程度保障用户的隐私安全。',
      ],
    ),
    KRMessage(
      title: '设备与绑定问题',
      content: [
        '在绑定新设备之前请先添加您的邮箱并设置账户密码。',
        'Hi快VPN支持最多两台设备同时在线，包括一台iOS设备或Android，加一台Mac或PC。',
        '如超出设备数量限制，请先手动移除设备后再进行登录，设备限制为系统固定设定，不支持调整。',
      ],
    ),
    KRMessage(
      title: '邀请用户相关问题',
      content: [
        '邀请用户请进入菜单-邀请好友页面，点击“我的邀请码”分享链接，直接分享至任意平台。受邀好友在根据流程安装好客户端后，进入菜单-邀请好友页面，贴入邀请码，保存后购买任一套餐，您和好友将会同时获得3天免费使用时长。',
        '请务必先行让受邀好友填写邀请码后再购买套餐，否则将无法激活免费时长。',
      ],
    ),
    KRMessage(
      title: '闪连功能相关问题',
      content: [
        '闪连功能可以为您提供最便捷的VPN使用体验，在设置好您的使用偏好并开启闪连功能后，未来只需要点击打开客户端，软件即自动连接，无需再点击任意按钮。',
        '在后台关闭客户端后，连接自动断开。如未在后台关闭，则连接不会断开。如长时间设备锁屏并没有任何操作，连接会自动断开。',
      ],
    ),
  ].obs;

  final RxBool kr_isLoading = false.obs;
  final RxBool kr_hasMore = true.obs;
  int kr_page = 1;
  final int kr_size = 10;
  final EasyRefreshController refreshController = EasyRefreshController();
  final ScrollController kr_scrollController = ScrollController();

  @override
  void onInit() {
    super.onInit();
    // 预热客服
    KRCommonUtil.kr_warmUpCustomerService();
    // 隐藏全局订阅按钮
    // kr_getMessageList();
  }

  // 刷新列表
  Future<void> kr_onRefresh() async {
    kr_page = 1;
    kr_hasMore.value = true;
    kr_messages.clear();
    await kr_getMessageList();
    refreshController.finishRefresh();
  }

  // 加载更多
  Future<void> kr_onLoadMore() async {
    if (!kr_hasMore.value || kr_isLoading.value) {
      refreshController.finishLoad(IndicatorResult.noMore);
      return;
    }
    kr_page++;
    await kr_getMessageList();
    refreshController.finishLoad(kr_hasMore.value ? IndicatorResult.success : IndicatorResult.noMore);
  }

  Future<void> kr_getMessageList() async {
    if (kr_isLoading.value) return;
    kr_isLoading.value = true;

    final either = await kr_userApi.kr_getMessageList(kr_page, kr_size);
    either.fold(
      (error) {
        KRCommonUtil.kr_showToast(error.msg);
        if (kr_page > 1) kr_page--;
      },
      (list) {

      },
    );
    
    kr_isLoading.value = false;
  }

  @override
  void onClose() {
    refreshController.dispose();
    kr_scrollController.dispose();
    super.onClose();
  }
}
