diff --git a/app/src/main/java/ua/samosfator/moduleok/LoadPageAsyncTask.java b/app/src/main/java/ua/samosfator/moduleok/LoadPageAsyncTask.java index f59e9b1..f6b6ef4 100644 --- a/app/src/main/java/ua/samosfator/moduleok/LoadPageAsyncTask.java +++ b/app/src/main/java/ua/samosfator/moduleok/LoadPageAsyncTask.java @@ -7,7 +7,20 @@ import java.io.IOException; -class LoadPageAsyncTask extends AsyncTask { +import de.greenrobot.event.EventBus; +import ua.samosfator.moduleok.event.LoadPageCompleteEvent; + +public class LoadPageAsyncTask extends AsyncTask { + + private boolean async; + + public LoadPageAsyncTask() { + + } + + public LoadPageAsyncTask(boolean async) { + this.async = async; + } @Override protected String doInBackground(Void... params) { @@ -15,6 +28,9 @@ protected String doInBackground(Void... params) { try { // mainPage = getFromCustomRemoteSource(); mainPage = getFromRemoteSource(); + if (async) { + EventBus.getDefault().post(new LoadPageCompleteEvent(mainPage.html())); + } } catch (IOException e) { e.printStackTrace(); } diff --git a/app/src/main/java/ua/samosfator/moduleok/MainActivity.java b/app/src/main/java/ua/samosfator/moduleok/MainActivity.java index f7e9c2e..bc0ec37 100644 --- a/app/src/main/java/ua/samosfator/moduleok/MainActivity.java +++ b/app/src/main/java/ua/samosfator/moduleok/MainActivity.java @@ -17,6 +17,7 @@ import com.splunk.mint.MintLogLevel; import de.greenrobot.event.EventBus; +import ua.samosfator.moduleok.event.LoadPageCompleteEvent; import ua.samosfator.moduleok.event.LoginEvent; import ua.samosfator.moduleok.event.LogoutEvent; import ua.samosfator.moduleok.event.RefreshEndEvent; @@ -111,30 +112,31 @@ private void openLoginFragment() { } @SuppressLint("CommitTransaction") - @SuppressWarnings("UnusedDeclaration") public void onEvent(LoginEvent event) { EventBus.getDefault().post(new RefreshEvent()); initAndSetAccountInfo(); } - @SuppressWarnings("UnusedDeclaration") public void onEvent(LogoutEvent event) { eraseAccountInfo(); } - @SuppressWarnings("UnusedDeclaration") public void onEvent(RefreshEvent event) { StudentKeeper.refreshStudent(); EventBus.getDefault().post(new RefreshEndEvent()); } - @SuppressWarnings("UnusedDeclaration") public void onEvent(RefreshEndEvent event) { if (Auth.isLoggedIn()) { FacultyRatingSender.sendTotalScoreOnRefresh(); } } + public void onEvent(LoadPageCompleteEvent event) { + StudentKeeper.initStudent(event.getMainPageHtml()); + EventBus.getDefault().post(new RefreshEndEvent()); + } + @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); @@ -150,7 +152,7 @@ public boolean onOptionsItemSelected(MenuItem item) { if (App.hasInternetConnection()) { Toast.makeText(this, getString(R.string.action_refresh_toast), Toast.LENGTH_SHORT).show(); Analytics.trackEvent("Click", "Refresh"); - EventBus.getDefault().post(new RefreshEvent()); + PageLoader.loadMainPageAsync(); } else { Toast.makeText(this, getString(R.string.no_internet_connection_text), Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/java/ua/samosfator/moduleok/PageLoader.java b/app/src/main/java/ua/samosfator/moduleok/PageLoader.java index 07dc1fa..d376ae2 100644 --- a/app/src/main/java/ua/samosfator/moduleok/PageLoader.java +++ b/app/src/main/java/ua/samosfator/moduleok/PageLoader.java @@ -13,16 +13,24 @@ public static String getMainPageHtml(boolean forceLoad) { return loadMainPage(forceLoad); } + public static void loadMainPageAsync() { + if (!Auth.isLoggedIn()) { + throw new IllegalArgumentException("MUST LOG IN AT FIRST"); + } + LoadPageAsyncTask loadPageAsyncTask = new LoadPageAsyncTask(true); + loadPageAsyncTask.execute(); + } + private static String loadMainPage(boolean forceLoad) { if (mainPageIsValid(getSavedMainPage()) && !forceLoad) return getSavedMainPage(); - String mainPageHtml = downloadMainPage(); + String mainPageHtml = downloadMainPageSync(); if (mainPageIsValid(mainPageHtml)) { Preferences.save("mainPageHtml", mainPageHtml); return mainPageHtml; } else { - mainPageHtml = downloadMainPage(); + mainPageHtml = downloadMainPageSync(); if (mainPageIsValid(mainPageHtml)) { Preferences.save("mainPageHtml", mainPageHtml); return mainPageHtml; @@ -40,7 +48,7 @@ private static String getSavedMainPage() { return Preferences.read("mainPageHtml", ""); } - private static String downloadMainPage() { + private static String downloadMainPageSync() { LoadPageAsyncTask loadPageAsyncTask = new LoadPageAsyncTask(); loadPageAsyncTask.execute(); try { diff --git a/app/src/main/java/ua/samosfator/moduleok/StudentKeeper.java b/app/src/main/java/ua/samosfator/moduleok/StudentKeeper.java index cb1961b..59a656c 100644 --- a/app/src/main/java/ua/samosfator/moduleok/StudentKeeper.java +++ b/app/src/main/java/ua/samosfator/moduleok/StudentKeeper.java @@ -22,6 +22,10 @@ public static void initStudent() { student = new Student(PageLoader.getMainPageHtml(false)); } + public static void initStudent(String mainPageHtml) { + student = new Student(mainPageHtml); + } + public static void refreshStudent() { if (!Auth.isLoggedIn()) return; student = new Student(PageLoader.getMainPageHtml(true)); diff --git a/app/src/main/java/ua/samosfator/moduleok/event/LoadPageCompleteEvent.java b/app/src/main/java/ua/samosfator/moduleok/event/LoadPageCompleteEvent.java new file mode 100644 index 0000000..8257292 --- /dev/null +++ b/app/src/main/java/ua/samosfator/moduleok/event/LoadPageCompleteEvent.java @@ -0,0 +1,14 @@ +package ua.samosfator.moduleok.event; + +public class LoadPageCompleteEvent { + + private String mainPageHtml; + + public LoadPageCompleteEvent(String html) { + mainPageHtml = html; + } + + public String getMainPageHtml() { + return mainPageHtml; + } +} diff --git a/app/src/main/java/ua/samosfator/moduleok/fragment/last_total_fragment/LastTotalFragment.java b/app/src/main/java/ua/samosfator/moduleok/fragment/last_total_fragment/LastTotalFragment.java index 95043b6..fad8b35 100644 --- a/app/src/main/java/ua/samosfator/moduleok/fragment/last_total_fragment/LastTotalFragment.java +++ b/app/src/main/java/ua/samosfator/moduleok/fragment/last_total_fragment/LastTotalFragment.java @@ -1,6 +1,8 @@ package ua.samosfator.moduleok.fragment.last_total_fragment; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -73,7 +75,7 @@ private void initSubjects() { } private void reRenderSubjectsList() { - mSubjectItemAdapter.notifyItemRangeChanged(0, mSubjectItemAdapter.getItemCount()); + new Handler(Looper.getMainLooper()).post(() -> mSubjectItemAdapter.notifyItemRangeChanged(0, mSubjectItemAdapter.getItemCount())); } private void openLoginFragment() {