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

Mensagem temporária e mais: 4 funções úteis do Instagram que você não sabia

App do Instagram permite o envio de mensagens que somem - Omkar Patyane/Pexels
App do Instagram permite o envio de mensagens que somem Imagem: Omkar Patyane/Pexels

Adriano Ferreira

Colaboração para Tilt, em Florianópolis

03/10/2021 04h00

Falou alguma coisa no bate-papo do Instagram e depois se arrependeu? Não precisa mais se preocupar com esse tipo de cilada. É possível apagar todas as mensagens automaticamente após sair da DM (Mensagem direta, em tradução livre do inglês) do aplicativo. A funcionalidade removerá o conteúdo em instantes.

Além desse recurso, existem outros que a rede social oferece e muita gente desconhece. Sabia, por exemplo, que nas chamadas de vídeo feitas no Instagram é possível acompanhar postagens ou gravações junto com outra pessoa ao mesmo tempo? E personalizar o plano de fundo dos chats com os amigos? Dá para mudar de cores e temas.

Veja a seguir o o a o de quatro funções ligadas ao bate-papo do Instagram.

Os tutoriais descritos aqui correspondem ao o a o realizado um celular Moto E4 com Android 7.1.1. As dicas abaixo também funcionam em aparelhos com iOS, sistema operacional do iPhone. O que irá mudar é um ou outro comando.

Modo temporário de mensagens

1. Vá até a tela inicial do Instagram e, no canto superior direito, toque no ícone de mensagens. Em seguida, escolha o seu contato para a conversa.

Recurso para ativar modo temporário de mensagens no Instagram (1) - Reprodução - Reprodução
Imagem: Reprodução

2. Toque na tela e prossiga subindo até que apareça um círculo com a mensagem "Deslize para cima para ativar o modo temporário". Continue até que o círculo esteja completo e você visualize o aviso "Solte para ativar o modo temporário".

Na sequência, a cor de fundo do chat será alterada. As mensagens visualizadas serão apagadas quando você sair do bate-papo.

OBS: No iPhone, entre na conversa desejada e vá no símbolo de i (informação) que fica dentro de um círculo, localizado no canto superior direito. Na sequência, uma nova tela irá exibir informações sobre as configurações de bate-papo. A opção "Modo temporário" é a primeira. Habilite o recurso e volte na mensagem.

Recurso para ativar modo temporário de mensagens no Instagram (2) - Reprodução - Reprodução
Imagem: Reprodução

3. Para desativar a função, arraste novamente o dedo em direção ao topo da tela até que veja "Deslize para cima para desativar o modo temporário". Logo após virá "Solte para desativar o modo temporário". Suas conversas voltarão ao padrão da Direct Message do Instagram.

Recurso para ativar modo temporário de mensagens no Instagram (3) - Reprodução - Reprodução
Imagem: Reprodução

Alteração da tela de fundo de conversa

1. No chat do seu contato, vá no canto direito, onde fica um ícone de informação. Em "Detalhes", prossiga na opção "Tema". Clique no ícone colorido e várias opções irão aparecer. No iPhone, o processo é semelhante.

Fundo de conversa do Instagram (1) - Reprodução - Reprodução
Imagem: Reprodução

2. Nos temas disponíveis do bate-papo, selecione o que mais você gostar. Volte para a sua conversa e o novo fundo de tela estará disponível.

Fundo de conversa do Instagram (2) - Reprodução - Reprodução
Imagem: Reprodução

Função "Assistir Juntos"

1. Vá até o símbolo de videochamada para conversar com alguém. Toque no ícone de mídia, na parte direita inferior da tela. Primeiro, aparecerão as publicações que você curtiu.

Função Assistir Juntos no Instagram (1) - Reprodução - Reprodução
Imagem: Reprodução

2. Na barra de mídia abaixo, é possível escolher fotos ou vídeos para ver com a outra pessoa. Escolha uma das opções e visualize, junto com o seu contato, o item selecionado.

Função Assistir Juntos no Instagram (2) - Reprodução - Reprodução
Imagem: Reprodução

Personalização de reação das mensagens

1. Na conversa, pressione a mensagem para reagir. Então clique no sinal "+".

Função Reação de Mensagens no Instagram (1) - Reprodução - Reprodução
Imagem: Reprodução

2. Vá até "Personalizar" e pesquise a figura que deseja acrescentar à sua lista ou deslize para cima para ver os emojis disponíveis. Em seguida, prossiga no ícone no canto direito para concluir.

Função Reação de Mensagens no Instagram (2) - Reprodução - Reprodução
Imagem: Reprodução

3. Após adicionado, o emoji permanecerá na lista. Caso prefira, mantenha a figura pressionada para multiplicar a reação.

Função Reação de Mensagens no Instagram (3) - Reprodução - Reprodução
Imagem: Reprodução