diff --git a/app/src/main/java/com/readrops/app/activities/AccountTypeListActivity.java b/app/src/main/java/com/readrops/app/activities/AccountTypeListActivity.java index 60eb9b73..129c1546 100644 --- a/app/src/main/java/com/readrops/app/activities/AccountTypeListActivity.java +++ b/app/src/main/java/com/readrops/app/activities/AccountTypeListActivity.java @@ -44,6 +44,7 @@ public class AccountTypeListActivity extends AppCompatActivity { adapter = new AccountTypeListAdapter(accountType -> { if (!(accountType.getAccountType() == Account.AccountType.LOCAL)) { Intent intent = new Intent(getApplicationContext(), AddAccountActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); intent.putExtra("accountType", accountType); startActivity(intent); diff --git a/app/src/main/java/com/readrops/app/activities/AddAccountActivity.java b/app/src/main/java/com/readrops/app/activities/AddAccountActivity.java index 882bf528..308d6470 100644 --- a/app/src/main/java/com/readrops/app/activities/AddAccountActivity.java +++ b/app/src/main/java/com/readrops/app/activities/AddAccountActivity.java @@ -28,6 +28,7 @@ public class AddAccountActivity extends AppCompatActivity { private AccountViewModel viewModel; private AccountType accountType; + private boolean forwardResult; @Override protected void onCreate(Bundle savedInstanceState) { @@ -38,6 +39,9 @@ public class AddAccountActivity extends AppCompatActivity { accountType = getIntent().getParcelableExtra("accountType"); + int flag = getIntent().getFlags(); + forwardResult = flag == Intent.FLAG_ACTIVITY_FORWARD_RESULT; + binding.providerImage.setImageResource(accountType.getLogoId()); binding.providerName.setText(accountType.getName()); @@ -80,9 +84,17 @@ public class AddAccountActivity extends AppCompatActivity { if (success) { saveLoginPassword(account); - Intent intent = new Intent(getApplicationContext(), MainActivity.class); - intent.putExtra(MainActivity.ACCOUNT_KEY, account); - startActivity(intent); + if (forwardResult) { + Intent intent = new Intent(); + intent.putExtra(MainActivity.ACCOUNT_KEY, account); + setResult(RESULT_OK, intent); + finish(); + + } else { + Intent intent = new Intent(getApplicationContext(), MainActivity.class); + intent.putExtra(MainActivity.ACCOUNT_KEY, account); + startActivity(intent); + } finish(); } else { diff --git a/app/src/main/java/com/readrops/app/activities/MainActivity.java b/app/src/main/java/com/readrops/app/activities/MainActivity.java index 2cb15373..6f236c10 100644 --- a/app/src/main/java/com/readrops/app/activities/MainActivity.java +++ b/app/src/main/java/com/readrops/app/activities/MainActivity.java @@ -178,7 +178,7 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou .withName(getString(R.string.add_account)) .withIcon(R.drawable.ic_add_account_grey) .withOnDrawerItemClickListener((view, position, drawerItem) -> { - Intent intent = new Intent(this, AddAccountActivity.class); + Intent intent = new Intent(this, AccountTypeListActivity.class); startActivityForResult(intent, ADD_ACCOUNT_REQUEST); return true; @@ -508,6 +508,17 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou } } else if (requestCode == MANAGE_FEEDS_REQUEST) { updateDrawerFeeds(); + } else if (requestCode == ADD_ACCOUNT_REQUEST) { + Account newAccount = data.getParcelableExtra(ACCOUNT_KEY); + + if (newAccount != null) { + account = newAccount; + + viewModel.setRepository(account.getAccountType(), getApplication()); + refreshLayout.setRefreshing(true); + onRefresh(); + buildDrawer(); + } } super.onActivityResult(requestCode, resultCode, data);