// js/components/common/TrocarSenhaModal.jsx
// Modal de troca de senha — validação via Supabase Auth.
// Movido de index.html em Fase 5 do refactor (2026-04-29): L976-L1067
// Deps runtime: sb (window.sb), verifyCurrentPasswordAuth, verifyPassword, hashPassword,
//               window.__ZNX_NEW_AUTH_ENABLED__ (via window.__ZNX_NEW_AUTH_ENABLED__)
(function() {
  'use strict';
  const {useState} = React;

  // CÓPIA EXATA do index.html L976-L1067
  function TrocarSenhaModal({user,onClose,onSave}){
    const[atual,setAtual]=useState('');
    const[nova,setNova]=useState('');
    const[conf,setConf]=useState('');
    const[err,setErr]=useState('');
    async function submit(e){
      e.preventDefault();
      // [AUTH FIX] novo auth: valida senha atual via Supabase Auth
      const authV=await verifyCurrentPasswordAuth(atual);
      if(authV){if(!authV.ok){setErr(authV.err);return;}}
      else{if(!await verifyPassword(atual,user.password)){setErr('Senha atual incorreta');return;}}
      if(!nova||nova.length<6){setErr('Senha precisa ter pelo menos 6 caracteres');return;}
      if(nova!==conf){setErr('As senhas não coincidem');return;}
      // Bug 3 fix: sincroniza senha com Supabase Auth (bcrypt) antes do hash SHA-256 legado
      if(__ZNX_NEW_AUTH_ENABLED__){
        try{const{error:authErr}=await sb.auth.updateUser({password:nova});if(authErr){setErr('Erro ao trocar senha: '+authErr.message);return;}}catch(e){setErr('Erro ao trocar senha. Tente novamente.');return;}
      }
      const hashed=await hashPassword(nova);
      onSave(hashed);
    }
    return(
      <div style={{position:'fixed',inset:0,background:'rgba(0,0,0,0.55)',zIndex:9999,display:'flex',alignItems:'center',justifyContent:'center'}}>
        <div style={{background:'#fff',borderRadius:14,padding:28,width:320,boxShadow:'0 8px 32px rgba(0,0,0,0.22)'}}>
          <div style={{fontWeight:800,fontSize:16,color:'#1C1C28',marginBottom:20}}>🔑 Trocar Senha</div>
          <form onSubmit={submit} style={{display:'flex',flexDirection:'column',gap:12}}>
            <div className="form-group"><label>Senha atual</label><input type="password" value={atual} onChange={e=>setAtual(e.target.value)} autoFocus/></div>
            <div className="form-group"><label>Nova senha</label><input type="password" value={nova} onChange={e=>setNova(e.target.value)}/></div>
            <div className="form-group"><label>Confirmar nova senha</label><input type="password" value={conf} onChange={e=>setConf(e.target.value)}/></div>
            {err&&<div style={{color:'#DC2626',fontSize:12}}>{err}</div>}
            <div style={{display:'flex',gap:8,marginTop:4}}>
              <button type="button" onClick={onClose} className="btn-outline" style={{flex:1}}>Cancelar</button>
              <button type="submit" className="btn-gold" style={{flex:1}}>Salvar</button>
            </div>
          </form>
        </div>
      </div>
    );
  }

  window.ZNX = window.ZNX || {};
  window.ZNX.components = window.ZNX.components || {};
  window.ZNX.components.TrocarSenhaModal = TrocarSenhaModal;
  window.TrocarSenhaModal = TrocarSenhaModal;

  window.ZNX.refactor_phase_5_loaded = window.ZNX.refactor_phase_5_loaded || {};
  window.ZNX.refactor_phase_5_loaded.TrocarSenhaModal = true;

})();
