import { common, Want } from "@kit.AbilityKit";
import { AGREEMENT_URL, PRIVACY_URL } from "../constants/AppConstants";

@CustomDialog
export struct AgreementDialog {
  private context = getContext(this) as common.UIAbilityContext;
  // 接收外部传入的参数
  confirmText: string = '同意';
  cancelText: string = '不同意';

  controller?: CustomDialogController;
  cancel: () => void = () => {};
  confirm: () => void = () => {};

  build() {
    Stack() {
      Image($r('app.media.ic_dialog_tips_mask_top'))
        .width('100%')
        .opacity(0.5)

      Column() {
        // 标题
        Text('用户协议与隐私政策')
          .fontSize(18)
          .fontWeight(FontWeight.Bold)
          .margin({ top: 30, bottom: 32 })

        // 描述文字
        Text(){//'请您务必审慎阅读、充分理解《用户协议》与《隐私政策》各条款，包括但不限于：为了更好的向您提供服务，我们需要访问您的相册、相机等。您可以阅读《隐私政策》了解详细信息如果您同意，请点击下面“同意”按钮开始接受我们的服务。'
          Span('请您务必审慎阅读、充分理解')
            .fontColor('#CCAAAAAA')
          Span('《用户协议》')
            .fontColor('#FFAAAAAA') // 高亮颜色（深灰）
            .fontWeight(FontWeight.Bold)
            .onClick(() => {
              const context = getContext(this) as common.UIAbilityContext;
              webBrowser(context, AGREEMENT_URL)
            })
          Span('与')
            .fontColor('#CCAAAAAA')
          Span('《隐私政策》')
            .fontColor('#FFAAAAAA') // 高亮颜色（深灰）
            .fontWeight(FontWeight.Bold)
            .onClick(() => {
              const context = getContext(this) as common.UIAbilityContext;
              webBrowser(context, PRIVACY_URL)
            })
          Span('各条款，包括但不限于：为了更好的向您提供服务，我们需要访问您的相册、相机等。您可以阅读')
            .fontColor('#CCAAAAAA')
          Span('《隐私政策》')
            .fontColor('#FFAAAAAA') // 高亮颜色（深灰）
            .fontWeight(FontWeight.Bold)
            .onClick(() => {
              const context = getContext(this) as common.UIAbilityContext;
              webBrowser(context, PRIVACY_URL)
            })
          Span('了解详细信息如果您同意，请点击下面“同意”按钮开始接受我们的服务。')
            .fontColor('#CCAAAAAA')
        }
          .fontSize(14)
          .fontColor('#FF999999')
          .margin({ left: 16, right: 16 })

        // 按钮区域
        Column() {
          Button(this.confirmText)
            .onClick(() => {
              this.confirm();
              this.controller?.close();
            })
            .width('100%')
            .backgroundColor(Color.Black) // 对应图片中的黑色按钮
            .fontColor(Color.White)
            .height(44)

          Button(this.cancelText)
            .onClick(() => {
              this.controller?.close();
              this.cancel();
              this.context.terminateSelf();
            })
            .width('100%')
            .backgroundColor('#FFFFFFFF')
            .fontColor('#FFAAAAAA')
            .height(44)
        }
        .width('100%')
        .margin({ top: 68})
        .padding({ left: 20, right: 20 })
      }
    }
    .width('90%')
    .alignContent(Alignment.TopStart)
    .backgroundColor(Color.White)
    .borderRadius(24) // 较大的圆角
  }
}

/**
 * 启动时，协议使用外部浏览器打开
 * @param context
 * @param url
 */
function webBrowser(context: common.UIAbilityContext, url: string){
  const want: Want = {
    action: 'ohos.want.action.viewData',
    entities: ['entity.system.browsable'],
    uri: url
  };

  context.startAbility(want);
}