RegistroMensagens

// ```remix-solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract RegistroMensagens {

    struct Mensagem {
        uint256 id;
        address from;
        address to;
        string text;
        uint256 timestamp;
        //string[] infos ; 
    }

    /*
    modifier onlyOwner {
       require(msg.sender == owner);
    _;
   }*/

    Mensagem[] private mensagens; // Array para armazenar as mensagens

    //string[] private mensagens;

    error ErrorIndexInvalid(uint256 index);

    //event MensagemRegistrada(uint256 id, address remetente, string conteudo, uint256 timestamp);

    function enviarMensagem(string memory _conteudo, address _to) public {
        uint256 novoId = mensagens.length; // Obter o próximo ID disponível
        Mensagem memory novaMensagem = Mensagem(
            novoId,
            msg.sender,
            _to,
            _conteudo,
            block.timestamp
        );
        mensagens.push(novaMensagem);

        //emit MensagemRegistrada(novoId, msg.sender, _conteudo, block.timestamp);
    }

    function obterTodasMensagens() public view returns (Mensagem[] memory) {
        return mensagens;
    }

    function obterMensagem(uint256 index) 
        public
        view
        returns (Mensagem memory)
    {
        //require (mensagens.length >  index, "Invalid index.");

   /*
  0 - ola 
  1 - hello 
  2 - ola grupo 

  l -> 3 
  i -> 1 = ok 
  i = 4 = not ok 
  */
        // 4    >     3 - FALSE
        // 1     >    5 - TRUE
        if (index > mensagens.length) {
            revert ErrorIndexInvalid(index);
            //revert ("mensagem");
        }

        return mensagens[index];
    }
}

```

Last updated