mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
Merge remote-tracking branch 'upstream/main'
This commit is contained in:
@@ -77,12 +77,14 @@ jobs:
|
||||
|
||||
- name: Upload APK
|
||||
id: upload
|
||||
if: github.event.pull_request.head.repo.full_name == github.repository
|
||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||
with:
|
||||
name: app-preview.apk
|
||||
path: 'build/outputs/apk/foss/debug/*.apk'
|
||||
|
||||
- name: Add artifact links to PR
|
||||
if: github.event.pull_request.head.repo.full_name == github.repository
|
||||
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||
env:
|
||||
ARTIFACT_URL: ${{ steps.upload.outputs.artifact-url }}
|
||||
|
||||
@@ -3,6 +3,11 @@
|
||||
## Unreleased
|
||||
|
||||
* Use message style notifications for longer message previews
|
||||
* Remove notification after audio playback ends
|
||||
* Fix: do not allow blocked contacts to use our invite links
|
||||
* Fix sending mini-app that was used/prepared before sending
|
||||
* Some more small fixes and updated translations
|
||||
* Update to core 2.53.0
|
||||
|
||||
## v2.52.0
|
||||
2026-06
|
||||
@@ -12,7 +17,6 @@
|
||||
* Fix: Audio files in draft showing total time from wrong file
|
||||
* Fix: Update the channel title after joining if the QR code had an outdated title
|
||||
* Voice recording will be automatically saved as draft when interrupted
|
||||
* Remove notification after audio playback ends
|
||||
* Update to core 2.52.0
|
||||
|
||||
## v2.51.0
|
||||
|
||||
+1
-1
Submodule jni/deltachat-core-rust updated: 4ecf597ba3...9435042594
@@ -302,7 +302,10 @@ public class ApplicationContext extends MultiDexApplication {
|
||||
Log.i(
|
||||
"DeltaChat",
|
||||
"++++++++++++++++++ NetworkCallback.onAvailable() #" + debugOnAvailableCount++);
|
||||
getDcAccounts().maybeNetwork();
|
||||
// onBlockedStatusChanged is only available on API 29+
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
|
||||
getDcAccounts().maybeNetwork();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -310,8 +313,13 @@ public class ApplicationContext extends MultiDexApplication {
|
||||
@NonNull android.net.Network network, boolean blocked) {
|
||||
Log.i(
|
||||
"DeltaChat",
|
||||
"++++++++++++++++++ NetworkCallback.onBlockedStatusChanged() #"
|
||||
"++++++++++++++++++ NetworkCallback.onBlockedStatusChanged("
|
||||
+ blocked
|
||||
+ ") #"
|
||||
+ debugOnBlockedStatusChangedCount++);
|
||||
if (!blocked) {
|
||||
getDcAccounts().maybeNetwork();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -260,12 +260,11 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity
|
||||
final String addr = extraEmail[0];
|
||||
int contactId = dcContext.lookupContactIdByAddr(addr);
|
||||
|
||||
if (contactId == 0) {
|
||||
contactId = dcContext.createContact(null, addr);
|
||||
if (contactId != 0 || dcContext.getConfigInt(DcHelper.CONFIG_FORCE_ENCRYPTION) == 0) {
|
||||
if (contactId == 0) contactId = dcContext.createContact(null, addr);
|
||||
chatId = dcContext.createChatByContactId(contactId);
|
||||
accId = dcContext.getAccountId();
|
||||
}
|
||||
|
||||
chatId = dcContext.createChatByContactId(contactId);
|
||||
accId = dcContext.getAccountId();
|
||||
}
|
||||
Intent composeIntent;
|
||||
if (accId != -1 && chatId > 0) {
|
||||
|
||||
@@ -528,16 +528,20 @@ public class DcHelper {
|
||||
.show();
|
||||
}
|
||||
|
||||
public static void showInvalidUnencryptedDialog(Context context) {
|
||||
new AlertDialog.Builder(context)
|
||||
public static AlertDialog.Builder prepareInvalidUnencryptedDialog(
|
||||
Context context, AlertDialog.Builder builder) {
|
||||
return builder
|
||||
.setMessage(context.getString(R.string.invalid_unencrypted_explanation))
|
||||
.setNeutralButton(R.string.learn_more, (d, w) -> openHelp(context, "#howtoe2ee"))
|
||||
.setNegativeButton(
|
||||
R.string.qrscan_title,
|
||||
(d, w) -> context.startActivity(new Intent(context, QrActivity.class)))
|
||||
.setPositiveButton(R.string.ok, null)
|
||||
.setCancelable(true)
|
||||
.show();
|
||||
.setCancelable(true);
|
||||
}
|
||||
|
||||
public static void showInvalidUnencryptedDialog(Context context) {
|
||||
prepareInvalidUnencryptedDialog(context, new AlertDialog.Builder(context)).show();
|
||||
}
|
||||
|
||||
public static void openHelp(Context context, String section) {
|
||||
|
||||
@@ -314,6 +314,12 @@ public class QrCodeHandler {
|
||||
|
||||
private void showFingerprintOrQrSuccess(
|
||||
AlertDialog.Builder builder, DcLot qrParsed, String name) {
|
||||
if (qrParsed.getState() == DcContext.DC_QR_ADDR
|
||||
&& dcContext.getConfigInt(DcHelper.CONFIG_FORCE_ENCRYPTION) == 1) {
|
||||
DcHelper.prepareInvalidUnencryptedDialog(activity, builder);
|
||||
return;
|
||||
}
|
||||
|
||||
@StringRes
|
||||
int resId =
|
||||
qrParsed.getState() == DcContext.DC_QR_ADDR
|
||||
|
||||
@@ -57,22 +57,26 @@ public class LongClickCopySpan extends ClickableSpan {
|
||||
DcContext dcContext = DcHelper.getContext(activity);
|
||||
|
||||
int contactId = dcContext.lookupContactIdByAddr(addr);
|
||||
if (contactId == 0 && dcContext.mayBeValidAddr(addr)) {
|
||||
contactId = dcContext.createContact(null, addr);
|
||||
}
|
||||
DcContact contact = dcContext.getContact(contactId);
|
||||
if (contact.getId() != 0
|
||||
DcContact contact = (contactId != 0) ? dcContext.getContact(contactId) : null;
|
||||
if (contact != null
|
||||
&& !contact.isBlocked()
|
||||
&& dcContext.getChatIdByContactId(contact.getId()) != 0) {
|
||||
openChat(activity, contact);
|
||||
} else if (contact == null
|
||||
&& dcContext.getConfigInt(DcHelper.CONFIG_FORCE_ENCRYPTION) == 1) {
|
||||
DcHelper.showInvalidUnencryptedDialog(activity);
|
||||
} else {
|
||||
String name = contact != null ? contact.getDisplayName() : addr;
|
||||
new AlertDialog.Builder(activity)
|
||||
.setMessage(
|
||||
activity.getString(R.string.ask_start_chat_with, contact.getDisplayName()))
|
||||
.setMessage(activity.getString(R.string.ask_start_chat_with, name))
|
||||
.setPositiveButton(
|
||||
android.R.string.ok,
|
||||
(dialog, which) -> {
|
||||
openChat(activity, contact);
|
||||
openChat(
|
||||
activity,
|
||||
contact == null
|
||||
? dcContext.getContact(dcContext.createContact(null, addr))
|
||||
: contact);
|
||||
})
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.show();
|
||||
|
||||
@@ -272,7 +272,7 @@
|
||||
<!-- consider keeping the term "channel" as in WhatsApp or Telegram -->
|
||||
<string name="channels">Canals</string>
|
||||
<!-- consider keeping the term "channel" as in WhatsApp or Telegram -->
|
||||
<string name="new_channel">Nou Canal</string>
|
||||
<string name="new_channel">Canal nou</string>
|
||||
<!-- consider keeping the term "channel" as in WhatsApp or Telegram -->
|
||||
<string name="channel_name">Nom del Canal</string>
|
||||
<!-- The number of times a message is shown in channels. Use what other messengers are using here, smth. as "N-times seen" or "1 Aufruf" (german) work as well, where "1 impression" or "1 hit" may sound too formal and may be more marketing slang. -->
|
||||
|
||||
@@ -673,7 +673,7 @@
|
||||
<string name="welcome_chat_over_email">Sicherer dezentraler Chat</string>
|
||||
<string name="scan_invitation_code">Einladungscode scannen</string>
|
||||
<string name="login_title">Login</string>
|
||||
<string name="login_advanced_hint">Für fortgeschrittene Benutzer:\n\nVerwende keine Adresse, die du bereits in einer anderen App nutzt.</string>
|
||||
<string name="login_advanced_hint">Für fortgeschrittene Benutzer.\n\nVerwende keine Adresse, die du bereits in einer anderen App nutzt.</string>
|
||||
<string name="login_inbox">Posteingang</string>
|
||||
<string name="login_imap_login">IMAP-Anmeldename</string>
|
||||
<string name="login_imap_server">IMAP-Server</string>
|
||||
|
||||
+397
-187
File diff suppressed because it is too large
Load Diff
@@ -450,6 +450,7 @@
|
||||
<string name="call_answered_elsewhere">Chiamata risposta su un altro dispositivo</string>
|
||||
<string name="call_requires_camera_permission">Per le videochiamate è necessaria l\'autorizzazione per l\'utilizzo della fotocamera.</string>
|
||||
<string name="call_requires_mic_permission">Per le chiamate è necessaria l\'autorizzazione per l\'utilizzo del microfono.</string>
|
||||
<string name="call_requires_connection">Impossibile avviare la chiamata. Assicurati che il tuo dispositivo disponga di una connessione a Internet e riprova.</string>
|
||||
<!-- Used e.g. in a notifications to describe an ongoing call. "Call" is a noun here, in the meaning of "This is the call with ..." where the placeholder is replaced by the name of the contact. -->
|
||||
<string name="call_with">Chiama con %1$s</string>
|
||||
<!-- Use e.g. in a notifications during ringing. Placeholder is relaced by the name of the contact being called. -->
|
||||
@@ -690,6 +691,7 @@
|
||||
<string name="welcome_chat_over_email">Chat Decentralizzata Sicura</string>
|
||||
<string name="scan_invitation_code">Scansiona Codice Invito</string>
|
||||
<string name="login_title">Accedi</string>
|
||||
<string name="login_advanced_hint">Questo login è riservato agli utenti avanzati.\n\nNon utilizzare un indirizzo che stai già usando in un\'altra app.</string>
|
||||
<string name="login_inbox">In Arrivo</string>
|
||||
<string name="login_imap_login">Nome Accesso IMAP</string>
|
||||
<string name="login_imap_server">Server IMAP</string>
|
||||
@@ -724,6 +726,7 @@
|
||||
<string name="used_for_sending">Utilizzato per l\'invio</string>
|
||||
<string name="hide_from_contacts">Nascondi dai Contatti</string>
|
||||
<string name="hidden_from_contacts">Nascosto dai contatti</string>
|
||||
<string name="enforce_e2ee">Applica Crittografia a Tutti i Ripetitori</string>
|
||||
<!-- Hint for the list of relays -->
|
||||
<string name="transport_list_hint">I messaggi vengono ricevuti su tutti i ripetitori.\n\n⚠️ Se modifichi qualcosa qui, assicurati che tutti i tuoi dispositivi abbiano almeno la versione 2.47.0. Altrimenti i dispositivi più vecchi potrebbero non ricevere i messaggi.</string>
|
||||
<!-- shown if a QR code was scanned that can be used as a relay -->
|
||||
|
||||
Reference in New Issue
Block a user