;(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

WhatsApp terá recurso de pesquisar mensagens para saber se é boato

Recurso de busca no Google por conteúdo de mensagens no WhatsApp está em teste - Reprodução/WABetaInfo
Recurso de busca no Google por conteúdo de mensagens no WhatsApp está em teste Imagem: Reprodução/WABetaInfo

Vinícius de Oliveira

Colaboração para Tilt

19/03/2020 10h17

Sem tempo, irmão

  • WhatsApp terá botão de lupa em textos encaminhados pelos usuários
  • Ferramenta pesquisará mensagens no Google para identificar fake news
  • Não há previsão para que recurso esteja disponível para usuários

Sabe aquela mensagem que você recebeu no grupo da família que tem cara, jeito e cheiro de boato? Pois uma nova função do WhatsApp promete facilitar a sua vida na hora de descobrir se aquele texto encaminhado pelo seu tio é verdadeiro ou "fake news". Algo bem útil em tempos de desinformação, como nesta pandemia do coronavírus.

De acordo com uma análise do código da versão 2.20.94, submetida ao Google Play Beta Program e descoberta pelo site WABetaInfo, o app terá uma função chamada Search Messages On The Web, que traduzida ao pé da letra significa "Procurar Mensagens na Web".

Ao receber um texto encaminhado daquele parente que compartilha conteúdo de origem duvidosa, uma lupa aparecerá ao lado do balão de mensagem. Após clicar no ícone de pesquisa, o WhatsApp perguntará se você deseja pesquisar aquele texto no Google para saber se trata-se de um boato ou se é real.

Lançada há um ano, a versão 2.19.73 do aplicativo também havia testado a possibilidade de pesquisar imagens encaminhadas em excesso nos grupos. Ainda não há data para que ambas as ferramentas fiquem disponíveis oficialmente para os usuários do app de troca de mensagens.

Estas são algumas das tentativas do aplicativo de Mark Zuckerberg de coibir a disseminação de notícias falsas em seus aplicativos. Durante a pandemia de coronavírus, o WhatsApp lançou uma central informativa sobre a doença, em parceria com a Organização Mundial da Saúde, Unicef e Pnud, para combater as fake news nas redes sociais.

SIGA TILT NAS REDES SOCIAIS