Compare commits

..

2 Commits

Author SHA1 Message Date
ialokim
e617cab427 add same fix for private groups 2023-08-31 16:40:27 +02:00
Sebastian Kürten
606739b93d Add fix for nightly desktop users that broke their db for some contacts 2023-08-31 16:40:22 +02:00
9 changed files with 49 additions and 43 deletions

View File

@@ -13,8 +13,8 @@ android {
defaultConfig {
minSdkVersion 21
targetSdkVersion 33
versionCode 10507
versionName "1.5.7"
versionCode 10506
versionName "1.5.6"
consumerProguardFiles 'proguard-rules.txt'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

View File

@@ -201,7 +201,6 @@ class AndroidLanTcpPlugin extends LanTcpPlugin {
@Nullable
private InetAddress getIpv6AddressForInterface(InetAddress ipv4) {
try {
// We may get an NPE from getByInetAddress() on Android 11
NetworkInterface iface = NetworkInterface.getByInetAddress(ipv4);
if (iface == null) return null;
for (InetAddress addr : list(iface.getInetAddresses())) {
@@ -209,7 +208,7 @@ class AndroidLanTcpPlugin extends LanTcpPlugin {
}
// No suitable address
return null;
} catch (SocketException | NullPointerException e) {
} catch (SocketException e) {
logException(LOG, WARNING, e);
return null;
}

View File

@@ -64,15 +64,10 @@ public class AndroidUtils {
}
// Return the address from settings if it's valid and not fake
if (SDK_INT < 33) {
try {
address = Settings.Secure.getString(ctx.getContentResolver(),
"bluetooth_address");
if (isValidBluetoothAddress(address)) {
return new Pair<>(address, "settings");
}
} catch (SecurityException e) {
// Some custom ROMs throw this exception on SDK_INT < 33.
// Fall through
address = Settings.Secure.getString(ctx.getContentResolver(),
"bluetooth_address");
if (isValidBluetoothAddress(address)) {
return new Pair<>(address, "settings");
}
}
// Try to get the address via reflection

View File

@@ -26,8 +26,8 @@ android {
defaultConfig {
minSdkVersion 21
targetSdkVersion 33
versionCode 10507
versionName "1.5.7"
versionCode 10506
versionName "1.5.6"
applicationId "org.briarproject.briar.android"
buildConfigField "String", "TorVersion", "\"$tor_version\""

View File

@@ -1,6 +1,5 @@
package org.briarproject.briar.android.contact.add.remote;
import android.content.ActivityNotFoundException;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.os.Bundle;
@@ -21,7 +20,6 @@ import org.briarproject.briar.android.view.InfoView;
import org.briarproject.nullsafety.MethodsNotNullByDefault;
import org.briarproject.nullsafety.ParametersNotNullByDefault;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import javax.annotation.Nullable;
@@ -31,12 +29,8 @@ import androidx.core.app.ShareCompat.IntentBuilder;
import androidx.lifecycle.ViewModelProvider;
import static android.content.Context.CLIPBOARD_SERVICE;
import static android.widget.Toast.LENGTH_LONG;
import static android.widget.Toast.LENGTH_SHORT;
import static java.util.logging.Level.WARNING;
import static java.util.logging.Logger.getLogger;
import static org.briarproject.bramble.api.contact.HandshakeLinkConstants.LINK_REGEX;
import static org.briarproject.bramble.util.LogUtils.logException;
import static org.briarproject.briar.android.util.UiUtils.hideViewOnSmallScreen;
import static org.briarproject.briar.android.util.UiUtils.observeOnce;
@@ -45,7 +39,6 @@ import static org.briarproject.briar.android.util.UiUtils.observeOnce;
public class LinkExchangeFragment extends BaseFragment {
private static final String TAG = LinkExchangeFragment.class.getName();
private static final Logger LOG = getLogger(TAG);
@Inject
ViewModelProvider.Factory viewModelFactory;
@@ -123,18 +116,11 @@ public class LinkExchangeFragment extends BaseFragment {
copyButton.setEnabled(true);
Button shareButton = v.findViewById(R.id.shareButton);
shareButton.setOnClickListener(view -> {
try {
shareButton.setOnClickListener(view ->
IntentBuilder.from(requireActivity())
.setText(link)
.setType("text/plain")
.startChooser();
} catch (ActivityNotFoundException e) {
logException(LOG, WARNING, e);
Toast.makeText(requireContext(),
R.string.error_start_activity, LENGTH_LONG).show();
}
});
.startChooser());
shareButton.setEnabled(true);
InfoView infoText = v.findViewById(R.id.infoView);

View File

@@ -152,7 +152,6 @@ Vänlige installera Briar på en nyare enhet.</string>
<string name="error_start_activity">Otillgänglig på ditt system</string>
<string name="status_heading">Status</string>
<string name="error">Fel</string>
<string name="info">Information</string>
<!--Contacts and Private Conversations-->
<string name="no_contacts">Inga kontakter</string>
<string name="no_contacts_action">Tryck på plus-ikonen (+) för att lägga till en kontakt</string>
@@ -223,7 +222,6 @@ Vänlige installera Briar på en nyare enhet.</string>
<string name="menu_contact">Kontakt</string>
<!--Adding Contacts-->
<string name="add_contact_title">Lägg till en närvarande kontakt</string>
<string name="add_contact_error_two_way">Skannade ni båda varandras QR-koder?</string>
<string name="face_to_face">Du måste personligen träffa den som du vill lägga till som kontakt.\n\nDetta för att undvika att någon senare låtsas vara du eller läser dina meddelanden.</string>
<string name="continue_button">Fortsätt</string>
<string name="try_again_button">Försök igen</string>
@@ -231,11 +229,9 @@ Vänlige installera Briar på en nyare enhet.</string>
<string name="exchanging_contact_details">Utbyter detaljer om kontakten\u2026</string>
<string name="contact_added_toast">Kontakt tillagd: %s</string>
<string name="contact_already_exists">Kontakten %s finns redan</string>
<string name="contact_already_exists_general">Kontakten finns redan</string>
<string name="qr_code_invalid">QR-koden är felaktig</string>
<string name="qr_code_too_old_1">QR-koden som du har skannat kommer från en äldre version av Briar.\n\nVar vänlig och be din kontakt att uppgradera till den senaste versionen och försök sedan igen.</string>
<string name="qr_code_too_new_1">QR-koden som du har skannat kommer från en äldre version av Briar.\n\nVänligen uppgradera till den senaste versionen och försök igen.</string>
<string name="mailbox_qr_code_for_contact">QR-koden du skannade kommer från Briar Mailbox.\n\nOm du vill länka en Mailbox, välj Inställningar &gt; Mailbox från Briar-menyn.</string>
<string name="camera_error">Kamerafel</string>
<string name="connecting_to_device">Ansluter till enhet\u2026</string>
<string name="authenticating_with_device">Autentiserar med enhet\u2026</string>

View File

@@ -474,7 +474,7 @@
<string name="blogs_rss_feeds_import_progress">导入 RSS 订阅源中…</string>
<string name="blogs_rss_feeds_import_error">抱歉!导入订阅源时发生错误。</string>
<string name="blogs_rss_feeds_import_title">从文件导入源</string>
<string name="blogs_rss_feeds">RSS </string>
<string name="blogs_rss_feeds">RSS源 </string>
<string name="blogs_rss_feeds_manage_imported">已导入:</string>
<string name="blogs_rss_feeds_manage_author">作者:</string>
<string name="blogs_rss_feeds_manage_updated">最后更新于:</string>
@@ -676,8 +676,6 @@
<string name="disappearing_messages_summary">在7\u00A0天之后使此对话中的后续消息自动消失。</string>
<!--Settings Actions-->
<string name="pref_category_actions">操作</string>
<string name="share_app_link">分享下载链接</string>
<string name="share_app_link_text">Briar 下载地址 %s</string>
<string name="send_feedback">提交反馈</string>
<!--Link Warning-->
<string name="link_warning_title">链接警告</string>
@@ -727,7 +725,6 @@
<string name="permission_camera_title">相机权限</string>
<string name="permission_camera_request_body">Briar 需要获得相机权限以扫描二维码。</string>
<string name="permission_location_title">位置权限</string>
<string name="permission_nearby_devices_title">“附近设备”权限</string>
<string name="permission_location_request_body">Briar 需要位置信息权限以发现蓝牙设备。\n\nBriar 不会存储您的位置或将它分享给任何人。</string>
<string name="permission_camera_location_title">相机和位置</string>
<string name="permission_camera_location_request_body"> Briar 需要相机权限以扫描二维码。\n\nBriar 需要位置信息权限以发现蓝牙设备。\n\nBriar 不会存储您的位置或将它分享给任何人。</string>
@@ -767,8 +764,6 @@
<string name="permission_hotspot_location_request_precise_body">要创建无线热点Briar 需要访问你的精确位置。\n\nBriar 不会储存你的位置也不会和任何人分享它。</string>
<string name="permission_hotspot_location_denied_body">你拒绝了访问你的位置,但 Briar 需要这个权限才能创建 Wi-Fi 热点。\n\n请考虑授予访问权限。</string>
<string name="permission_hotspot_location_denied_precise_body">你拒绝了 Briar 访问你的精确位置,但 Briar 需要这个权限才能创建 无线热点。\n\n请考虑授予访问权限。</string>
<string name="permission_hotspot_nearby_wifi_request_body">要创建 Wi-FI 热点Briar 需要访问附近设备的权限。</string>
<string name="permission_hotspot_nearby_wifi_denied_body">你已拒绝对附近设备的访问,但 Briar 需要此权限在创建 Wi-FI 热点。\n\n请考虑授予权限。</string>
<string name="wifi_settings_title">Wi-Fi 设置</string>
<string name="wifi_settings_request_enable_body">要创建 Wi-Fi 热点Briar 需要使用 Wi-Fi。请允许它。</string>
<string name="hotspot_tab_manual">手动</string>

View File

@@ -13,6 +13,7 @@ import org.briarproject.bramble.api.data.MetadataParser;
import org.briarproject.bramble.api.db.DatabaseComponent;
import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.Metadata;
import org.briarproject.bramble.api.db.NoSuchGroupException;
import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.identity.Author;
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
@@ -117,7 +118,23 @@ class GroupInvitationManagerImpl extends ConversationClientImpl
// Create a local group to indicate that we've set this client up
Group localGroup = contactGroupFactory.createLocalGroup(CLIENT_ID,
MAJOR_VERSION);
if (db.containsGroup(txn, localGroup.getId())) return;
if (db.containsGroup(txn, localGroup.getId())) {
// Check each contact one by one and see if a group already exists.
// If none exists, call addingContact() for that contact.
for (Contact c : db.getContacts(txn)) {
try {
getGroupCount(txn, c.getId());
} catch (NoSuchGroupException e) {
System.out.println(
"no such group for " + c.getAuthor().getName() +
" " +
c.getAlias());
addingContact(txn, c);
}
}
return;
}
db.addGroup(txn, localGroup);
// Set things up for any pre-existing contacts
for (Contact c : db.getContacts(txn)) addingContact(txn, c);

View File

@@ -13,6 +13,7 @@ import org.briarproject.bramble.api.data.MetadataParser;
import org.briarproject.bramble.api.db.DatabaseComponent;
import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.Metadata;
import org.briarproject.bramble.api.db.NoSuchGroupException;
import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
import org.briarproject.bramble.api.sync.ClientId;
@@ -109,7 +110,24 @@ abstract class SharingManagerImpl<S extends Shareable>
// Create a local group to indicate that we've set this client up
Group localGroup = contactGroupFactory.createLocalGroup(getClientId(),
getMajorVersion());
if (db.containsGroup(txn, localGroup.getId())) return;
if (db.containsGroup(txn, localGroup.getId())) {
// Check each contact one by one and see if a group already exists.
// If none exists, call addingContact() for that contact.
for (Contact c : db.getContacts(txn)) {
try {
getGroupCount(txn, c.getId());
} catch (NoSuchGroupException e) {
System.out.println(
"no such group for " + c.getAuthor().getName() +
" " +
c.getAlias());
addingContact(txn, c);
}
}
return;
}
db.addGroup(txn, localGroup);
// Set things up for any pre-existing contacts
for (Contact c : db.getContacts(txn)) addingContact(txn, c);