From 43b466704a1f5a08e1e2d4e98b6f2b7acb65cf21 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 20 Feb 2016 10:25:23 +0100 Subject: pulled translations from transifex --- src/main/res/values-nl/strings.xml | 28 ++++++++++++++++++++++++++++ src/main/res/values-zh-rCN/strings.xml | 21 +++++++++++++++++++++ 2 files changed, 49 insertions(+) (limited to 'src/main') diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml index c5d03158a..76a8b950a 100644 --- a/src/main/res/values-nl/strings.xml +++ b/src/main/res/values-nl/strings.xml @@ -102,6 +102,7 @@ De naam waarmee deze cliënt zich identificeert Aanvaard bestanden Aanvaard automatisch bestanden kleiner dan… + Melding Meldingen Melding als een nieuw bericht arriveert Trillen @@ -110,10 +111,12 @@ Speel beltoon af bij melding Uitstelperiode voor meldingen Schakel meldingen voor korte tijd uit als er een carbon copy wordt ontvangen + Geavanceerd Verstuur nooit crashrapportages Door crashrapportages te versturen help je de ontwikkeling van Conversations Bevestig berichten Laat je contacten weten wanneer je berichten hebt ontvangen en gelezen + Gebruikersomgeving OpenKeychain rapporteerde een fout I/O-fout tijdens ontsleutelen van bestand Aanvaarden @@ -188,6 +191,7 @@ XEP-0198: Stream Management XEP-0163: PEP (Avatars / OMEMO) XEP-0363: HTTP File Upload + XEP-0357: Push beschikbaar niet beschikbaar Ontbrekende publieke sleutel-aankondigingen @@ -237,6 +241,7 @@ Jij Onderwerp van groepsgesprek bewerken Groepsgesprek niet gevonden + Onbekende fout ontvangen Verlaten Contact heeft je toegevoegd aan zijn/haar contacten Contact toevoegen aan eigen contacten @@ -271,10 +276,14 @@ Ben je zeker dat je deze vingerafdruk wil verwijderen? Negeren Waarschuwing: Dit verzenden zonder wederzijdse aanwezigheidsupdates kan voor onverwachte problemen zorgen.\n\nGa naar contactgegevens om je aanwezigheidsupdates te bevestigen. + Beveiliging Verplicht end-to-end-versleuteling Stuur berichten altijd versleuteld (behalve in groepsgesprekken) + Berichtverbetering toestaan + Sta je contacten toe hun berichten na het versturen te verbeteren Sla versleutelde berichten niet op Waarschuwing: dit kan leiden tot verlies van berichten + Instellingen voor experts Wees voorzichtig met deze instellingen Over Conversations Build en licentie-informatie @@ -292,6 +301,8 @@ Andere Groepsgespreksnaam Gebruik onderwerp van kamer ipv JID om groepsgesprekken te identificeren + Automatisch deelnemen aan groepsgesprekken + Respecteer de autojoin-vlag bij groepsgespreksbladwijzers OTR-vingerafdruk gekopieerd naar klembord! OMEMO-vingerafdruk gekopieerd naar klembord! Je bent verbannen uit dit groepsgesprek @@ -422,6 +433,7 @@ 2 uur 8 uur Voor onbepaalde duur + Invoer Enter is versturen Gebruik de enter-toets om berichten te versturen Toon enter-toets @@ -485,13 +497,21 @@ Toon ontvangen berichten als zwarte tekst op een witte achtergrond Tor-netwerk niet beschikbaar Gebroken + Aanwezigheid Even weg wanneer scherm uit staat Stelt je bron in als even weg wanneer het scherm uitgeschakeld is Niet beschikbaar in stille modus Stelt je bron in als niet beschikbaar wanneer je apparaat in stille modus staat + Uitgebreide verbindingsinstellingen + Toon hostnaam- en poortinstellingen bij instellen van een account + xmpp.voorbeeld.be Account met certificaat toevoegen Kan certificaat niet verwerken Laat leeg om te authenticeren met certificaat + Archiefvoorkeuren + Voorkeuren voor archief aan serverzijde + Ophalen van archiefvoorkeuren. Even geduld… + Kon archiefvoorkeuren niet ophalen Captcha-tekst Captcha vereist voer de tekst van de afbeelding in @@ -501,6 +521,7 @@ Fout bij ophalen van OMEMO-sleutel! OMEMO-sleutel geverifieerd met certificaat! Je apparaat ondersteunt de selectie van cliënt-certificaten niet! + Verbinding Verbinden via Tor Tunnel alle verbindingen door het Tor-netwerk. Vereist Orbot Hostnaam @@ -513,6 +534,7 @@ %d bericht %d berichten + Laad meer berichten Bestand gedeeld met %s Afbeelding gedeeld met %s Conversations heeft toegang nodig tot de externe opslag @@ -523,6 +545,7 @@ Uitgever Algemene naam Organisatie + SHA-1 (Niet beschikbaar) Geen certificaat gevonden Melding bij alle berichten @@ -530,6 +553,7 @@ Meldingen uitgeschakeld Meldingen gepauzeerd Afbeeldingen comprimeren + Verklein en comprimeer afbeeldingen Altijd Automatisch Batterij-optimalisaties ingeschakeld @@ -537,4 +561,8 @@ Je apparaat voert sterke batterij-optimalisaties uit op Conversations, die kunnen leiden tot vertraagde meldingen of zelfs verlies van berichten.\nJe zal nu gevraagd worden deze optimalisaties uit te schakelen. Uitschakelen Het gekozen vlak is te groot + (Geen actieve accounts) + Dit veld is vereist + Bericht verbeteren + Verbeterd bericht sturen diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml index 9c6d66f58..5ed64ed5c 100644 --- a/src/main/res/values-zh-rCN/strings.xml +++ b/src/main/res/values-zh-rCN/strings.xml @@ -102,6 +102,7 @@ 客户端标识名称 接收文件 自动接收小于 … 的文件 + 通知 通知 收到新消息时通知 震动 @@ -110,10 +111,12 @@ 收到新消息时的铃声 通知限期 接收副本短时间内关闭通知 + 高级 总不发送崩溃报告 发送堆栈跟踪帮助 Conversations 开发人员 确认消息 当你已收到消息并且已阅时通知好友 + UI OpenKeychain 报告了一个错误 解密文件时出现 I/O 错误 接受 @@ -188,6 +191,7 @@ XEP-0198: 流管理 XEP-0163: PEP (替身 / OMEMO) XEP-0363: HTTP 文件上传 + XEP-0357: Push 有效 无效 缺少公钥通知 @@ -272,10 +276,14 @@ 是否确定删除该指纹? 忽略 警告:在没有相互更新在线联系人的情况下发送将会出现未知问题。\n\n前往联系人详情以验证您订阅的在线联系人。 + 安全 强制要求端对端加密 总是发送加密信息(讨论组信息除外) + 允许更正消息 + 允许您的联系人追回编辑他们的信息 不保存加密信息 警告:此操作将会导致信息丢失 + 高级设置 请谨慎使用 关于 Conversations 编译及许可证信息 @@ -425,6 +433,7 @@ 2 个小时 8 个小时 直到新的通知 + 输入 回车是发送 用回车键来发送消息 显示回车键 @@ -486,14 +495,21 @@ 收到的消息将显示为白底黑字 Tor network 不可用 损坏 + 存在 关闭屏幕时离开 当屏幕关闭时将标记您的资源为离开状态 静音模式时不可用 当设备进入静音模式时把资源标识改为不可用 + 高级边接设置 + 注册账户时显示主机名和端口 xmpp.example.com 使用证书添加账户 无法解析证书 留空以认证 w/ 证书 + 压缩设置 + 服务端压缩设置 + 正在获取压缩设置。请稍后... + 获取压缩设置失败 验证码 需要验证码 输入图片中的文字 @@ -503,6 +519,7 @@ 获取 OMEMO 密钥错误! 请用证书验证 OMEMO 密钥! 您的设备不支持设备证书选择! + 连接 通过 Tor 连接 所有连接使用 Tor 网络隧道。需要 Orbot 主机名 @@ -525,6 +542,7 @@ 发行人 通用名称 组织 + SHA-1 (不可用) 未发现证书 为所有信息显示通知 @@ -532,6 +550,7 @@ 禁用通知 暂停通知 压缩图片 + 裁剪并压缩图片 总是 自动 启用节电模式 @@ -543,4 +562,6 @@ 选择区域过大 (没有激活的账户) 必填 + 更正消息 + 发送更正后的消息 -- cgit v1.2.3 From ed740b4868884b159cce284ebfbd80cefc904520 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 21 Feb 2016 11:42:41 +0100 Subject: some mucs may grant voice to visitors in unmoderated rooms --- src/main/java/eu/siacs/conversations/entities/MucOptions.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/main') diff --git a/src/main/java/eu/siacs/conversations/entities/MucOptions.java b/src/main/java/eu/siacs/conversations/entities/MucOptions.java index 7f4ded119..be9d790d1 100644 --- a/src/main/java/eu/siacs/conversations/entities/MucOptions.java +++ b/src/main/java/eu/siacs/conversations/entities/MucOptions.java @@ -282,7 +282,9 @@ public class MucOptions { } public boolean participating() { - return !online() || self.getRole().ranks(Role.PARTICIPANT); + return !online() + || self.getRole().ranks(Role.PARTICIPANT) + || hasFeature("muc_unmoderated"); } public boolean membersOnly() { -- cgit v1.2.3 From b00c561f8182e1bd8c65be931b0b52cc4298edbb Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 21 Feb 2016 11:43:03 +0100 Subject: check for uuid change when decrypting pgp messages --- src/main/java/eu/siacs/conversations/crypto/PgpEngine.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'src/main') diff --git a/src/main/java/eu/siacs/conversations/crypto/PgpEngine.java b/src/main/java/eu/siacs/conversations/crypto/PgpEngine.java index 624d1b139..0afcb9e10 100644 --- a/src/main/java/eu/siacs/conversations/crypto/PgpEngine.java +++ b/src/main/java/eu/siacs/conversations/crypto/PgpEngine.java @@ -37,25 +37,24 @@ public class PgpEngine { this.mXmppConnectionService = service; } - public void decrypt(final Message message, - final UiCallback callback) { + public void decrypt(final Message message, final UiCallback callback) { Intent params = new Intent(); params.setAction(OpenPgpApi.ACTION_DECRYPT_VERIFY); + final String uuid = message.getUuid(); if (message.getType() == Message.TYPE_TEXT) { - InputStream is = new ByteArrayInputStream(message.getBody() - .getBytes()); + InputStream is = new ByteArrayInputStream(message.getBody().getBytes()); final OutputStream os = new ByteArrayOutputStream(); api.executeApiAsync(params, is, os, new IOpenPgpCallback() { @Override public void onReturn(Intent result) { notifyPgpDecryptionService(message.getConversation().getAccount(), OpenPgpApi.ACTION_DECRYPT_VERIFY, result); - switch (result.getIntExtra(OpenPgpApi.RESULT_CODE, - OpenPgpApi.RESULT_CODE_ERROR)) { + switch (result.getIntExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_ERROR)) { case OpenPgpApi.RESULT_CODE_SUCCESS: try { os.flush(); - if (message.getEncryption() == Message.ENCRYPTION_PGP) { + if (message.getEncryption() == Message.ENCRYPTION_PGP + && message.getUuid().equals(uuid)) { message.setBody(os.toString()); message.setEncryption(Message.ENCRYPTION_DECRYPTED); final HttpConnectionManager manager = mXmppConnectionService.getHttpConnectionManager(); -- cgit v1.2.3 From d2cfac222ef7c144047eb7518a32f7cf9b39144f Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 21 Feb 2016 17:32:46 +0100 Subject: show load more messages when auto loading is disabled and messages are still left on server --- .../conversations/services/MessageArchiveService.java | 4 ++++ .../eu/siacs/conversations/ui/ConversationFragment.java | 16 ++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) (limited to 'src/main') diff --git a/src/main/java/eu/siacs/conversations/services/MessageArchiveService.java b/src/main/java/eu/siacs/conversations/services/MessageArchiveService.java index 165c7c2a8..59a37fe51 100644 --- a/src/main/java/eu/siacs/conversations/services/MessageArchiveService.java +++ b/src/main/java/eu/siacs/conversations/services/MessageArchiveService.java @@ -189,6 +189,10 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { } } + public boolean queryInProgress(Conversation conversation) { + return queryInProgress(conversation, null); + } + public void processFin(Element fin, Jid from) { if (fin == null) { return; diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index a39b6feef..ac06452a5 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -53,6 +53,7 @@ import eu.siacs.conversations.entities.MucOptions; import eu.siacs.conversations.entities.Presence; import eu.siacs.conversations.entities.Transferable; import eu.siacs.conversations.entities.TransferablePlaceholder; +import eu.siacs.conversations.services.MessageArchiveService; import eu.siacs.conversations.services.XmppConnectionService; import eu.siacs.conversations.ui.XmppActivity.OnPresenceSelected; import eu.siacs.conversations.ui.XmppActivity.OnValueEdited; @@ -1052,10 +1053,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa protected void updateStatusMessages() { synchronized (this.messageList) { - final XmppConnection connection = conversation.getAccount().getXmppConnection(); - if (conversation.getLastClearHistory() != 0 - && connection != null - && connection.getFeatures().mam()) { + if (showLoadMoreMessages(conversation)) { this.messageList.add(0, Message.createLoadMoreMessage(conversation)); } if (conversation.getMode() == Conversation.MODE_SINGLE) { @@ -1081,8 +1079,14 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } } - protected void showSnackbar(final int message, final int action, - final OnClickListener clickListener) { + private boolean showLoadMoreMessages(final Conversation c) { + final XmppConnection connection = c.getAccount().getXmppConnection(); + final boolean mam = connection != null && connection.getFeatures().mam(); + final MessageArchiveService service = activity.xmppConnectionService.getMessageArchiveService(); + return mam && (c.getLastClearHistory() != 0 || (c.countMessages() == 0 && c.hasMessagesLeftOnServer() && !service.queryInProgress(c))); + } + + protected void showSnackbar(final int message, final int action, final OnClickListener clickListener) { snackbar.setVisibility(View.VISIBLE); snackbar.setOnClickListener(null); snackbarMessage.setText(message); -- cgit v1.2.3 From a0d0ed34ae38f2377fdb3ad2c661b74b85f2df28 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 22 Feb 2016 20:19:58 +0100 Subject: turned muc errors into enum. added error codes for service shutdown --- .../siacs/conversations/entities/MucOptions.java | 34 ++++++++++++---------- .../siacs/conversations/parser/PresenceParser.java | 22 ++++++++------ .../services/MessageArchiveService.java | 1 - .../services/XmppConnectionService.java | 4 ++- .../conversations/ui/ConversationFragment.java | 27 ++++++++++------- src/main/res/values/strings.xml | 5 ++-- 6 files changed, 54 insertions(+), 39 deletions(-) (limited to 'src/main') diff --git a/src/main/java/eu/siacs/conversations/entities/MucOptions.java b/src/main/java/eu/siacs/conversations/entities/MucOptions.java index be9d790d1..3567c14f4 100644 --- a/src/main/java/eu/siacs/conversations/entities/MucOptions.java +++ b/src/main/java/eu/siacs/conversations/entities/MucOptions.java @@ -91,22 +91,26 @@ public class MucOptions { } } - public static final int ERROR_NO_ERROR = 0; - public static final int ERROR_NICK_IN_USE = 1; - public static final int ERROR_UNKNOWN = 2; - public static final int ERROR_PASSWORD_REQUIRED = 3; - public static final int ERROR_BANNED = 4; - public static final int ERROR_MEMBERS_ONLY = 5; - public static final int ERROR_NO_RESPONSE = 6; - - public static final int KICKED_FROM_ROOM = 9; + public enum Error { + NO_RESPONSE, + NONE, + NICK_IN_USE, + PASSWORD_REQUIRED, + BANNED, + MEMBERS_ONLY, + KICKED, + SHUTDOWN, + UNKNOWN + } public static final String STATUS_CODE_ROOM_CONFIG_CHANGED = "104"; public static final String STATUS_CODE_SELF_PRESENCE = "110"; public static final String STATUS_CODE_BANNED = "301"; public static final String STATUS_CODE_CHANGED_NICK = "303"; public static final String STATUS_CODE_KICKED = "307"; - public static final String STATUS_CODE_LOST_MEMBERSHIP = "321"; + public static final String STATUS_CODE_AFFILIATION_CHANGE = "321"; + public static final String STATUS_CODE_LOST_MEMBERSHIP = "322"; + public static final String STATUS_CODE_SHUTDOWN = "332"; private interface OnEventListener { void onSuccess(); @@ -245,7 +249,7 @@ public class MucOptions { private Data form = new Data(); private Conversation conversation; private boolean isOnline = false; - private int error = ERROR_NO_RESPONSE; + private Error error = Error.NONE; public OnRenameListener onRenameListener = null; private User self; private String subject = null; @@ -324,8 +328,8 @@ public class MucOptions { return findUser(name) != null; } - public void setError(int error) { - this.isOnline = isOnline && error == ERROR_NO_ERROR; + public void setError(Error error) { + this.isOnline = isOnline && error == Error.NONE; this.error = error; } @@ -379,7 +383,7 @@ public class MucOptions { return this.isOnline; } - public int getError() { + public Error getError() { return this.error; } @@ -389,7 +393,7 @@ public class MucOptions { public void setOffline() { this.users.clear(); - this.error = ERROR_NO_RESPONSE; + this.error = Error.NO_RESPONSE; this.isOnline = false; } diff --git a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java index dc02eda8f..63d28c97b 100644 --- a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java +++ b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java @@ -63,7 +63,7 @@ public class PresenceParser extends AbstractParser implements if (x != null) { Element item = x.findChild("item"); if (item != null && !from.isBareJid()) { - mucOptions.setError(MucOptions.ERROR_NO_ERROR); + mucOptions.setError(MucOptions.Error.NONE); MucOptions.User user = new MucOptions.User(mucOptions,from); user.setAffiliation(item.getAttribute("affiliation")); user.setRole(item.getAttribute("role")); @@ -109,13 +109,17 @@ public class PresenceParser extends AbstractParser implements if (codes.contains(MucOptions.STATUS_CODE_CHANGED_NICK)) { mucOptions.mNickChangingInProgress = true; } else if (codes.contains(MucOptions.STATUS_CODE_KICKED)) { - mucOptions.setError(MucOptions.KICKED_FROM_ROOM); + mucOptions.setError(MucOptions.Error.KICKED); } else if (codes.contains(MucOptions.STATUS_CODE_BANNED)) { - mucOptions.setError(MucOptions.ERROR_BANNED); + mucOptions.setError(MucOptions.Error.BANNED); } else if (codes.contains(MucOptions.STATUS_CODE_LOST_MEMBERSHIP)) { - mucOptions.setError(MucOptions.ERROR_MEMBERS_ONLY); + mucOptions.setError(MucOptions.Error.MEMBERS_ONLY); + } else if (codes.contains(MucOptions.STATUS_CODE_AFFILIATION_CHANGE)) { + mucOptions.setError(MucOptions.Error.MEMBERS_ONLY); + } else if (codes.contains(MucOptions.STATUS_CODE_SHUTDOWN)) { + mucOptions.setError(MucOptions.Error.SHUTDOWN); } else { - mucOptions.setError(MucOptions.ERROR_UNKNOWN); + mucOptions.setError(MucOptions.Error.UNKNOWN); Log.d(Config.LOGTAG, "unknown error in conference: " + packet); } } else if (!from.isBareJid()){ @@ -132,14 +136,14 @@ public class PresenceParser extends AbstractParser implements mucOptions.onRenameListener.onFailure(); } } else { - mucOptions.setError(MucOptions.ERROR_NICK_IN_USE); + mucOptions.setError(MucOptions.Error.NICK_IN_USE); } } else if (error != null && error.hasChild("not-authorized")) { - mucOptions.setError(MucOptions.ERROR_PASSWORD_REQUIRED); + mucOptions.setError(MucOptions.Error.PASSWORD_REQUIRED); } else if (error != null && error.hasChild("forbidden")) { - mucOptions.setError(MucOptions.ERROR_BANNED); + mucOptions.setError(MucOptions.Error.BANNED); } else if (error != null && error.hasChild("registration-required")) { - mucOptions.setError(MucOptions.ERROR_MEMBERS_ONLY); + mucOptions.setError(MucOptions.Error.BANNED); } } } diff --git a/src/main/java/eu/siacs/conversations/services/MessageArchiveService.java b/src/main/java/eu/siacs/conversations/services/MessageArchiveService.java index 59a37fe51..e8616bd8f 100644 --- a/src/main/java/eu/siacs/conversations/services/MessageArchiveService.java +++ b/src/main/java/eu/siacs/conversations/services/MessageArchiveService.java @@ -227,7 +227,6 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { this.execute(nextQuery); this.finalizeQuery(query, false); synchronized (this.queries) { - this.queries.remove(query); this.queries.add(nextQuery); } } diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index b836e780a..24a728f7d 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -1824,9 +1824,11 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa fetchConferenceConfiguration(conversation); } }); - + updateConversationUi(); } else { account.pendingConferenceJoins.add(conversation); + conversation.resetMucOptions(); + updateConversationUi(); } } diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index ac06452a5..c652c3c0a 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -809,26 +809,29 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa && !conversation.getMucOptions().online() && account.getStatus() == Account.State.ONLINE) { switch (conversation.getMucOptions().getError()) { - case MucOptions.ERROR_NICK_IN_USE: + case NICK_IN_USE: showSnackbar(R.string.nick_in_use, R.string.edit, clickToMuc); break; - case MucOptions.ERROR_NO_RESPONSE: - showSnackbar(R.string.conference_not_found, R.string.leave, leaveMuc); + case NO_RESPONSE: + showSnackbar(R.string.joining_conference, 0, null); break; - case MucOptions.ERROR_PASSWORD_REQUIRED: + case PASSWORD_REQUIRED: showSnackbar(R.string.conference_requires_password, R.string.enter_password, enterPassword); break; - case MucOptions.ERROR_BANNED: + case BANNED: showSnackbar(R.string.conference_banned, R.string.leave, leaveMuc); break; - case MucOptions.ERROR_MEMBERS_ONLY: + case MEMBERS_ONLY: showSnackbar(R.string.conference_members_only, R.string.leave, leaveMuc); break; - case MucOptions.KICKED_FROM_ROOM: + case KICKED: showSnackbar(R.string.conference_kicked, R.string.join, joinMuc); break; - case MucOptions.ERROR_UNKNOWN: - showSnackbar(R.string.conference_unknown_error, R.string.try_again, joinMuc); + case UNKNOWN: + showSnackbar(R.string.conference_unknown_error, R.string.join, joinMuc); + break; + case SHUTDOWN: + showSnackbar(R.string.conference_shutdown, R.string.join, joinMuc); break; default: break; @@ -1091,8 +1094,10 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa snackbar.setOnClickListener(null); snackbarMessage.setText(message); snackbarMessage.setOnClickListener(null); - snackbarAction.setVisibility(View.VISIBLE); - snackbarAction.setText(action); + snackbarAction.setVisibility(clickListener == null ? View.GONE : View.VISIBLE); + if (action != 0) { + snackbarAction.setText(action); + } snackbarAction.setOnClickListener(clickListener); } diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index acaaf1562..48c3de6c7 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -241,8 +241,7 @@ This bookmark already exists You Edit conference subject - Conference not found - Unknown error received2 + Joining conference… Leave Contact added you to contact list Add back @@ -340,6 +339,8 @@ You are banned from this conference This conference is members only You have been kicked from this conference + The conference was shut down + You are no longer in this conference using account %s Checking %s on HTTP host You are not connected. Try again later -- cgit v1.2.3 From 689ded160718b5c73e118abe531530082b322636 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 22 Feb 2016 20:28:58 +0100 Subject: properly trigger show load more messages in mucs --- .../java/eu/siacs/conversations/ui/ConversationFragment.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/main') diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index c652c3c0a..d5c77490a 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -1083,12 +1083,20 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } private boolean showLoadMoreMessages(final Conversation c) { - final XmppConnection connection = c.getAccount().getXmppConnection(); - final boolean mam = connection != null && connection.getFeatures().mam(); + final boolean mam = hasMamSupport(c); final MessageArchiveService service = activity.xmppConnectionService.getMessageArchiveService(); return mam && (c.getLastClearHistory() != 0 || (c.countMessages() == 0 && c.hasMessagesLeftOnServer() && !service.queryInProgress(c))); } + private boolean hasMamSupport(final Conversation c) { + if (c.getMode() == Conversation.MODE_SINGLE) { + final XmppConnection connection = c.getAccount().getXmppConnection(); + return connection != null && connection.getFeatures().mam(); + } else { + return c.getMucOptions().mamSupport(); + } + } + protected void showSnackbar(final int message, final int action, final OnClickListener clickListener) { snackbar.setVisibility(View.VISIBLE); snackbar.setOnClickListener(null); -- cgit v1.2.3 From beb216c300b7f34e17904742531a400ff33b9ac8 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 23 Feb 2016 14:25:01 +0100 Subject: made presences object final in contact --- src/main/java/eu/siacs/conversations/entities/Contact.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'src/main') diff --git a/src/main/java/eu/siacs/conversations/entities/Contact.java b/src/main/java/eu/siacs/conversations/entities/Contact.java index aba9a8091..faafe78c4 100644 --- a/src/main/java/eu/siacs/conversations/entities/Contact.java +++ b/src/main/java/eu/siacs/conversations/entities/Contact.java @@ -45,7 +45,7 @@ public class Contact implements ListItem, Blockable { protected String photoUri; protected JSONObject keys = new JSONObject(); protected JSONArray groups = new JSONArray(); - protected Presences presences = new Presences(); + protected final Presences presences = new Presences(); protected Account account; protected Avatar avatar; @@ -222,10 +222,6 @@ public class Contact implements ListItem, Blockable { return this.presences; } - public void setPresences(Presences pres) { - this.presences = pres; - } - public void updatePresence(final String resource, final Presence presence) { this.presences.updatePresence(resource, presence); } -- cgit v1.2.3 From 0298f0181e564d1edfc4289598c56f5ce2a4e666 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 23 Feb 2016 16:14:55 +0100 Subject: reset pending subscription request when receiving roster update --- src/main/java/eu/siacs/conversations/entities/Contact.java | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/main') diff --git a/src/main/java/eu/siacs/conversations/entities/Contact.java b/src/main/java/eu/siacs/conversations/entities/Contact.java index faafe78c4..9887d3ef1 100644 --- a/src/main/java/eu/siacs/conversations/entities/Contact.java +++ b/src/main/java/eu/siacs/conversations/entities/Contact.java @@ -382,11 +382,13 @@ public class Contact implements ListItem, Blockable { this.resetOption(Options.TO); this.setOption(Options.FROM); this.resetOption(Options.PREEMPTIVE_GRANT); + this.resetOption(Options.PENDING_SUBSCRIPTION_REQUEST); break; case "both": this.setOption(Options.TO); this.setOption(Options.FROM); this.resetOption(Options.PREEMPTIVE_GRANT); + this.resetOption(Options.PENDING_SUBSCRIPTION_REQUEST); break; case "none": this.resetOption(Options.FROM); -- cgit v1.2.3 From 34f2a63190f499467c8ab517e61a98a6e8868f76 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 23 Feb 2016 16:15:23 +0100 Subject: update notification after message correction --- src/main/java/eu/siacs/conversations/parser/MessageParser.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src/main') diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index f01e7ce1f..43edb2c38 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -411,6 +411,7 @@ public class MessageParser extends AbstractParser implements replacedMessage.markUnread(); } mXmppConnectionService.updateMessage(replacedMessage, uuid); + mXmppConnectionService.getNotificationService().updateNotification(false); if (mXmppConnectionService.confirmMessages() && remoteMsgId != null && !isForwarded && !isTypeGroupChat) { sendMessageReceipts(account, packet); } -- cgit v1.2.3 From 17b1fcc3eafa078a902c662a6e774bcd7f2927b3 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 23 Feb 2016 16:15:55 +0100 Subject: set noMessagesLeftOnServer before conference configuration fetch --- .../java/eu/siacs/conversations/services/XmppConnectionService.java | 3 ++- src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main') diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 24a728f7d..ec13d6dc2 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -1772,6 +1772,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa account.pendingConferenceLeaves.remove(conversation); if (account.getStatus() == Account.State.ONLINE) { conversation.resetMucOptions(); + conversation.setHasMessagesLeftOnServer(false); fetchConferenceConfiguration(conversation, new OnConferenceConfigurationFetched() { private void join(Conversation conversation) { @@ -1806,7 +1807,6 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa conversation.setContactJid(joinJid); databaseBackend.updateConversation(conversation); } - conversation.setHasMessagesLeftOnServer(false); if (conversation.getMucOptions().mamSupport()) { getMessageArchiveService().catchupMUC(conversation); } @@ -1828,6 +1828,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa } else { account.pendingConferenceJoins.add(conversation); conversation.resetMucOptions(); + conversation.setHasMessagesLeftOnServer(false); updateConversationUi(); } } diff --git a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java index f8d1c97f7..d50e0661f 100644 --- a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java @@ -14,7 +14,6 @@ import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Intents; -import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; -- cgit v1.2.3