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

Veja três dicas para recuperar conversas apagadas no WhatsApp

Mirthyani Bezerra

Colaboração para Tilt

12/10/2020 15h27

Você trocou de smartphone e foi logo configurar o WhatsApp, mas percebeu que as suas conversas mais recentes não estavam mais lá, nem as fotos, os vídeos, arquivos que compartilharam com você. Ou talvez você só quis dar uma limpa nas conversas, mas acabou apagando coisa que não devia? Calma, não há motivos para pânico.

Na maioria dos casos, dá sim para recuperar conversas e os arquivos de mídia compartilhados no app. Tilt separou três dicas de como você pode conseguir tudo de volta.

Trocou de celular e perdeu as mensagens?

Se o seu caso é o mesmo do exemplo que iniciou esse texto, é provável que você não tenha feito o backup do WhatsApp no aparelho antigo. É importante que ele seja feito antes mesmo de você mudar de aparelho. Se você não o fez, será necessário voltar ao antigo celular para executá-lo.

Feito? No celular novo, desinstale e instale novamente o WhatsApp. Após o aviso de solicitação para confirmar o seu número surgir na tela, o aplicativo enviará um pedido para restaurar as mensagens e arquivos de mídia armazenados no último backup. Basta tocar em "Continuar" e "Restaurar".

Apagou fotos e vídeos sem querer?

A forma mais certeira de conseguir recuperar seus arquivos de volta também é por meio do backup de conversas do WhatsApp. Mas para que essa dica dê certo você precisa estar acostumado a executá-lo e estar com o backup em dia.

O WhatsApp fornece ao usuário duas formas de backup: a manual, em que você é responsável pela missão de lembrar de fazer o backup vez ou outra; e automático, em que o app programa backups por intervalos de tempo determinados por você. O backup é feito no Google Drive ou iCloud Drive (do iPhone). Se você não lembra, confira aqui o o a o de como fazer o backup.

Para rever as fotos e os vídeos apagados você só precisa desinstalar o WhatsApp e reinstala-lo novamente. Assim, quando aparecer a solicitação para confirmar o seu número, o aplicativo vai enviar um pedido para restaurar as mensagens e arquivos de mídia armazenados no último backup. Aí é só clicar em "Continuar" e "Restaurar".

Já vasculhou a pasta do WhatsApp no celular?

Há outra forma para quem tem um celular Android. Mas atenção: esse método só funciona se você não tiver ligado a opção "Apagar os arquivos de mídia desta conversa" quando apagou a mensagem original.

Todos os aplicativos instalados em seu aparelho possuem uma pasta no item "Arquivos" do sistema Android. No caso do WhatsApp, ele salva todos os arquivos de mídia enviados e recebidos nessa pasta.

Dessa forma, mesmo que a imagem tenha sido apagada no app, é possível que ela seja encontrada na pasta dentro dos arquivos.

Para á-la é simples. Cada aparelho dá um nome diferente, mas o processo é basicamente o mesmo.

  1. e "Meus Arquivos";
  2. Entre em "Armazenamento interno";
  3. Procure pela pasta "WhatsApp";
  4. Entre em "Mídia";
  5. Escolha a pasta desejada;
  6. Ao encontrar a foto basta movê-la para outra pasta de fácil o, como a Galeria de fotos.

Se nada der certo, outra forma de conseguir as fotos e os vídeos de volta é pedindo para a pessoa para a qual você encaminhou. Se ela não apagou sua conversa, ela terá o arquivo à disposição para te enviar. Boa sorte!