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

Muitas mensagens no WhatsApp? Veja dicas para organizar e não perder nada

Getty Images
Imagem: Getty Images

Adriano Ferreira

Colaboração para Tilt, de Florianópolis

01/02/2022 13h27

Mensagens toda hora, notificações de conversas não lidas, pessoas da família tentando falar com você, troca de arquivos do trabalho. Já faz tempo que o WhatsApp virou extensão das ferramentas de trabalho para muita gente.

Se você a por isso e a tensão aumenta em meio ao alto volume de informações, saiba que existem algumas dicas simples que ajudam a organizar o fluxo de mensagens e evitam que você perca coisas importantes.

Arquivar mensagens

A primeira dica é usar a função arquivar mensagens, que dá para fazer com todos os chats (como dos amigos, da família e do trabalho).

As conversas arquivadas são aquelas que não são apagadas do celular. Elas ficam "escondidas" em um lugar reservado para elas. Assim, não ficam visíveis na lista de chats do WhatsApp.

Uma vez arquivadas, as notificações não aparecerão quando as pessoas entrarem em contato com você. Isso só ocorrerá se você alterar as configurações para que os alertas sejam recebidos. Por isso, tome cuidado ao usar o recurso para evitar que você perca algo importante. V

Você pode, por exemplo, usar a função para colocar as mensagens de trabalho que podem ser resolvidas no dia seguinte. Quando iniciar o expediente, você a os itens arquivados e os desarquiva para concluir o que deve ser feito.

Outro exemplo é com mensagens de amigos que você não pode responder na hora em que enviaram. Assim que possível, entre nessa parte dos chats e responda o que puder.

Veja abaixo como arquivar e depois desarquivar as mensagens no WhatsApp:

  1. No mensageiro, na aba "Conversas" no canto superior do esquerdo do app, toque e pressione a conversa individual ou o grupo para arquivar;
  2. Em seguida, vá no símbolo do canto superior direito, que surgirá na tela, ao lado dos três pontinhos.

Pronto! Você arquivou a sua conversa.

Desarquivar conversas

  1. No topo da tela, na aba "Conversa", vá em "Arquivadas";
  2. Toque e pressione a conversa de preferência para desarquivá-la;
  3. No canto superior direito da tela, prossiga no ícone de desarquivamento.

A sua conversa individual ou grupo está desarquivada.

Caso você não tenha encontrado a opção "Arquivadas" no WhatsApp mesmo depois de arquivar a sua conversa, siga os os abaixo:

  1. No WhatsApp, na tela inicial, vá em "Conversas", continue no canto superior direito nos três pontinhos;
  2. Toque em "Configurações" nas opções disponíveis;
  3. Na tela seguinte, habilite a opção "Manter conversas arquivadas".

Agora, a opção "Arquivadas" estará ível na aba "Conversas" na tela principal do WhatsApp.

Fixe conversas importantes no topo da tela

A segunda dica é fixar aquele grupo ou contato no topo da tela do WhatsApp para não perder de vista quando receber novas mensagens de outras pessoas.

  1. Na tela inicial do WhatsApp, na aba "Conversas", vá e pressione a conversa individual ou o grupo que deseja fixar no topo da tela;
  2. Em seguida, surgirão alguns ícones no topo da tela, toque no primeiro símbolo do lado esquerdo.

O grupo ou a conversa selecionada ficará fixado no topo do aplicativo. Só lembre-se que o limite é de até três conversas fixadas.