diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-05-31 21:54:38 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2021-06-01 12:36:53 +0300 |
commit | 0c6683b46349560a8377273039743da1a3a0f397 (patch) | |
tree | a916f630aa268fbf865ac8cdcd9c6fbb48997806 /app/src/main/java/it/niedermann/nextcloud/deck/ui/preparecreate/PrepareCreateActivity.java | |
parent | 69618b05a85b2302d4357124833b2eaaf6dd42b4 (diff) |
Create card in PrepareCreateActivity before starting the EditActivity
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/preparecreate/PrepareCreateActivity.java')
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/ui/preparecreate/PrepareCreateActivity.java | 62 |
1 files changed, 51 insertions, 11 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/preparecreate/PrepareCreateActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/preparecreate/PrepareCreateActivity.java index 53e25a0d9..ccb7c8a38 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/preparecreate/PrepareCreateActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/preparecreate/PrepareCreateActivity.java @@ -1,13 +1,20 @@ package it.niedermann.nextcloud.deck.ui.preparecreate; +import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; +import android.text.TextUtils; +import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.ActionBar; +import androidx.lifecycle.ViewModelProvider; import it.niedermann.nextcloud.deck.R; +import it.niedermann.nextcloud.deck.api.IResponseCallback; import it.niedermann.nextcloud.deck.model.Account; +import it.niedermann.nextcloud.deck.model.full.FullCard; import it.niedermann.nextcloud.deck.ui.PickStackActivity; import it.niedermann.nextcloud.deck.ui.card.EditActivity; @@ -17,6 +24,8 @@ import static it.niedermann.nextcloud.deck.DeckApplication.saveCurrentStackId; public class PrepareCreateActivity extends PickStackActivity { + private PrepareCreateViewModel viewModel; + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -24,29 +33,60 @@ public class PrepareCreateActivity extends PickStackActivity { if (actionBar != null) { actionBar.setTitle(R.string.add_card); } + + viewModel = new ViewModelProvider(this).get(PrepareCreateViewModel.class); } @Override - protected void onSubmit(Account account, long boardId, long stackId) { - final Intent intent = getIntent(); - if (intent == null) { - startActivity(EditActivity.createNewCardIntent(this, account, boardId, stackId)); + protected void onSubmit(Account account, long boardId, long stackId, @NonNull IResponseCallback<Void> callback) { + Toast.makeText(this, R.string.saving_new_card, Toast.LENGTH_SHORT).show(); + final FullCard fullCard; + if (requireContent()) { + fullCard = viewModel.createFullCard(account.getServerDeckVersionAsObject(), getContent()); } else { - startActivity(EditActivity.createNewCardIntent(this, account, boardId, stackId, + final Intent intent = getIntent(); + if (intent == null) { + throw new IllegalStateException("Intent should not be null because title is required."); + } + fullCard = viewModel.createFullCard( + account.getServerDeckVersionAsObject(), + intent.getStringExtra(Intent.EXTRA_SUBJECT), intent.getStringExtra(Intent.EXTRA_TITLE), - intent.getStringExtra(Intent.EXTRA_TEXT))); + intent.getStringExtra(Intent.EXTRA_TEXT) + ); } - saveCurrentAccount(this, account); - saveCurrentBoardId(this, account.getId(), boardId); - saveCurrentStackId(this, account.getId(), boardId, stackId); - applyBrand(account.getColor()); + viewModel.saveCard(account.getId(), boardId, stackId, fullCard, new IResponseCallback<FullCard>() { + @Override + public void onResponse(FullCard response) { + saveCurrentAccount(PrepareCreateActivity.this, account); + saveCurrentBoardId(PrepareCreateActivity.this, account.getId(), boardId); + saveCurrentStackId(PrepareCreateActivity.this, account.getId(), boardId, stackId); - finish(); + callback.onResponse(null); + startActivity(EditActivity.createEditCardIntent(PrepareCreateActivity.this, account, boardId, response.getLocalId())); + finish(); + } + + @Override + @SuppressLint("MissingSuperCall") + public void onError(Throwable throwable) { + callback.onError(throwable); + } + }); } @Override protected boolean showBoardsWithoutEditPermission() { return false; } + + @Override + protected boolean requireContent() { + final Intent intent = getIntent(); + return intent == null || (TextUtils.isEmpty(intent.getStringExtra(Intent.EXTRA_SUBJECT)) && + TextUtils.isEmpty(intent.getStringExtra(Intent.EXTRA_TITLE)) && + TextUtils.isEmpty(intent.getStringExtra(Intent.EXTRA_TEXT))); + } + }
\ No newline at end of file |