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

Esse conteúdo é antigo

Bolsonaro bloqueou 82 jornalistas e 7 veículos de comunicação no Twitter

O presidente Bolsonaro já bloqueou 82 jornalistas no Twitter - ISAC NÓBREGA/PR
O presidente Bolsonaro já bloqueou 82 jornalistas no Twitter Imagem: ISAC NÓBREGA/PR

Do UOL, em São Paulo

12/01/2022 18h41

O presidente Jair Bolsonaro (PL) já bloqueou de seu perfil no Twitter pelo menos 82 jornalistas e outros sete veículos de comunicação, segundo levantamento feito pela Abraji (Associação Brasileira de Jornalismo Investigativo). Em julho eram 69 profissionais de imprensa e seis veículos.

Os sites bloqueados por Bolsonaro são: "The Intercept Brasil", "DCM", "Aos Fatos", "Congresso em Foco", "Repórter Brasil", "O Antagonista" e "Brasil de Fato".

Ainda de acordo com o levantamento da Abraji, dos 315 bloqueios no Twitter contra profissionais de imprensa registrados pela entidade até ontem, 291 foram realizados por Bolsonaro, seus três filhos com cargos eletivos (Flavio Bolsonaro, Carlos Bolsonaro e Eduardo Bolsonaro), ministros e secretários especiais de Estado, além de parlamentares que compõem a base de apoio do atual governo.

No caso do vereador Carlos Bolsonaro (Republicanos-RJ), foram bloqueados os perfis do UOL Confere e "Congresso em Foco", parceiro do UOL. A equipe de checagem do UOL chegou a questionar o vereador sobre o bloqueio, mas não obteve retorno.

A reportagem do UOL também entrou em contato por email com a assessoria da presidência e aguarda posicionamento.

No ano ado, a Abraji entrou com ação no STF (Supremo Tribunal Federal), via mandado de segurança coletivo, para que o presidente desbloqueie os profissionais de imprensa banidos de sua conta na rede social. Para a entidade, "a prática configura restrição de o a informações públicas garantido pela Constituição Federal" e "sinaliza um claro impedimento ao trabalho de profissionais de imprensa e ato discriminatório".

Em novembro, o procurador-geral da República, Augusto Aras, considerou que as redes sociais do presidente, mesmo sendo constantemente utilizadas para divulgação de ações oficiais, não chegam a se configurar como meios oficiais de comunicação. Para o procurador, seus perfis são ferramentas de uso privado, e que sua gestão não está vinculada à istração Pública.

Em entrevista ao site "Núcleo Jornalismo", o diretor de Políticas Públicas do Twitter na América Latina, Hugo Rodriguez Nicolat, diz que a rede social não pode interferir na decisão de bloqueios a internautas e entidades, "já que o recurso é prerrogativa de quem usa a rede social e é uma situação que não se desenrola pelo Twitter, mas sim por pessoas que utilizam a plataforma".