From f802cd18f01b77594bf90ce62d155b2b9bb36439 Mon Sep 17 00:00:00 2001 From: cyberta Date: Wed, 3 Nov 2021 20:16:23 +0100 Subject: [PATCH] send broadcast to request account data if no account has been yet configured --- src/org/thoughtcrime/securesms/WelcomeActivity.java | 11 +++++++++++ src/org/thoughtcrime/securesms/connect/DcHelper.java | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/org/thoughtcrime/securesms/WelcomeActivity.java b/src/org/thoughtcrime/securesms/WelcomeActivity.java index 1b2819d67..9e77451a2 100644 --- a/src/org/thoughtcrime/securesms/WelcomeActivity.java +++ b/src/org/thoughtcrime/securesms/WelcomeActivity.java @@ -52,6 +52,7 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen public static final int PICK_BACKUP = 20574; private final static String TAG = WelcomeActivity.class.getSimpleName(); public static final String TMP_BACKUP_FILE = "tmp-backup-file"; + public static final String DC_REQUEST_ACCOUNT_DATA = "chat.delta.DC_REQUEST_ACCOUNT_DATA"; private boolean manualConfigure = true; // false: configure by QR account creation private ProgressDialog progressDialog = null; @@ -77,6 +78,16 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen DcEventCenter eventCenter = DcHelper.getEventCenter(this); eventCenter.addObserver(DcContext.DC_EVENT_CONFIGURE_PROGRESS, this); eventCenter.addObserver(DcContext.DC_EVENT_IMEX_PROGRESS, this); + + if (!DcHelper.hasAnyConfiguredContext(this)) { + Intent intent = new Intent(); + // Since android API 26 only explicit broadcasts are allowed for IPC with a few exceptions. + // As a result we have to send for each companion app we want to support an intent with a + // specified package + intent.setPackage("org.cyberta"); + intent.setAction(DC_REQUEST_ACCOUNT_DATA); + sendBroadcast(intent); + } } @Override diff --git a/src/org/thoughtcrime/securesms/connect/DcHelper.java b/src/org/thoughtcrime/securesms/connect/DcHelper.java index fb39eb47d..cd1291c00 100644 --- a/src/org/thoughtcrime/securesms/connect/DcHelper.java +++ b/src/org/thoughtcrime/securesms/connect/DcHelper.java @@ -81,11 +81,23 @@ public class DcHelper { return ApplicationContext.getInstance(context).notificationCenter; } + public static boolean hasAnyConfiguredContext(Context context) { + DcAccounts accounts = getAccounts(context); + int[] accountIds = accounts.getAll(); + for (int accountId : accountIds) { + if (accounts.getAccount(accountId).isConfigured() == 1) { + return true; + } + } + return false; + } + public static boolean isConfigured(Context context) { DcContext dcContext = getContext(context); return dcContext.isConfigured() == 1; } + public static int getInt(Context context, String key) { DcContext dcContext = getContext(context); return dcContext.getConfigInt(key);