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

Melhor amigo de Sarah Aline expõe descaso de Alface: 'Não era recíproco'

Sarah Aline e Alface - Reprodução/Gshow
Sarah Aline e Alface Imagem: Reprodução/Gshow

Colaboração para Splash, em São Paulo

01/08/2023 18h53

O podcaster Antônio Valente, melhor amigo de Sarah Aline, 25, veio a público, através de seu perfil no Instagram, contar sobre o relacionamento da psicóloga e Ricardo Alface, 31, após o fim do reality show global.

O youtuber afirma que o ex-BBB nunca gostou de sua opinião sobre o envolvimento de Alface e Sarah. "Quando eu conheci, ele perguntou o que eu achei da participação dele no programa e do envolvimento com a minha amiga. Eu disse que achei a participação dele interessante, mas no início tinha uma visão dele como uma pessoa reativa, e que esse relacionamento amenizou essa visão tanto pra mim quanto para outras pessoas. E eu senti nesse primeiro contato que ele não gostou muito de ouvir o que eu achava, apesar de ele ter perguntado. E assim gente, se tem uma coisa que eu não faço é média", contou.

Antônio diz que as atitudes de Ricardo após o Big Brother Brasil não o surpreendem, pois são impressões que já tem desde o confinamento. "Nada do que vocês estão trazendo do que aconteceu agora me surpreende, pois são percepções que eu tenho dele desde o programa", disse ele se referindo ao fato dos fãs questionaram sobre o biomédico assumir publicamente uma miss branca, mas não a ex-BBB.

O melhor amigo de Sarah conta que não é verdade que o casal não está junto por decisão de sua amiga. "Ela sempre foi muito sincera e honesta com tudo que ela sentia e queria, como uma boa escorpiana. Ela queria muito viver essa relação, muito mesmo. Eu estive muito próximo dela e só a gente que tava perto dela sabia como ela estava mal por as coisas não saírem do jeito que ela esperava, do jeito que ela tinha sonhado", afirmou Antônio.

Ele ainda expõe que Sarah fez tudo o que podia para o relacionamento com o ex-BBB dar certo, mas que não foi correspondida. "Não era recíproco, não era por falta de interesse dela, muito pelo contrário. Na visão que eu tenho, ela fez tudo que ela pôde, fez muito mais do que deveria pra manter isso, mas não foi bem recebido", contou.

O Podcaster diz que só falou sobre o assunto pois já estava incomodado com as importunações dos fãs, mas que não pretende mais falar sobre isso após o desabafo. "Sempre me perguntavam, eu nunca falavam, e tem me consumido um pouco essas importunações. Então para ser honesto com vocês e tirar esse peso, eu decidi falar. Vejam com muito carinho, pois eu não pretendo voltar a falar sobre isso aqui.", desabafou o amigo da psicóloga.