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

Tucanos reclamam de aplicativo que será usado nas prévias do PSDB

17.out.2021 - Tela do aplicativo PSDB Prévias - Reprodução/App Prévias PSDB
17.out.2021 - Tela do aplicativo PSDB Prévias Imagem: Reprodução/App Prévias PSDB

Felipe Pereira

Do UOL, em São Paulo

18/10/2021 04h00

As prévias para escolha do candidato a presidente da República pelo PSDB preveem votação pelo aplicativo para filiados, vereadores e deputados estaduais, mas desde que ele entrou em funcionamento, na última quinta-feira (14), há várias reclamações. Elas acontecem em grupos de WhatsApp de militantes do partido, e o PSDB Mulher fez uma publicação sobre as dificuldades em seu site.

O prazo para cadastramento dos tucanos que desejam votar nas prévias vai até 14 de novembro. O primeiro turno vai ocorrer em 21 de novembro. Concorrem à indicação de candidato do PSDB o governador de São Paulo, João Doria; o governador do Rio Grande do Sul, Eduardo Leite; e o ex-senador amazonense Arthur Virgílio Neto.

Os relatos mais comuns são de problemas no cadastramento, falta de respostas na central de dúvidas e reclamações porque o app não está disponível para iPhone. A direção nacional do partido enviou uma nota ao UOL afirmando que o sistema é inovador e eventuais falhas estavam previstas.

"Muitos dos problemas relatados, inclusive, se relacionam com etapas absolutamente necessárias para aumentar a segurança do sistema, uma prioridade em sua concepção", disse o partido.

Sobre o aplicativo não estar disponível para iPhone, o PSDB alegou que o app foi entregue para o Google e Apple na mesma data. Enquanto ele foi colocado no Google Play no mesmo dia, a App Store pediu prazo de até cinco dias.

Em um grupo de apoiadores de João Doria, um homem reclamava durante o domingo. "O aplicativo está ruim demais, a gente ama o PSDB e insiste, mas por Deus."

Outro tucano relatou dificuldade em ter a foto aceita. "Tive que tirar 21 vezes a foto de rosto para conseguir validar...rss quase desisti."

O PSDB Mulher colheu reclamações de várias partes do país e publicou em seu site. A vereadora Kátia Zummach (PSDB), de Nova Petrópolis (RS), manifestou preocupação em relação à dificuldade que idosos terão com a burocracia e com pessoas com celulares antigos. "Quem não lida com a tecnologia ou tem celular um pouco ultraado, sem muita memória, não consegue nem baixar".

Militante do Rio de Janeiro, Ceumar Turano teme que as pessoas deixem de participar por causa da dificuldade com o aplicativo. "Título de eleitor é igual a F: numeração única para cada indivíduo. Poderia e deveria ser algo simples. Estamos correndo o risco que aconteça a desistência de votar".

No Google Play, há elogios ao aplicativo ("Funcionou certinho, consegui cadastrar sem problemas"; "Fácil de usar, prático e rápido"), mas também críticas ("Problema no sistema de reconhecimento facial e erro no cadastro inicial"; "Muito ruim cadastrar... Agora deu pra dizer que meu telefone já está cadastrado").

A nota enviada pela direção do PSDB defende o app e diz que a alternativa seria voto em papel, uma alternativa que o partida considera mais cara e menos segura.

"Também salientamos que a alternativa posta hoje ao aplicativo nas prévias é o voto em cédula - que envolve riscos de fraude, custos logísticos (distribuição de urnas por todo Brasil inclusive em lugares remotos como interior da Amazônia), contratação de fiscais de urnas para cada candidato, divergências no processo de contabilização de votos, e atrasos na apuração", informa trecho da nota.