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

Por que manter selo azul gratuito dará mais dor de cabeça para Elon Musk

Reprodução/Twitter
Imagem: Reprodução/Twitter

Simone Machado

Colaboração para Tilt, em São José do Rio Preto (SP)

10/04/2023 04h01

A retirada do selo azul de verificação em perfis que não pagam o Twitter teve 1º de abril como data oficial. Contudo, a mudança em grande escala não correu, o que levantou dúvidas: Elon Musk, CEO da empresa, mentiu? Se o símbolo permanecer, os usuários que decidiram o Twitter Blue exatamente para ter a marcação poderão exigir algo da empresa?

Para especialistas ouvidos por Tilt, esse capítulo coloca ainda mais em risco a credibilidade das contas dos usuários e da própria rede social, e isso é apenas a ponta do iceberg. Quem se sentir lesado, poderia abrir um processo contra a companhia.

O que rolou

A marca azul era um mecanismo que atestava que um perfil pertencia de fato ao dono dele. Permitia que celebridades, figuras públicas, jornalistas e pessoas com relevância em seu ramo de atividade, por exemplo, tivessem a identificação, ajudando a evitar confusão com perfis fraudulentos.

Um tempo depois que comprou o Twitter, Elon Musk anunciou o plano de Twitter Blue. Um dos atrativos era a oferta exclusiva do selo azul. Quem decidisse não pagar, perderia a marcação.

No dia 1º de abril, no lugar de remover o símbolo dos não s, a rede social atualizou os perfis com a mensagem: "Esta conta é verificada porque está inscrita no Twitter Blue ou é uma conta herdada verificada" - ou seja, não diz se a pessoa pagou ou não.

A empresa não informou oficialmente se os selos serão removidos em massa nas próximas semanas.

Um dos motivos para a demora na remoção do selo seria porque o processo é feito de forma manual.

Responsabilidade jurídica

Os usuários que decidiram o Twitter Blue com medo de perder o selo azul podem cobrar judicialmente caso a verificação gratuita continue para todos, afirma a advogada Danielle Moura, especializada em direito civil e do consumidor.

"As pessoas que se sentem lesadas podem entrar com uma ação judicial, de repetição de indébito, com pedido de indenização por dano material e moral", explica.

A Repetição de indébito, no caso, é um meio de tentar reconhecer que o pagamento de neste período é indevida, uma vez que, supostamente, não está sendo cobrada a todos os usuários da plataforma, segundo a profissional.

Já o dano moral seria o argumento pelo abalo emocional imposto pelo eventual aborrecimento. O dano material teria relação com o pagamento realizado no período em que não havia cobrança a todos de forma indiscriminada.

Algumas empresas terão o selo de graça

Na semana ada, um relatório afirmou que a empresa planeja conceder marcas de verificação gratuitas a certas empresas. Isso pode incluir 500 principais anunciantes no Twitter e as 10 mil organizações com mais seguidores.

Essa diferenciação entre usuários também pode acarretar problemas ao CEO da plataforma, de acordo com Moura.

"O efeito do reconhecimento judicial, de cobrança indevida, uma vez feita somente a alguns consumidores, e a outros não, por estarem ferindo o princípio da isonomia, o Twitter e Elon Musk podem ser responsabilizados com o pagamento de indenização aos consumidores lesados com o pagamento da ", diz.

Credibilidade mais uma vez abalada

Para o professor Rodrigo Bossini, mestre em ciência da computação do Instituto Mauá de Tecnologia (IMT), os investimentos no Twitter devem sofrer quedas diante dessa nova polêmica.

"Com muitos perfis falsos sendo criados e verificados apenas pelo fato de desembolsarem o valor da , ficou evidente o despreparo técnico do Twitter para lidar com o problema", afirma.

"Consequências como anunciantes de todo o mundo resolvendo pausar suas campanhas ou mesmo excluir os investimentos dentro do Twitter já estão acontecendo, e podem se intensificar daqui para frente. Ou seja, mais incertezas no ar", conclui Rodrigo Cunha, chefe de Mídia da agência de publicidade Fri.to.

Twitter responde com emoji de cocô

Procurado por Tilt, por meio do email global de imprensa, a resposta automática foi um emoji de cocô. A prática é recorrente desde o final de março.