Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstefan-niedermann <info@niedermann.it>2019-12-06 21:29:45 +0300
committerstefan-niedermann <info@niedermann.it>2019-12-06 21:29:45 +0300
commitffba4a8bfcb485ebf3713551300e1758be4e24ba (patch)
treea5ba0b990fbfe4e4f9c5dbbf17202a53dead5e87 /app/src/main
parent4fdaf38431da7e5968c6ac65bc1e1ad4ba5d8848 (diff)
Fix #202 Crash opening not-yet-synced task
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java128
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java29
2 files changed, 81 insertions, 76 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
index c9e630efb..d87d2c32d 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
@@ -55,7 +55,7 @@ public class SyncManager {
private ServerAdapter serverAdapter;
public SyncManager(Context context, @Nullable Activity sourceActivity) {
- if(context == null) {
+ if (context == null) {
throw new IllegalArgumentException("Provide a valid context.");
}
Context applicationContext = context.getApplicationContext();
@@ -159,7 +159,7 @@ public class SyncManager {
return dataBaseAdapter.createAccount(accout);
}
- public boolean hasInternetConnection(){
+ public boolean hasInternetConnection() {
return serverAdapter.hasInternetConnection();
}
@@ -199,7 +199,7 @@ public class SyncManager {
doAsync(() -> {
Account account = dataBaseAdapter.getAccountByIdDirectly(accountId);
User owner = dataBaseAdapter.getUserByUidDirectly(accountId, account.getUserName());
- if(owner == null) {
+ if (owner == null) {
DeckLog.log("owner is null - this can be the case if the Deck app has never before been opened in the webinterface");
liveData.postValue(null);
} else {
@@ -223,13 +223,17 @@ public class SyncManager {
public LiveData<List<it.niedermann.nextcloud.deck.model.ocs.Activity>> syncActivitiesForCard(Card card) {
doAsync(() -> {
if (serverAdapter.hasInternetConnection()) {
- new SyncHelper(serverAdapter, dataBaseAdapter, null)
- .setResponseCallback(new IResponseCallback<Boolean>(dataBaseAdapter.getAccountByIdDirectly(card.getAccountId())) {
- @Override
- public void onResponse(Boolean response) {
- // do nothing
- }
- }).doSyncFor(new ActivityDataProvider(null, card));
+ if (card.getId() != null) {
+ new SyncHelper(serverAdapter, dataBaseAdapter, null)
+ .setResponseCallback(new IResponseCallback<Boolean>(dataBaseAdapter.getAccountByIdDirectly(card.getAccountId())) {
+ @Override
+ public void onResponse(Boolean response) {
+ // do nothing
+ }
+ }).doSyncFor(new ActivityDataProvider(null, card));
+ } else {
+ DeckLog.log("Can not fetch activities for card \"" + card.getTitle() + "\" because this card does not have a remote id yet.");
+ }
}
});
return dataBaseAdapter.getActivitiesForCard(card.getLocalId());
@@ -279,15 +283,15 @@ public class SyncManager {
FullBoard board = dataBaseAdapter.getFullBoardByLocalIdDirectly(accountId, entity.getBoardId());
new DataPropagationHelper(serverAdapter, dataBaseAdapter).createEntity(
new AccessControlDataProvider(null, board, Collections.singletonList(entity)), entity, new IResponseCallback<AccessControl>(account) {
- @Override
- public void onResponse(AccessControl response) {
- liveData.postValue(response);
- }
- }, ((entity1, response) -> {
- response.setBoardId(entity.getBoardId());
- response.setUserId(entity.getUser().getLocalId());
+ @Override
+ public void onResponse(AccessControl response) {
+ liveData.postValue(response);
+ }
+ }, ((entity1, response) -> {
+ response.setBoardId(entity.getBoardId());
+ response.setUserId(entity.getUser().getLocalId());
}
- )
+ )
);
});
return liveData;
@@ -304,30 +308,31 @@ public class SyncManager {
public MutableLiveData<AccessControl> updateAccessControl(AccessControl entity) {
MutableLiveData<AccessControl> liveData = new MutableLiveData<>();
doAsync(() -> {
- Account account = dataBaseAdapter.getAccountByIdDirectly(entity.getAccountId());
- FullBoard board = dataBaseAdapter.getFullBoardByLocalIdDirectly(entity.getAccountId(), entity.getBoardId());
- new DataPropagationHelper(serverAdapter, dataBaseAdapter).updateEntity(
- new AccessControlDataProvider(null, board, Collections.singletonList(entity)), entity, new IResponseCallback<AccessControl>(account) {
- @Override
- public void onResponse(AccessControl response) {
- liveData.postValue(response);
- }
- });
+ Account account = dataBaseAdapter.getAccountByIdDirectly(entity.getAccountId());
+ FullBoard board = dataBaseAdapter.getFullBoardByLocalIdDirectly(entity.getAccountId(), entity.getBoardId());
+ new DataPropagationHelper(serverAdapter, dataBaseAdapter).updateEntity(
+ new AccessControlDataProvider(null, board, Collections.singletonList(entity)), entity, new IResponseCallback<AccessControl>(account) {
+ @Override
+ public void onResponse(AccessControl response) {
+ liveData.postValue(response);
+ }
+ });
});
return liveData;
}
+
public MutableLiveData<AccessControl> deleteAccessControl(AccessControl entity) {
MutableLiveData<AccessControl> liveData = new MutableLiveData<>();
doAsync(() -> {
- Account account = dataBaseAdapter.getAccountByIdDirectly(entity.getAccountId());
- FullBoard board = dataBaseAdapter.getFullBoardByLocalIdDirectly(entity.getAccountId(), entity.getBoardId());
- new DataPropagationHelper(serverAdapter, dataBaseAdapter).deleteEntity(
- new AccessControlDataProvider(null, board, Collections.singletonList(entity)), entity, new IResponseCallback<AccessControl>(account) {
- @Override
- public void onResponse(AccessControl response) {
- liveData.postValue(response);
- }
- });
+ Account account = dataBaseAdapter.getAccountByIdDirectly(entity.getAccountId());
+ FullBoard board = dataBaseAdapter.getFullBoardByLocalIdDirectly(entity.getAccountId(), entity.getBoardId());
+ new DataPropagationHelper(serverAdapter, dataBaseAdapter).deleteEntity(
+ new AccessControlDataProvider(null, board, Collections.singletonList(entity)), entity, new IResponseCallback<AccessControl>(account) {
+ @Override
+ public void onResponse(AccessControl response) {
+ liveData.postValue(response);
+ }
+ });
});
return liveData;
}
@@ -422,6 +427,7 @@ public class SyncManager {
});
return liveData;
}
+
public LiveData<FullCard> createFullCard(long accountId, long localBoardId, long localStackId, FullCard card) {
MutableLiveData<FullCard> liveData = new MutableLiveData<>();
@@ -438,7 +444,7 @@ public class SyncManager {
card.getCard().setLocalId(localCardId);
List<User> assignedUsers = card.getAssignedUsers();
- if (assignedUsers!= null) {
+ if (assignedUsers != null) {
for (User assignedUser : assignedUsers) {
dataBaseAdapter.createJoinCardWithUser(assignedUser.getLocalId(), localCardId, DBStatus.LOCAL_EDITED);
}
@@ -452,7 +458,7 @@ public class SyncManager {
}
liveData.postValue(card);
- if (serverAdapter.hasInternetConnection()){
+ if (serverAdapter.hasInternetConnection()) {
new SyncHelper(serverAdapter, dataBaseAdapter, null)
.setResponseCallback(IResponseCallback.getDefaultResponseCallback(account))
.doUpSyncFor(new CardDataProvider(null, board, stack));
@@ -518,7 +524,7 @@ public class SyncManager {
fullCardFromDB.setCard(card.getCard());
card.getCard().setStatus(DBStatus.LOCAL_EDITED.getId());
dataBaseAdapter.updateCard(card.getCard(), false);
- if (serverAdapter.hasInternetConnection()){
+ if (serverAdapter.hasInternetConnection()) {
Account account = dataBaseAdapter.getAccountByIdDirectly(card.getAccountId());
new SyncHelper(serverAdapter, dataBaseAdapter, null)
.setResponseCallback(new IResponseCallback<Boolean>(account) {
@@ -600,11 +606,11 @@ public class SyncManager {
Board board = dataBaseAdapter.getBoardByLocalIdDirectly(label.getBoardId());
new DataPropagationHelper(serverAdapter, dataBaseAdapter)
.updateEntity(new LabelDataProvider(null, board, Collections.emptyList()), label, new IResponseCallback<Label>(account) {
- @Override
- public void onResponse(Label response) {
- liveData.postValue(response);
- }
- });
+ @Override
+ public void onResponse(Label response) {
+ liveData.postValue(response);
+ }
+ });
});
return liveData;
}
@@ -614,14 +620,14 @@ public class SyncManager {
final long localUserId = user.getLocalId();
final long localCardId = card.getLocalId();
JoinCardWithUser joinCardWithUser = dataBaseAdapter.getJoinCardWithUser(localUserId, localCardId);
- if (joinCardWithUser != null && joinCardWithUser.getStatus() != DBStatus.LOCAL_DELETED.getId()){
+ if (joinCardWithUser != null && joinCardWithUser.getStatus() != DBStatus.LOCAL_DELETED.getId()) {
return;
}
dataBaseAdapter.createJoinCardWithUser(localUserId, localCardId, DBStatus.LOCAL_EDITED);
Stack stack = dataBaseAdapter.getStackByLocalIdDirectly(card.getStackId());
Board board = dataBaseAdapter.getBoardByLocalIdDirectly(stack.getBoardId());
Account account = dataBaseAdapter.getAccountByIdDirectly(card.getAccountId());
- if (serverAdapter.hasInternetConnection()){
+ if (serverAdapter.hasInternetConnection()) {
serverAdapter.assignUserToCard(board.getId(), stack.getId(), card.getId(), user.getUid(), new IResponseCallback<Void>(account) {
@Override
@@ -644,7 +650,7 @@ public class SyncManager {
Stack stack = dataBaseAdapter.getStackByLocalIdDirectly(card.getStackId());
Board board = dataBaseAdapter.getBoardByLocalIdDirectly(stack.getBoardId());
Account account = dataBaseAdapter.getAccountByIdDirectly(card.getAccountId());
- if (serverAdapter.hasInternetConnection()){
+ if (serverAdapter.hasInternetConnection()) {
serverAdapter.assignLabelToCard(board.getId(), stack.getId(), card.getId(), label.getId(), new IResponseCallback<Void>(account) {
@Override
@@ -662,21 +668,21 @@ public class SyncManager {
Stack stack = dataBaseAdapter.getStackByLocalIdDirectly(card.getStackId());
Board board = dataBaseAdapter.getBoardByLocalIdDirectly(stack.getBoardId());
Account account = dataBaseAdapter.getAccountByIdDirectly(card.getAccountId());
- if (serverAdapter.hasInternetConnection()) {
- serverAdapter.unassignLabelFromCard(board.getId(), stack.getId(), card.getId(), label.getId(), new IResponseCallback<Void>(account) {
- @Override
- public void onResponse(Void response) {
- dataBaseAdapter.deleteJoinedLabelForCardPhysically(card.getLocalId(), label.getLocalId());
- }
- });
- }
+ if (serverAdapter.hasInternetConnection()) {
+ serverAdapter.unassignLabelFromCard(board.getId(), stack.getId(), card.getId(), label.getId(), new IResponseCallback<Void>(account) {
+ @Override
+ public void onResponse(Void response) {
+ dataBaseAdapter.deleteJoinedLabelForCardPhysically(card.getLocalId(), label.getLocalId());
+ }
+ });
+ }
});
}
public void unassignUserFromCard(User user, Card card) {
doAsync(() -> {
dataBaseAdapter.deleteJoinedUserForCard(card.getLocalId(), user.getLocalId());
- if (serverAdapter.hasInternetConnection()){
+ if (serverAdapter.hasInternetConnection()) {
Stack stack = dataBaseAdapter.getStackByLocalIdDirectly(card.getStackId());
Board board = dataBaseAdapter.getBoardByLocalIdDirectly(stack.getBoardId());
Account account = dataBaseAdapter.getAccountByIdDirectly(card.getAccountId());
@@ -690,15 +696,15 @@ public class SyncManager {
});
}
- public LiveData<List<User>> findProposalsForUsersToAssign(final long accountId, long boardId, long notAssignedToLocalCardId, final int topX){
+ public LiveData<List<User>> findProposalsForUsersToAssign(final long accountId, long boardId, long notAssignedToLocalCardId, final int topX) {
return dataBaseAdapter.findProposalsForUsersToAssign(accountId, boardId, notAssignedToLocalCardId, topX);
}
- public LiveData<List<User>> findProposalsForUsersToAssignForACL(final long accountId, long boardId, final int topX){
+ public LiveData<List<User>> findProposalsForUsersToAssignForACL(final long accountId, long boardId, final int topX) {
return dataBaseAdapter.findProposalsForUsersToAssignForACL(accountId, boardId, topX);
}
- public LiveData<List<Label>> findProposalsForLabelsToAssign(final long accountId, final long boardId, long notAssignedToLocalCardId, final int topX){
+ public LiveData<List<Label>> findProposalsForLabelsToAssign(final long accountId, final long boardId, long notAssignedToLocalCardId, final int topX) {
return dataBaseAdapter.findProposalsForLabelsToAssign(accountId, boardId, notAssignedToLocalCardId, topX);
}
@@ -777,7 +783,7 @@ public class SyncManager {
// read cards of new stack
List<FullCard> cardsOfNewStack = dataBaseAdapter.getFullCardsForStackDirectly(accountId, newStackId);
int newOrder = newIndex;
- if (cardsOfNewStack.size() > newIndex) {
+ if (cardsOfNewStack.size() > newIndex) {
newOrder = cardsOfNewStack.get(newIndex).getCard().getOrder();
}
if (newOrder == movedCard.getCard().getOrder() && newStackId == movedCard.getCard().getStackId()) {
@@ -860,7 +866,7 @@ public class SyncManager {
changedCards.add(movedCard.getCard());
for (FullCard fullCard : cardsOfNewStack) {
// skip unchanged cards
- if (fullCard.getCard().getOrder() < newOrder){
+ if (fullCard.getCard().getOrder() < newOrder) {
continue;
}
changedCards.add(fullCard.getCard());
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java
index 7c2676ffc..9c190409b 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardActivityFragment.java
@@ -70,21 +70,20 @@ public class CardActivityFragment extends Fragment {
boolean canEdit = args.getBoolean(BUNDLE_KEY_CAN_EDIT);
SyncManager syncManager = new SyncManager(Objects.requireNonNull(getActivity()));
- if (syncManager.hasInternetConnection()) {
- syncManager.getCardByLocalId(accountId, localId).observe(CardActivityFragment.this, (fullCard) ->
- syncManager.syncActivitiesForCard(fullCard.getCard()).observe(CardActivityFragment.this, (activities -> {
- if (activities == null || activities.size() == 0) {
- noActivities.setVisibility(View.VISIBLE);
- activitiesList.setVisibility(View.GONE);
- } else {
- noActivities.setVisibility(View.GONE);
- activitiesList.setVisibility(View.VISIBLE);
- RecyclerView.Adapter adapter = new ActivityAdapter(activities);
- activitiesList.setAdapter(adapter);
- }
- })));
- }
- if(canEdit) {
+ syncManager.getCardByLocalId(accountId, localId).observe(CardActivityFragment.this, (fullCard) -> {
+ syncManager.syncActivitiesForCard(fullCard.getCard()).observe(CardActivityFragment.this, (activities -> {
+ if (activities == null || activities.size() == 0) {
+ noActivities.setVisibility(View.VISIBLE);
+ activitiesList.setVisibility(View.GONE);
+ } else {
+ noActivities.setVisibility(View.GONE);
+ activitiesList.setVisibility(View.VISIBLE);
+ RecyclerView.Adapter adapter = new ActivityAdapter(activities);
+ activitiesList.setAdapter(adapter);
+ }
+ }));
+ });
+ if (canEdit) {
fab.setOnClickListener(v -> {
Snackbar.make(coordinatorLayout, "Adding comments is not yet implemented", Snackbar.LENGTH_LONG).show();
});