rafatosta / zapzap

WhatsApp desktop application written in Pyqt6 + PyQt6-WebEngine.
https://rtosta.com/zapzap-web/
GNU General Public License v3.0
86 stars 2 forks source link

Atalho para fechar conversa atual #94

Closed RoinujNosde closed 2 years ago

RoinujNosde commented 2 years ago

image Seria possível adicionar um atalho que faz a mesma funcionalidade daquele botão? Talvez um Ctrl W.

rafatosta commented 2 years ago

Toda e qualquer manipulação na página pode ser feita através de comandos em Javascript.

Se enviar um que execute essa funcionalidade na página posso criar um atalho.

RoinujNosde commented 2 years ago

Já tentei encontrar a função com o debug do navegador, mas sem sucesso. O js da página está ofuscado.

rafatosta commented 2 years ago

Essa função não pode ser encontrada, precisa ser criada. Olha esse exemplo: #85

RoinujNosde commented 2 years ago

https://greasyfork.org/en/scripts/443126-whatsapp-conversation-hider/code

Eu fiz esse código há um tempo. Só que a implementação não tá legal, tá simulando um clique em "Opções", depois no "Fechar conversa". Tem um delay também... Seria melhor uma função nativa do web, que está escondida em algum lugar.

rafatosta commented 2 years ago

Se executar diretamente o closeConversation() no console a conversa é fechada?

Só preciso do comando direto, pois o evento coloco na interface fora da página.

RoinujNosde commented 2 years ago

Sim

RoinujNosde commented 2 years ago

Dentro do closeConversation() tem mais um delay para esperar o menu abrir, se conseguir otimizar isso...

rafatosta commented 2 years ago

Quer implementar isso? Te digo aonde alterar (as alterações) Se depender de mim não farei isso tão cedo ou faz uma doação como forma de incentivo 🍕🍔☕

RoinujNosde commented 2 years ago

Pode falar :)

rafatosta commented 2 years ago

Pode falar :)

  1. Criar o Menu no MainWindow.ui
  2. Criar uma função no MainWindow.py para emitir um sinal pra o zapHome para informar que tem um evento de fechar mensagem
  3. Colocar o sinal em MenuBar() para chamar a função definida em 2
  4. Criar uma função em zapHome. Essa função fará:
    • Pega a referencia da página atual
    • Chama uma função referente ao container da página
    • olhe a função reloadPage()
  5. Criar uma função em UserContainer que acessará a pagina via page = self.browser.page() e emitirá a instrução em JS page.runJavaScript("")
rafatosta commented 2 years ago

Não se notou, mas pressionando ao visualizar uma imagem é como se apertasse em Download. Tem como fazer alguma verificação sobre isso ou até fechar a visualização da imagem ao pressionar o atalho de fechar a conversa?

image

RoinujNosde commented 2 years ago

Acho que isso deve resolver:

if (!getMoreOptions()) {
    return;
}
rafatosta commented 2 years ago

Acho que isso deve resolver:

if (!getMoreOptions()) {
    return;
}

Vou fazer o teste mais tarde. Valeu

rafatosta commented 2 years ago

Testei aqui e não funcionou. De qualquer vou lançar uma atualização hoje e aos poucos vamos ajustando isso.

RoinujNosde commented 2 years ago

Ah, não tinha entendido direito o problema. Mais tarde dou uma olhada.

RoinujNosde commented 1 year ago

image Será que esse atalho é recente? Nunca tinha reparado nisso.

Simplificaria e muito a lógica do closeConversation(), é só enviar o ESC para a página.

rafatosta commented 1 year ago

Também não reparei nisso. Simplifica bastante 🙌🏽🙌🏽

rafatosta commented 1 year ago

Funciona perfeitamente. Já fiz o teste e vou mandar um PR e mandar a atualização para o flathub. Valeu!

rafatosta commented 1 year ago

Na verdade, todos os atalhos estão funcionando sem qualquer interferência minha. Como o ESC foi sobrescrito para ser executado ao fechar, então precisou ser reimplementado.