/* ============================================================
   Devonew — Testemunhos · shared data + store
   Loaded by BOTH the member app and the church panel.
   The single source of truth lives in localStorage (devonew_testimonies);
   the panel approves → the member mural reads. Same bridge pattern as
   courses → catalog and feedback → master.
   ============================================================ */
(function () {
  const KEY = 'devonew_testimonies';
  const DAY = 86400000;
  const now = Date.now();
  // só a igreja-demo recebe os testemunhos de exemplo; igreja nova começa vazia
  const _t = (window.DEVO_TENANT || '').toLowerCase();
  const IS_DEMO = !_t || _t === 'comunidadevida';

  /* categories (do espelho: Saúde, Família, Financeiro, Libertação, Resposta de Oração) */
  const CATS = [
    { id: 'oracao',     label: 'Resposta de Oração', icon: 'pray',   short: 'Oração' },
    { id: 'saude',      label: 'Saúde',              icon: 'heart',  short: 'Saúde' },
    { id: 'familia',    label: 'Família',            icon: 'users',  short: 'Família' },
    { id: 'financeiro', label: 'Financeiro',         icon: 'wallet', short: 'Finanças' },
    { id: 'libertacao', label: 'Libertação',         icon: 'flame',  short: 'Libertação' },
  ];
  const catOf = (id) => CATS.find((c) => c.id === id) || CATS[0];

  /* seed — a igreja Comunidade Vida (mesmos nomes do restante do sistema) */
  const SEED = [
    /* ---- aprovados (mural público dos membros) ---- */
    {
      id: 't1', title: 'Deus respondeu depois de 3 anos', cat: 'oracao',
      author: 'Mariana Alves', initials: 'MA', anon: false,
      status: 'aprovado', ts: now - 2 * DAY, reactions: 64, mine: false,
      body: 'Por três anos orei pela salvação do meu pai. Muitas vezes pensei em desistir e achar que não adiantava. No último domingo, ele levantou a mão durante o louvor e entregou a vida a Jesus. Deus guarda cada lágrima e responde no tempo certo. A Ele toda a glória.',
    },
    {
      id: 't2', title: 'A cura que os médicos não explicaram', cat: 'saude',
      author: 'Juliana Dias', initials: 'JD', anon: false,
      status: 'aprovado', ts: now - 4 * DAY, reactions: 48, mine: false,
      body: 'Recebi um diagnóstico difícil e a célula e a igreja se uniram em oração e jejum por mim. No retorno ao hospital, os exames vieram completamente limpos. O médico disse que não tinha explicação — mas eu sei o que aconteceu: foi a mão de Deus sobre a minha vida.',
    },
    {
      id: 't3', title: 'O que estava morto, Ele fez reviver', cat: 'familia',
      author: 'Carla Mendes', initials: 'CM', anon: true,
      status: 'aprovado', ts: now - 6 * DAY, reactions: 57, mine: false,
      body: 'Estávamos a um passo da separação, com o coração endurecido um contra o outro. Decidimos buscar a Deus juntos antes de tomar qualquer decisão. Hoje, seis meses depois, vivemos um novo tempo de amor, perdão e respeito. O que parecia morto, o Senhor fez reviver.',
    },
    {
      id: 't4', title: 'Porta de emprego aberta', cat: 'financeiro',
      author: 'Rafael Souza', initials: 'RS', anon: false,
      status: 'aprovado', ts: now - 9 * DAY, reactions: 33, mine: false,
      body: 'Fiquei oito meses desempregado, com as contas apertando e a fé sendo provada. Continuei firme nos dízimos e na confiança. Na semana passada fui contratado por uma empresa para a qual eu nem havia me candidatado — eles me procuraram. O Senhor continua sendo o meu provedor.',
    },
    {
      id: 't5', title: 'Livre da ansiedade que me prendia', cat: 'libertacao',
      author: 'Beatriz Carvalho', initials: 'BC', anon: false,
      status: 'aprovado', ts: now - 13 * DAY, reactions: 29, mine: false,
      body: 'Eu vivia refém de crises de ansiedade e noites inteiras sem dormir. Na célula fui acolhida sem julgamento e ministrada em oração. Aos poucos, a paz que excede todo entendimento tomou conta do meu coração. Hoje durmo tranquila e sirvo na recepção com alegria.',
    },

    /* ---- pendentes (chegam na Central de Moderação do painel) ---- */
    {
      id: 't6', title: 'Provisão no fim do mês', cat: 'financeiro',
      author: 'Eduardo Lima', initials: 'EL', anon: false,
      status: 'pendente', ts: now - 5 * 3600000, reactions: 0, mine: false,
      body: 'Faltavam três dias para o aluguel e nós não tínhamos o valor completo. Oramos em família, entregando a situação nas mãos de Deus. De forma totalmente inesperada, recebi um pagamento atrasado que eu já dava como perdido. Deus proveu na hora exata.',
    },
    {
      id: 't7', title: 'minha mãe foi curada graças a deus', cat: 'saude',
      author: 'Patrícia Gomes', initials: 'PG', anon: false,
      status: 'pendente', ts: now - 8 * 3600000, reactions: 0, mine: false,
      body: 'gente eu so queria conta pra vcs q minha mae tava muito mal no hospital essa semana e a celula orou bastante por ela e graças a deus ela melhorou e ja teve alta ontem mesmo gloria a deus viu obrigada a todos q oraram por nois',
    },
    {
      id: 't8', title: 'Reconciliação com meu pai', cat: 'familia',
      author: 'Marcos Pereira', initials: 'MP', anon: true,
      status: 'pendente', ts: now - 1 * DAY, reactions: 0, mine: false,
      body: 'Passei longos anos sem falar com o meu pai por causa de uma mágoa antiga. No último culto senti claramente que precisava perdoar para ser livre. Liguei para ele chorando e fomos restaurados depois de tanto tempo. A vida é curta demais para guardar rancor.',
    },
  ];

  function load() {
    try {
      const v = JSON.parse(localStorage.getItem(KEY));
      if (Array.isArray(v)) return v;
    } catch (e) {}
    if (!IS_DEMO) return []; // igreja nova: sem testemunhos de demonstração
    try { localStorage.setItem(KEY, JSON.stringify(SEED)); } catch (e) {}
    return SEED.map((t) => ({ ...t }));
  }
  function save(list) {
    try { localStorage.setItem(KEY, JSON.stringify(list)); } catch (e) {}
  }

  function relTime(ts) {
    const d = Date.now() - ts;
    if (d < 90000) return 'agora há pouco';
    if (d < 3600000) return 'há ' + Math.max(1, Math.floor(d / 60000)) + ' min';
    if (d < DAY) return 'há ' + Math.floor(d / 3600000) + ' h';
    const days = Math.floor(d / DAY);
    if (days === 1) return 'ontem';
    if (days < 7) return 'há ' + days + ' dias';
    const w = Math.floor(days / 7);
    if (w < 5) return 'há ' + w + (w === 1 ? ' semana' : ' semanas');
    const mo = Math.floor(days / 30);
    return 'há ' + mo + (mo === 1 ? ' mês' : ' meses');
  }

  /* display name + initials respecting anonymity */
  function displayName(t) {
    if (!t.anon) return { name: t.author, initials: t.initials, anon: false };
    return { name: 'Irmão(ã) em Cristo', initials: '✦', anon: true };
  }

  window.TESTI = { KEY, DAY, CATS, catOf, load, save, relTime, displayName };
})();
