"use client";

import React, { useState } from "react";
import { Button, Toast } from "antd-mobile";
import { useRouter } from "next/navigation";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faAngleLeft } from "@fortawesome/free-solid-svg-icons";
import OwnInput from "@/components/OwnInput";
import UploadImgs from "@/components/UploadImgs";
import { multiUploadImage } from "@/utils/upload";
import { get } from "@/utils/storeInfo";
import requireAPI from "@/utils/requireAPI";
export default function JoinStreamer() {
  const router = useRouter();
  const [formData, setFormData] = useState({
    name: "",
    platforms: "",
    contact: "",
    imageAssets: [],
  });
  const [isSubmitting, setIsSubmitting] = useState(false);

  const handleSubmit = async (values) => {
    if (
      !values.name ||
      !values.platforms ||
      !values.contact ||
      values.imageAssets.length === 0
    ) {
      Toast.show({
        icon: "fail",
        content: "请完善信息后提交",
        position: 60,
      });
      return;
    }
    setIsSubmitting(true);
    const account = await get("account");
    const account_shot = await multiUploadImage(values.imageAssets, 1);
    if (!account_shot.image_ids.length) {
      Toast.show({
        icon: "fail",
        content: "上传失败,请联系客服进行上传",
        position: 60,
      });
      setIsSubmitting(false);
      return;
    }
    //上传表单
    const body = {
      avatar: { image_ids: [account?.avatar.images[0].id] },
      name: values.name,
      contact_way: values.contact,
      account_shot: account_shot,
      main_platform: values.platforms,
    };

    try {
      const streamerData = await requireAPI(
        "POST",
        "/api/streamer_auth_approval/create_basic",
        {
          body,
        },
        true,
        10000
      );
      if (streamerData.ret === -1) {
        Toast.show({
          icon: "fail",
          content: streamerData.msg,
          position: 60,
        });
        return;
      }
      //提交成功后跳转成功页
      router.replace(
        "/my/streamerVerification/afterSubmitStreamerVerification"
      );
    } catch (error) {
      console.error(error);
    } finally {
      setIsSubmitting(false);
    }
  };
  return (
    <div>
      {/* 头部标题 */}
      <div className="p-4 fixed top-0 z-10 w-full bg-black flex justify-between items-center">
        <div className="w-9 h-9 flex items-center justify-center bg-[#FFFFFF1A] rounded-full">
          <FontAwesomeIcon
            icon={faAngleLeft}
            style={{ maxWidth: "12px" }}
            size="xl"
            onClick={() => {
              router.back();
            }}
          />
        </div>
        <p className="text-base text-center leading-9">达人入驻</p>
        <p
          className="text-base text-center leading-9 text-[#FF669E]"
          onClick={() => {
            router.push(
              `/webView/${encodeURIComponent("/doc/platformguidelines")}`
            );
          }}
        >
          平台准则
        </p>
      </div>
      {/* 内容 */}
      <div className="pt-16 p-4 mt-2">
        <div className="flex justify-between items-center">
          <p className="text-sm">
            <span>审核资料(仅用于审核,不对外展示)</span>
            <span className="text-[#f00]">*</span>
          </p>
        </div>
        <div className="mt-4">
          <div className="flex justify-between items-center">
            <p className="text-sm">
              <span>昵称</span>
              <span className="text-[#f00]">*</span>
            </p>
          </div>
          <div className="mt-2 px-4 py-3 h-12 rounded-[0.8rem] bg-[#FFFFFF1a] flex justify-between items-center">
            <OwnInput
              type="text"
              placeholder="请输入可搜索到您的昵称"
              maxLength={20}
              value={formData.name}
              onChange={(value) =>
                setFormData((old) => ({ ...old, name: value }))
              }
            />
          </div>
        </div>
        <div className="mt-6">
          <div className="flex justify-between items-center">
            <p className="text-sm">
              <span>主营平台</span>
              <span className="text-[#f00]">*</span>
            </p>
            <p className="text-[#ffffffae] text-xs">
              (若有多个,按粉丝从多到少排序)
            </p>
          </div>
          <div className="mt-2 px-4 py-3 h-12 rounded-[0.8rem] bg-[#FFFFFF1a] flex justify-between items-center">
            <OwnInput
              type="text"
              placeholder="请输入平台名称"
              value={formData.platforms}
              onChange={(value) =>
                setFormData((old) => ({ ...old, platforms: value }))
              }
            />
          </div>
        </div>
        <div className="mt-6">
          <div className="flex justify-between items-center">
            <p className="text-sm">
              <span>联系方式</span>
              <span className="text-[#f00]">*</span>
            </p>
            <p className="text-[#ffffffae] text-xs">注明方式,如“电话:xxxxx”</p>
          </div>
          <div className="mt-2 px-4 py-3 h-12 rounded-[0.8rem] bg-[#FFFFFF1a] flex justify-between items-center">
            <OwnInput
              type="text"
              placeholder="请输入您的联系方式"
              maxLength={20}
              value={formData.contact}
              onChange={(value) =>
                setFormData((old) => ({ ...old, contact: value }))
              }
            />
          </div>
        </div>
        <div className="mt-6">
          <div className="flex justify-between items-center">
            <p className="text-sm">
              <span>账号截图</span>
              <span className="text-[#f00]">*</span>
            </p>
            <p className="text-[#ffffffae] text-xs">
              各平台账号截图(最多9张)
            </p>
          </div>
          <div className="mt-2">
            <UploadImgs
              type={1}
              assets={formData.imageAssets}
              getImgs={(imgs) => {
                setFormData((old) => ({ ...old, imageAssets: imgs }));
              }}
            />
          </div>
        </div>

        <div className="mt-10 flex justify-center">
          <Button
            size="middle"
            shape="rounded"
            block
            style={{
              "--background-color": "#FF669E",
              paddingLeft: "32px",
              paddingRight: "32px",
            }}
            disabled={isSubmitting}
            onClick={() => handleSubmit(formData)}
          >
            {isSubmitting ? "正在提交..." : "提交"}
          </Button>
        </div>
      </div>
    </div>
  );
}