From 859f8dc3197813e5da9ed5e6f88cdee7831882e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Wed, 23 May 2018 18:44:04 +0200 Subject: [PATCH 1/8] Avoid null if cell second div not contain span (#118) --- .../github/wulkanowy/api/timetable/Timetable.java | 6 ++++-- .../wulkanowy/api/timetable/TimetableTest.java | 1 + .../wulkanowy/api/timetable/PlanLekcji-full.html | 13 ++++++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/io/github/wulkanowy/api/timetable/Timetable.java b/api/src/main/java/io/github/wulkanowy/api/timetable/Timetable.java index 77ca41bd6..3aaebf6bd 100644 --- a/api/src/main/java/io/github/wulkanowy/api/timetable/Timetable.java +++ b/api/src/main/java/io/github/wulkanowy/api/timetable/Timetable.java @@ -98,8 +98,10 @@ public class Timetable { addLessonInfoFromElement(lesson, e.first()); break; case 2: - Element span = e.last().select("span").first(); - if (span.hasClass(LessonTypes.CLASS_MOVED_OR_CANCELED)) { + Element span = e.last().selectFirst("span"); + if (null == span) { + addLessonInfoFromElement(lesson, e.first()); + } else if (span.hasClass(LessonTypes.CLASS_MOVED_OR_CANCELED)) { lesson.setNewMovedInOrChanged(true); lesson.setDescription("poprzednio: " + getLessonAndGroupInfoFromSpan(span)[0]); addLessonInfoFromElement(lesson, e.first()); diff --git a/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableTest.java b/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableTest.java index 8939b10fd..b517436b9 100644 --- a/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableTest.java +++ b/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableTest.java @@ -105,6 +105,7 @@ public class TimetableTest extends StudentAndParentTestCase { Assert.assertEquals("Zajęcia techniczne", std.getWeekTable().getDay(2).getLesson(4).getSubject()); Assert.assertEquals("Wychowanie fizyczne", std.getWeekTable().getDay(1).getLesson(1).getSubject()); Assert.assertEquals("Język angielski", full.getWeekTable().getDay(0).getLesson(1).getSubject()); + Assert.assertEquals("Wychowanie fizyczne", full.getWeekTable().getDay(0).getLesson(9).getSubject()); Assert.assertEquals("Wychowanie do życia w rodzinie", full.getWeekTable().getDay(2).getLesson(0).getSubject()); Assert.assertEquals("Wychowanie fizyczne", full.getWeekTable().getDay(3).getLesson(1).getSubject()); Assert.assertEquals("Uroczyste zakończenie roku szkolnego", full.getWeekTable().getDay(4).getLesson(0).getSubject()); diff --git a/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-full.html b/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-full.html index 4bce6c935..14026d8fb 100644 --- a/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-full.html +++ b/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-full.html @@ -461,7 +461,18 @@ 9 14:50 15:35 - + +
+ Wychowanie fizyczne [zaw2] + + + G3 + (przeniesiona z lekcji 7, 01.12.2017) +
+
+ +
+
Język niemiecki [J1] From 3592946e6f2d59be10b66cd10441bd99be109852 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Wed, 23 May 2018 19:21:35 +0200 Subject: [PATCH 2/8] Fix api login(#119) --- api/src/main/java/io/github/wulkanowy/api/Client.java | 10 +++++----- .../java/io/github/wulkanowy/api/StudentAndParent.java | 6 +++--- .../main/java/io/github/wulkanowy/api/login/Login.java | 5 +++++ .../test/java/io/github/wulkanowy/api/ClientTest.java | 6 +++--- .../io/github/wulkanowy/api/StudentAndParentTest.java | 2 +- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/api/src/main/java/io/github/wulkanowy/api/Client.java b/api/src/main/java/io/github/wulkanowy/api/Client.java index 53300788a..277b80393 100644 --- a/api/src/main/java/io/github/wulkanowy/api/Client.java +++ b/api/src/main/java/io/github/wulkanowy/api/Client.java @@ -118,7 +118,7 @@ public class Client { this.cookies.addItems(response.cookies()); - Document doc = checkForErrors(response.parse()); + Document doc = checkForErrors(response.parse(), response.statusCode()); if (loginBefore) { lastSuccessRequest = new Date(); @@ -144,7 +144,7 @@ public class Client { response.bufferUp(); // fixes cert parsing issues #109 - return checkForErrors(response.parse()); + return checkForErrors(response.parse(), response.statusCode()); } public String getJsonStringByUrl(String url) throws IOException, VulcanException { @@ -182,7 +182,7 @@ public class Client { return response.body(); } - Document checkForErrors(Document doc) throws VulcanException { + Document checkForErrors(Document doc, int code) throws VulcanException { lastSuccessRequest = null; String title = doc.select("title").text(); @@ -195,8 +195,8 @@ public class Client { throw new NotLoggedInErrorException(singIn); } - if (title.startsWith("Błąd")) { - throw new NotLoggedInErrorException(title + " " + doc.selectFirst("p, body")); + if ("Błąd strony".equals(title)) { + throw new NotLoggedInErrorException(title + " " + doc.selectFirst("p, body") + ", status: " + code); } return doc; diff --git a/api/src/main/java/io/github/wulkanowy/api/StudentAndParent.java b/api/src/main/java/io/github/wulkanowy/api/StudentAndParent.java index 1acecfd3b..16ee002e0 100644 --- a/api/src/main/java/io/github/wulkanowy/api/StudentAndParent.java +++ b/api/src/main/java/io/github/wulkanowy/api/StudentAndParent.java @@ -65,12 +65,12 @@ public class StudentAndParent implements SnP { return getBaseUrl(); } - // get url to uonetplus-opiekun.vulcan.net.pl + // get url to uonetplus-opiekun.fakelog.cf Document startPage = client.getPageByUrl(START_PAGE_URL); Element studentTileLink = startPage.select(".panel.linkownia.pracownik.klient > a").first(); if (null == studentTileLink) { - throw new NotLoggedInErrorException("You are probably not logged in. Force login"); + throw new VulcanException("Na pewno używasz konta z dostępem do Witryny ucznia i rodzica?"); } String snpPageUrl = studentTileLink.attr("href"); @@ -84,7 +84,7 @@ public class StudentAndParent implements SnP { String[] path = snpPageUrl.split(client.getHost())[1].split("/"); if (5 != path.length) { - throw new NotLoggedInErrorException("You are probably not logged in"); + throw new NotLoggedInErrorException("You are probably not logged in " + snpPageUrl); } return path[2]; diff --git a/api/src/main/java/io/github/wulkanowy/api/login/Login.java b/api/src/main/java/io/github/wulkanowy/api/login/Login.java index a734501ea..04e1efc16 100644 --- a/api/src/main/java/io/github/wulkanowy/api/login/Login.java +++ b/api/src/main/java/io/github/wulkanowy/api/login/Login.java @@ -9,6 +9,7 @@ import org.jsoup.select.Elements; import java.io.IOException; import io.github.wulkanowy.api.Client; +import io.github.wulkanowy.api.NotLoggedInErrorException; import io.github.wulkanowy.api.VulcanException; public class Login { @@ -27,6 +28,10 @@ public class Login { public String login(String email, String password, String symbol) throws VulcanException, IOException { Document certDoc = sendCredentials(email, password); + if ("Błąd".equals(certDoc.title())) { + throw new NotLoggedInErrorException(certDoc.selectFirst("body").text()); + } + return sendCertificate(certDoc, symbol); } diff --git a/api/src/test/java/io/github/wulkanowy/api/ClientTest.java b/api/src/test/java/io/github/wulkanowy/api/ClientTest.java index 38f856172..50724875d 100644 --- a/api/src/test/java/io/github/wulkanowy/api/ClientTest.java +++ b/api/src/test/java/io/github/wulkanowy/api/ClientTest.java @@ -25,7 +25,7 @@ public class ClientTest { Document doc = Jsoup.parse(getFixtureAsString("login/Logowanie-success.html")); - Assert.assertEquals(doc, client.checkForErrors(doc)); + Assert.assertEquals(doc, client.checkForErrors(doc, 200)); } @Test(expected = VulcanOfflineException.class) @@ -34,7 +34,7 @@ public class ClientTest { Document doc = Jsoup.parse(getFixtureAsString("login/PrzerwaTechniczna.html")); - client.checkForErrors(doc); + client.checkForErrors(doc, 200); } @Test(expected = NotLoggedInErrorException.class) @@ -43,7 +43,7 @@ public class ClientTest { Document doc = Jsoup.parse(getFixtureAsString("login/Logowanie-notLoggedIn.html")); - client.checkForErrors(doc); + client.checkForErrors(doc, 200); } @Test diff --git a/api/src/test/java/io/github/wulkanowy/api/StudentAndParentTest.java b/api/src/test/java/io/github/wulkanowy/api/StudentAndParentTest.java index 2b3d72500..387d18f58 100644 --- a/api/src/test/java/io/github/wulkanowy/api/StudentAndParentTest.java +++ b/api/src/test/java/io/github/wulkanowy/api/StudentAndParentTest.java @@ -53,7 +53,7 @@ public class StudentAndParentTest { snp.getSnpHomePageUrl()); } - @Test(expected = NotLoggedInErrorException.class) + @Test(expected = VulcanException.class) public void getSnpPageUrlWithWrongPage() throws Exception { Document wrongPageDocument = Jsoup.parse( FixtureHelper.getAsString(getClass().getResourceAsStream("OcenyWszystkie-semester.html")) From ef648c7f8b881eacf999588809c4d43aaf5db697 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Thu, 24 May 2018 22:25:24 +0200 Subject: [PATCH 3/8] Clear db before register (#121) --- .../io/github/wulkanowy/data/sync/AccountSync.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/io/github/wulkanowy/data/sync/AccountSync.java b/app/src/main/java/io/github/wulkanowy/data/sync/AccountSync.java index a79540a66..27b497c78 100644 --- a/app/src/main/java/io/github/wulkanowy/data/sync/AccountSync.java +++ b/app/src/main/java/io/github/wulkanowy/data/sync/AccountSync.java @@ -2,6 +2,8 @@ package io.github.wulkanowy.data.sync; import android.content.Context; +import org.greenrobot.greendao.database.Database; + import java.io.IOException; import java.util.List; @@ -11,6 +13,7 @@ import javax.inject.Singleton; import io.github.wulkanowy.api.Vulcan; import io.github.wulkanowy.api.VulcanException; import io.github.wulkanowy.data.db.dao.entities.Account; +import io.github.wulkanowy.data.db.dao.entities.DaoMaster; import io.github.wulkanowy.data.db.dao.entities.DaoSession; import io.github.wulkanowy.data.db.dao.entities.Diary; import io.github.wulkanowy.data.db.dao.entities.DiaryDao; @@ -49,6 +52,8 @@ public class AccountSync { public void registerUser(String email, String password, String symbol) throws VulcanException, IOException, CryptoException { + clearUserData(); + vulcan.setCredentials(email, password, symbol, null, null, null); daoSession.getDatabase().beginTransaction(); @@ -152,4 +157,11 @@ public class AccountSync { diary.getValue() ); } + + private void clearUserData() { + Database database = daoSession.getDatabase(); + DaoMaster.dropAllTables(database, true); + DaoMaster.createAllTables(database, true); + sharedPref.setCurrentUserId(0); + } } From 34205e4a8b6b3d06da601e0ca094182151c1f501 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Fri, 25 May 2018 11:49:53 +0200 Subject: [PATCH 4/8] Fix autofill on api lvl 26 (#122) --- app/src/main/res/layout/activity_login.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index ec3872da9..4a6f08b22 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -61,13 +61,13 @@ android:id="@+id/login_activity_email_text_input" android:layout_width="match_parent" android:layout_height="wrap_content" + android:hint="@string/prompt_email" android:layout_marginBottom="12dp"> @@ -76,6 +76,7 @@ From ffe8511e3fb12e5c881bd5de72147bd93d441edb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Fri, 25 May 2018 16:35:12 +0200 Subject: [PATCH 5/8] Add some fabric answers (#120) --- .../io/github/wulkanowy/WulkanowyApp.java | 10 ++++--- .../wulkanowy/data/db/dao/DbContract.java | 3 +++ .../wulkanowy/data/db/dao/DbRepository.java | 10 +++++-- .../wulkanowy/ui/login/LoginPresenter.java | 3 +++ .../attendance/AttendanceTabPresenter.java | 3 +++ .../ui/main/exams/ExamsTabPresenter.java | 3 +++ .../ui/main/grades/GradesPresenter.java | 13 +++++++-- .../main/timetable/TimetableTabPresenter.java | 4 ++- .../github/wulkanowy/utils/FabricUtils.java | 27 +++++++++++++++++++ build.gradle | 6 ++--- 10 files changed, 71 insertions(+), 11 deletions(-) create mode 100644 app/src/main/java/io/github/wulkanowy/utils/FabricUtils.java diff --git a/app/src/main/java/io/github/wulkanowy/WulkanowyApp.java b/app/src/main/java/io/github/wulkanowy/WulkanowyApp.java index e4fd7ca9c..2ecc51090 100644 --- a/app/src/main/java/io/github/wulkanowy/WulkanowyApp.java +++ b/app/src/main/java/io/github/wulkanowy/WulkanowyApp.java @@ -3,6 +3,7 @@ package io.github.wulkanowy; import android.app.Application; import com.crashlytics.android.Crashlytics; +import com.crashlytics.android.answers.Answers; import com.crashlytics.android.core.CrashlyticsCore; import com.jakewharton.threetenabp.AndroidThreeTen; @@ -61,9 +62,12 @@ public class WulkanowyApp extends Application { private void initializeFabric() { Fabric.with(new Fabric.Builder(this) - .kits(new Crashlytics.Builder() - .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()) - .build()) + .kits( + new Crashlytics.Builder() + .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()) + .build(), + new Answers() + ) .debuggable(BuildConfig.DEBUG) .build()); } diff --git a/app/src/main/java/io/github/wulkanowy/data/db/dao/DbContract.java b/app/src/main/java/io/github/wulkanowy/data/db/dao/DbContract.java index 38115cc45..34541d3ea 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/dao/DbContract.java +++ b/app/src/main/java/io/github/wulkanowy/data/db/dao/DbContract.java @@ -4,6 +4,7 @@ import java.util.List; import io.github.wulkanowy.data.db.dao.entities.Grade; import io.github.wulkanowy.data.db.dao.entities.Subject; +import io.github.wulkanowy.data.db.dao.entities.Symbol; import io.github.wulkanowy.data.db.dao.entities.Week; public interface DbContract { @@ -20,6 +21,8 @@ public interface DbContract { long getCurrentSymbolId(); + Symbol getCurrentSymbol(); + long getCurrentDiaryId(); long getSemesterId(int name); diff --git a/app/src/main/java/io/github/wulkanowy/data/db/dao/DbRepository.java b/app/src/main/java/io/github/wulkanowy/data/db/dao/DbRepository.java index 6757c48e7..43eee87ed 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/dao/DbRepository.java +++ b/app/src/main/java/io/github/wulkanowy/data/db/dao/DbRepository.java @@ -12,6 +12,7 @@ import io.github.wulkanowy.data.db.dao.entities.Semester; import io.github.wulkanowy.data.db.dao.entities.SemesterDao; import io.github.wulkanowy.data.db.dao.entities.StudentDao; import io.github.wulkanowy.data.db.dao.entities.Subject; +import io.github.wulkanowy.data.db.dao.entities.Symbol; import io.github.wulkanowy.data.db.dao.entities.SymbolDao; import io.github.wulkanowy.data.db.dao.entities.Week; import io.github.wulkanowy.data.db.dao.entities.WeekDao; @@ -57,10 +58,15 @@ public class DbRepository implements DbContract { } @Override - public long getCurrentSymbolId() { + public Symbol getCurrentSymbol() { return daoSession.getSymbolDao().queryBuilder().where( SymbolDao.Properties.UserId.eq(sharedPref.getCurrentUserId()) - ).unique().getId(); + ).unique(); + } + + @Override + public long getCurrentSymbolId() { + return getCurrentSymbol().getId(); } @Override diff --git a/app/src/main/java/io/github/wulkanowy/ui/login/LoginPresenter.java b/app/src/main/java/io/github/wulkanowy/ui/login/LoginPresenter.java index 3140ad785..e5b37a6ee 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/login/LoginPresenter.java +++ b/app/src/main/java/io/github/wulkanowy/ui/login/LoginPresenter.java @@ -11,6 +11,7 @@ import io.github.wulkanowy.api.login.BadCredentialsException; import io.github.wulkanowy.data.RepositoryContract; import io.github.wulkanowy.ui.base.BasePresenter; import io.github.wulkanowy.utils.AppConstant; +import io.github.wulkanowy.utils.FabricUtils; public class LoginPresenter extends BasePresenter implements LoginContract.Presenter { @@ -84,6 +85,7 @@ public class LoginPresenter extends BasePresenter @Override public void onEndAsync(boolean success, Exception exception) { if (success) { + FabricUtils.logRegister(true, getRepository().getDbRepo().getCurrentSymbol().getSymbol()); getView().openMainActivity(); return; } else if (exception instanceof BadCredentialsException) { @@ -93,6 +95,7 @@ public class LoginPresenter extends BasePresenter getView().setErrorSymbolRequired(); getView().showSoftInput(); } else { + FabricUtils.logRegister(false, symbol); getView().onError(getRepository().getResRepo().getErrorLoginMessage(exception)); } diff --git a/app/src/main/java/io/github/wulkanowy/ui/main/attendance/AttendanceTabPresenter.java b/app/src/main/java/io/github/wulkanowy/ui/main/attendance/AttendanceTabPresenter.java index 47927feb4..72cab5d33 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/main/attendance/AttendanceTabPresenter.java +++ b/app/src/main/java/io/github/wulkanowy/ui/main/attendance/AttendanceTabPresenter.java @@ -10,6 +10,7 @@ import io.github.wulkanowy.data.db.dao.entities.AttendanceLesson; import io.github.wulkanowy.data.db.dao.entities.Day; import io.github.wulkanowy.data.db.dao.entities.Week; import io.github.wulkanowy.ui.base.BasePresenter; +import io.github.wulkanowy.utils.FabricUtils; import io.github.wulkanowy.utils.async.AbstractTask; import io.github.wulkanowy.utils.async.AsyncListeners; @@ -88,6 +89,8 @@ public class AttendanceTabPresenter extends BasePresenter getView().onError(getRepository().getResRepo().getErrorLoginMessage(exception)); } getView().hideRefreshingBar(); + + FabricUtils.logRefresh("Exams", result, date); } @Override diff --git a/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesPresenter.java b/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesPresenter.java index 0927d1458..1e99bbdea 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesPresenter.java +++ b/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesPresenter.java @@ -1,5 +1,8 @@ package io.github.wulkanowy.ui.main.grades; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; + import java.util.ArrayList; import java.util.List; @@ -10,6 +13,7 @@ import io.github.wulkanowy.data.db.dao.entities.Grade; import io.github.wulkanowy.data.db.dao.entities.Subject; import io.github.wulkanowy.ui.base.BasePresenter; import io.github.wulkanowy.ui.main.OnFragmentIsReadyListener; +import io.github.wulkanowy.utils.FabricUtils; import io.github.wulkanowy.utils.async.AbstractTask; import io.github.wulkanowy.utils.async.AsyncListeners; @@ -59,6 +63,9 @@ public class GradesPresenter extends BasePresenter getView().setCurrentSemester(which); reloadGrades(); + + Answers.getInstance().logCustom(new CustomEvent("Semester change") + .putCustomAttribute("Name", semesterName)); } private void reloadGrades() { @@ -100,8 +107,8 @@ public class GradesPresenter extends BasePresenter } @Override - public void onEndRefreshAsync(boolean success, Exception exception) { - if (success) { + public void onEndRefreshAsync(boolean result, Exception exception) { + if (result) { reloadGrades(); int numberOfNewGrades = getRepository().getDbRepo().getNewGrades(semesterName).size(); @@ -115,6 +122,8 @@ public class GradesPresenter extends BasePresenter getView().onError(getRepository().getResRepo().getErrorLoginMessage(exception)); } getView().hideRefreshingBar(); + + FabricUtils.logRefresh("Grades", result, null); } @Override diff --git a/app/src/main/java/io/github/wulkanowy/ui/main/timetable/TimetableTabPresenter.java b/app/src/main/java/io/github/wulkanowy/ui/main/timetable/TimetableTabPresenter.java index ca582726c..ef41c4c75 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/main/timetable/TimetableTabPresenter.java +++ b/app/src/main/java/io/github/wulkanowy/ui/main/timetable/TimetableTabPresenter.java @@ -1,6 +1,5 @@ package io.github.wulkanowy.ui.main.timetable; - import java.util.ArrayList; import java.util.List; @@ -11,6 +10,7 @@ import io.github.wulkanowy.data.db.dao.entities.Day; import io.github.wulkanowy.data.db.dao.entities.TimetableLesson; import io.github.wulkanowy.data.db.dao.entities.Week; import io.github.wulkanowy.ui.base.BasePresenter; +import io.github.wulkanowy.utils.FabricUtils; import io.github.wulkanowy.utils.async.AbstractTask; import io.github.wulkanowy.utils.async.AsyncListeners; @@ -91,6 +91,8 @@ public class TimetableTabPresenter extends BasePresenter Date: Fri, 25 May 2018 19:10:34 +0200 Subject: [PATCH 6/8] Stop refreshing while semester switching window open (#123) --- .../ui/main/grades/GradesContract.java | 2 ++ .../ui/main/grades/GradesFragment.java | 1 + .../ui/main/grades/GradesPresenter.java | 21 +++++++++++++------ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesContract.java b/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesContract.java index a48b340d5..07ca0d737 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesContract.java +++ b/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesContract.java @@ -40,5 +40,7 @@ public interface GradesContract { void onStart(View view, OnFragmentIsReadyListener listener); void onSemesterChange(int which); + + void onSemesterSwitchActive(); } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesFragment.java b/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesFragment.java index 32c1f3d30..5a31736b3 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesFragment.java +++ b/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesFragment.java @@ -80,6 +80,7 @@ public class GradesFragment extends BaseFragment implements GradesContract.View @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_filter) { + presenter.onSemesterSwitchActive(); CharSequence[] items = new CharSequence[]{ getResources().getString(R.string.semester_text, 1), getResources().getString(R.string.semester_text, 2), diff --git a/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesPresenter.java b/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesPresenter.java index 1e99bbdea..493cc545f 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesPresenter.java +++ b/app/src/main/java/io/github/wulkanowy/ui/main/grades/GradesPresenter.java @@ -3,6 +3,8 @@ package io.github.wulkanowy.ui.main.grades; import com.crashlytics.android.answers.Answers; import com.crashlytics.android.answers.CustomEvent; +import org.threeten.bp.LocalDate; + import java.util.ArrayList; import java.util.List; @@ -57,11 +59,15 @@ public class GradesPresenter extends BasePresenter } } + @Override + public void onSemesterSwitchActive() { + cancelAsyncTasks(); + } + @Override public void onSemesterChange(int which) { semesterName = which + 1; getView().setCurrentSemester(which); - reloadGrades(); Answers.getInstance().logCustom(new CustomEvent("Semester change") @@ -123,7 +129,7 @@ public class GradesPresenter extends BasePresenter } getView().hideRefreshingBar(); - FabricUtils.logRefresh("Grades", result, null); + FabricUtils.logRefresh("Grades", result, LocalDate.now().toString()); } @Override @@ -165,10 +171,7 @@ public class GradesPresenter extends BasePresenter listener.onFragmentIsReady(); } - @Override - public void onDestroy() { - isFirstSight = false; - + private void cancelAsyncTasks() { if (refreshTask != null) { refreshTask.cancel(true); refreshTask = null; @@ -177,6 +180,12 @@ public class GradesPresenter extends BasePresenter loadingTask.cancel(true); loadingTask = null; } + } + + @Override + public void onDestroy() { + isFirstSight = false; + cancelAsyncTasks(); super.onDestroy(); } } From 74c0dda999488fdcbc0f4cc133e81161f3de2adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Fri, 25 May 2018 20:14:16 +0200 Subject: [PATCH 7/8] Fix lesson description from warning (#124) --- .../io/github/wulkanowy/api/timetable/Timetable.java | 4 +++- .../github/wulkanowy/api/timetable/TimetableTest.java | 1 + .../wulkanowy/api/timetable/PlanLekcji-full.html | 11 ++++++++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/io/github/wulkanowy/api/timetable/Timetable.java b/api/src/main/java/io/github/wulkanowy/api/timetable/Timetable.java index 3aaebf6bd..1373aee91 100644 --- a/api/src/main/java/io/github/wulkanowy/api/timetable/Timetable.java +++ b/api/src/main/java/io/github/wulkanowy/api/timetable/Timetable.java @@ -122,7 +122,9 @@ public class Timetable { Elements warn = e.select(".uwaga-panel"); if (!warn.isEmpty()) { - e.select(".x-treelabel-rlz").last().text("(" + warn.text() + ")"); + e.select("span").last() + .addClass("x-treelabel-rlz") + .text(warn.text()); e.remove(1); } } diff --git a/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableTest.java b/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableTest.java index b517436b9..1383b8307 100644 --- a/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableTest.java +++ b/api/src/test/java/io/github/wulkanowy/api/timetable/TimetableTest.java @@ -156,6 +156,7 @@ public class TimetableTest extends StudentAndParentTestCase { Assert.assertEquals("poprzednio: Wychowanie fizyczne", full.getWeekTable().getDay(4).getLesson(2).getDescription()); Assert.assertEquals("egzamin", full.getWeekTable().getDay(3).getLesson(0).getDescription()); Assert.assertEquals("", full.getWeekTable().getDay(4).getLesson(1).getDescription()); + Assert.assertEquals("opis w uwadze bez klasy w spanie", full.getWeekTable().getDay(4).getLesson(4).getDescription()); Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getDescription()); } diff --git a/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-full.html b/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-full.html index 14026d8fb..c6ade3a5c 100644 --- a/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-full.html +++ b/api/src/test/resources/io/github/wulkanowy/api/timetable/PlanLekcji-full.html @@ -319,7 +319,16 @@
- + +
+ Język polski + + 16 + (oddział nieobecny) +
+ +
opis w uwadze bez klasy w spanie
+ 5 From b59008a90f8dd31d8503fb017fc41f8ee4e45116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Fri, 25 May 2018 20:33:45 +0200 Subject: [PATCH 8/8] Version 0.4.4 --- app/build.gradle | 6 +++--- app/src/main/play/pl-PL/whatsnew | 9 +++++---- build.gradle | 4 +++- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8a831d4f4..355596402 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ buildscript { classpath "org.greenrobot:greendao-gradle-plugin:$greenDaoGradle" classpath "io.fabric.tools:gradle:$fabricGradle" classpath "com.google.gms:oss-licenses:0.9.2" - classpath 'com.github.triplet.gradle:play-publisher:1.2.0' + classpath "com.github.triplet.gradle:play-publisher:$playPublisher" } } @@ -41,8 +41,8 @@ android { testApplicationId "io.github.tests.wulkanowy" minSdkVersion 15 targetSdkVersion 26 - versionCode 11 - versionName "0.4.3" + versionCode 12 + versionName "0.4.4" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true playAccountConfig = playAccountConfigs.defaultAccountConfig diff --git a/app/src/main/play/pl-PL/whatsnew b/app/src/main/play/pl-PL/whatsnew index 8bce40fa1..dd43c504b 100644 --- a/app/src/main/play/pl-PL/whatsnew +++ b/app/src/main/play/pl-PL/whatsnew @@ -1,4 +1,5 @@ -Wersja 0.4.3: -- naprawiono błąd z pokazywaniem usuniętych lekcji w planie -- naprawiono drobne błędy z wyrównaniem tekstu na starszych urządzeniach -- poprawiono synchronizację w tle spowodowaną błędem w komunikacji z serwerem +Wersja 0.4.4: +- naprawiono błędy w synchronizacji planu lekcji +- naprawiono błędy podczas pierwszego logowania +- naprawiono błąd podczas zmiany semestru +- kolejny raz poprawiono synchronizację w tle diff --git a/build.gradle b/build.gradle index 3be2d2d4e..0f9746575 100644 --- a/build.gradle +++ b/build.gradle @@ -59,7 +59,9 @@ ext { fabricGradle = "1.25.4" crashlyticsSdk = "2.9.3" - crashlyticsAnswers = "1.4.1" + crashlyticsAnswers = "1.4.2" + + playPublisher = "1.2.2" } allprojects {