diff --git a/src/main/java/com/b44t/messenger/DcContext.java b/src/main/java/com/b44t/messenger/DcContext.java index cef7919a3..21e610644 100644 --- a/src/main/java/com/b44t/messenger/DcContext.java +++ b/src/main/java/com/b44t/messenger/DcContext.java @@ -236,6 +236,19 @@ public class DcContext { return getConfigInt("is_chatmail") == 1; } + // Called for new profiles on chatmail servers that are "single device" initially; + // to save server disk space, we make use of that delete all messages immediately after download. + public void assumeSingleDevice() { + setConfigInt("delete_server_after", 1 /*at once*/); + } + + // Called when we get a hint that another device may be set up. + public void assumeMultiDevice() { + if (getConfigInt("delete_server_after") == 1 /*at once*/) { + setConfigInt("delete_server_after", 0 /*never/automatic*/); + } + } + /** * @return true if at least one chat has location streaming enabled */ diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java index 75693d464..c62ef0bb3 100644 --- a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java @@ -481,6 +481,9 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements return; } DcHelper.getAccounts(this).stopIo(); + if (!isDcLogin) { + dcContext.assumeSingleDevice(); + } dcContext.configure(); }).start(); } diff --git a/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java b/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java index 235625d8e..d2bc31923 100644 --- a/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java @@ -369,6 +369,7 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen else if (progress==1000/*done*/) { DcHelper.getAccounts(this).startIo(); progressSuccess(); + dcContext.assumeMultiDevice(); notificationController.close(); cleanupTempBackupFile(); } diff --git a/src/main/java/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java index a8c7b0cfa..361c427a1 100644 --- a/src/main/java/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java @@ -138,6 +138,7 @@ public abstract class ListSummaryPreferenceFragment extends CorrectedPreferenceF protected void startImexInner(int accountId, int what, String imexPath, String pathAsDisplayedToUser) { DcContext dcContext = DcHelper.getAccounts(getActivity()).getAccount(accountId); + dcContext.assumeMultiDevice(); this.pathAsDisplayedToUser = pathAsDisplayedToUser; progressWhat = what; dcContext.imex(progressWhat, imexPath); diff --git a/src/main/java/org/thoughtcrime/securesms/qr/BackupProviderFragment.java b/src/main/java/org/thoughtcrime/securesms/qr/BackupProviderFragment.java index 9c2334383..8921acd81 100644 --- a/src/main/java/org/thoughtcrime/securesms/qr/BackupProviderFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/qr/BackupProviderFragment.java @@ -64,6 +64,7 @@ public class BackupProviderFragment extends Fragment implements DcEventCenter.Dc progressBar.setIndeterminate(true); dcContext = DcHelper.getContext(getActivity()); + dcContext.assumeMultiDevice(); DcHelper.getEventCenter(getActivity()).addObserver(DcContext.DC_EVENT_IMEX_PROGRESS, this); prepareThread = new Thread(() -> { diff --git a/src/main/java/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java b/src/main/java/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java index 8c260cd92..cbe05f27e 100644 --- a/src/main/java/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java @@ -94,6 +94,7 @@ public class BackupReceiverFragment extends Fragment implements DcEventCenter.Dc } else if (permille == 1000) { getTransferActivity().setTransferState(BackupTransferActivity.TransferState.TRANSFER_SUCCESS); getTransferActivity().doFinish(); + dcContext.assumeMultiDevice(); return; }