diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index 466c7876f1..bcd445c782 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -56,7 +56,7 @@ public interface DaoFolder { " FROM folder" + " JOIN account ON account.id = folder.account" + " WHERE account.`synchronize`") - LiveData> liveSort(); + List getSortedFolders(); @Query("SELECT folder.*" + ", account.`order` AS accountOrder, account.name AS accountName, account.color AS accountColor, account.state AS accountState" + diff --git a/app/src/main/java/eu/faircode/email/FragmentOrder.java b/app/src/main/java/eu/faircode/email/FragmentOrder.java index 41606e1942..9e6dd70080 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOrder.java +++ b/app/src/main/java/eu/faircode/email/FragmentOrder.java @@ -31,7 +31,6 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.Group; -import androidx.lifecycle.Observer; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -97,9 +96,15 @@ public class FragmentOrder extends FragmentBase { DB db = DB.getInstance(getContext()); if (EntityAccount.class.getName().equals(clazz)) - db.account().liveSynchronizingAccounts().observe(getViewLifecycleOwner(), new Observer>() { + new SimpleTask>() { @Override - public void onChanged(List accounts) { + protected List onExecute(Context context, Bundle args) { + DB db = DB.getInstance(context); + return db.account().getSynchronizingAccounts(); + } + + @Override + protected void onExecuted(Bundle args, List accounts) { if (accounts == null) accounts = new ArrayList<>(); @@ -110,11 +115,22 @@ public class FragmentOrder extends FragmentBase { pbWait.setVisibility(View.GONE); grpReady.setVisibility(View.VISIBLE); } - }); + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex); + } + }.execute(this, new Bundle(), "order:accounts"); else if (TupleFolderSort.class.getName().equals(clazz)) - db.folder().liveSort().observe(getViewLifecycleOwner(), new Observer>() { + new SimpleTask>() { @Override - public void onChanged(List folders) { + protected List onExecute(Context context, Bundle args) { + DB db = DB.getInstance(context); + return db.folder().getSortedFolders(); + } + + @Override + protected void onExecuted(Bundle args, List folders) { if (folders == null) folders = new ArrayList<>(); @@ -125,7 +141,12 @@ public class FragmentOrder extends FragmentBase { pbWait.setVisibility(View.GONE); grpReady.setVisibility(View.VISIBLE); } - }); + + @Override + protected void onException(Bundle args, Throwable ex) { + + } + }.execute(this, new Bundle(), "order:folders"); else throw new IllegalArgumentException(); }