/*
 * Ce module permet d'écouter la blockchain
 * Il maintient un tableau de hooks
 * Il vérifie l'existence d'un nouveau block toutes les 30s
 * Si un nouveau block est détecté, les hooks sont lancés un par un
 */
blockchainListener = function(){

  var _last_block       = null;
  var _last_block_hooks = [];
  
  function _logBlockHash(leblock)
  {
    console.log('Last Block detected : '+leblock.hash);
    return true;
  };

  function _isBlockNew(leblock)
  {
    return ((_last_block == null)||(_last_block.hash != leblock.hash));
  };
  
  function _getLastBlockInfo()
  {
    $.get( "data/getBlockInfo.php", function( data ) {
      if (_isBlockNew(data))
      {           
        _last_block = data;
        _last_block_hooks.forEach(function(trigger) {
          trigger(data);
        });
      } 
    }, "json" );

    setTimeout(_getLastBlockInfo, 30000);
  };

  function _addBlockHook(addBlockHook){
    _last_block_hooks.push(addBlockHook);
  };

  function _init(){
    _last_block_hooks.push(_logBlockHash);
    _getLastBlockInfo();
  };

  return {init: _init, addBlockHook: _addBlockHook};
}();

$(document).ready(function() {
  blockchainListener.init();
});
