/**
 * 邀请码验证弹窗
 */

/**
 * 获取邀请码弹窗的 HTML 内容
 */
export function getInvitationModalContent(qrCodeUri?: string): string {
  return `
    <!-- 邀请码验证弹窗 -->
    <div id="invitationModal" class="invitation-modal" style="display: none;">
      <div class="invitation-modal-overlay"></div>
      <div class="invitation-modal-content">
        <button id="invitationCloseBtn" class="invitation-close-btn" title="关闭">×</button>
        <div class="invitation-modal-header">
          <h2>验证邀请码</h2>
          <p class="invitation-modal-subtitle">仅供企业端用户和内部人员使用</p>
        </div>
        <div class="invitation-modal-body">
          <div class="invitation-qrcode-section">
            <p class="invitation-qrcode-text">欢迎扫码添加微信获取邀请码</p>
            <img src="${qrCodeUri}" alt="微信二维码" class="invitation-qrcode-image" />
          </div>
          <div class="invitation-input-section">
            <input
              type="text"
              id="invitationCodeInput"
              class="invitation-code-input"
              placeholder="请输入邀请码"
              maxlength="20"
            />
            <div id="invitationError" class="invitation-error" style="display: none;"></div>
          </div>
        </div>
        <div class="invitation-modal-footer">
          <button id="invitationSubmitBtn" class="invitation-btn invitation-btn-primary">
            验证
          </button>
        </div>
      </div>
    </div>
  `;
}

/**
 * 获取邀请码弹窗的 CSS 样式
 */
export function getInvitationModalStyles(): string {
  return `
    /* 邀请码弹窗样式 */
    .invitation-modal {
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      z-index: 10000;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .invitation-modal-overlay {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      background: rgba(0, 0, 0, 0.6);
      backdrop-filter: blur(4px);
    }

    .invitation-modal-content {
      position: relative;
      background: var(--vscode-editor-background);
      border: 1px solid var(--vscode-panel-border);
      border-radius: 8px;
      width: 90%;
      max-width: 400px;
      box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
      animation: modalSlideIn 0.3s ease-out;
    }

    .invitation-close-btn {
      position: absolute;
      top: 12px;
      right: 12px;
      width: 28px;
      height: 28px;
      border: none;
      background: transparent;
      color: var(--vscode-foreground);
      font-size: 24px;
      line-height: 1;
      cursor: pointer;
      border-radius: 4px;
      display: flex;
      align-items: center;
      justify-content: center;
      transition: all 0.2s;
      opacity: 0.6;
      z-index: 1;
    }

    .invitation-close-btn:hover {
      opacity: 1;
      background: var(--vscode-toolbar-hoverBackground);
    }

    .invitation-close-btn:active {
      transform: scale(0.95);
    }

    @keyframes modalSlideIn {
      from {
        opacity: 0;
        transform: translateY(-20px);
      }
      to {
        opacity: 1;
        transform: translateY(0);
      }
    }

    .invitation-modal-header {
      padding: 24px 24px 16px;
      border-bottom: 1px solid var(--vscode-panel-border);
      text-align: center;
    }

    .invitation-modal-header h2 {
      margin: 0;
      font-size: 18px;
      font-weight: 600;
      color: var(--vscode-foreground);
    }

    .invitation-modal-subtitle {
      margin: 8px 0 0;
      font-size: 13px;
      color: var(--vscode-descriptionForeground);
    }

    .invitation-modal-body {
      padding: 24px;
    }

    .invitation-qrcode-section {
      text-align: center;
      margin-bottom: 24px;
    }

    .invitation-qrcode-text {
      margin: 0 0 16px;
      font-size: 13px;
      color: var(--vscode-foreground);
      line-height: 1.5;
    }

    .invitation-qrcode-image {
      width: 200px;
      height: 200px;
      border: 1px solid var(--vscode-panel-border);
      border-radius: 8px;
      background: #fff;
    }

    .invitation-input-section {
      margin-top: 24px;
    }

    .invitation-code-input {
      width: 100%;
      padding: 10px 12px;
      font-size: 14px;
      border: 1px solid var(--vscode-input-border);
      background: var(--vscode-input-background);
      color: var(--vscode-input-foreground);
      border-radius: 4px;
      outline: none;
      transition: border-color 0.2s;
      box-sizing: border-box;
    }

    .invitation-code-input:focus {
      border-color: var(--vscode-focusBorder);
    }

    .invitation-code-input::placeholder {
      color: var(--vscode-input-placeholderForeground);
    }

    .invitation-error {
      margin-top: 12px;
      padding: 8px 12px;
      font-size: 13px;
      color: var(--vscode-errorForeground);
      background: var(--vscode-inputValidation-errorBackground);
      border: 1px solid var(--vscode-inputValidation-errorBorder);
      border-radius: 4px;
    }

    .invitation-modal-footer {
      padding: 16px 24px;
      border-top: 1px solid var(--vscode-panel-border);
      display: flex;
      justify-content: flex-end;
    }

    .invitation-btn {
      padding: 8px 20px;
      font-size: 13px;
      border: none;
      border-radius: 4px;
      cursor: pointer;
      transition: all 0.2s;
      outline: none;
    }

    .invitation-btn-primary {
      background: var(--vscode-button-background);
      color: var(--vscode-button-foreground);
    }

    .invitation-btn-primary:hover {
      background: var(--vscode-button-hoverBackground);
    }

    .invitation-btn-primary:active {
      transform: scale(0.98);
    }

    .invitation-btn-primary:disabled {
      opacity: 0.5;
      cursor: not-allowed;
    }
  `;
}

/**
 * 获取邀请码弹窗的 JavaScript 逻辑
 */
export function getInvitationModalScript(): string {
  return `
    // 邀请码弹窗逻辑
    (function() {
      const modal = document.getElementById('invitationModal');
      const input = document.getElementById('invitationCodeInput');
      const submitBtn = document.getElementById('invitationSubmitBtn');
      const closeBtn = document.getElementById('invitationCloseBtn');
      const errorDiv = document.getElementById('invitationError');

      // 显示邀请码弹窗
      window.showInvitationModal = function() {
        modal.style.display = 'flex';
        setTimeout(() => {
          input.focus();
        }, 100);
      };

      // 隐藏邀请码弹窗
      window.hideInvitationModal = function() {
        modal.style.display = 'none';
        input.value = '';
        errorDiv.style.display = 'none';
        errorDiv.textContent = '';
        submitBtn.disabled = false;
      };

      // 显示错误信息
      window.showInvitationError = function(message) {
        errorDiv.textContent = message;
        errorDiv.style.display = 'block';
        submitBtn.disabled = false;
      };

      // 提交邀请码
      function submitInvitationCode() {
        const code = input.value.trim();

        if (!code) {
          showInvitationError('邀请码不能为空');
          return;
        }

        if (code.length < 6) {
          showInvitationError('邀请码格式不正确');
          return;
        }

        // 禁用按钮，防止重复提交
        submitBtn.disabled = true;
        errorDiv.style.display = 'none';

        // 发送验证请求到后端
        vscode.postMessage({
          command: 'verifyInvitationCode',
          code: code
        });
      }

      // 点击提交按钮
      submitBtn.addEventListener('click', submitInvitationCode);

      // 点击关闭按钮
      closeBtn.addEventListener('click', function() {
        hideInvitationModal();
      });

      // 回车键提交
      input.addEventListener('keypress', function(e) {
        if (e.key === 'Enter') {
          submitInvitationCode();
        }
      });

      // 点击遮罩层关闭弹窗
      document.querySelector('.invitation-modal-overlay').addEventListener('click', function() {
        hideInvitationModal();
      });

      // 阻止点击弹窗内容时关闭
      document.querySelector('.invitation-modal-content').addEventListener('click', function(e) {
        e.stopPropagation();
      });

      // 监听来自后端的消息
      window.addEventListener('message', function(event) {
        const message = event.data;

        // 处理邀请码验证状态
        if (message.command === 'invitationCodeStatus') {
          if (!message.verified) {
            // 未验证，显示弹窗
            showInvitationModal();
          } else {
            // 已验证，继续执行待处理的操作
            if (typeof pendingExampleIndex !== 'undefined' && pendingExampleIndex >= 0) {
              // 如果有待发送的示例，先检查工作区
              vscode.postMessage({ command: 'checkWorkspace' });
            }
          }
        }

        // 处理邀请码验证结果
        if (message.command === 'invitationCodeVerified') {
          if (message.success) {
            // 验证成功，隐藏弹窗
            hideInvitationModal();
            // 继续执行待处理的操作
            if (typeof pendingExampleIndex !== 'undefined' && pendingExampleIndex >= 0) {
              // 如果有待发送的示例，先检查工作区
              vscode.postMessage({ command: 'checkWorkspace' });
            }
          } else {
            // 验证失败，显示错误信息
            showInvitationError(message.message || '验证失败，请重试');
          }
        }
      });
    })();
  `;
}
