;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Neymar, R10 e hit internacional: Luva de Pedreiro vive dias de superstar

Luva de Pedreiro realizou sonho de encontrar com Neymar com a ajuda de Luciano Huck
Luva de Pedreiro realizou sonho de encontrar com Neymar com a ajuda de Luciano Huck
Reprodução/Twitter

Do UOL, no Rio de Janeiro

29/03/2022 04h00

O tiktoker Iran Ferreira, mundialmente conhecido como Luva de Pedreiro, finalmente está aproveitando um pouco da fama que criou nas redes sociais. Nos últimos dias, ele acumulou encontros com vários de seus ídolos como Neymar e até Ronaldinho Gaúcho.

Mais que isso. O jovem de Quijingue, a 322 quilômetros de Salvador, na Bahia, segue viralizando e ultraando fronteiras no futebol mundial. Sucesso merecido? "Siiiii, graças a Deus, pai. O melhor do mundo, brasileiro. Receba!".

Continua depois da publicidade

O apelido surgiu justamente porque ele decidiu usar uma luva de pedreiro para imitar os jogadores que usam peça semelhante para se proteger do frio em outros continentes.

Reprodução / Instagram - Reprodução / Instagram
Imagem: Reprodução / Instagram

Os últimos dias foram mágicos para Iran, que saiu pela primeira vez da sua cidade. Conheceu a capital Salvador, experimentou comida que jamais tinha colocado na boca. Só novidades!

A primeira parada foi no Rio de Janeiro, convidado pelo Vasco, seu time do coração. Logo de cara, foi recepcionado pelo ídolo Roberto Dinamite, o que fez o pai do influenciador chorar com o encontro. Em seguida, conheceu os atuais jogadores do Cruzmaltino e até fez um desafio com Nenê.

A interação do Vasco com Luva de Pedreiro foi muito positiva para as mídias do clube. O fenômeno da internet fez o Cruzmaltino quebrar recordes.

Seleção

Em seguida, ele foi convidado a acompanhar o jogo da seleção brasileira contra o Chile, no Maracanã. E não é que a torcida gritou seu nome?

Continua depois da publicidade

Tour pela Globo

A semana também reservou um tour por programas da Globo. No domingo, ele participou de um quadro no "Esporte Espetacular"

Reprodução/Globo - Reprodução/Globo
Imagem: Reprodução/Globo

Depois foi a vez de realizar um sonho no "Domingão com Huck" e, finalmente, conhecer Neymar, amigo do apresentador.

Interações

Até o filho de Cristiano Ronaldo notou o Luva de Pedreiro, mas não foi o único. Fenômeno mundial, o baiano já foi até imitado por um jogador do Bayern de Munique.

O encontro mais recente certamente foi um dos mais especiais. De frente com Ronaldinho Gaúcho, Iran simplesmente se ajoelhou aos pés do craque. Receba, garoto!