diff options
author | desperateCoder <echotodevnull@gmail.com> | 2020-12-23 19:07:00 +0300 |
---|---|---|
committer | desperateCoder <echotodevnull@gmail.com> | 2020-12-23 19:07:00 +0300 |
commit | bd73e331438579388b52d5df4e2373d58c7faee0 (patch) | |
tree | 10c1af9933a1ff3f679ffea0ef1b0614b0b53e97 /app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java | |
parent | 3d6421e2291d36451353e823057712c3d713f8e3 (diff) |
#597 filter widget: update upcoming widget on account and user add
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java')
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java index b3ed862d1..335e8b0d8 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java @@ -331,7 +331,23 @@ public class DataBaseAdapter { public long createUser(long accountId, User user) { user.setAccountId(accountId); long newId = db.getUserDao().insert(user); - notifyFilterWidgetsAboutChangedEntity(FilterWidget.EChangedEntityType.USER, newId); + new Thread(() -> { + Account account = db.getAccountDao().getAccountByIdDirectly(newId); + if (account.getUserName().equals(user.getUid())) { + for (FilterWidget widget : getFilterWidgetsByType(EWidgetType.UPCOMING_WIDGET)) { + for (FilterWidgetAccount widgetAccount : widget.getAccounts()) { + if (widgetAccount.getAccountId() == accountId && widgetAccount.getUsers().isEmpty()) { + FilterWidgetUser u = new FilterWidgetUser(); + u.setFilterAccountId(widgetAccount.getId()); + u.setUserId(newId); + widgetAccount.getUsers().add(u); + updateFilterWidgetDirectly(widget); + } + } + } + } + notifyFilterWidgetsAboutChangedEntity(FilterWidget.EChangedEntityType.USER, newId); + }).start(); return newId; } @@ -483,15 +499,15 @@ public class DataBaseAdapter { public WrappedLiveData<Account> createAccount(Account account) { return LiveDataHelper.wrapInLiveData(() -> { long id = db.getAccountDao().insert(account); - notifyFilterWidgetsAboutChangedEntity(FilterWidget.EChangedEntityType.ACCOUNT, id); -// new Thread(() -> { -// DeckLog.verbose("Adding new created account " + id + " to all instances of " + EWidgetType.UPCOMING_WIDGET.name()); -// for (FilterWidget widget : getFilterWidgetsByType(EWidgetType.UPCOMING_WIDGET)) { -// widget.getAccounts().add(new FilterWidgetAccount(id)); -// updateFilterWidgetDirectly(widget); -// } -// UpcomingWidget.notifyDatasetChanged(context); -// }).start(); + + new Thread(() -> { + DeckLog.verbose("Adding new created account " + id + " to all instances of " + EWidgetType.UPCOMING_WIDGET.name()); + for (FilterWidget widget : getFilterWidgetsByType(EWidgetType.UPCOMING_WIDGET)) { + widget.getAccounts().add(new FilterWidgetAccount(id, false)); + updateFilterWidgetDirectly(widget); + } + notifyFilterWidgetsAboutChangedEntity(FilterWidget.EChangedEntityType.ACCOUNT, id); + }).start(); return readAccountDirectly(id); }); } |