import 'package:flutter/material.dart';
import 'package:zhiying_comm/util/dialog/loading/loading.dart';
import 'package:zhiying_comm/util/pdd_auth/pdd_auth_dialog.dart';
import 'package:zhiying_comm/zhiying_comm.dart';
import 'package:flutter/cupertino.dart';
import 'package:url_launcher/url_launcher.dart';

import 'pdd_auth_model.dart';
import 'pdd_auth_repository.dart';

class PddAuth {
  ///
  /// 进行拼多多授权 (无参数授权,需要请求接口)
  /// bool = true 需要授权,bool = false 不需要授权
  ///
  static Future<bool> auth(BuildContext context, {String isShare = '1'}) async {
    // 开启loading
    Loading.show(context);
    PddAuthModel model = await PddAuthRepository().fetchNetData(isShare: isShare);
    Loading.dismiss();
    if (!EmptyUtil.isEmpty(model)) {
      return await PddAuth.authParam(context, model.toJson());
    }
    return false;
  }

  ///
  /// 进行拼多多授权(有参数授权)
  ///
  static Future<bool> authParam(context, Map<String, dynamic> data) async {
    try {
      if (EmptyUtil.isEmpty(context) || EmptyUtil.isEmpty(data)) return false;
      PddAuthModel model = PddAuthModel.fromJson(data);
      if (EmptyUtil.isEmpty(model) || EmptyUtil.isEmpty(model.noOpenAppUrl) || EmptyUtil.isEmpty(model.schemaUrl) || (model?.isPop ?? '0') == '0') return false;
      bool isConfirm = await showDialog(context: context, builder: (_) => PddAuthDialog());
      /// 前往授权
      if (isConfirm) {
        // 1. 判断是否安装
        bool launched = await canLaunch(model.schemaUrl);
        if (launched) {
          launched = await launch(model.schemaUrl);
        }
        if (!launched) {
          RouterUtil.openWebview(model.noOpenAppUrl, context);
        }
      }
    } catch (e, s) {
      Logger.error(e, s);
    }
    return true;
  }
}