From bd3799fe02c2f67d1add147e7822e10c5dee291a Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Thu, 22 Mar 2018 12:43:08 +0100 Subject: [PATCH] messages coming from known muc server are treated as muc when creating conversation --- .../conversations/parser/MessageParser.java | 8 +- .../services/XmppConnectionService.java | 5 +- .../conversations/xmpp/XmppConnection.java | 12 +- src/main/res/values-ca/strings.xml | 109 ++++++++++++++---- src/main/res/values-it/strings.xml | 8 ++ src/main/res/values-pt-rBR/strings.xml | 59 ++++++++++ 6 files changed, 168 insertions(+), 33 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index 8e716f1b4..f05b01137 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -235,7 +235,6 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece } final MessagePacket packet; Long timestamp = null; - final boolean isForwarded; boolean isCarbon = false; String serverMsgId = null; final Element fin = original.findChild("fin", Namespace.MAM_LEGACY); @@ -253,7 +252,6 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece } timestamp = f.second; packet = f.first; - isForwarded = true; serverMsgId = result.getAttribute("id"); query.incrementMessageCount(); } else if (query != null) { @@ -269,10 +267,8 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece } timestamp = f != null ? f.second : null; isCarbon = f != null; - isForwarded = isCarbon; } else { packet = original; - isForwarded = false; } if (timestamp == null) { @@ -309,7 +305,6 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece Log.e(Config.LOGTAG,account.getJid().asBareJid()+": received groupchat ("+from+") message on regular MAM request. skipping"); return; } - boolean isProperlyAddressed = (to != null) && (!to.isBareJid() || account.countPresences() == 0); boolean isMucStatusMessage = from.isBareJid() && mucUserElement != null && mucUserElement.hasChild("status"); boolean selfAddressed; if (packet.fromAccount(account)) { @@ -332,7 +327,8 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece } if ((body != null || pgpEncrypted != null || (axolotlEncrypted != null && axolotlEncrypted.hasChild("payload")) || oobUrl != null) && !isMucStatusMessage) { - final Conversation conversation = mXmppConnectionService.findOrCreateConversation(account, counterpart.asBareJid(), isTypeGroupChat, false, query, false); + final boolean conversationIsProbablyMuc = isTypeGroupChat || mucUserElement != null || account.getXmppConnection().getMucServers().contains(counterpart.getDomain()); + final Conversation conversation = mXmppConnectionService.findOrCreateConversation(account, counterpart.asBareJid(), conversationIsProbablyMuc, false, query, false); final boolean conversationMultiMode = conversation.getMode() == Conversation.MODE_MULTI; if (serverMsgId == null) { diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 83d5a4c2c..d2cce0815 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -3357,10 +3357,7 @@ public class XmppConnectionService extends Service { final Set mucServers = new HashSet<>(); for (final Account account : accounts) { if (account.getXmppConnection() != null) { - final String server = account.getXmppConnection().getMucServer(); - if (server != null) { - mucServers.add(server); - } + mucServers.addAll(account.getXmppConnection().getMucServers()); for (Bookmark bookmark : account.getBookmarks()) { final Jid jid = bookmark.getJid(); final String s = jid == null ? null : jid.getDomain(); diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 05607474e..1a5dcc117 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -1521,18 +1521,24 @@ public class XmppConnection implements Runnable { } } - public String getMucServer() { + public List getMucServers() { + List servers = new ArrayList<>(); synchronized (this.disco) { for (final Entry cursor : disco.entrySet()) { final ServiceDiscoveryResult value = cursor.getValue(); if (value.getFeatures().contains("http://jabber.org/protocol/muc") && !value.getFeatures().contains("jabber:iq:gateway") && !value.hasIdentity("conference", "irc")) { - return cursor.getKey().toString(); + servers.add(cursor.getKey().toString()); } } } - return null; + return servers; + } + + public String getMucServer() { + List servers = getMucServers(); + return servers.size() > 0 ? servers.get(0) : null; } public int getTimeToNextAttempt() { diff --git a/src/main/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml index 17cda4bff..32e7dd2c8 100644 --- a/src/main/res/values-ca/strings.xml +++ b/src/main/res/values-ca/strings.xml @@ -2,45 +2,47 @@ Preferències Nova conversa - Gestionar comptes - Finalitzar conversa + Gestiona els comptes + Finalitza la conversa Detalls del contacte Detalls del xat de grup Conversa segura - Afegir compte + Afegeix un compte Edita el nom Afegeix a la llibreta d\'adreces Elimina de la llista de contactes - Bloqueja contacte - Desbloqueja contacte + Bloqueja el contacte + Desbloqueja el contacte Bloqueja el domini - Desbloqueja aquest domini - Administrar comptes + Desbloqueja el domini + Administra els comptes Configuració Compartir amb converses Començar una conversa Tria el contacte - LLista bloqueix + Comparteix mitjançant compte + Llista de bloqueig Ara 1 min abans %de minuts abans Converses sense llegir o no llegides enviant… Desxifrant missatge. Espereu ... - Missatge xifrat OpenPGP + Missatge xifrat amb OpenPGP El sobrenom ja està en ús + Sobrenom invàlid Administrador Propietari Moderador Participant Visitant - Vols eliminar a %s de la teva llista?. La conversa associada a aquest compte no s\'eliminarà. - Li agradaria bloquejar %s i no podrà enviar missatges? - L\'hi agradaria desbloquejar %s i permetre\'ls enviar-vos missatges? - Bloqueja tots els teus contactes des de %s? - Desbloqueja tots el contactes des de %s? + Voleu eliminar a %s de la vostra llista de contactes? La conversa associada a aquest contacte no s\'eliminarà. + Voleu impedir que %s us pugui enviar missatges? + Us agradaria desbloquejar %s i permetre que us enviï missatges? + Voleu bloquejar tots els contactes de %s? + Voleu desbloquejar tots el contactes de %s? Contacte bloquejat - L\'hi agradaria eliminar %s de favorits?? La conversació associada amb aquesta llista de favorits no serà eliminada. + Voleu eliminar %s dels marcadors? La conversa associada amb aquest marcador no serà eliminada. Registrar nou compte al servidor Canviar la contrasenya del servidor Compartir amb @@ -48,8 +50,8 @@ Convida un contacte Contactes Cancel·lar - Conjunt - Afegir + Aplica + Afegeix Editar Eliminar Bloquejar @@ -229,9 +231,9 @@ Unir-se Direcció del xat de grup room@conference.example.com/nick - Guardar com a favorits - Eliminar de favorits - Aquesta llista de favorits ja existeix + Guarda com a marcador + Elimina dels marcadors + Aquest marcador ja existeix Edita el tema del xat de grup El tema d\'aquest xat de grup S\'està unint al xat de grup... @@ -239,6 +241,8 @@ Afegir un contacte a la llista de contactes Afegir nou %s ha llegit fins aquest punt + %s ha llegit fins aquí + %1$s i %2$d més han llegit fins aquí Publicar Tocar avatar per seleccionar imatge de la galeria Publicant... @@ -362,6 +366,7 @@ mentrestant. No hi ha claus utilitzables per a aquest contacte.\nEls fitxers noves del servidor no han tingut èxit. Potser hi ha alguna cosa malament amb el servidor del vostre contacte. No hi ha claus disponibles per a aquest contacte.\nAssegureu-vos que teniu una subscripció de presència mútua. No hi ha claus disponibles per a aquest contacte. Si heu purgat qualsevol de les claus, heu de generar-ne de noves. + Alguna cosa ha anat malament Anar a cercar la història als servidors No hi ha més histories al servidor Actualitzant @@ -407,6 +412,9 @@ mentrestant. No s\'han pogut modificar les opcions de xat de grup Mai Fins nou avís + Posposa + Respon + Marcar com llegit Entrada Entra per enviar Utilitza el botó enter per enviar el missatge @@ -461,6 +469,7 @@ mentrestant. Trieu una acció ràpida Cerca contactes o grups Envia un missatge privat + %1$s ha deixat el xat del grup! Nom d\'usuari Nom d\'usuari Aquest no és un nom d\'usuari vàlid @@ -472,6 +481,7 @@ mentrestant. Vincular el error El servidor no es fa responsable del domini Trencat + Disponibilitat Fora quan la pantalla està apagada Marqueu el vostre recurs quan la pantalla estigui desactivada \"No molesteu\" en modo silenciós @@ -514,6 +524,8 @@ mentrestant. Imatge compartida amb %s Imatges compartides amb %s Text compartit amb %s + Conversations necessita accés a emmagatzematge extern + Conversations necessita accés a la càmera Sincronitza amb contactes Conversations vol coincidir amb la vostra llista XMPP amb els vostres contactes per mostrar els noms i avatars complets.\n\nConversations només @@ -555,6 +567,9 @@ missatges.\n\nAra se us demanarà que desactiveu-las. Error de seguretat: accés d\'arxiu no vàlid No s\'ha trobat cap aplicació que comparteixi URI Comparteix l\'URI amb... + Jabber és una xarxa de missatgeria instantània independent del proveïdor. Podeu + utilitzar aquest client amb el servidor de Jabber que trieu.\nPerò +per a la seva comoditat hem facilitat crear un compte a converses.im¹; un proveïdor especialment indicat per a l\'ús amb Conversations. Us guiarem pel procés de creació d\'un compte a conversations.im.¹\nQuan trieu conversations.im com a proveïdor, podreu comunicar-vos amb els usuaris d\'altres proveïdors donant-los la vostra ID Jabber completa. @@ -562,6 +577,8 @@ d\'altres proveïdors donant-los la vostra ID Jabber completa. Crear compte Utilitza el meu propi proveïdor Tria el teu nom d\'usuari + Gestioneu la disponibilitat manualment + Establir la vostra disponibilitat en editar el vostre missatge d\'estat. Canvi de presència Missatge d\'estat Estableix per a tots els comptes d\'aquest dispositiu @@ -648,8 +665,34 @@ d\'altres proveïdors donant-los la vostra ID Jabber completa. He seguit aquest enllaç des d\'una font de confiança Esteu a punt de verificar les claus OMEMO de %1$sdesprés de fer clic a un enllaç. Això només és segur si seguiu aquest enllaç des d\'una font de confiança on només %2$s podria haver publicat aquest enllaç. Comproveu les claus OMEMO + Mostra inactiu + Amaga inactiu Dispositiu no confiable Estàs segur que vols eliminar la verificació d\'aquest dispositiu?\nAquest dispositiu i missatges procedents d\'aquest dispositiu es marcaran com a no confiables. + + 1%d segons + %d segons + + + 1%d minuts + %d minuts + + + 1%d hores + %d hores + + + 1%d dies + %d dies + + + 1%d setmanes + %d setmanes + + + 1%d meses + %d meses + Supressió de missatge automàtic Suprimiu automàticament missatges d\'aquest dispositiu que són més grans que el marc de temps configurat. Xifrant el missatge @@ -682,4 +725,30 @@ d\'altres proveïdors donant-los la vostra ID Jabber completa. Copiar al portapapers Missatge copiat al portapapers Missatge + Els missatges privats estan desactivats + Aplicacions protegides + Per continuar rebent notificacions, fins i tot quan la pantalla està apagada, heu +d\'afegir Converses a la llista d\'aplicacions protegides. + Voleu acceptar un certificat desconegut? + El certificat del servidor no està signat per una autoritat de certificació coneguda. + El certificat del servidor ha caducat. + Voleu acceptar el nom del servidor associat? + El servidor no s\'ha pogut autenticar com \" 1%s \". El certificat només és vàlid per a: + Voleu connectar de totes maneres? + Detalls del certificat: + Verificació del certificat + Un cop + L\'escàner de codi QR necessita accés a la càmera + Desplaça\'t cap a la part inferior + Desplaceu-vos cap avall després d\'enviar un missatge + Edita el missatge d\'estat + Edita el missatge d\'estat + Desactiva el xifratge + Les converses no poden enviar missatges xifrats a 1%1$s . Això pot ser degut al vostre contacte mitjançant un servidor o client obsolet que no pot gestionar OMEMO. + No es pot obtenir la llista de dispositius + No es poden obtenir paquets de dispositius + Suggeriment: en alguns casos això es pot resoldre afegint les vostres llistes de contactes. + Estàs segur que vols desactivar el xifratge OMEMO per a aquesta conversa?\nAixò permetrà +que l\'administrador del servidor llegeixi els missatges, però pot ser l\'única forma de comunicar-se amb persones que utilitzin clients obsolets. + Desactiva ara diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml index 6ff2b33b9..052cd7390 100644 --- a/src/main/res/values-it/strings.xml +++ b/src/main/res/values-it/strings.xml @@ -363,6 +363,7 @@ Non ci sono chiavi utilizzabili per questo contatto.\nRicezione di nuovi chiavi dal server non riuscita. Forse qualcosa non va con il server del tuo contatto. Non ci sono chiavi utilizzabili per questo contatto.\nAssicurati di avere reciprocamente la sottoscrizione sulla presenza. Non ci sono chiavi usabili per questo contatto. Se hai cancellato qualsiasi loro chiave, devono generarne di nuove. + Qualcosa è andato storto Caricamento della cronologia dal server Fine cronologia sul server Caricamento… @@ -725,4 +726,11 @@ Scorri in basso dopo l\'invio di un messaggio Modifica messaggio di stato Modifica il messaggio di stato + Disattiva la cifratura + Conversations non riesce a inviare messaggi criptati a %1$s. Potrebbe essere dovuto al tuo contatto che usa un server obsoleto o un client che non supporta OMEMO. + Ricezione elenco dispositivi fallita + Ricezione gruppi dispositivi fallita + Suggerimento: in alcuni casi può essere risolto aggiungendo a vicenda la vostra lista di contatti. + Sei sicuro di disattivare la cifratura OMEMO per questa conversazione?\nCiò permetterà all\'amministratore del server di leggere i tuoi messaggi, ma potrebbe essere il solo modo di comunicare con persone che usano client obsoleti. + Disattiva adesso diff --git a/src/main/res/values-pt-rBR/strings.xml b/src/main/res/values-pt-rBR/strings.xml index 66c573061..e44d813fb 100644 --- a/src/main/res/values-pt-rBR/strings.xml +++ b/src/main/res/values-pt-rBR/strings.xml @@ -363,6 +363,7 @@ Não existe nenhuma chave utilizável disponível para este contato.\nA obtenção de novas chaves no servidor não foi bem sucedida. Pode ser que tenha algum problema com o servidor do seu contato. Não existem chaves em condições de uso para esse contato.\nCertifique-se de que existem requisições de presença mútuas. Não existe nenhuma chave utilizável para esse contato. Caso você tenha expurgado alguma chave dele, ele terá que gerar uma nova. + Alguma coisa deu errado Obtendo histórico do servidor Nenhum outro histórico do servidor Atualizando... @@ -408,6 +409,8 @@ Não foi possível modificar as opções da conversa em grupo Nunca Até segunda ordem + Soneca + Responder Marcar como lida Entrada Enter envia @@ -463,6 +466,7 @@ Selecione a ação rápida Pesquisar por contatos ou grupos Enviar mensagem privada + %1$s deixou a conversa em grupo! Nome de usuário Nome de usuário Esse não é um nome de usuário válido @@ -474,6 +478,7 @@ Falha na associação O servidor não responde por esse domínio Quebrado + Disponibilidade Afastado quando a tela estiver desligada Define o seu status como afastado quando a tela estiver desligada. \"Não perturbe\" em modo silencioso @@ -516,6 +521,8 @@ Imagem compartilhada com %s Imagens compartilhadas com %s Texto compartilhado com %s + O Conversations necessita de acesso ao armazenamento externo + O Conversations necessita de acesso à câmera Sincronizar com os contatos O Conversations quer procurar por correspondências entre contatos da sua conta Jabber e do seu telefone, para complementar as informações de nome completo e avatares\n\nO Conversations fará a verificação localmente, sem enviar nenhuma informação sua para o servidor\n\nVocê será solicitado a fornecer permissão de acesso aos seus contatos agora. Informação do certificado @@ -549,11 +556,14 @@ Erro de segurança: Acesso inválido ao arquivo Não foi encontrado nenhum aplicativo para compartilhar a URI Compartilhar a URI com... + Jabber é uma rede de mensageria instantânea independente de provedor. Você pode usar este cliente com qualquer servidor Jabber que você escolher.\nEntretanto, para sua conveniência, nós simplificamos o processo de criação de uma conta no conversations.im¹; um provedor especialmente configurado para ser usado com o Conversations. Nós guiaremos você ao longo do processo de criar uma conta em conversations.im.¹\nAo usar esse provedor você também poderá se comunicar com usuários de outros provedores. Basta fornecê-los a sua identificação Jabber completa. Sua ID Jabber será: %s Criar conta Usar meu próprio provedor Selecione seu nome de usuário + Gerenciar a disponibilidade manualmente + Defina sua disponibilidade ao editar a sua mensagem de status Alterar a presença Mensagem de status Definir para todas as contas deste dispositivo @@ -639,8 +649,34 @@ Eu segui este link a partir de uma fonte segura Você está prestes a verificar as chaves OMEMO de %1$s após ter clicado em um link. Isso só é seguro se você acesso esse link a partir de uma fonte segura, onde somente %2$s poderia tê-lo publicado. Verificar chaves OMEMO + Exibir os inativos + Ocultar os inativos Remover a confiança do dispositivo Tem certeza que deseja remover a verificação para este dispositivo?\nEste dispositivo e as mensagens oriundas dele serão marcadas como não confáveis. + + %d segundo + %d segundos + + + %d minuto + %d minutos + + + %d hora + %d horas + + + %d dia + %d dias + + + %d semana + %d semanas + + + %d mês + %d meses + Exclusão automática de mensagens Excluir automaticamente as mensagens deste dispositivo que sejam mais antigas do que o tempo estipulado. Criptografar a mensagem @@ -674,4 +710,27 @@ A mensagem foi copiada para a área de transferência Mensagem As mensagens privadas estão desabilitadas + Apps protegidos + Para continuar recebendo notificações, mesmo com a tela apagada, você precisa adicionar o Conversations à lista de apps protegidos. + Aceitar certificado desconhecido? + O servidor do certificado não está assinado por uma autoridade certificadora reconhecida. + O certificado do servidor expirou. + Aceitar nome de servidor não correspondente? + Não foi possível autenticar o servidor como \"%s\". O certificado é válido somente para: + Deseja conectar-se mesmo assim? + Detalhes do certificado: + Verificação do certificado + Uma vez + O scanner de QR code necessita de acesso à câmera + Rolar para baixo + Rola para o final após enviar uma mensagem + Editar a mensagem de status + Editar a mensagem de status + Desabilitar a criptografia + O Conversations é incapaz de enviar mensagens criptografadas para %1$s. Isso pode ocorrer caso o seu contato esteja usando um servidor desatualizado ou o cliente não consiga lidar com OMEMO. + Não foi possível obter a lista de dispositivos + Não foi possível obter o grupo de dispositivos + Dica: Em alguns casos isso pode ser resolvido adicionando-se um ao outro na lista de contatos. + Tem certeza que deseja desabilitar a criptografia OMEMO nesta conversa?\nIsso permitirá que o administrador do seu servidor seja capaz de ler suas mensagens. Por outro lado, pode ser a única forma de se comunicar com pessoas usando clientes desatualizados. + Desabilitar agora