From 383f21136545be76e7fee34337209e2d7990fd24 Mon Sep 17 00:00:00 2001 From: Stefan Niedermann Date: Mon, 23 Mar 2020 21:13:43 +0100 Subject: Restore offline editable and viewable cards Signed-off-by: Stefan Niedermann --- .../niedermann/nextcloud/deck/ui/EditActivity.java | 82 ++++++++++------------ .../res/layout/fragment_card_edit_tab_comments.xml | 1 + 2 files changed, 37 insertions(+), 46 deletions(-) diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java index 8311bfb98..6cde6b36d 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/EditActivity.java @@ -33,6 +33,7 @@ import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.api.IResponseCallback; import it.niedermann.nextcloud.deck.databinding.ActivityEditBinding; +import it.niedermann.nextcloud.deck.exceptions.OfflineException; import it.niedermann.nextcloud.deck.model.Account; import it.niedermann.nextcloud.deck.model.Attachment; import it.niedermann.nextcloud.deck.model.Board; @@ -224,53 +225,42 @@ public class EditActivity extends AppCompatActivity implements CardDetailsListen // Comments API only available starting with version 1.0.0-alpha1 syncManager.readAccount(accountId).observe(this, (account) -> { - syncManager.getServerVersion(new IResponseCallback(account) { - @Override - public void onResponse(Capabilities response) { - boolean hasCommentsAbility = (response.getDeckVersion().compareTo(new Version("1.0.0", 1, 0, 0)) >= 0); - CardTabAdapter adapter = new CardTabAdapter( - getSupportFragmentManager(), - getLifecycle(), - accountId, - localId, - boardId, - canEdit, - hasCommentsAbility); - runOnUiThread(() -> { - binding.pager.setOffscreenPageLimit(hasCommentsAbility ? 3 : 2); - binding.pager.setAdapter(adapter); - new TabLayoutMediator(binding.tabLayout, binding.pager, (tab, position) -> tab.setText( - hasCommentsAbility - ? tabTitlesWithComments[position] - : tabTitles[position] - )).attach(); - }); - } + try { + syncManager.getServerVersion(new IResponseCallback(account) { + @Override + public void onResponse(Capabilities response) { + setupTabs((response.getDeckVersion().compareTo(new Version("1.0.0", 1, 0, 0)) >= 0)); + } - @Override - public void onError(Throwable throwable) { - DeckLog.logError(throwable); - boolean hasCommentsAbility = false; - CardTabAdapter adapter = new CardTabAdapter( - getSupportFragmentManager(), - getLifecycle(), - accountId, - localId, - boardId, - canEdit, - hasCommentsAbility); - runOnUiThread(() -> { - binding.pager.setOffscreenPageLimit(hasCommentsAbility ? 3 : 2); - binding.pager.setAdapter(adapter); - new TabLayoutMediator(binding.tabLayout, binding.pager, (tab, position) -> tab.setText( - hasCommentsAbility - ? tabTitlesWithComments[position] - : tabTitles[position] - )).attach(); - }); - super.onError(throwable); - } - }); + @Override + public void onError(Throwable throwable) { + super.onError(throwable); + setupTabs(false); + } + }); + } catch (OfflineException e) { + setupTabs(false); + } + }); + } + + private void setupTabs(boolean hasCommentsAbility) { + CardTabAdapter adapter = new CardTabAdapter( + getSupportFragmentManager(), + getLifecycle(), + accountId, + localId, + boardId, + canEdit, + hasCommentsAbility); + runOnUiThread(() -> { + binding.pager.setOffscreenPageLimit(hasCommentsAbility ? 3 : 2); + binding.pager.setAdapter(adapter); + new TabLayoutMediator(binding.tabLayout, binding.pager, (tab, position) -> tab.setText( + hasCommentsAbility + ? tabTitlesWithComments[position] + : tabTitles[position] + )).attach(); }); } diff --git a/app/src/main/res/layout/fragment_card_edit_tab_comments.xml b/app/src/main/res/layout/fragment_card_edit_tab_comments.xml index 5efca94ad..ebf455d29 100644 --- a/app/src/main/res/layout/fragment_card_edit_tab_comments.xml +++ b/app/src/main/res/layout/fragment_card_edit_tab_comments.xml @@ -46,6 +46,7 @@ android:id="@+id/comments" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginTop="@dimen/standard_margin" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" tools:listitem="@layout/item_comment" /> \ No newline at end of file -- cgit v1.2.3