set single-device on profile-creation, assume multi-device when we go a hint

This commit is contained in:
B. Petersen 2024-07-06 14:56:17 +02:00 committed by bjoern
parent 29b1c1e493
commit 89a4eb9538
6 changed files with 20 additions and 0 deletions

View file

@ -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
*/

View file

@ -481,6 +481,9 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
return;
}
DcHelper.getAccounts(this).stopIo();
if (!isDcLogin) {
dcContext.assumeSingleDevice();
}
dcContext.configure();
}).start();
}

View file

@ -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();
}

View file

@ -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);

View file

@ -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(() -> {

View file

@ -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;
}