diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-12-14 21:29:01 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-12-14 21:29:01 +0300 |
commit | 8d70af862c3644e12ad4913cf0aa42b33f4132e8 (patch) | |
tree | ed6b94a0faebf509c9462221586a6a64b4f2f2e9 /app/src/main | |
parent | 2a2d93940491faf9ff043736747676d00a7d6e11 (diff) |
Minor stuff
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main')
3 files changed, 37 insertions, 28 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 e45f1a73d..99899db63 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 @@ -61,6 +61,7 @@ import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment; import it.niedermann.nextcloud.deck.model.ocs.comment.OcsComment; import it.niedermann.nextcloud.deck.model.ocs.comment.full.FullDeckComment; import it.niedermann.nextcloud.deck.model.ocs.projects.OcsProjectResource; +import it.niedermann.nextcloud.deck.model.widget.filter.EWidgetType; import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidget; import it.niedermann.nextcloud.deck.model.widget.filter.dto.FilterWidgetCard; import it.niedermann.nextcloud.deck.persistence.sync.adapters.ServerAdapter; @@ -1988,6 +1989,14 @@ public class SyncManager { }); } + public List<Integer> getFilterWidgetIDsByType(EWidgetType type) { + return dataBaseAdapter.getFilterWidgetIDsByType(type); + } + + public boolean filterWidgetExists(int id) { + return dataBaseAdapter.filterWidgetExists(id); + } + @WorkerThread public void getCardsForFilterWidget(@NonNull Integer filterWidgetId, @NonNull IResponseCallback<List<FilterWidgetCard>> callback) { doAsync(() -> { 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 71f86c3df..7a333174a 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 @@ -456,6 +456,7 @@ public class DataBaseAdapter { public WrappedLiveData<Account> createAccount(Account account) { return LiveDataHelper.wrapInLiveData(() -> { long id = db.getAccountDao().insert(account); + // TODO Add account to UpcomingWidgets return readAccountDirectly(id); }); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidget.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidget.java index 9de8933ef..22e338298 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidget.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidget.java @@ -6,7 +6,6 @@ import android.appwidget.AppWidgetProvider; import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.database.sqlite.SQLiteConstraintException; import android.net.Uri; import android.widget.RemoteViews; @@ -80,36 +79,36 @@ public class UpcomingWidget extends AppWidgetProvider { for (int appWidgetId : appWidgetIds) { new Thread(() -> { - List<Account> accountsList = syncManager.readAccountsDirectly(); - final FilterWidget config = new FilterWidget(); - config.setWidgetType(EWidgetType.UPCOMING_WIDGET); - config.setId(appWidgetId); - config.setAccounts(accountsList.stream().map(account -> { - final FilterWidgetAccount fwa = new FilterWidgetAccount(); - fwa.setAccountId(account.getId()); - final FilterWidgetUser fwu = new FilterWidgetUser(); - fwu.setUserId(syncManager.getUserByUidDirectly(account.getId(), account.getUserName()).getId()); - fwa.setUsers(Collections.singletonList(fwu)); - return fwa; - }).collect(Collectors.toList())); - syncManager.createFilterWidget(config, new IResponseCallback<Integer>(null) { - @Override - public void onResponse(Integer response) { - updateAppWidget(context, appWidgetManager, appWidgetIds); - } - - @Override - public void onError(Throwable throwable) { - super.onError(throwable); - // FIXME check before inserting... - if (throwable.getClass().equals(SQLiteConstraintException.class)) { - DeckLog.error("Already exists, update instead."); + if (syncManager.filterWidgetExists(appWidgetId)) { + DeckLog.verbose(UpcomingWidget.class.getSimpleName() + "with id " + appWidgetId + " already exists, update instead."); + updateAppWidget(context, appWidgetManager, appWidgetIds); + } else { + final List<Account> accountsList = syncManager.readAccountsDirectly(); + final FilterWidget config = new FilterWidget(); + config.setWidgetType(EWidgetType.UPCOMING_WIDGET); + config.setId(appWidgetId); + config.setAccounts(accountsList.stream().map(account -> { + final FilterWidgetAccount fwa = new FilterWidgetAccount(); + fwa.setAccountId(account.getId()); + final FilterWidgetUser fwu = new FilterWidgetUser(); + fwu.setUserId(syncManager.getUserByUidDirectly(account.getId(), account.getUserName()).getId()); + fwa.setUsers(Collections.singletonList(fwu)); + return fwa; + }).collect(Collectors.toList())); + syncManager.createFilterWidget(config, new IResponseCallback<Integer>(null) { + @Override + public void onResponse(Integer response) { + DeckLog.verbose("Created " + UpcomingWidget.class.getSimpleName() + "with id " + appWidgetId); updateAppWidget(context, appWidgetManager, appWidgetIds); - } else { + } + + @Override + public void onError(Throwable throwable) { + super.onError(throwable); onDeleted(context, appWidgetIds); } - } - }); + }); + } }).start(); } } |