From ab5f4329783211e63439b58e056b4832870a2d48 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 8 Aug 2018 05:52:57 +0000 Subject: [PATCH] Moved observers and loaders to onActivityCreate --- .../eu/faircode/email/FragmentAccount.java | 13 ++- .../eu/faircode/email/FragmentAccounts.java | 9 +- .../eu/faircode/email/FragmentCompose.java | 106 +++++++++--------- .../eu/faircode/email/FragmentFolder.java | 20 +++- .../eu/faircode/email/FragmentFolders.java | 18 ++- .../eu/faircode/email/FragmentIdentities.java | 9 +- .../eu/faircode/email/FragmentIdentity.java | 37 +++--- .../eu/faircode/email/FragmentMessage.java | 17 ++- .../eu/faircode/email/FragmentMessages.java | 27 +++-- .../java/eu/faircode/email/FragmentSetup.java | 46 ++++---- 10 files changed, 184 insertions(+), 118 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index 9a975813b3..6c9270293c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -188,6 +188,17 @@ public class FragmentAccount extends FragmentEx { pbCheck.setVisibility(View.GONE); ibDelete.setVisibility(id < 0 ? View.GONE : View.VISIBLE); + return view; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + // Get arguments + Bundle args = getArguments(); + long id = (args == null ? -1 : args.getLong("id", -1)); + // Observe DB.getInstance(getContext()).account().liveAccount(id).observe(this, new Observer() { @Override @@ -202,8 +213,6 @@ public class FragmentAccount extends FragmentEx { cbPrimary.setEnabled(account == null ? true : account.synchronize); } }); - - return view; } private static class PutLoader extends AsyncTaskLoader { diff --git a/app/src/main/java/eu/faircode/email/FragmentAccounts.java b/app/src/main/java/eu/faircode/email/FragmentAccounts.java index 106ca99b2d..db8bd411f1 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccounts.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccounts.java @@ -80,6 +80,13 @@ public class FragmentAccounts extends FragmentEx { grpReady.setVisibility(View.GONE); pbWait.setVisibility(View.VISIBLE); + return view; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + // Observe accounts DB.getInstance(getContext()).account().liveAccounts().observe(this, new Observer>() { @Override @@ -90,7 +97,5 @@ public class FragmentAccounts extends FragmentEx { grpReady.setVisibility(View.VISIBLE); } }); - - return view; } } diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 81fd101b10..a6d9e7f6ee 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -93,7 +93,7 @@ public class FragmentCompose extends FragmentEx { // Get arguments Bundle args = getArguments(); String action = (args == null ? null : args.getString("action")); - final long id = (TextUtils.isEmpty(action) ? (args == null ? -1 : args.getLong("id" , -1)) : -1); + final long id = (TextUtils.isEmpty(action) ? (args == null ? -1 : args.getLong("id", -1)) : -1); // Get controls spFrom = view.findViewById(R.id.spFrom); @@ -117,7 +117,7 @@ public class FragmentCompose extends FragmentEx { @Override public void onClick(View view) { Bundle args = new Bundle(); - args.putLong("id" , -1); + args.putLong("id", -1); FragmentIdentity fragment = new FragmentIdentity(); fragment.setArguments(args); @@ -181,7 +181,12 @@ public class FragmentCompose extends FragmentEx { pbWait.setVisibility(View.VISIBLE); bottom_navigation.getMenu().setGroupEnabled(0, false); - final Handler handler = new Handler(); + return view; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); DB.getInstance(getContext()).identity().liveIdentities(true).observe(FragmentCompose.this, new Observer>() { @Override @@ -207,19 +212,10 @@ public class FragmentCompose extends FragmentEx { spFrom.setVisibility(View.VISIBLE); ivIdentityAdd.setVisibility(View.VISIBLE); - // For some reason this is needed to make sure the loader starts - handler.post(new Runnable() { - @Override - public void run() { - // Get might select another identity - getLoaderManager().restartLoader(ActivityCompose.LOADER_COMPOSE_GET, getArguments(), getLoaderCallbacks).forceLoad(); - } - }); + // Get might select another identity + getLoaderManager().restartLoader(ActivityCompose.LOADER_COMPOSE_GET, getArguments(), getLoaderCallbacks).forceLoad(); } }); - - - return view; } @Override @@ -298,16 +294,16 @@ public class FragmentCompose extends FragmentEx { EntityIdentity identity = (EntityIdentity) spFrom.getSelectedItem(); Bundle args = new Bundle(); - args.putLong("id" , id); - args.putLong("iid" , identity == null ? -1 : identity.id); - args.putString("thread" , FragmentCompose.this.thread); - args.putLong("rid" , FragmentCompose.this.rid); - args.putString("to" , etTo.getText().toString()); - args.putString("cc" , etCc.getText().toString()); - args.putString("bcc" , etBcc.getText().toString()); - args.putString("subject" , etSubject.getText().toString()); - args.putString("body" , etBody.getText().toString()); - args.putString("action" , action); + args.putLong("id", id); + args.putLong("iid", identity == null ? -1 : identity.id); + args.putString("thread", FragmentCompose.this.thread); + args.putLong("rid", FragmentCompose.this.rid); + args.putString("to", etTo.getText().toString()); + args.putString("cc", etCc.getText().toString()); + args.putString("bcc", etBcc.getText().toString()); + args.putString("subject", etSubject.getText().toString()); + args.putString("body", etBody.getText().toString()); + args.putString("action", action); getLoaderManager().restartLoader(ActivityCompose.LOADER_COMPOSE_PUT, args, putLoaderCallbacks).forceLoad(); } @@ -329,35 +325,35 @@ public class FragmentCompose extends FragmentEx { Bundle result = new Bundle(); try { String action = args.getString("action"); - long id = args.getLong("id" , -1); + long id = args.getLong("id", -1); EntityMessage msg = DB.getInstance(getContext()).message().getMessage(id); - result.putString("action" , action); + result.putString("action", action); if (msg != null) { if (msg.identity != null) - result.putLong("iid" , msg.identity); + result.putLong("iid", msg.identity); if (msg.replying != null) - result.putLong("rid" , msg.replying); - result.putSerializable("cc" , msg.cc); - result.putSerializable("bcc" , msg.bcc); - result.putString("thread" , msg.thread); - result.putString("subject" , msg.subject); - result.putString("body" , msg.body); + result.putLong("rid", msg.replying); + result.putSerializable("cc", msg.cc); + result.putSerializable("bcc", msg.bcc); + result.putString("thread", msg.thread); + result.putString("subject", msg.subject); + result.putString("body", msg.body); } if (TextUtils.isEmpty(action)) { if (msg != null) { - result.putSerializable("from" , msg.from); - result.putSerializable("to" , msg.to); + result.putSerializable("from", msg.from); + result.putSerializable("to", msg.to); } } else if ("reply".equals(action)) { Address[] to = null; if (msg != null) to = (msg.reply == null || msg.reply.length == 0 ? msg.from : msg.reply); - result.putLong("rid" , msg.id); - result.putSerializable("from" , msg.to); - result.putSerializable("to" , to); + result.putLong("rid", msg.id); + result.putSerializable("from", msg.to); + result.putSerializable("to", to); } else if ("reply_all".equals(action)) { Address[] to = null; if (msg != null) { @@ -370,15 +366,15 @@ public class FragmentCompose extends FragmentEx { addresses.addAll(Arrays.asList(msg.cc)); to = addresses.toArray(new Address[0]); } - result.putLong("rid" , msg.id); - result.putSerializable("from" , msg.to); - result.putSerializable("to" , to); + result.putLong("rid", msg.id); + result.putSerializable("from", msg.to); + result.putSerializable("to", to); } else if ("forward".equals(action)) { Address[] to = null; if (msg != null) to = (msg.reply == null || msg.reply.length == 0 ? msg.from : msg.reply); - result.putSerializable("from" , msg.to); - result.putSerializable("to" , to); + result.putSerializable("from", msg.to); + result.putSerializable("to", to); } } catch (Throwable ex) { Log.e(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex)); @@ -400,8 +396,8 @@ public class FragmentCompose extends FragmentEx { public void onLoadFinished(@NonNull Loader loader, Bundle result) { getLoaderManager().destroyLoader(loader.getId()); - long iid = result.getLong("iid" , -1); - long rid = result.getLong("rid" , -1); + long iid = result.getLong("iid", -1); + long rid = result.getLong("rid", -1); String thread = result.getString("thread"); Address[] from = (Address[]) result.getSerializable("from"); Address[] to = (Address[]) result.getSerializable("to"); @@ -437,11 +433,11 @@ public class FragmentCompose extends FragmentEx { Handler handler = new Handler(); - etCc.setText(cc == null ? null : TextUtils.join(", " , cc)); - etBcc.setText(bcc == null ? null : TextUtils.join(", " , bcc)); + etCc.setText(cc == null ? null : TextUtils.join(", ", cc)); + etBcc.setText(bcc == null ? null : TextUtils.join(", ", bcc)); if (action == null) { - etTo.setText(to == null ? null : TextUtils.join(", " , to)); + etTo.setText(to == null ? null : TextUtils.join(", ", to)); etSubject.setText(subject); if (body != null) etBody.setText(Html.fromHtml(HtmlHelper.sanitize(getContext(), body, false))); @@ -452,10 +448,10 @@ public class FragmentCompose extends FragmentEx { } }); } else if ("reply".equals(action) || "reply_all".equals(action)) { - etTo.setText(to == null ? null : TextUtils.join(", " , to)); - String text = String.format("

%s %s:

%s" , + etTo.setText(to == null ? null : TextUtils.join(", ", to)); + String text = String.format("

%s %s:

%s", Html.escapeHtml(new Date().toString()), - Html.escapeHtml(to == null ? "" : TextUtils.join(", " , to)), + Html.escapeHtml(to == null ? "" : TextUtils.join(", ", to)), HtmlHelper.sanitize(getContext(), body, true)); etSubject.setText(getContext().getString(R.string.title_subject_reply, subject)); etBody.setText(Html.fromHtml(text)); @@ -466,9 +462,9 @@ public class FragmentCompose extends FragmentEx { } }); } else if ("forward".equals(action)) { - String text = String.format("

%s %s:

%s" , + String text = String.format("

%s %s:

%s", Html.escapeHtml(new Date().toString()), - Html.escapeHtml(to == null ? "" : TextUtils.join(", " , to)), + Html.escapeHtml(to == null ? "" : TextUtils.join(", ", to)), HtmlHelper.sanitize(getContext(), body, true)); etSubject.setText(getContext().getString(R.string.title_subject_forward, subject)); etBody.setText(Html.fromHtml(text)); @@ -519,7 +515,7 @@ public class FragmentCompose extends FragmentEx { if (drafts == null) throw new Throwable(getContext().getString(R.string.title_no_primary_drafts)); - long rid = args.getLong("rid" , -1); + long rid = args.getLong("rid", -1); String thread = args.getString("thread"); String to = args.getString("to"); String cc = args.getString("cc"); @@ -546,7 +542,7 @@ public class FragmentCompose extends FragmentEx { draft.cc = acc; draft.bcc = abcc; draft.subject = subject; - draft.body = "
" + body.replaceAll("\\r?\\n" , "
") + "
"; + draft.body = "
" + body.replaceAll("\\r?\\n", "
") + "
"; draft.received = new Date().getTime(); draft.seen = false; draft.ui_seen = false; diff --git a/app/src/main/java/eu/faircode/email/FragmentFolder.java b/app/src/main/java/eu/faircode/email/FragmentFolder.java index 5472f07205..7ab269f53e 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolder.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolder.java @@ -73,9 +73,9 @@ public class FragmentFolder extends FragmentEx { pbSave.setVisibility(View.VISIBLE); Bundle args = new Bundle(); - args.putLong("id" , id); - args.putBoolean("synchronize" , cbSynchronize.isChecked()); - args.putString("after" , etAfter.getText().toString()); + args.putLong("id", id); + args.putBoolean("synchronize", cbSynchronize.isChecked()); + args.putString("after", etAfter.getText().toString()); getLoaderManager().restartLoader(ActivityView.LOADER_FOLDER_PUT, args, putLoaderCallbacks).forceLoad(); } @@ -86,6 +86,18 @@ public class FragmentFolder extends FragmentEx { grpReady.setVisibility(View.GONE); pbWait.setVisibility(View.VISIBLE); + + return view; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + // Get arguments + Bundle args = getArguments(); + long id = (args == null ? -1 : args.getLong("id")); + // Observe DB.getInstance(getContext()).folder().liveFolder(id).observe(this, new Observer() { @Override @@ -99,8 +111,6 @@ public class FragmentFolder extends FragmentEx { grpReady.setVisibility(View.VISIBLE); } }); - - return view; } private static class PutLoader extends AsyncTaskLoader { diff --git a/app/src/main/java/eu/faircode/email/FragmentFolders.java b/app/src/main/java/eu/faircode/email/FragmentFolders.java index 5179f66fcc..7a5d855abe 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolders.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolders.java @@ -48,10 +48,6 @@ public class FragmentFolders extends FragmentEx { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_folders, container, false); - // Get arguments - Bundle args = getArguments(); - long account = (args == null ? -1 : args.getLong("account")); - // Get controls rvFolder = view.findViewById(R.id.rvFolder); pbWait = view.findViewById(R.id.pbWait); @@ -78,6 +74,17 @@ public class FragmentFolders extends FragmentEx { grpReady.setVisibility(View.GONE); pbWait.setVisibility(View.VISIBLE); + return view; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + // Get arguments + Bundle args = getArguments(); + long account = (args == null ? -1 : args.getLong("account")); + DB db = DB.getInstance(getContext()); // Observe account @@ -100,8 +107,7 @@ public class FragmentFolders extends FragmentEx { }); // Show hint + // TODO: find better solution Toast.makeText(getContext(), R.string.title_item_edit_hint, Toast.LENGTH_SHORT).show(); - - return view; } } diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentities.java b/app/src/main/java/eu/faircode/email/FragmentIdentities.java index 78c0b34a8e..8930ca9c0f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentities.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentities.java @@ -80,6 +80,13 @@ public class FragmentIdentities extends FragmentEx { grpReady.setVisibility(View.GONE); pbWait.setVisibility(View.VISIBLE); + return view; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + // Observe identities DB.getInstance(getContext()).identity().liveIdentities().observe(this, new Observer>() { @Override @@ -90,7 +97,5 @@ public class FragmentIdentities extends FragmentEx { grpReady.setVisibility(View.VISIBLE); } }); - - return view; } } diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index 906abbcebb..89fd5bb3e1 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -87,7 +87,7 @@ public class FragmentIdentity extends FragmentEx { // Get arguments Bundle args = getArguments(); - final long id = (args == null ? -1 : args.getLong("id" , -1)); + final long id = (args == null ? -1 : args.getLong("id", -1)); // Get providers providers = Provider.loadProfiles(getContext()); @@ -167,17 +167,17 @@ public class FragmentIdentity extends FragmentEx { pbCheck.setVisibility(View.VISIBLE); Bundle args = new Bundle(); - args.putLong("id" , id); - args.putString("name" , etName.getText().toString()); - args.putString("email" , etEmail.getText().toString()); - args.putString("replyto" , etReplyTo.getText().toString()); - args.putString("host" , etHost.getText().toString()); - args.putBoolean("starttls" , cbStartTls.isChecked()); - args.putString("port" , etPort.getText().toString()); - args.putString("user" , etUser.getText().toString()); - args.putString("password" , tilPassword.getEditText().getText().toString()); - args.putBoolean("synchronize" , cbSynchronize.isChecked()); - args.putBoolean("primary" , cbPrimary.isChecked()); + args.putLong("id", id); + args.putString("name", etName.getText().toString()); + args.putString("email", etEmail.getText().toString()); + args.putString("replyto", etReplyTo.getText().toString()); + args.putString("host", etHost.getText().toString()); + args.putBoolean("starttls", cbStartTls.isChecked()); + args.putString("port", etPort.getText().toString()); + args.putString("user", etUser.getText().toString()); + args.putString("password", tilPassword.getEditText().getText().toString()); + args.putBoolean("synchronize", cbSynchronize.isChecked()); + args.putBoolean("primary", cbPrimary.isChecked()); getLoaderManager().restartLoader(ActivityView.LOADER_IDENTITY_PUT, args, putLoaderCallbacks).forceLoad(); } @@ -216,6 +216,17 @@ public class FragmentIdentity extends FragmentEx { pbCheck.setVisibility(View.GONE); ibDelete.setVisibility(id < 0 ? View.GONE : View.VISIBLE); + return view; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + // Get arguments + Bundle args = getArguments(); + long id = (args == null ? -1 : args.getLong("id", -1)); + // Observer DB.getInstance(getContext()).identity().liveIdentity(id).observe(this, new Observer() { @Override @@ -233,8 +244,6 @@ public class FragmentIdentity extends FragmentEx { cbPrimary.setEnabled(identity == null ? true : identity.synchronize); } }); - - return view; } private static class PutLoader extends AsyncTaskLoader { diff --git a/app/src/main/java/eu/faircode/email/FragmentMessage.java b/app/src/main/java/eu/faircode/email/FragmentMessage.java index c53fdf5bbc..4e8c4c0eaa 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessage.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessage.java @@ -222,6 +222,17 @@ public class FragmentMessage extends FragmentEx { adapter = new AdapterAttachment(getContext()); rvAttachment.setAdapter(adapter); + return view; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + // Get arguments + Bundle args = getArguments(); + final long id = (args == null ? -1 : args.getLong("id")); + final DB db = DB.getInstance(getContext()); // Observe message @@ -254,8 +265,8 @@ public class FragmentMessage extends FragmentEx { tvFrom.setTextColor(colorUnseen); tvTime.setTextColor(colorUnseen); - DB.getInstance(getContext()).attachment().liveAttachments(id).removeObservers(FragmentMessage.this); - DB.getInstance(getContext()).attachment().liveAttachments(id).observe(FragmentMessage.this, + db.attachment().liveAttachments(id).removeObservers(FragmentMessage.this); + db.attachment().liveAttachments(id).observe(FragmentMessage.this, new Observer>() { @Override public void onChanged(@Nullable List attachments) { @@ -313,8 +324,6 @@ public class FragmentMessage extends FragmentEx { grpReady.setVisibility(View.VISIBLE); } }); - - return view; } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index eb7acd29fb..24d469629f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -61,8 +61,7 @@ public class FragmentMessages extends FragmentEx { // Get arguments Bundle args = getArguments(); - long folder = (args == null ? -1 : args.getLong("folder" , -1)); - long thread = (args == null ? -1 : args.getLong("thread" , -1)); // message ID + long thread = (args == null ? -1 : args.getLong("thread", -1)); // message ID // Get controls rvMessage = view.findViewById(R.id.rvFolder); @@ -96,10 +95,22 @@ public class FragmentMessages extends FragmentEx { pbWait.setVisibility(View.VISIBLE); fab.setVisibility(View.GONE); + return view; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + // Get arguments + Bundle args = getArguments(); + long folder = (args == null ? -1 : args.getLong("folder", -1)); + long thread = (args == null ? -1 : args.getLong("thread", -1)); // message ID + // Observe folder/messages DB db = DB.getInstance(getContext()); LiveData> messages; - boolean debug = PreferenceManager.getDefaultSharedPreferences(getContext()).getBoolean("debug" , false); + boolean debug = PreferenceManager.getDefaultSharedPreferences(getContext()).getBoolean("debug", false); if (thread < 0) if (folder < 0) { setSubtitle(R.string.title_folder_unified); @@ -118,9 +129,11 @@ public class FragmentMessages extends FragmentEx { messages = new LivePagedListBuilder<>(db.message().pagedThread(thread, debug), PAGE_SIZE).build(); } + Log.i(Helper.TAG, "Observing messages"); messages.observe(this, new Observer>() { @Override public void onChanged(@Nullable PagedList messages) { + Log.i(Helper.TAG, "Submit messages=" + messages.size()); adapter.submitList(messages); pbWait.setVisibility(View.GONE); @@ -137,8 +150,6 @@ public class FragmentMessages extends FragmentEx { }); getLoaderManager().restartLoader(ActivityView.LOADER_MESSAGES_INIT, new Bundle(), initLoaderCallbacks).forceLoad(); - - return view; } private static class InitLoader extends AsyncTaskLoader { @@ -152,10 +163,10 @@ public class FragmentMessages extends FragmentEx { Bundle result = new Bundle(); try { EntityFolder drafts = DB.getInstance(getContext()).folder().getPrimaryFolder(EntityFolder.TYPE_DRAFTS); - result.putBoolean("drafts" , drafts != null); + result.putBoolean("drafts", drafts != null); } catch (Throwable ex) { Log.e(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex)); - result.putBoolean("drafts" , false); + result.putBoolean("drafts", false); } return result; } @@ -170,7 +181,7 @@ public class FragmentMessages extends FragmentEx { @Override public void onLoadFinished(@NonNull Loader loader, Bundle data) { - fab.setVisibility(data.getBoolean("drafts" , false) ? View.VISIBLE : View.GONE); + fab.setVisibility(data.getBoolean("drafts", false) ? View.VISIBLE : View.GONE); } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index ceba331cbd..ac4a82b556 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -114,7 +114,7 @@ public class FragmentSetup extends FragmentEx { final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - String theme = prefs.getString("theme" , "light"); + String theme = prefs.getString("theme", "light"); boolean dark = "dark".equals(theme); cbDarkTheme.setTag(dark); cbDarkTheme.setChecked(dark); @@ -124,16 +124,16 @@ public class FragmentSetup extends FragmentEx { if (checked != (Boolean) button.getTag()) { button.setTag(checked); cbDarkTheme.setChecked(checked); - prefs.edit().putString("theme" , checked ? "dark" : "light").apply(); + prefs.edit().putString("theme", checked ? "dark" : "light").apply(); } } }); - cbDebug.setChecked(prefs.getBoolean("debug" , false)); + cbDebug.setChecked(prefs.getBoolean("debug", false)); cbDebug.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { - prefs.edit().putBoolean("debug" , checked).apply(); + prefs.edit().putBoolean("debug", checked).apply(); } }); @@ -145,22 +145,6 @@ public class FragmentSetup extends FragmentEx { tvIdentityDone.setVisibility(View.INVISIBLE); tvPermissionsDone.setVisibility(View.INVISIBLE); - final DB db = DB.getInstance(getContext()); - - db.account().liveAccounts(true).observe(this, new Observer>() { - @Override - public void onChanged(@Nullable List accounts) { - tvAccountDone.setVisibility(accounts.size() > 0 ? View.VISIBLE : View.INVISIBLE); - } - }); - - db.identity().liveIdentities(true).observe(this, new Observer>() { - @Override - public void onChanged(@Nullable List identities) { - tvIdentityDone.setVisibility(identities.size() > 0 ? View.VISIBLE : View.INVISIBLE); - } - }); - int[] grantResults = new int[permissions.length]; for (int i = 0; i < permissions.length; i++) grantResults[i] = ContextCompat.checkSelfPermission(getActivity(), permissions[i]); @@ -171,6 +155,7 @@ public class FragmentSetup extends FragmentEx { executor.submit(new Runnable() { @Override public void run() { + DB db = DB.getInstance(getContext()); EntityFolder outbox = db.folder().getOutbox(); if (outbox == null) { outbox = new EntityFolder(); @@ -186,6 +171,27 @@ public class FragmentSetup extends FragmentEx { return view; } + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + DB db = DB.getInstance(getContext()); + + db.account().liveAccounts(true).observe(this, new Observer>() { + @Override + public void onChanged(@Nullable List accounts) { + tvAccountDone.setVisibility(accounts.size() > 0 ? View.VISIBLE : View.INVISIBLE); + } + }); + + db.identity().liveIdentities(true).observe(this, new Observer>() { + @Override + public void onChanged(@Nullable List identities) { + tvIdentityDone.setVisibility(identities.size() > 0 ? View.VISIBLE : View.INVISIBLE); + } + }); + } + @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { boolean has = (grantResults.length > 0);