mirror of
https://github.com/syncthing/syncthing-android.git
synced 2024-11-23 12:51:16 +00:00
Don't restart before config has been updated (fixes #398).
This commit is contained in:
parent
7117933b6d
commit
af5ba5c0d9
3 changed files with 21 additions and 19 deletions
|
@ -27,15 +27,13 @@ public class RestartActivity extends SyncthingActivity {
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
final Intent intent = new Intent(this, SyncthingService.class)
|
|
||||||
.setAction(SyncthingService.ACTION_RESTART);
|
|
||||||
|
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
builder.setMessage(R.string.restart_title)
|
builder.setMessage(R.string.restart_title)
|
||||||
.setPositiveButton(R.string.restart_now, new DialogInterface.OnClickListener() {
|
.setPositiveButton(R.string.restart_now, new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialogInterface, int i) {
|
public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
startService(intent);
|
getService().getApi().updateConfig();
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -385,7 +385,7 @@ public class SettingsFragment extends PreferenceFragment
|
||||||
Toast.makeText(getActivity(),
|
Toast.makeText(getActivity(),
|
||||||
getString(R.string.config_imported_successful),
|
getString(R.string.config_imported_successful),
|
||||||
Toast.LENGTH_SHORT).show();
|
Toast.LENGTH_SHORT).show();
|
||||||
mSyncthingService.getApi().requireRestart(getActivity(), false);
|
mSyncthingService.getApi().requireRestart(getActivity());
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(getActivity(),
|
Toast.makeText(getActivity(),
|
||||||
getString(R.string.config_import_failed,
|
getString(R.string.config_import_failed,
|
||||||
|
|
|
@ -341,28 +341,32 @@ public class RestApi implements SyncthingService.OnWebGuiAvailableListener,
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Either shows a restart dialog, or only updates the config, depending on
|
||||||
|
* {@link #mRestartPostponed}.
|
||||||
|
*/
|
||||||
public void requireRestart(Activity activity) {
|
public void requireRestart(Activity activity) {
|
||||||
requireRestart(activity, true);
|
if (mRestartPostponed) {
|
||||||
|
new PostConfigTask(mHttpsCertPath).execute(mUrl, mApiKey, mConfig.toString());
|
||||||
|
} else {
|
||||||
|
activity.startActivity(new Intent(mContext, RestartActivity.class));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the updated mConfig via Rest API to syncthing and displays a "restart"
|
* Sends the current config to Syncthing and restarts it.
|
||||||
* dialog or notification.
|
|
||||||
*
|
*
|
||||||
* @param activity The calling activity.
|
* This executes a restart immediately, and does not show a dialog.
|
||||||
* @param updateConfig If true, {@link #mConfig} will be sent to `/rest/system/config`.
|
|
||||||
*/
|
*/
|
||||||
public void requireRestart(Activity activity, boolean updateConfig) {
|
public void updateConfig() {
|
||||||
if (updateConfig) {
|
new PostConfigTask(mHttpsCertPath) {
|
||||||
new PostConfigTask(mHttpsCertPath)
|
@Override
|
||||||
.execute(mUrl, mApiKey, mConfig.toString());
|
protected void onPostExecute(Boolean aBoolean) {
|
||||||
}
|
mContext.startService(new Intent(mContext, SyncthingService.class)
|
||||||
// TODO Should wait until PostConfigTask is completed, see #398
|
.setAction(SyncthingService.ACTION_RESTART));
|
||||||
|
}
|
||||||
|
}.execute(mUrl, mApiKey, mConfig.toString());
|
||||||
|
|
||||||
if (mRestartPostponed)
|
|
||||||
return;
|
|
||||||
|
|
||||||
activity.startActivity(new Intent(mContext, RestartActivity.class));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue