1
0
Fork 1

Compare commits

..

1578 commits
0.4.3 ... 1.6.0

Author SHA1 Message Date
Mikołaj Pich
b371fd6709 Merge branch 'release/1.6.0' 2022-04-02 22:01:53 +02:00
Mikołaj Pich
884d443c5b Version 1.6.0 2022-04-02 22:01:34 +02:00
Rafał Borcz
df58aa78ae
New Crowdin updates (#1783) 2022-03-31 09:00:41 +02:00
Rafał Borcz
2131e892ad
Add option to select multiple messages to delete (#1780) 2022-03-28 19:30:20 +02:00
dependabot[bot]
63380d3e12
Bump agcp from 1.6.4.300 to 1.6.5.200 (#1812) 2022-03-28 13:53:57 +00:00
dependabot[bot]
c572a91b38
Bump agconnect-crash from 1.6.4.300 to 1.6.5.200 (#1811) 2022-03-28 13:53:42 +00:00
Michael
20dde6e896
Resource refactor (#1589) 2022-03-27 15:33:32 +02:00
dependabot[bot]
042b66ca5c
Bump core-splashscreen from 1.0.0-beta01 to 1.0.0-beta02 (#1810) 2022-03-26 22:37:53 +00:00
dependabot[bot]
8d8990761a
Bump firebase-bom from 29.2.1 to 29.3.0 (#1809) 2022-03-26 22:37:22 +00:00
dependabot[bot]
a07741b5c5
Bump WhatTheStack from 1.0.0-alpha03 to 1.0.0-alpha04 (#1807) 2022-03-22 17:49:32 +00:00
dependabot[bot]
f851a4d2c5
Bump huawei-publish-gradle-plugin from 1.3.1 to 1.3.3 (#1806) 2022-03-22 12:47:27 -05:00
dependabot[bot]
c8d069c787
Bump hianalytics from 6.4.0.300 to 6.4.1.300 (#1805) 2022-03-20 00:25:31 +00:00
dependabot[bot]
5ce30a3000
Bump firebase-bom from 29.2.0 to 29.2.1 (#1804) 2022-03-20 00:25:11 +00:00
dependabot[bot]
26e0f43fa0
Bump firebase-bom from 29.1.0 to 29.2.0 (#1803) 2022-03-17 18:28:26 +00:00
Mikołaj Pich
08c1bedca1
Add the option to quickly add a calendar event from the exam details (#1802)
* Extract intent utils to separate file

* Add add to calendar button in exam details dialog

* Set 8:00-8:45 start/end time
2022-03-14 00:38:40 +01:00
Mikołaj Pich
15537586c4
Add exam date field to exam details dialog (#1801) 2022-03-13 22:47:54 +01:00
Mikołaj Pich
a04ba4ae10
Login improvements (#1800)
* Update sdk

* Change default register variant name

* Change symbol hint message and email template
2022-03-13 22:43:57 +01:00
Mikołaj Pich
57ea6379ab
Timetable timer refactor (#1785) 2022-03-13 04:01:14 +01:00
dependabot[bot]
c3abe50ed4
Bump gradle from 7.1.1 to 7.1.2 (#1790) 2022-02-28 18:59:53 +00:00
dependabot[bot]
f48caf9f70
Bump play-services-ads from 20.5.0 to 20.6.0 (#1792) 2022-02-28 18:41:16 +00:00
dependabot[bot]
9a413c14c3
Bump agcp from 1.6.4.200 to 1.6.4.300 (#1791) 2022-02-28 18:37:29 +00:00
dependabot[bot]
8915c5dd8e
Bump agconnect-crash from 1.6.4.200 to 1.6.4.300 (#1793) 2022-02-28 18:32:31 +00:00
dependabot[bot]
e7561d4794
Bump room from 2.4.1 to 2.4.2 (#1794) 2022-02-28 18:32:08 +00:00
dependabot[bot]
820b99dbc7
Bump hilt_version from 2.40.5 to 2.41 (#1786) 2022-02-21 19:35:02 +00:00
Michael
aff0fb3a60
Add information about student in grade statistics pie chart (#1749)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2022-02-15 13:08:44 +01:00
dependabot[bot]
d3bf5c3e0a
Bump lifecycle-livedata-ktx from 2.4.0 to 2.4.1 (#1781) 2022-02-14 20:06:05 +00:00
dependabot[bot]
dec2703cc7
Bump firebase-bom from 29.0.4 to 29.1.0 (#1782) 2022-02-14 20:05:45 +00:00
Rafał Borcz
edd1c9442e
Fix calc vulcan average in second semester (#1779) 2022-02-12 22:22:15 +01:00
Rafał Borcz
18568c86be
New Crowdin updates (#1776) 2022-02-12 12:19:25 +01:00
Rafał Borcz
84d0ba525f
Fix blank description in exam details (#1778) 2022-02-10 07:36:44 +01:00
dependabot[bot]
6290663f02
Bump gradle from 7.1.0 to 7.1.1 (#1777) 2022-02-07 04:41:09 +00:00
Patryk
be046a1ddd
Update date in LICENSE file (#1775) 2022-02-07 03:16:17 +01:00
Michael
96ee4bd9e5
Keep reacting to live changes in dashboard after a force refresh (#1594)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2022-02-02 02:44:14 +00:00
dependabot[bot]
923af85d18
Bump fragment-ktx from 1.4.0 to 1.4.1 (#1774) 2022-02-02 01:53:16 +00:00
dependabot[bot]
ce36e86bb2
Bump preference-ktx from 1.1.1 to 1.2.0 (#1773) 2022-01-29 05:38:55 +00:00
dependabot[bot]
a4f455b38f
Bump hianalytics from 6.3.2.300 to 6.4.0.300 (#1771) 2022-01-29 04:55:02 +00:00
dependabot[bot]
01b8bd9d4a
Bump agconnect-crash from 1.6.3.300 to 1.6.4.200 (#1770) 2022-01-29 04:47:56 +00:00
dependabot[bot]
cfcc051ce4
Bump gradle from 7.0.4 to 7.1.0 (#1769) 2022-01-29 04:47:26 +00:00
dependabot[bot]
0b0993be9a
Bump agcp from 1.6.3.300 to 1.6.4.200 (#1772) 2022-01-29 04:47:00 +00:00
dependabot[bot]
d07b0dbc98
Bump WhatTheStack from 1.0.0-alpha02 to 1.0.0-alpha03 (#1768) 2022-01-29 04:46:09 +00:00
Michael
daa7b54dab
Refactor notification destinations (#1709)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2022-01-28 13:43:56 +01:00
Rafał Borcz
de9fcb9af9
Add what-the-stack library (#1767) 2022-01-28 12:07:48 +01:00
dependabot[bot]
40e0934504
Bump fuzzywuzzy from 1.3.3 to 1.4.0 (#1765) 2022-01-28 11:07:22 +00:00
dependabot[bot]
009ec433be
Bump firebase-bom from 29.0.3 to 29.0.4 (#1766) 2022-01-27 12:06:30 +00:00
Rafał Borcz
e1d82d70ee
New translations strings.xml (German) (#1746) 2022-01-23 20:04:01 +01:00
dependabot[bot]
7a9ba04ff4
Bump material from 1.4.0 to 1.5.0 (#1757) 2022-01-23 02:17:14 +00:00
dependabot[bot]
513b4b7d3e
Bump coordinatorlayout from 1.1.0 to 1.2.0 (#1756) 2022-01-23 01:43:30 +00:00
dependabot[bot]
ce4157933f
Bump core-splashscreen from 1.0.0-alpha02 to 1.0.0-beta01 (#1752) 2022-01-23 01:39:16 +00:00
dependabot[bot]
5d1085a64a
Bump fuzzywuzzy from 1.3.1 to 1.3.3 (#1754) 2022-01-23 00:58:12 +00:00
dependabot[bot]
a00f2dcbda
Bump core from 1.10.2 to 1.10.3 (#1753) 2022-01-23 00:57:40 +00:00
dependabot[bot]
b52a6f7f61
Bump room from 2.4.0 to 2.4.1 (#1755) 2022-01-23 00:57:17 +00:00
dependabot[bot]
5146e44574
Bump agconnect-crash from 1.6.3.200 to 1.6.3.300 (#1758) 2022-01-23 00:56:57 +00:00
dependabot[bot]
90e1cea679
Bump appcompat from 1.4.0 to 1.4.1 (#1759) 2022-01-23 00:56:37 +00:00
dependabot[bot]
c9b506ae10
Bump agcp from 1.6.3.200 to 1.6.3.300 (#1760) 2022-01-23 00:56:16 +00:00
dependabot[bot]
14ebdad7b2
Bump constraintlayout from 2.1.2 to 2.1.3 (#1761) 2022-01-23 00:55:58 +00:00
dependabot[bot]
210308695b
Bump huawei-publish-gradle-plugin from 1.3.0 to 1.3.1 (#1750) 2022-01-11 11:12:48 +00:00
dependabot[bot]
d5cc2263f5
Bump mockk from 1.12.1 to 1.12.2 (#1747) 2022-01-04 10:13:31 +00:00
Mikołaj Pich
47e3f2dc58 Merge branch 'release/1.5.0' into develop 2022-01-01 17:51:19 +01:00
Mikołaj Pich
6dc16b288d Merge branch 'release/1.5.0' 2022-01-01 17:51:11 +01:00
Mikołaj Pich
daf97be9ad Version 1.5.0 2022-01-01 17:50:02 +01:00
Rafał Borcz
2bb2190410
New Crowdin updates (#1745) 2022-01-01 17:48:58 +01:00
Mikołaj Pich
aff1a7030d
Add a custom error message for ssl errors due to invalid clock setting (#1742) 2022-01-01 15:46:08 +01:00
Mikołaj Pich
8877322357
Differentiate school announcements by userLoginId (#1744) 2022-01-01 13:52:51 +01:00
Mikołaj Pich
bc672e94f8
Strip html from school announcements notifications (#1743) 2022-01-01 13:48:58 +01:00
Mikołaj Pich
a03bcf8e62
Display comment after entry in grade notifications (#1741) 2021-12-31 11:36:14 +00:00
Mikołaj Pich
20673c4ead
Add basic support for kindergarten students (#1738) 2021-12-31 12:21:52 +01:00
Rafał Borcz
5321d00ee9
Fix play flavor build (#1740) 2021-12-31 12:10:56 +01:00
Michael
e6b2acabd5
Block app timezone to polish timezone (#1598) 2021-12-31 11:53:09 +01:00
Mikołaj Pich
bfd7f688ab
Move webview locale fix to account recovery fragment (#1739) 2021-12-31 10:24:02 +00:00
Mikołaj Pich
ba02531aa4
Fix timetable widget crash when there are no lessons for the day (#1737) 2021-12-31 09:40:15 +01:00
Michael
210c3a0e28
Remove HiltBroadcastReceiver (#1736) 2021-12-30 12:50:06 +01:00
Michael
68f0ecc45c
If only one student exists, don't show student name in timetable notification (#1711)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2021-12-29 15:44:43 +01:00
Rafał Borcz
0965d03f1a
New Crowdin updates (#1734) 2021-12-29 11:57:17 +01:00
Michael
496641f594
Fix notification spam after login (#1715) 2021-12-29 08:31:43 +01:00
Rafał Borcz
684c258e2d
Remove admin message offline first cache (#1735) 2021-12-28 18:56:59 +01:00
Michael
5e96917508
Fix overlapping text in the error dialog (#1708) 2021-12-28 12:16:52 +01:00
Rafał Borcz
17096ad11b
New Crowdin updates (#1729) 2021-12-27 14:06:20 +01:00
Michael
bd883c9f38
Add option to remove notifications captured from vulcan.hebe (#1716) 2021-12-27 07:48:47 +00:00
Michael
6520f8a0d7
Fix that an incorrect day would be selected in MaterialDatePicker (#1723) 2021-12-27 08:10:30 +01:00
Mikołaj Pich
2eee50ad81
Replace view pager in login activity with simple fragment transactions (#1686) 2021-12-27 07:58:57 +01:00
dependabot[bot]
8560fd7e81
Bump coroutines from 1.5.2 to 1.6.0 (#1731) 2021-12-25 08:38:27 +00:00
dependabot[bot]
f718147ae9
Bump agcp from 1.6.2.300 to 1.6.3.200 (#1730) 2021-12-25 05:55:01 +00:00
dependabot[bot]
cd12c4c891
Bump agconnect-crash from 1.6.2.300 to 1.6.3.200 (#1732) 2021-12-25 05:54:34 +00:00
dependabot[bot]
65f114ce05
Bump kotlinx-serialization-json from 1.3.1 to 1.3.2 (#1733) 2021-12-25 05:54:17 +00:00
Mateusz Idziejczak
497083be97
Update timetable to next day if there is no more lessons today (#1551) 2021-12-25 05:46:24 +00:00
Michael
e26860ea5a
Fix state restoring in GradeStatistics (#1667)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2021-12-23 13:58:26 +01:00
Mateusz Idziejczak
094df212b4
Add additional lessons feature (#1550) 2021-12-21 00:36:59 +01:00
dependabot[bot]
cc22985dc5
Bump firebase-bom from 29.0.2 to 29.0.3 (#1728) 2021-12-20 20:22:56 +00:00
Rafał Borcz
ad9a2711c4
New Crowdin updates (#1687) 2021-12-19 22:46:41 +01:00
Mikołaj Pich
daf44c531c Merge branch 'release/1.4.4' into develop 2021-12-19 22:25:56 +01:00
Mikołaj Pich
4e12eb1552 Merge branch 'release/1.4.4' 2021-12-19 22:25:52 +01:00
Mikołaj Pich
c846cc999f Version 1.4.4 2021-12-19 22:25:47 +01:00
Mikołaj Pich
47d430292c
Update template of login issue email (#1724)
* Update sdk

* Update template of login issue email
2021-12-19 22:08:39 +01:00
Michael
5e1ff2243f
Fix exception in TimetableAdapter (#1721) 2021-12-12 23:09:34 +01:00
dependabot[bot]
a35bef58f2
Bump gradle from 7.0.3 to 7.0.4 (#1718) 2021-12-12 14:06:15 +00:00
dependabot[bot]
0005d84974
Bump hilt_version from 2.40.4 to 2.40.5 (#1719) 2021-12-12 14:05:53 +00:00
dependabot[bot]
19558cb871
Bump firebase-bom from 29.0.1 to 29.0.2 (#1720) 2021-12-12 14:05:35 +00:00
Michael
45e884127f
After deselecting fakelog, clear credentials from login form (#1713) 2021-12-12 15:04:31 +01:00
Michael
c87085a226
Fix invalid order of school announcements (#1689) 2021-12-11 17:35:55 +01:00
Michael
79b970256f
More strongly typed data in preferences (#1697) 2021-12-11 16:14:46 +00:00
Michael
70f038f15f
Remove useless group property from NotificationType (#1714) 2021-12-11 17:12:47 +01:00
Michael
9cabd7ef08
Deduplicate timetable time left string (#1710) 2021-12-11 16:42:33 +01:00
Rafał Borcz
d89e4ccfdf
Fix grade sorting by date (#1717) 2021-12-11 11:54:07 +01:00
Michael
1bcc4d199e
When replying to a message use Re instead of RE (#1712) 2021-12-10 16:24:39 +01:00
dependabot[bot]
2e85e88c5d
Bump agcp from 1.6.2.200 to 1.6.2.300 (#1693) 2021-12-08 10:21:00 +00:00
dependabot[bot]
6ab67fe25b
Bump firebase-bom from 29.0.0 to 29.0.1 (#1696) 2021-12-08 10:04:29 +00:00
dependabot[bot]
8563277a89
Bump robolectric from 4.7.2 to 4.7.3 (#1695) 2021-12-08 10:04:10 +00:00
dependabot[bot]
e458cc90b0
Bump agconnect-crash from 1.6.2.200 to 1.6.2.300 (#1694) 2021-12-08 10:03:42 +00:00
dependabot[bot]
651e3a21b9
Bump firebase-crashlytics-gradle from 2.8.0 to 2.8.1 (#1692) 2021-12-08 10:03:06 +00:00
dependabot[bot]
f6b969cfb1
Bump hilt_version from 2.40.2 to 2.40.4 (#1691) 2021-12-08 10:02:43 +00:00
Michael
d2aa940d46
Convert from a stringly typed grade color to enum GradeColorTheme (#1672) 2021-11-27 10:11:17 +01:00
Mikołaj Pich
ab435a72ea Merge branch 'release/1.4.3' into develop 2021-11-26 22:29:13 +01:00
Mikołaj Pich
a56f4b8745 Merge branch 'release/1.4.3' 2021-11-26 22:29:09 +01:00
Mikołaj Pich
d003b0897c Version 1.4.3 2021-11-26 22:29:03 +01:00
Rafał Borcz
581bb2de77
New Crowdin updates (#1669) 2021-11-26 20:22:54 +01:00
Rafał Borcz
495e385228
Fix snackbar crash in grade statistics view (#1682) 2021-11-25 23:48:08 +01:00
dependabot[bot]
10ba36ba44
Bump hianalytics from 6.3.0.303 to 6.3.2.300 (#1684) 2021-11-25 22:46:30 +00:00
dependabot[bot]
eae396424f
Bump hilt_version from 2.40.1 to 2.40.2 (#1683) 2021-11-25 22:46:17 +00:00
Michael
a7891bb266
Update viewpager2 library to fix duplicated menu bug (#1681) 2021-11-24 09:53:16 +01:00
dependabot[bot]
6e82409dbc
Bump play-services-ads from 20.4.0 to 20.5.0 (#1675) 2021-11-23 02:02:03 +00:00
dependabot[bot]
984db18be3
Bump agcp from 1.6.1.300 to 1.6.2.200 (#1674) 2021-11-23 01:55:49 +00:00
dependabot[bot]
c99bc96c08
Bump logging-interceptor from 4.9.2 to 4.9.3 (#1676) 2021-11-23 01:55:10 +00:00
dependabot[bot]
3e7030abc2
Bump agconnect-crash from 1.6.1.300 to 1.6.2.200 (#1677) 2021-11-23 01:54:47 +00:00
dependabot[bot]
6dad3b299b
Bump robolectric from 4.7 to 4.7.2 (#1678) 2021-11-23 01:54:26 +00:00
Mikołaj Pich
5e997f5a3e Merge branch 'release/1.4.2' into develop 2021-11-21 13:31:56 +01:00
Mikołaj Pich
601d573283 Merge branch 'release/1.4.2' 2021-11-21 13:31:51 +01:00
Mikołaj Pich
6ae6ca7fbb Version 1.4.2 2021-11-21 13:31:45 +01:00
Rafał Borcz
c3d38afc3d
New Crowdin updates (#1658) 2021-11-21 13:23:43 +01:00
Rafał Borcz
4e19964249
Make admin messages dissmisable (#1661) 2021-11-21 09:02:12 +01:00
Rafał Borcz
a6c0efcb81
Fix empty student list in LoginStudentSelect view (#1668) 2021-11-21 07:47:23 +00:00
Rafał Borcz
fcc71c0d5f
Add ads limit (#1662) 2021-11-21 08:34:28 +01:00
Rafał Borcz
a59d10b6c1
Disable personalized ads in single support advert (#1665) 2021-11-20 16:46:14 +01:00
Rafał Borcz
a48e4eb4ee
Probably fix snackbar crash in grade statistics view (#1663) 2021-11-20 16:42:21 +01:00
Rafał Borcz
2a3668bb18
Fix nul login data in login symbol view (#1664) 2021-11-20 16:41:12 +01:00
Rafał Borcz
804d0d9113
Add multiline to support ad preference (#1651) 2021-11-18 20:23:09 +01:00
Mikołaj Pich
88b893e6c0
Fix upcoming lesson notifications on Android 12 (#1650) 2021-11-18 20:22:15 +01:00
Damian Czupryn
2874a7495e
Add Czech and Slovak README (#1631) 2021-11-18 19:38:51 +01:00
Robi321
40d8f7a93d
German readme version (#1629) 2021-11-18 16:31:59 +01:00
dependabot[bot]
84cd51205f
Bump appcompat from 1.4.0-rc01 to 1.4.0 (#1654) 2021-11-18 01:02:12 +00:00
dependabot[bot]
bac1832f27
Bump mockk from 1.12.0 to 1.12.1 (#1653) 2021-11-18 00:40:59 +00:00
dependabot[bot]
8bf1e22407
Bump flow-preferences from 1.5.0 to 1.6.0 (#1657) 2021-11-18 00:40:38 +00:00
dependabot[bot]
e9f43f925c
Bump constraintlayout from 2.1.1 to 2.1.2 (#1656) 2021-11-18 00:37:26 +00:00
dependabot[bot]
aa632edf5c
Bump fragment-ktx from 1.4.0-rc01 to 1.4.0 (#1655) 2021-11-18 00:36:18 +00:00
dependabot[bot]
57315d75c6
Bump work_manager from 2.7.0 to 2.7.1 (#1652) 2021-11-18 00:36:00 +00:00
dependabot[bot]
4552bc85b0
Bump kotlin_version from 1.5.31 to 1.6.0 (#1635) 2021-11-18 01:34:55 +01:00
Mikołaj Pich
6b7795118c Merge branch 'release/1.4.1' into develop 2021-11-16 23:29:22 +01:00
Mikołaj Pich
1960782d8e Merge branch 'release/1.4.1' 2021-11-16 23:29:17 +01:00
Mikołaj Pich
8836be3766 Version 1.4.1 2021-11-16 23:29:12 +01:00
Rafał Borcz
8697993149
Add missing env for google play build (#1647) 2021-11-16 23:28:03 +01:00
Mikołaj Pich
b88c7eb4e4 Merge branch 'release/1.4.0' into develop 2021-11-16 22:49:58 +01:00
Mikołaj Pich
9066bce0d5 Merge branch 'release/1.4.0' 2021-11-16 22:49:53 +01:00
Mikołaj Pich
f15b90782a Version 1.4.0 2021-11-16 22:40:30 +01:00
Rafał Borcz
0642bf7d73
New Crowdin updates (#1646) 2021-11-16 22:38:53 +01:00
Mikołaj Pich
981d6d559c
Login improvements (#1645) 2021-11-16 21:05:00 +00:00
Mikołaj Pich
39327ff3ea
School and teachers UI fixes (#1644) 2021-11-16 21:45:14 +01:00
Michael
b098ac029b
Fix displaying errors in GradeDetailsPresenter (#1600) 2021-11-16 20:42:06 +00:00
Rafał Borcz
7e0e2fbb67
Fix saved state in main and splash activity (#1633) 2021-11-16 18:13:10 +01:00
Rafał Borcz
8a181c747c
Remove deprecated usage of LifecycleObserver (#1641) 2021-11-16 00:38:52 +01:00
Rafał Borcz
68fdb167c2
Sort items in homework and grade tiles on the dashboard (#1634) 2021-11-15 22:35:01 +01:00
dependabot[bot]
17563d1a4b
Bump hianalytics from 6.3.0.302 to 6.3.0.303 (#1636) 2021-11-15 13:56:39 +00:00
dependabot[bot]
370881104e
Bump hilt_version from 2.40 to 2.40.1 (#1637) 2021-11-15 13:56:03 +00:00
dependabot[bot]
62b1b18326
Bump kotlinx-serialization-json from 1.3.0 to 1.3.1 (#1638) 2021-11-15 13:55:45 +00:00
dependabot[bot]
214e43bd4b
Bump robolectric from 4.6.1 to 4.7 (#1639) 2021-11-15 13:55:18 +00:00
dependabot[bot]
358e0850ad
Bump appcompat from 1.4.0-beta01 to 1.4.0-rc01 (#1640) 2021-11-15 13:40:51 +00:00
Michael
c183428107
Prevent changing the current day by accident when excusing absences (#1599) 2021-11-13 19:56:17 +01:00
Mikołaj Pich
6de937703a
Fix admin messages caching (#1632) 2021-11-13 19:50:26 +01:00
Rafał Borcz
10cb2b70f1
New Crowdin updates (#1630) 2021-11-13 10:36:19 +01:00
Michael
9230db3f99
Do not show student's name in notifications if there's only one student (#1609) 2021-11-13 10:06:59 +01:00
dependabot[bot]
66e58ab74e
Bump activity-ktx from 1.3.1 to 1.4.0 (#1620) 2021-11-13 03:15:14 +00:00
dependabot[bot]
99b7af64c0
Bump lifecycle-livedata-ktx from 2.3.1 to 2.4.0 (#1618) 2021-11-13 02:25:38 +00:00
Rafał Borcz
4295dd6246
New Crowdin updates (#1566) 2021-11-11 15:56:56 +01:00
Rafał Borcz
fb2d92c749
Fix homework sync (#1627) 2021-11-11 15:52:46 +01:00
dependabot[bot]
07b1969a35
Bump core-ktx from 1.6.0 to 1.7.0 (#1622) 2021-11-11 14:33:01 +00:00
dependabot[bot]
886403bf1e
Bump annotation from 1.2.0 to 1.3.0 (#1628) 2021-11-11 14:32:19 +00:00
dependabot[bot]
e8b21c1429
Bump coil from 1.3.2 to 1.4.0 (#1573) 2021-11-11 14:32:04 +00:00
Rafał Borcz
007d62e61d
Update project to Android SDK 31 (#1570) 2021-11-11 15:23:20 +01:00
Mateusz Idziejczak
f88d44f0ec
Add timetable changes, attendance notifications and refactor notification deeplinks (#1547) 2021-11-06 22:21:34 +01:00
Michael
4401df6203
Migrate from ViewPager to ViewPager2 (#1601) 2021-11-06 19:07:26 +01:00
Patryk
e6f23ab35b
Add support for user ca in debug flavor(#1624) 2021-11-04 03:09:47 +01:00
Damian Czupryn
eea20ced57
Notifications settings reorganize and strings update (#1616) 2021-11-04 03:06:54 +01:00
dependabot[bot]
b7134221cb
Bump hilt_version from 2.39.1 to 2.40 (#1617) 2021-11-01 17:05:57 +00:00
dependabot[bot]
8be605629a
Bump firebase-crashlytics-gradle from 2.7.1 to 2.8.0 (#1623) 2021-11-01 16:56:18 +00:00
dependabot[bot]
1a3d580116
Bump firebase-bom from 28.4.2 to 29.0.0 (#1619) 2021-11-01 16:54:43 +00:00
dependabot[bot]
a62ed54d07
Bump hianalytics from 6.3.0.301 to 6.3.0.302 (#1621) 2021-11-01 16:54:10 +00:00
Damian Czupryn
36a570eeb0
Allow selecting text in error dialog (#1615) 2021-11-01 01:46:23 +01:00
Damian Czupryn
8ed8b5a33c
Error messages content wrap in error dialog (#1577) 2021-10-31 20:28:01 +01:00
Michael
26c749c219
Fix about header layout to support long app names (for DEV builds) (#1602)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2021-10-29 20:30:27 +02:00
Michael
1d910f8d66
Fix excuse button showing up despite no lessons available to excuse (#1607)
This was happening when there was an unexcused lesson that you excused until the teacher sent a response (accepted or denied it)
2021-10-27 10:07:04 +02:00
dependabot[bot]
de11644e9b
Bump agconnect-crash from 1.6.1.200 to 1.6.1.300 (#1605) 2021-10-26 09:53:16 +00:00
dependabot[bot]
621db49fbf
Bump agcp from 1.6.1.200 to 1.6.1.300 (#1606) 2021-10-26 09:52:55 +00:00
dependabot[bot]
b593795844
Bump about_libraries from 8.9.3 to 8.9.4 (#1604) 2021-10-26 09:51:36 +00:00
Michael
0f800b61f6
Allow expanding multiple subject' grades at once (#1584) 2021-10-24 01:23:36 +02:00
Rafał Borcz
94fd303f8e
Add single support advert (#1484) 2021-10-21 10:51:00 +02:00
Rafał Borcz
09a134d442
Fix last sync date to save only successful sync (#1595) 2021-10-21 10:47:37 +02:00
dependabot[bot]
58ea2c530e
Bump hianalytics from 6.3.0.300 to 6.3.0.301 (#1593) 2021-10-19 06:36:46 +00:00
Mikołaj Pich
84e4167dbd
Mi Band notification improvements (#1579) 2021-10-18 00:11:46 +02:00
Michael
54e9ea6478
Use FloatingActionButton.{show,hide} instead of using setVisibility (#1591) 2021-10-16 11:17:00 +02:00
Rafał Borcz
4c8d9c8f7f
Fix infinite refresh when admin messages list is empty (#1587) 2021-10-14 16:25:09 +02:00
dependabot[bot]
e7550f7a43
Bump gradle from 7.0.2 to 7.0.3 (#1586) 2021-10-14 00:10:22 +00:00
Michael
ac86737050
Fix NPE in SyncPresenter (#1582) 2021-10-14 01:44:34 +02:00
Rafał Borcz
e3122127c0
Add admin messages (#1553) 2021-10-13 23:58:24 +02:00
Stanisław Jelnicki
d6918077bf
Set upcoming lesson notification visibility to public (#1581) 2021-10-13 21:47:03 +02:00
dependabot[bot]
9d0366d010
Bump firebase-bom from 28.4.1 to 28.4.2 (#1574) 2021-10-11 15:44:19 +00:00
dependabot[bot]
3d0cd11ba4
Bump Treessence from 1.0.4 to 1.0.5 (#1575) 2021-10-11 15:44:03 +00:00
dependabot[bot]
64dbbd54b4
Bump hianalytics from 6.2.0.301 to 6.3.0.300 (#1576) 2021-10-11 15:43:29 +00:00
Rafał Borcz
539be586ce
Fix text color of time left indicator on dashboard timetable card (#1572) 2021-10-11 14:39:54 +02:00
Rafał Borcz
a240fd5d5f
Add build timestamp as build config field (#1567) 2021-10-09 18:37:27 +02:00
Damian Czupryn
4e69cfe23c
Change text when there are no lessons today and tomorrow in dashboard (#1571) 2021-10-09 15:36:22 +00:00
Damian Czupryn
2ab0a57a41
Separate calculated average settings (#1558) 2021-10-09 01:55:00 +02:00
Damian Czupryn
ebf9e741c2
Fix homework last item padding (#1568) 2021-10-09 01:04:04 +02:00
Mateusz Idziejczak
e8075e30e4
Add "add homework" feature (#1564) 2021-10-08 11:19:49 +02:00
Mikołaj Pich
1839d7cb8f
Migrate from moshi to kotlinx serialization (#1557) 2021-10-04 17:13:31 +02:00
dependabot[bot]
2d84b0775a
Bump hilt_version from 2.38.1 to 2.39.1 (#1561) 2021-10-04 14:51:31 +00:00
dependabot[bot]
426379ec17
Bump about_libraries from 8.9.1 to 8.9.3 (#1560) 2021-10-04 14:45:09 +00:00
dependabot[bot]
8315759c83
Bump agcp from 1.6.0.300 to 1.6.1.200 (#1562) 2021-10-04 14:44:15 +00:00
dependabot[bot]
04393e60bb
Bump agconnect-crash from 1.6.0.300 to 1.6.1.200 (#1563) 2021-10-04 14:43:46 +00:00
Damian Czupryn
031a17ea50
Change text to bold in notifications center (#1546) 2021-10-04 16:35:37 +02:00
Mikołaj Pich
60501fcd72
Set buildTimestamp through manifest meta (#1556) 2021-10-03 14:13:42 +02:00
Rafał Borcz
8e607d48f7
Add coroutines scope to presenter (#1554) 2021-10-03 10:36:17 +02:00
Damian Czupryn
e02d93f979
Add Czech and Slovak listings (#1555) 2021-10-03 01:07:45 +02:00
Mikołaj Pich
76514e2d72 Merge branch 'release/1.3.0' into develop 2021-09-28 23:26:22 +02:00
Mikołaj Pich
689012131f Merge branch 'release/1.3.0' 2021-09-28 23:26:18 +02:00
Mikołaj Pich
6cdcf92782 Version 1.3.0 2021-09-28 23:26:10 +02:00
Rafał Borcz
9c8bcbfdd3
New Crowdin updates (#1544) 2021-09-28 21:11:59 +00:00
Mikołaj Pich
0b83a66b85
Remove disappearing teachers workaround from timetable repository (#1545) 2021-09-28 23:10:11 +02:00
Rafał Borcz
9711cc868c
New Crowdin updates (#1522) 2021-09-28 22:42:06 +02:00
Mikołaj Pich
f8cb7599e6
Add missing auto refresh to recipients, subjects and teachers (#1540) 2021-09-28 22:40:43 +02:00
Patryk
7636618e23
Update License (#1542) 2021-09-28 21:55:40 +02:00
Mateusz Idziejczak
5bc54c12f1
Add option to make upcoming lesson notification not persistent (#1537) 2021-09-28 11:48:25 +02:00
Rafał Borcz
e10e530dee
Remove seconds from timetable timer (#1539) 2021-09-27 23:03:59 +02:00
Rafał Borcz
d69118b085
Add notifications center (#1524) 2021-09-27 20:58:25 +02:00
Mateusz Idziejczak
dc90549b9d
Fix hiding last element in messages (#1538) 2021-09-27 17:56:43 +02:00
dependabot[bot]
b552dbc904
Bump constraintlayout from 2.1.0 to 2.1.1 (#1535) 2021-09-27 15:56:11 +00:00
dependabot[bot]
a6a1678b47
Bump core from 1.10.1 to 1.10.2 (#1536) 2021-09-27 15:51:06 +00:00
Piotr Romanowski
7a46ef5f19
Add calculated average help dialog (#1379)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2021-09-25 17:19:21 +02:00
Mikołaj Pich
f9e0f7b390
Don't stop loading the timetable when error occurs in upcoming lessons notification scheduling (#1532) 2021-09-25 15:18:40 +02:00
Rafał Borcz
9211baf7ec
Add notification piggyback (#1503) 2021-09-25 14:02:38 +02:00
Mateusz Idziejczak
de6131f4f5
Add transparency to lucky number widget (#1530) 2021-09-25 13:46:35 +02:00
Mateusz Idziejczak
2cb11e443c
Mark teacher with yellow when new and old are the same (#1529) 2021-09-25 13:46:11 +02:00
Mikołaj Pich
a43ffcdef4
Display bad credentials error in the message box above login form (#1525) 2021-09-24 21:02:51 +02:00
dependabot[bot]
6615e68430
Bump kotlin_version from 1.5.30 to 1.5.31 (#1528) 2021-09-22 09:25:54 +02:00
Mikołaj Pich
36daa7ccc1
Always include all language resources in app bundle (#1527) 2021-09-22 09:25:16 +02:00
Mikołaj Pich
6e5481f345
Upgrade Gradle Play Publisher to 3.6.0 (#1526) 2021-09-20 11:38:13 +02:00
Mikołaj Pich
ba1c14ca0e Merge branch 'release/1.2.3' into develop 2021-09-16 12:01:58 +02:00
Mikołaj Pich
c69bb2ef71 Merge branch 'release/1.2.3' 2021-09-16 12:01:54 +02:00
Mikołaj Pich
9cb4754132 Version 1.2.3 2021-09-16 12:01:49 +02:00
Mikołaj Pich
5ba8289c87
Display info in timetable as-is when lesson has change flag (#1521) 2021-09-16 11:59:23 +02:00
Rafał Borcz
258782c648
New Crowdin updates (#1482) 2021-09-16 11:30:05 +02:00
Rafał Borcz
c568bc1515
Fix ghost account after logout not current student (#1518) 2021-09-16 11:29:11 +02:00
Rafał Borcz
da668f93cf
Fix bugs in dashboard (#1517) 2021-09-16 11:24:52 +02:00
Rafał Borcz
037dbd792f
Add conference dialog (#1519) 2021-09-16 10:51:38 +02:00
dependabot[bot]
7ec7afed87
Bump firebase-bom from 28.4.0 to 28.4.1 (#1520) 2021-09-16 08:22:06 +00:00
Mikołaj Pich
bea50e6db5 Merge branch 'release/1.2.2' into develop 2021-09-13 14:53:38 +02:00
Mikołaj Pich
6a00e75816 Merge branch 'release/1.2.2' 2021-09-13 14:53:32 +02:00
Mikołaj Pich
957adaf6ee Version 1.2.2 2021-09-13 14:53:27 +02:00
Rafał Borcz
827fb33eeb
Fix login process after was interrupted (#1505) 2021-09-13 14:36:31 +02:00
Mikołaj Pich
19c96ee83f
Unlock sunday in navigation datepicker (#1506) 2021-09-13 14:19:46 +02:00
Mikołaj Pich
5a7f52c773
Update help email pre-filled content (#1507) 2021-09-13 14:19:24 +02:00
Rafał Borcz
dddeff802f
Fix date picker crash after saved state (#1502) 2021-09-12 17:29:46 +02:00
Rafał Borcz
91f6310892
Restore lucky number in more view (#1504) 2021-09-11 19:43:05 +02:00
Rafał Borcz
0389642543
Fix empty list on excuse submit (#1501) 2021-09-11 19:40:09 +02:00
Rafał Borcz
8528e0beff
Fix crash in school info when dialer is unavailable (#1500) 2021-09-10 09:49:22 +00:00
Rafał Borcz
e665a8f18b
Fix error view in attendance summary (#1492) 2021-09-10 00:48:29 +02:00
Rafał Borcz
6d5acbad2c
Fix overlapping error view (#1493) 2021-09-10 00:36:44 +02:00
Rafał Borcz
7217d0f753
Fix NPE in timetable dashboard tile (#1498) 2021-09-10 00:27:48 +02:00
Rafał Borcz
16a5d88dfb
Fix overlapping shadow in dashboard (#1494) 2021-09-10 00:25:23 +02:00
Rafał Borcz
646a46727f
Update material chips input (#1495) 2021-09-08 09:13:52 +02:00
dependabot[bot]
f5e9197f98
Bump work_manager from 2.5.0 to 2.6.0 (#1478) 2021-09-06 23:38:10 +00:00
Mikołaj Pich
b47f26684b
Change AppGallery deploy format to aab (#1483) 2021-09-06 03:27:54 +02:00
Mikołaj Pich
3a03b5f1c6 Merge branch 'release/1.2.1' into develop 2021-09-05 23:29:30 +02:00
Mikołaj Pich
3d0dcead50 Merge branch 'release/1.2.1' 2021-09-05 23:29:23 +02:00
Mikołaj Pich
b64b41c11c Version 1.2.1 2021-09-05 23:29:15 +02:00
Rafał Borcz
77c5330f91
Dashboard fixes (#1463) 2021-09-05 23:24:03 +02:00
Rafał Borcz
2b55ec02ff
New translations strings.xml (Polish) (#1474) 2021-09-05 23:06:44 +02:00
Rafał Borcz
49ebae6e63
Fix overlaping empty and error view in grade statistics (#1475)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2021-09-05 19:59:03 +00:00
dependabot[bot]
44a9db48a6
Bump hianalytics from 6.2.0.300 to 6.2.0.301 (#1476) 2021-09-05 18:17:18 +00:00
dependabot[bot]
0008a72be1
Bump kotlinx-coroutines-test from 1.5.1 to 1.5.2 (#1477) 2021-09-05 18:10:22 +00:00
dependabot[bot]
a43acaaa07
Bump kotlinx-coroutines-android from 1.5.1 to 1.5.2 (#1479) 2021-09-05 18:10:05 +00:00
dependabot[bot]
e6c9abb4e5
Bump core from 1.10.0 to 1.10.1 (#1480) 2021-09-05 18:09:42 +00:00
Mikołaj Pich
3b9451184c
Fix preview of second student guardian when first guardian is null (#1473) 2021-09-05 03:15:40 +02:00
Mikołaj Pich
45d1727dbe
Add missing school announcement dialog (#1470) 2021-09-04 15:54:37 +02:00
Mikołaj Pich
8d7b611c44
Fix showing error view in timetable (#1472) 2021-09-04 15:54:05 +02:00
Rafał Borcz
c3adb9b6d6
Bump agp to 7.0.2 (#1469) 2021-09-03 22:54:29 +02:00
Mikołaj Pich
d87283eb31
Fix opening twitter link from about on android 11 (#1460) 2021-08-30 00:20:13 +02:00
dependabot[bot]
d139c22782
Bump hianalytics from 6.1.1.300 to 6.2.0.300 (#1457) 2021-08-29 19:37:18 +00:00
dependabot[bot]
e557021ad9
Bump huawei-publish-gradle-plugin from 1.2.4 to 1.3.0 (#1458) 2021-08-29 19:37:01 +00:00
Mikołaj Pich
37af5de25c Merge branch 'release/1.2.0' into develop 2021-08-29 21:08:23 +02:00
Mikołaj Pich
db6c84775b Merge branch 'release/1.2.0' 2021-08-29 21:08:18 +02:00
Mikołaj Pich
72d8b4aa84 Version 1.2.0 2021-08-29 21:08:08 +02:00
Rafał Borcz
170b7c4379
New Crowdin updates (#1459) 2021-08-29 21:06:33 +02:00
Rafał Borcz
79e9e1a780
New Crowdin updates (#1321) 2021-08-29 20:01:36 +02:00
Mateusz Idziejczak
98dcc62bb7
Add excuse function to "not excusable" account (#1429) 2021-08-29 19:47:14 +02:00
Mikołaj Pich
ea0fb00bde
Fix crash on opening date pickers during holidays (#1456) 2021-08-29 19:31:28 +02:00
Mikołaj Pich
4aa6b0b995
Hide keyboard on opening login host dropdown (#1455) 2021-08-29 19:00:30 +02:00
Mikołaj Pich
57d11e825b
Update readBy and unreadBy fields during message list fetch (#1452) 2021-08-29 15:40:28 +02:00
Daniel Olczyk
2f43b6e552
Change display name for MRmlik12 (#1451) 2021-08-29 14:08:48 +02:00
Mateusz Idziejczak
765f8a2d1f
Add in app review (#1435) 2021-08-29 00:43:58 +02:00
Tomasz F
04c727a0c8
Exams and homework notification fixes (#1292) 2021-08-29 00:41:58 +02:00
Rafał Borcz
55518cb044
Add missing dashboard item in default view settings (#1450) 2021-08-28 21:43:10 +02:00
Rafał Borcz
cebd1aa75d
Remove lithuanian lang (#1449) 2021-08-28 12:14:01 +02:00
Piotr Romanowski
4a38a0be70
Add change password snackbar (#1336) 2021-08-26 17:35:41 +00:00
Rafał Borcz
b4b9d91ea6
Update dependencies (#1448) 2021-08-25 20:49:44 +02:00
Rafał Borcz
a6a2bcff3b
Remove Zachowanie from all count of subjects (#1447) 2021-08-24 19:51:08 +02:00
Mateusz Idziejczak
2979d8b62a
Show information when the recipient has read the message (#1430) 2021-08-23 16:16:41 +00:00
killerkeemstar
aba2068a84
New timetable widget design (#1384) 2021-08-23 16:02:21 +00:00
dependabot[bot]
076948a680
Bump gradle from 7.0.0 to 7.0.1 (#1445) 2021-08-23 13:53:04 +00:00
Mateusz Idziejczak
1cfabe43a5
Add captions for averages from how many items have been counted (#1437) 2021-08-23 15:48:48 +02:00
dependabot[bot]
02b87c8c6a
Bump firebase-bom from 28.3.1 to 28.4.0 (#1446) 2021-08-23 13:42:20 +00:00
Mateusz Idziejczak
eb94e06d54
Fix buggy timers in timetable (#1428)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2021-08-22 16:33:12 +02:00
dependabot[bot]
d3b3939d26
Bump timber from 4.7.1 to 5.0.1 (#1440) 2021-08-17 13:44:06 +00:00
dependabot[bot]
9c5d2fbf84
Bump google-services from 4.3.9 to 4.3.10 (#1439) 2021-08-17 13:32:48 +00:00
dependabot[bot]
428e40d7fe
Bump hianalytics from 6.1.0.300 to 6.1.1.300 (#1441) 2021-08-17 13:32:34 +00:00
Mateusz Idziejczak
9c819835ca
Add last sync date in sync settings (#1436) 2021-08-15 13:59:32 +00:00
Rafał Borcz
626169de11
Add drag and drop to dashboard tiles (#1415) 2021-08-10 11:55:51 +02:00
dependabot[bot]
72ef5f428e
Bump firebase-bom from 28.3.0 to 28.3.1 (#1431) 2021-08-09 13:55:03 +00:00
dependabot[bot]
4ae3f7b016
Bump google-services from 4.3.8 to 4.3.9 (#1432) 2021-08-09 13:54:48 +00:00
dependabot[bot]
7c94837af0
Bump coil from 1.3.1 to 1.3.2 (#1433) 2021-08-09 13:54:31 +00:00
dependabot[bot]
2a91346155
Bump activity-ktx from 1.3.0 to 1.3.1 (#1434) 2021-08-09 13:53:54 +00:00
Mateusz Idziejczak
ec6d18968f
Fix filter search bug (#1427)
* Fix filter search bug

* refractor
2021-08-07 10:27:51 +02:00
Mateusz Idziejczak
b61e63249c
Add messages sorting (#1262) 2021-08-04 15:16:54 +02:00
Damian Czupryn
d73aa605f9
Change dashboard no data strings (#1426) 2021-08-03 18:55:20 +02:00
Mikołaj Pich
14f4808434
Add student nick-or-name to notification summary (#1425) 2021-08-03 15:48:11 +02:00
dependabot[bot]
2bc6d7ad0d
Bump gradle from 4.2.2 to 7.0.0 (#1419) 2021-08-02 16:28:12 +00:00
dependabot[bot]
888052cd9c
Bump agcp from 1.5.3.200 to 1.6.0.300 (#1424) 2021-08-02 15:18:29 +00:00
dependabot[bot]
bdc2281fdc
Bump agconnect-crash from 1.5.3.200 to 1.6.0.300 (#1423) 2021-08-02 15:18:18 +00:00
dependabot[bot]
d01edc2312
Bump activity-ktx from 1.2.4 to 1.3.0 (#1422) 2021-08-02 15:17:05 +00:00
dependabot[bot]
484a3aa731
Bump chucker from 3.5.1 to 3.5.2 (#1417) 2021-08-02 13:26:33 +00:00
dependabot[bot]
51be23470f
Bump hilt_version from 2.38 to 2.38.1 (#1418) 2021-08-02 13:25:19 +00:00
dependabot[bot]
19495ffce9
Bump constraintlayout from 2.1.0-beta02 to 2.1.0 (#1420) 2021-08-02 13:24:31 +00:00
dependabot[bot]
bd766d33db
Bump coil from 1.3.0 to 1.3.1 (#1421) 2021-08-02 13:23:25 +00:00
Mikołaj Pich
ff8b3f8837
Send mutltiple notifications instead of summary notification (#1365) 2021-08-01 13:19:46 +02:00
Rafał Borcz
e678e6d7f9
Fix margin and attedance destination (#1414) 2021-07-31 20:19:05 +02:00
Mikołaj Pich
f6f3447f1d
Fix sorting notes in loading state (#1413) 2021-07-31 18:08:35 +02:00
MRmlik12
e1c1f305c4
Add draft message (#1306) 2021-07-31 18:00:22 +02:00
MRmlik12
c8c9001277
Add twitter page link to about fragment (#1411) 2021-07-30 19:13:06 +02:00
Rafał Borcz
3422951e47
Add dashboard (#1267) 2021-07-30 18:49:19 +02:00
dependabot[bot]
3278c11cce
Bump hilt_version from 2.37 to 2.38 (#1405) 2021-07-27 08:39:37 +00:00
dependabot[bot]
e00dea51f1
Bump appcompat from 1.3.0 to 1.3.1 (#1409) 2021-07-26 19:55:08 +00:00
dependabot[bot]
5bf411039d
Bump fragment-ktx from 1.3.5 to 1.3.6 (#1404) 2021-07-26 19:54:50 +00:00
dependabot[bot]
62ca394c9a
Bump appcompat-resources from 1.3.0 to 1.3.1 (#1403) 2021-07-26 19:48:14 +00:00
dependabot[bot]
255b89bbb3
Bump about_libraries from 8.9.0 to 8.9.1 (#1406) 2021-07-26 19:42:25 +00:00
dependabot[bot]
f7987f4b29
Bump chucker from 3.5.0 to 3.5.1 (#1407) 2021-07-26 19:42:11 +00:00
dependabot[bot]
0b583439dd
Bump firebase-bom from 28.2.1 to 28.3.0 (#1408) 2021-07-26 19:41:55 +00:00
dependabot[bot]
ca481dc6f5
Bump activity-ktx from 1.2.3 to 1.2.4 (#1410) 2021-07-26 19:41:28 +00:00
dependabot[bot]
f6a92a4cc3
Bump hianalytics from 6.0.0.301 to 6.1.0.300 (#1402) 2021-07-21 07:21:49 +00:00
dependabot[bot]
55a6219a42
Bump kotlin_version from 1.5.20 to 1.5.21 (#1401) 2021-07-21 07:21:25 +00:00
dependabot[bot]
ad653f10df
Bump firebase-bom from 28.2.0 to 28.2.1 (#1400) 2021-07-12 22:44:06 +02:00
dependabot[bot]
7a780486f6
Bump kotlinx-coroutines-android from 1.5.0 to 1.5.1-native-mt (#1395) 2021-07-12 19:54:35 +00:00
dependabot[bot]
c01b0eff9d
Bump agconnect-crash from 1.5.2.300 to 1.5.3.200 (#1399) 2021-07-12 19:53:03 +00:00
dependabot[bot]
3a4614e2b7
Bump robolectric from 4.5.1 to 4.6.1 (#1392) 2021-07-12 19:52:39 +00:00
dependabot[bot]
44ee8859b1
Bump junit from 1.1.2 to 1.1.3 (#1389) 2021-07-12 19:52:25 +00:00
dependabot[bot]
3dd7878ae5
Bump mockk from 1.11.0 to 1.12.0 (#1387) 2021-07-12 19:47:16 +00:00
dependabot[bot]
0305a005ab
Bump agcp from 1.5.2.300 to 1.5.3.200 (#1398) 2021-07-12 19:47:04 +00:00
dependabot[bot]
2229f0e3e9
Bump coil from 1.2.2 to 1.3.0 (#1397) 2021-07-12 19:46:13 +00:00
dependabot[bot]
d9aab7afa2
Bump runner from 1.3.0 to 1.4.0 (#1386) 2021-07-12 19:45:36 +00:00
dependabot[bot]
0558f30646
Bump material from 1.3.0 to 1.4.0 (#1390) 2021-07-12 19:44:04 +00:00
dependabot[bot]
238f257c6c
Bump hianalytics from 5.3.1.300 to 6.0.0.301 (#1394) 2021-07-12 19:43:46 +00:00
dependabot[bot]
40372e7cea
Bump core-ktx from 1.5.0 to 1.6.0 (#1388) 2021-07-12 19:40:32 +00:00
dependabot[bot]
b65a060fca
Bump chucker from 3.4.0 to 3.5.0 (#1385) 2021-07-12 19:40:15 +00:00
dependabot[bot]
c1ed748188
Bump gradle from 4.2.1 to 4.2.2 (#1393) 2021-07-12 19:39:19 +00:00
dependabot[bot]
b911521ccc
Bump core from 1.3.0 to 1.4.0 (#1391) 2021-07-12 19:39:02 +00:00
dependabot[bot]
b046679542
Bump kotlin_version from 1.5.10 to 1.5.20 (#1381) 2021-06-27 20:09:46 +00:00
dependabot[bot]
3decc95a20
Bump firebase-crashlytics-gradle from 2.7.0 to 2.7.1 (#1382) 2021-06-27 19:37:24 +00:00
dependabot[bot]
c301198006
Bump firebase-bom from 28.1.0 to 28.2.0 (#1383) 2021-06-27 19:33:51 +00:00
dependabot[bot]
190a5f2067
Bump fragment-ktx from 1.3.4 to 1.3.5 (#1380) 2021-06-22 20:37:21 +00:00
Mikołaj Pich
27e1a07eec
Add notifications debug screen (#1370) 2021-06-21 10:29:04 +02:00
dependabot[bot]
64feae9f1c
Bump hilt_version from 2.36 to 2.37 (#1376) 2021-06-12 12:31:59 +00:00
dependabot[bot]
085158721e
Bump sonarqube-gradle-plugin from 3.2.0 to 3.3 (#1378) 2021-06-11 11:45:25 +00:00
MRmlik12
44888b048d
Add "I forgot my password" button in upper bar (#1375) 2021-06-11 09:53:11 +02:00
Rafał Borcz
b9a12e46bf
Upgrade gradle to 6.9 (#1371) 2021-06-09 09:46:16 +02:00
dependabot[bot]
2fe5e62e72
Bump recyclerview from 1.2.0 to 1.2.1 (#1366) 2021-06-08 10:02:09 +00:00
dependabot[bot]
6305e1a908
Bump firebase-bom from 28.0.1 to 28.1.0 (#1367) 2021-06-08 10:01:12 +00:00
dependabot[bot]
6bf7a2e26c
Bump firebase-crashlytics-gradle from 2.6.1 to 2.7.0 (#1368) 2021-06-08 10:00:27 +00:00
dependabot[bot]
34487175d8
Bump coil from 1.2.1 to 1.2.2 (#1369) 2021-06-08 10:00:10 +00:00
Rafał Borcz
f02db914bf
Fix treessence upgrade (#1361) 2021-06-02 12:45:16 +02:00
dependabot[bot]
18e0a59e2b
Bump hilt_version from 2.35.1 to 2.36 (#1362) 2021-06-02 09:12:01 +00:00
dependabot[bot]
e4371af284
Bump about_libraries from 8.8.5 to 8.9.0 (#1363) 2021-06-02 08:21:34 +00:00
Rafał Borcz
44d5f69de1
Remove jcenter repository and unused code from gradle config (#1360) 2021-05-28 10:57:25 +02:00
dependabot[bot]
d13e0adb00
Bump appcompat from 1.2.0 to 1.3.0 (#1357) 2021-05-28 07:09:47 +00:00
dependabot[bot]
e60e573ac0
Bump appcompat-resources from 1.2.0 to 1.3.0 (#1359) 2021-05-28 07:01:57 +00:00
dependabot[bot]
91dbc9e3d7
Bump core-ktx from 1.3.2 to 1.5.0 (#1356) 2021-05-28 06:15:18 +00:00
dependabot[bot]
8ccbea2c21
Bump fragment-ktx from 1.3.3 to 1.3.4 (#1358) 2021-05-25 11:10:52 +00:00
Mikołaj Pich
211cb5e4f2 Merge branch 'hotfix/messages-send' into develop 2021-05-21 14:09:45 +02:00
Mikołaj Pich
b60c59216d Merge branch 'hotfix/messages-send' 2021-05-21 14:08:00 +02:00
Mikołaj Pich
d20f3180cf Version 1.1.6 2021-05-21 14:03:13 +02:00
Mikołaj Pich
17761af9d6 Bump sdk 2021-05-21 12:35:57 +02:00
dependabot[bot]
067817bace Bump huawei-publish-gradle-plugin from 1.2.2 to 1.2.4 (#1314)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
(cherry picked from commit 022a4d1ea2)
2021-05-21 12:30:36 +02:00
dependabot[bot]
51800d91b2
Bump gradle from 4.1.3 to 4.2.1 (#1339) 2021-05-19 22:40:21 +00:00
Rafał Borcz
3640c4f249
Update dependabot config (#1353) 2021-05-18 09:40:08 +00:00
Dominik Korsa
05aa38b591
Add arrows to student family list items (#1338) 2021-05-17 15:35:36 +02:00
Damian Czupryn
983dcd8656
Add conferences and announcements notifications (#1330) 2021-05-17 15:19:39 +02:00
dependabot[bot]
59cf4fb222
Bump kotlinx-coroutines-android from 1.5.0-RC to 1.5.0 (#1348) 2021-05-17 11:33:27 +00:00
dependabot[bot]
d6ebcc97e3
Bump firebase-crashlytics-gradle from 2.5.2 to 2.6.1 (#1342) 2021-05-17 11:32:03 +00:00
dependabot[bot]
047579c394
Bump agcp from 1.5.2.201 to 1.5.2.300 (#1349) 2021-05-17 11:24:31 +00:00
dependabot[bot]
a90fd4b776
Bump agconnect-crash from 1.5.2.201 to 1.5.2.300 (#1350) 2021-05-17 11:21:48 +00:00
dependabot[bot]
03d3a5db11
Bump firebase-bom from 27.1.0 to 28.0.1 (#1341) 2021-05-17 11:21:31 +00:00
dependabot[bot]
bf5e61490d
Bump google-services from 4.3.5 to 4.3.8 (#1344) 2021-05-17 11:18:08 +00:00
dependabot[bot]
d87fa589a8
Bump hianalytics from 5.3.0.300 to 5.3.1.300 (#1332) 2021-05-10 11:50:20 +00:00
dependabot[bot]
1fff1c2b14
Bump kotlin_version from 1.4.32 to 1.5.0 (#1310) 2021-05-06 11:02:08 +00:00
dependabot[bot]
58d66b6e70
Bump work_hilt from 1.0.0-beta01 to 1.0.0 (#1329) 2021-05-05 22:23:31 +00:00
dependabot[bot]
202d13d509
Bump activity-ktx from 1.2.2 to 1.2.3 (#1328) 2021-05-05 22:21:48 +00:00
Damian Czupryn
db808de06c
Fix no info text position in school announcements (#1327) 2021-05-05 20:18:16 +02:00
Mateusz Idziejczak
d8dae09f39
Add notification icons (#1276)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2021-05-03 18:24:54 +02:00
Damian Czupryn
32640e0796
Change mobile devices item order (#1324)
* Change more items order

* Resolve conflicts
2021-05-03 18:23:09 +02:00
Mikołaj Pich
4e80441167
Add school announcements (#1323) 2021-05-03 17:24:01 +02:00
Rafał Borcz
075cfb20b1
Fix missing snackbar in sync settings fragment (#1325) 2021-05-03 16:42:59 +02:00
Damian Czupryn
56e4e9be5e
Fix homework dialog attachments margin (#1322) 2021-05-02 21:56:41 +02:00
Mateusz Idziejczak
53c798ebdb
Change titles in Student Info (#1121) 2021-05-02 14:09:42 +00:00
dependabot[bot]
022a4d1ea2
Bump huawei-publish-gradle-plugin from 1.2.2 to 1.2.4 (#1314)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2021-05-02 13:49:28 +02:00
Rafał Borcz
dfa25d8445
New Crowdin updates (#1268) 2021-05-02 12:53:53 +02:00
Mateusz Idziejczak
b2efe0d981
Probably fix list divider color (#1270)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2021-05-02 12:33:27 +02:00
dependabot[bot]
2a7f846d3f
Bump hilt_version from 2.35 to 2.35.1 (#1313) 2021-04-30 14:05:08 +00:00
dependabot[bot]
da5817d08a
Bump sonarqube-gradle-plugin from 3.1.1 to 3.2.0 (#1315) 2021-04-30 13:59:46 +00:00
dependabot[bot]
cacf2f651a
Bump agcp from 1.5.1.300 to 1.5.2.201 (#1311) 2021-04-30 13:57:51 +00:00
dependabot[bot]
605c816a32
Bump coil from 1.2.0 to 1.2.1 (#1312) 2021-04-30 13:57:35 +00:00
dependabot[bot]
1587be2fa8
Bump hianalytics from 5.2.0.301 to 5.3.0.300 (#1319) 2021-04-30 13:53:54 +00:00
dependabot[bot]
00b23ca20c
Bump agconnect-crash from 1.5.1.300 to 1.5.2.201 (#1316) 2021-04-30 13:46:30 +00:00
dependabot-preview[bot]
34db20ab0c
Upgrade to GitHub-native Dependabot (#1309) 2021-04-30 13:23:57 +00:00
dependabot-preview[bot]
0d271d925a
Bump room from 2.3.0-rc01 to 2.3.0 (#1302) 2021-04-25 01:31:48 +02:00
dependabot-preview[bot]
b7da43a52a
Bump hilt_version from 2.34.1-beta to 2.35 (#1303) 2021-04-24 12:57:55 +00:00
dependabot-preview[bot]
44af5d59fb
Bump fragment-ktx from 1.3.2 to 1.3.3 (#1304) 2021-04-24 12:57:41 +00:00
dependabot-preview[bot]
bc776993a9
Bump firebase-bom from 27.0.0 to 27.1.0 (#1305) 2021-04-24 12:57:21 +00:00
Damian Czupryn
9a19ce9ca4
Fix Homework dialog buttons layout (#1297) 2021-04-19 16:09:14 +00:00
Mikołaj Pich
6855296de4 Merge branch 'hotfix/all-year-average' into develop 2021-04-18 20:43:29 +02:00
Mikołaj Pich
800a31f160 Merge branch 'hotfix/all-year-average' 2021-04-18 20:40:02 +02:00
Mikołaj Pich
8b83b37b09 Version 1.1.5 2021-04-18 20:38:18 +02:00
Faierbel
43e95cfdc6 Fix all year average 2021-04-18 19:36:02 +02:00
Rafał Borcz
ae2a697e01
Merge pull request #1295 from wulkanowy/rbo/update-workflow
Update github action workflow
2021-04-18 19:34:32 +02:00
dependabot-preview[bot]
b695c7f600
Bump hilt_version from 2.34-beta to 2.34.1-beta (#1293) 2021-04-17 20:45:38 +00:00
dependabot-preview[bot]
3a1a383383
Bump recyclerview from 1.1.0 to 1.2.0 (#1287) 2021-04-14 18:59:12 +00:00
dependabot-preview[bot]
97810d02ab
Bump moshi from 1.11.0 to 1.12.0 (#1284) 2021-04-14 18:58:54 +00:00
dependabot-preview[bot]
30b337a364
Bump about_libraries from 8.8.4 to 8.8.5 (#1281) 2021-04-13 11:55:39 +00:00
dependabot-preview[bot]
8f6c847562
Bump agconnect-crash from 1.5.1.200 to 1.5.1.300 (#1283) 2021-04-13 11:44:01 +00:00
dependabot-preview[bot]
e5d54c95f3
Bump firebase-bom from 26.8.0 to 27.0.0 (#1285) 2021-04-13 11:43:09 +00:00
dependabot-preview[bot]
eb5ad81ec1
Bump agcp from 1.5.1.200 to 1.5.1.300 (#1286) 2021-04-13 11:42:48 +00:00
dependabot-preview[bot]
3aa9f0ca2f
Bump coil from 1.1.1 to 1.2.0 (#1282) 2021-04-13 11:42:21 +00:00
dependabot-preview[bot]
8e587358aa
Bump hilt_version from 2.33-beta to 2.34-beta (#1280) 2021-04-13 11:39:14 +00:00
Damian Czupryn
4492f4a864
Dialogs adjustments to meet MD rules (#1227) 2021-04-12 20:06:28 +00:00
Damian Czupryn
b453225941
Student info and Teachers screens unification (#1279) 2021-04-12 19:58:58 +00:00
Mateusz Idziejczak
13ccfda009
Migrate material date picker (#1277) 2021-04-12 21:43:52 +02:00
Rafał Borcz
95ffb0a687
Ignore all throwable from WebView (#1275) 2021-04-08 10:41:49 +02:00
Mateusz Idziejczak
f131edf857
Add system settings shortcut (#1271) 2021-04-07 11:56:33 +00:00
Mikołaj Pich
bd2d26418a
Cleanup github workflows (#1272) 2021-04-07 13:25:48 +02:00
Mikołaj Pich
aeb3b2a030
Display day header from website in timetable (#1269) 2021-04-05 15:07:29 +02:00
Tomasz F
7bc5219d81
Add new notifications (#1243) 2021-04-04 14:15:07 +00:00
Rafał Borcz
6cb4ea4b0f
Drop support for android 4.x (#1232) 2021-04-03 09:56:07 +00:00
Rafał Borcz
0bdd33ef4a
Migrate to material components bottom navigation (#1244) 2021-04-03 11:46:36 +02:00
Mikołaj Pich
792de4cd3d Merge branch 'hotfix/fix-recovery-visibility' into develop 2021-04-01 22:40:33 +02:00
Mikołaj Pich
3f5fbbc71b Merge branch 'hotfix/fix-recovery-visibility' 2021-04-01 22:40:20 +02:00
Rafał Borcz
206b40ce1b Change version in changelog 2021-04-01 22:38:35 +02:00
Rafał Borcz
43c56b5534 Version 1.1.4 2021-04-01 22:36:51 +02:00
Rafał Borcz
a1076539dc Fix content visibility in login recovery 2021-04-01 22:30:09 +02:00
Kamil Studziński
3071e19584
Implement a toggleable setting to count an arithmetic average of grades when all weights are equal to zero (#1186) 2021-03-30 13:59:36 +02:00
dependabot-preview[bot]
f2130998ec
Bump firebase-crashlytics-gradle from 2.5.1 to 2.5.2 (#1264) 2021-03-30 10:49:40 +00:00
dependabot-preview[bot]
8a5ca8c91f
Bump firebase-bom from 26.7.0 to 26.8.0 (#1263) 2021-03-30 10:48:12 +00:00
Mateusz Idziejczak
fada13e2d3
Update issue templates (#1257) 2021-03-29 18:39:08 +02:00
Mikołaj Pich
6e19eb943d
Add deploy to AppGallery github actions config (#1259) 2021-03-29 17:37:26 +02:00
Mikołaj Pich
c70fe3430c Merge branch 'release/1.1.3' into develop 2021-03-28 20:13:43 +02:00
Mikołaj Pich
3c48264539 Merge branch 'release/1.1.3' 2021-03-28 20:13:37 +02:00
Mikołaj Pich
539cf2207b Version 1.1.3 2021-03-28 20:13:32 +02:00
Rafał Borcz
f0e897713c
New Crowdin updates (#1233) 2021-03-28 19:52:38 +02:00
Mikołaj Pich
a448092008
Allow special login format in login form (#1258) 2021-03-28 19:46:56 +02:00
Patryk
f5b46707ff
Fixing README.md (#1255) 2021-03-28 15:56:44 +02:00
Rafał Borcz
e6247d4428
Fix clearing no existing dialog fragment (#1242) 2021-03-28 08:18:07 +02:00
Mikołaj Pich
d0869b235a
Use db student id to distinguish reporting units and recipients (#1254) 2021-03-27 13:43:25 +01:00
dependabot-preview[bot]
464900d95b
Bump annotation from 1.1.0 to 1.2.0 (#1245) 2021-03-25 10:12:05 +00:00
dependabot-preview[bot]
368274239e
Bump agconnect-crash from 1.5.0.300 to 1.5.1.200 (#1247) 2021-03-25 10:11:19 +00:00
dependabot-preview[bot]
ee33197494
Bump room from 2.3.0-beta03 to 2.3.0-rc01 (#1246) 2021-03-25 10:09:21 +00:00
dependabot-preview[bot]
d3ea743707
Bump kotlin_version from 1.4.31 to 1.4.32 (#1253) 2021-03-25 10:07:43 +00:00
dependabot-preview[bot]
976d4b8ce2
Bump fragment-ktx from 1.3.1 to 1.3.2 (#1248) 2021-03-25 11:05:14 +01:00
dependabot-preview[bot]
b77fc0d32a
Bump activity-ktx from 1.2.1 to 1.2.2 (#1249) 2021-03-25 11:04:37 +01:00
dependabot-preview[bot]
bd3716609e
Bump hianalytics from 5.2.0.300 to 5.2.0.301 (#1250) 2021-03-25 11:04:04 +01:00
dependabot-preview[bot]
5b87cc9009
Bump agcp from 1.5.0.300 to 1.5.1.200 (#1251) 2021-03-25 11:03:37 +01:00
dependabot-preview[bot]
4f7be8d2cb
Bump lifecycle-livedata-ktx from 2.3.0 to 2.3.1 (#1252) 2021-03-25 11:02:39 +01:00
Rafał Borcz
8733e7782f
Fix colorPrimary and class name in widget account manager (#1241) 2021-03-21 22:37:34 +01:00
Rafał Borcz
e03b0dfa01
Fix missing avatars in widgets (#1238) 2021-03-21 12:04:55 +01:00
Rafał Borcz
efafd2094a
Add dialog with info about dropping support for android 4 (#1221) 2021-03-20 14:01:17 +01:00
Rafał Borcz
1560335749
Fix very rare crash in login recovery (#1231) 2021-03-20 13:27:47 +01:00
Rafał Borcz
5bee155f1e
Remove listenablefuture from dependencies (#1237) 2021-03-20 12:10:53 +00:00
dependabot-preview[bot]
c9dc9a323f
Bump gradle from 4.1.2 to 4.1.3 (#1234) 2021-03-19 15:02:28 +00:00
MRmlik12
87e7e00705
Remove firebase inappmessage dependency (#1235) 2021-03-19 15:57:12 +01:00
dependabot-preview[bot]
57681b35ea
Bump mockk from 1.10.6 to 1.11.0 (#1229) 2021-03-17 22:58:17 +00:00
Mikołaj Pich
8fb09d7b7d Merge branch 'release/1.1.2' into develop 2021-03-16 12:59:00 +01:00
Mikołaj Pich
168f750863 Merge branch 'release/1.1.2' 2021-03-16 12:58:56 +01:00
Mikołaj Pich
3e1acbd3bf Version 1.1.2 2021-03-16 12:58:52 +01:00
Rafał Borcz
21ef2adcf6
Disable optimization in r8 config and fix crash in grade fragment (#1226) 2021-03-16 11:49:17 +00:00
Mikołaj Pich
3f6159e976
Fix show error details button in additional lessons (#1225) 2021-03-16 12:47:51 +01:00
Mikołaj Pich
555b5ec112 Merge branch 'release/1.1.1' into develop 2021-03-16 00:43:39 +01:00
Mikołaj Pich
60a9bcae46 Merge branch 'release/1.1.1' 2021-03-16 00:43:33 +01:00
Mikołaj Pich
eeb1341c1f Version 1.1.1 2021-03-16 00:43:28 +01:00
Rafał Borcz
c77b50d51b
New Crowdin updates (#1204) 2021-03-16 00:30:28 +01:00
Rafał Borcz
8644ce32d5
Fix semester switch when student have only one semester (#1215) 2021-03-15 23:58:50 +01:00
Mikołaj Pich
94506aca52
Add github actions config to deploy apk to App Center (#1220) 2021-03-15 18:18:08 +01:00
Rafał Borcz
eee4e1f4b5
Fix empty view in attendance (#1217) 2021-03-15 00:33:40 +01:00
Rafał Borcz
c1942d012f
Maybe fix fragment commits after activity state is saved (#1216) 2021-03-13 20:15:12 +01:00
Rafał Borcz
fe846b463a
Update material chips input (#1214) 2021-03-13 20:14:36 +01:00
Rafał Borcz
0ea2e68249
Fix and clean proguard/r8 file (#1213) 2021-03-13 20:14:10 +01:00
Kamil Studziński
be0445b227
Change the absence request confirmation message string (#1212) 2021-03-13 20:13:57 +01:00
Rafał Borcz
48249f3093
Update kotlin coroutines (#1211) 2021-03-13 20:13:48 +01:00
Rafał Borcz
8d7110735d
Ignore no current student during avatar loading (#1210) 2021-03-13 20:13:37 +01:00
dependabot-preview[bot]
94957850c3
Bump fragment-ktx from 1.3.0 to 1.3.1 (#1205) 2021-03-12 21:50:59 +00:00
dependabot-preview[bot]
fa2cfc8427
Bump room from 2.3.0-beta02 to 2.3.0-beta03 (#1207) 2021-03-12 21:33:30 +00:00
Rafał Borcz
3d467c43ba
Use new kotlin compiler backend (#1202) 2021-03-12 22:07:27 +01:00
dependabot-preview[bot]
b76032044d
Bump activity-ktx from 1.2.0 to 1.2.1 (#1206) 2021-03-12 21:06:33 +00:00
dependabot-preview[bot]
495b84204c
Bump work_hilt from 1.0.0-alpha03 to 1.0.0-beta01 (#1208) 2021-03-12 21:06:27 +00:00
dependabot-preview[bot]
ea4b299de6
Bump firebase-bom from 26.6.0 to 26.7.0 (#1209) 2021-03-12 12:39:01 +00:00
Damian Czupryn
acb5e2afd4
Replace dash mark with no data string in SchoolFragment (#1203) 2021-03-09 17:49:24 +01:00
Mikołaj Pich
50863d6ac2 Merge branch 'release/1.1.0' into develop 2021-03-07 21:58:30 +01:00
Mikołaj Pich
e15eb03299 Merge branch 'release/1.1.0' 2021-03-07 21:58:23 +01:00
Mikołaj Pich
be48791d51 Version 1.1.0 2021-03-07 21:58:14 +01:00
Rafał Borcz
c0e1a5b401
New Crowdin updates (#1167) 2021-03-07 20:48:29 +00:00
Kamil Studziński
cb1b467a21
Add studzinskik to contributors (#1198) 2021-03-07 20:31:14 +00:00
Mikołaj Pich
f14346ff32
Fix duplicate items after running automatic and manual sync at the same time (#1197) 2021-03-07 20:47:18 +01:00
MRmlik12
af8108a649
Add lucky number history (#1184) 2021-03-07 20:17:03 +01:00
Damian Czupryn
5743928126
Fix notification and status bars colors (#1196) 2021-03-07 14:04:37 +00:00
Rafał Borcz
388d37bf9c
Fix date picker theme (#1194) 2021-03-07 13:41:54 +01:00
Damian Czupryn
d572fc737f
Fix typo (#1193) 2021-03-07 00:07:57 +01:00
Damian Czupryn
47b0f1b527
Settings revamp (#1160) 2021-03-06 17:18:42 +00:00
Rafał Borcz
1afa7ecf3c
Fix OOM in grade statistics (#1192) 2021-03-06 16:50:06 +01:00
Mikołaj Pich
9139febbdf
Migrate database migrations from androidTest to roboelectric (#1191) 2021-03-06 14:34:07 +00:00
dependabot-preview[bot]
2dd0b56333
Bump agconnect-crash from 1.5.0.200 to 1.5.0.300 (#1190) 2021-03-06 12:08:43 +00:00
Rafał Borcz
3b970209a5
Fix grade fragment subtitle (#1185) 2021-03-06 13:01:41 +01:00
Rafał Borcz
6f590eb194
Fix empty license dialogs (#1182) 2021-03-06 13:01:17 +01:00
dependabot-preview[bot]
b20b8fb243
Bump firebase-bom from 26.5.0 to 26.6.0 (#1189) 2021-03-06 11:23:16 +00:00
dependabot-preview[bot]
7e4a212951
Bump agcp from 1.5.0.200 to 1.5.0.300 (#1187) 2021-03-06 10:55:37 +00:00
Kamil Studziński
6dfeed3a26
Fix API host key capitalisation for powiat krasnostawski (#1181) 2021-03-04 20:32:17 +00:00
Kamil Studziński
06a27199ee
Add early validation for special mail domains (#1000) (#1176) 2021-03-03 22:37:58 +01:00
Rafał Borcz
76039e5eb9
Remove hardcoded strings (#1177) 2021-03-03 20:18:03 +01:00
Kamil Studziński
6a4aaff8d6
Fix no system theme option in Czech and Slovak (#1178) 2021-03-03 19:16:46 +00:00
Rafał Borcz
9e2985864a
Add avatars (#1146) 2021-03-02 23:34:25 +00:00
Rafał Borcz
412057b512
Remove deprecations (#1170) 2021-03-02 17:28:47 +01:00
dependabot-preview[bot]
963caadced
Bump firebase-crashlytics-gradle from 2.5.0 to 2.5.1 (#1171) 2021-03-01 22:19:31 +00:00
Rafał Borcz
8388a8a5fc
Fix calling of binding outside lifecycle (#1169) 2021-03-01 21:57:47 +00:00
Rafał Borcz
a801c8f8be
Add exception ignoring to UpdateHelper when PendingIntent is duplicated (#1168) 2021-03-01 21:35:49 +00:00
dependabot-preview[bot]
9d8ad73e63
Bump hilt_version from 2.32-alpha to 2.33-beta (#1163)
* Bump hilt_version from 2.32-alpha to 2.33-beta

Bumps `hilt_version` from 2.32-alpha to 2.33-beta.

Updates `hilt-android-gradle-plugin` from 2.32-alpha to 2.33-beta
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/commits)

Updates `hilt-android` from 2.32-alpha to 2.33-beta
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/commits)

Updates `hilt-android-compiler` from 2.32-alpha to 2.33-beta
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Add inject before super.onCreate() in activity

* Fix format

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2021-02-27 22:49:50 +01:00
dependabot-preview[bot]
182f6c8a81
Bump kotlin_version from 1.4.30 to 1.4.31 (#1166) 2021-02-26 19:21:02 +00:00
dependabot-preview[bot]
1e4a3536cf
Bump desugar_jdk_libs from 1.1.1 to 1.1.5 (#1164) 2021-02-26 18:50:58 +00:00
dependabot-preview[bot]
169a314664
Bump about_libraries from 8.8.2 to 8.8.3 (#1165) 2021-02-26 18:49:43 +00:00
dependabot-preview[bot]
904eed648b
Bump hianalytics from 5.1.0.301 to 5.2.0.300 (#1161) 2021-02-24 23:00:00 +00:00
dependabot-preview[bot]
3bb94adece
Bump room from 2.3.0-beta01 to 2.3.0-beta02 (#1158) 2021-02-22 23:07:37 +00:00
Damian Czupryn
105b70fcad
Add Daxxxis to contributors (#1156) 2021-02-18 21:25:46 +01:00
Damian Czupryn
b4bf7c7589
Add Slovak to dialog (#1154) 2021-02-18 00:05:40 +01:00
Damian Czupryn
ff425d6d2b
Change background color of navigation and notification bars (#1120) 2021-02-18 00:05:27 +01:00
dependabot-preview[bot]
4fceb854b3
Bump activity-ktx from 1.1.0 to 1.2.0 (#1134) 2021-02-17 12:08:10 +00:00
dependabot-preview[bot]
3adac154b4
Bump firebase-crashlytics-gradle from 2.4.1 to 2.5.0 (#1147) 2021-02-17 11:55:27 +00:00
dependabot-preview[bot]
a320cf8f7c
Bump fragment-ktx from 1.2.5 to 1.3.0 (#1148) 2021-02-17 11:39:26 +00:00
dependabot-preview[bot]
1ed0884dfd
Bump hilt_version from 2.31.2-alpha to 2.32-alpha (#1133) 2021-02-17 11:38:51 +00:00
dependabot-preview[bot]
021e9726c6
Bump lifecycle-livedata-ktx from 2.2.0 to 2.3.0 (#1136) 2021-02-17 11:38:33 +00:00
dependabot-preview[bot]
3c438757e3
Bump firebase-bom from 26.4.0 to 26.5.0 (#1151) 2021-02-17 11:31:05 +00:00
Faierbel
99c4a65df5 Merge tag '1.0.1' into develop
Version 1.0.1
2021-02-16 12:46:54 +01:00
Faierbel
2c442fc87b Merge branch 'release/1.0.1' 2021-02-16 12:44:34 +01:00
Faierbel
44ba0d76de Version 1.0.1 2021-02-16 12:44:24 +01:00
Rafał Borcz
17aa77ad41
New Crowdin updates (#1152) 2021-02-16 12:12:35 +01:00
dependabot-preview[bot]
c18302b812
Bump junit from 4.13.1 to 4.13.2 (#1150) 2021-02-14 12:14:28 +00:00
dependabot-preview[bot]
de8e9bde49
Bump mockk from 1.10.5 to 1.10.6 (#1149) 2021-02-14 12:13:21 +00:00
Rafał Borcz
000cbd11a2
Fix EOF error in messages (#1145) 2021-02-13 20:39:52 +01:00
Rafał Borcz
5e3b89636f
Add checking vulcan average from both semesters (#1140) 2021-02-13 12:33:53 +01:00
Rafał Borcz
dd085a14fa
Revert "Bump fragment-ktx from 1.2.5 to 1.3.0 (#1138)" (#1144)
This reverts commit cac76857c4.
2021-02-13 10:58:01 +00:00
Rafał Borcz
bfe558d887
Update README (#1143) 2021-02-12 19:14:45 +01:00
Rafał Borcz
4841a0439d
New Crowdin updates (#1131) 2021-02-12 19:07:36 +01:00
dependabot-preview[bot]
cac76857c4
Bump fragment-ktx from 1.2.5 to 1.3.0 (#1138) 2021-02-12 18:05:33 +00:00
dependabot-preview[bot]
6b8b7c9143
Bump material from 1.3.0-rc01 to 1.3.0 (#1137) 2021-02-12 10:12:35 +01:00
dependabot-preview[bot]
53584026dc
Bump about_libraries from 8.7.0 to 8.8.2 (#1135) 2021-02-12 09:11:52 +00:00
dependabot-preview[bot]
7900ad913f
Bump kotlin_version from 1.4.21 to 1.4.30 (#1139) 2021-02-11 12:20:45 +00:00
Mikołaj Pich
8ec844a8fe Merge branch 'release/1.0.0' into develop 2021-02-07 23:48:43 +01:00
Mikołaj Pich
19ff953ab2 Merge branch 'release/1.0.0' 2021-02-07 23:48:38 +01:00
Mikołaj Pich
e29c211cf2 Version 1.0.0 2021-02-07 23:48:32 +01:00
Mikołaj Pich
2492a9c204
Update screenshots (#1130) 2021-02-07 22:08:39 +00:00
Rafał Borcz
61de1de532
New Crowdin updates (#1129) 2021-02-07 12:01:34 +00:00
Mikołaj Pich
b5862da776 Merge branch 'release/0.25.1' into develop 2021-02-06 16:54:26 +01:00
Mikołaj Pich
e0c802bf67 Merge branch 'release/0.25.1' 2021-02-06 16:54:22 +01:00
Mikołaj Pich
dcac138ff8 Version 0.25.1 2021-02-06 16:54:17 +01:00
Rafał Borcz
23411a608f
Fix nullable student guardians (#1128) 2021-02-06 16:19:50 +01:00
MRmlik12
87facd2663
Add MRmlik12 to contributors (#1126) 2021-02-05 15:49:29 +00:00
MRmlik12
bad0776cab
Add final average grades calculation with modifiers (#1125) 2021-02-05 10:50:35 +01:00
Rafał Borcz
a063aabc7c
Ignore webview init exceptions (#1124) 2021-02-03 20:59:24 +01:00
Mikołaj Pich
1fdbdf34b9 Merge branch 'release/0.25.0' into develop 2021-02-02 00:47:40 +01:00
Mikołaj Pich
624fd71dbb Merge branch 'release/0.25.0' 2021-02-02 00:47:35 +01:00
Mikołaj Pich
dfa10883d3 Version 0.25.0 2021-02-02 00:47:30 +01:00
Rafał Borcz
aff40df707
New Crowdin updates (#1095) 2021-02-02 00:25:27 +01:00
Mateusz Idziejczak
42f9594210
Fix empty message bug (#1122) 2021-02-02 00:11:34 +01:00
Rafał Borcz
3e3a080b70
Add nick for student (#1119) 2021-02-01 23:58:44 +01:00
Mateusz Idziejczak
39534aeda4
Add dark mode to swipe refresh layout (#1118) 2021-02-01 18:13:11 +01:00
Dominik Korsa
e39b053d2d
Change timetable icon (#1115) 2021-02-01 13:15:36 +01:00
Mateusz Idziejczak
28fd7460cb
Replace progressBar with CircularProgressIndicator (#1117) 2021-02-01 11:45:10 +01:00
Rafał Borcz
82b207b03a
Fix follow system language setting (#1113) 2021-01-31 22:38:30 +01:00
Mikołaj Pich
4984cb9b26
Update auto update priority policy (#1051) 2021-01-31 20:46:24 +00:00
Mikołaj Pich
e2ba265048
Add build date to version info (#1114) 2021-01-31 17:12:38 +01:00
Rafał Borcz
d1cd497a23
Fix null data in Status.SUCCESS in emission from average provider (#1105) 2021-01-30 16:07:37 +01:00
Rafał Borcz
dd5ce752da
Update gradle and build tools (#1108) 2021-01-30 15:26:31 +01:00
dependabot-preview[bot]
e5e95e7dec
Bump room from 2.3.0-alpha04 to 2.3.0-beta01 (#1112) 2021-01-30 14:22:08 +00:00
dependabot-preview[bot]
f5e4c63fed
Bump about_libraries from 8.6.9 to 8.7.0 (#1111) 2021-01-30 14:18:28 +00:00
dependabot-preview[bot]
70d42bb864
Bump agcp from 1.4.2.301 to 1.5.0.200 (#1109) 2021-01-30 14:14:08 +00:00
dependabot-preview[bot]
82df5b9515
Bump agconnect-crash from 1.4.2.301 to 1.5.0.200 (#1110) 2021-01-30 14:13:35 +00:00
dependabot-preview[bot]
6568c4abf8
Bump hilt-work from 1.0.0-alpha02 to 1.0.0-alpha03 (#1099) 2021-01-29 21:24:30 +00:00
Rafał Borcz
d79b1c9a58
Add account manager (#671) 2021-01-29 21:53:46 +01:00
dependabot-preview[bot]
26565b627a
Bump work_manager from 2.4.0 to 2.5.0 (#1103) 2021-01-28 20:58:15 +00:00
dependabot-preview[bot]
c0a53cb90c
Bump sonarqube-gradle-plugin from 3.1 to 3.1.1 (#1100) 2021-01-28 20:57:53 +00:00
dependabot-preview[bot]
2bcbac5ab3
Bump about_libraries from 8.6.7 to 8.6.9 (#1098) 2021-01-28 20:57:22 +00:00
dependabot-preview[bot]
5581fdcab8
Bump google-services from 4.3.4 to 4.3.5 (#1104) 2021-01-28 20:56:54 +00:00
dependabot-preview[bot]
6a8161cd98
Bump firebase-bom from 26.3.0 to 26.4.0 (#1102) 2021-01-28 20:26:38 +00:00
Rafał Borcz
e0b067fadd
Fix selected semester after change account (#1097) 2021-01-27 00:18:56 +01:00
Damian Czupryn
f37ddfe00f
Disable vibrations in data picker (#1093) 2021-01-24 20:01:18 +01:00
dependabot-preview[bot]
3a887f597b
Bump hilt_version from 2.30.1-alpha to 2.31.2-alpha (#1094) 2021-01-24 16:52:16 +00:00
Mikołaj Pich
52d359827e
Fix translations of month name in attendance summary (#1091) 2021-01-24 17:21:02 +01:00
Mikołaj Pich
a70ccbb0d0
Make strings in grade class stats translatable (#1092) 2021-01-24 17:20:26 +01:00
Mikołaj Pich
2b6386c522 Merge branch 'release/0.24.3' into develop 2021-01-21 14:24:45 +01:00
Mikołaj Pich
60ae14719d Merge branch 'release/0.24.3' 2021-01-21 14:24:41 +01:00
Mikołaj Pich
a4594b2853 Version 0.24.3 2021-01-21 14:14:39 +01:00
Mikołaj Pich
6578d2eb49 Merge branch 'release/0.24.2' into develop 2021-01-21 13:49:48 +01:00
Mikołaj Pich
e543c0aa2c Merge branch 'release/0.24.2' 2021-01-21 13:49:42 +01:00
Mikołaj Pich
17c80416fe Version 0.24.2 2021-01-21 13:49:35 +01:00
Mikołaj Pich
f2cb7f741b Merge branch 'release/0.24.1' into develop 2021-01-21 10:46:20 +01:00
Mikołaj Pich
51d9e9b9af Merge branch 'release/0.24.1' 2021-01-21 10:46:16 +01:00
Mikołaj Pich
b1e1b801b5 Version 0.24.1 2021-01-21 10:46:11 +01:00
Mikołaj Pich
04ff05c22a
Fix google play deploy config (#1089) 2021-01-21 10:24:38 +01:00
Mikołaj Pich
81c9144448 Merge branch 'release/0.24.0' into develop 2021-01-20 18:29:24 +01:00
Mikołaj Pich
70d456a6dc Merge branch 'release/0.24.0' 2021-01-20 18:29:19 +01:00
Mikołaj Pich
b55c05aaed Version 0.24.0 2021-01-20 18:29:13 +01:00
Rafał Borcz
01fd146c99
New Crowdin updates (#1088) 2021-01-20 18:03:18 +01:00
Rafał Borcz
5d849b3ada
Fix endless loading in grades (#1084) 2021-01-20 17:42:19 +01:00
dependabot-preview[bot]
1a4eaec47f
Bump gradle from 4.1.1 to 4.1.2 (#1086) 2021-01-20 10:53:33 +00:00
dependabot-preview[bot]
5b9d40a4f9
Bump about_libraries from 8.6.6 to 8.6.7 (#1085) 2021-01-20 10:50:20 +00:00
Mateusz Idziejczak
e6e9d201ce
Show appropriate message when message does not exist (#1083) 2021-01-20 11:49:06 +01:00
dependabot-preview[bot]
9128e0b55f
Bump about_libraries from 8.6.5 to 8.6.6 (#1080) 2021-01-16 14:10:49 +00:00
dependabot-preview[bot]
7f893a8868
Bump hianalytics from 5.1.0.300 to 5.1.0.301 (#1082) 2021-01-16 13:54:36 +00:00
dependabot-preview[bot]
89f92ed027
Bump sonarqube-gradle-plugin from 3.0 to 3.1 (#1081) 2021-01-16 13:52:33 +00:00
dependabot-preview[bot]
99e06f6539
Bump mockk from 1.10.4 to 1.10.5 (#1077) 2021-01-16 13:24:15 +00:00
dependabot-preview[bot]
12da5e5381
Bump firebase-bom from 26.2.0 to 26.3.0 (#1078) 2021-01-16 13:04:54 +00:00
Mikołaj Pich
a7bb026c1b
Use senderId to differentiate saved recipients between accounts (#1075) 2021-01-14 18:37:02 +01:00
Mikołaj Pich
8ce59a3098
Use userLoginId to differentiate saved mobiles devices between accounts (#1076) 2021-01-14 18:36:32 +01:00
Mikołaj Pich
a1d4b3d19e
Auto-refresh displayed data after some time (#1068)
* Auto-refresh displayed data after some time

* Use refresh interval from settings

* Auto-refresh exams

* Add refresh utils

* Auto-refresh timetable

* Auto-refresh grade details and summary

* Auto-refresh grades

* Auto-refresh attendance summary

* Add cacheKey variables

* Auto-refres completed lessons

* Auto-refres conferences

* Auto-refres homework

* Auto-refresh messages

* Auto-refresh mobile devices

* Auto-refresh notes

* Fix tests

* Fix instrumentation tests

* Create AutoRefreshHelper
2021-01-13 10:01:45 +00:00
dependabot-preview[bot]
64cc49055b
Bump coil from 1.1.0 to 1.1.1 (#1072) 2021-01-13 09:47:46 +00:00
dependabot-preview[bot]
91ece39517
Bump about_libraries from 8.6.3 to 8.6.5 (#1074) 2021-01-13 07:25:59 +00:00
Mikołaj Pich
a99e742472
Handle URLs from FCM push notification (#1070) 2021-01-11 10:41:17 +01:00
Mikołaj Pich
d332369872
Disable force dark theme on Android >9 (#1071) 2021-01-11 09:53:19 +01:00
Mikołaj Pich
205bcf9c22
Use work-gcm dependency in play flavor only (#1069) 2021-01-11 09:52:44 +01:00
dependabot-preview[bot]
344d404238
Bump hianalytics from 5.0.5.301 to 5.1.0.300 (#1060) 2021-01-05 04:37:48 +00:00
Mikołaj Pich
8b2dc514f4
Use Firebase Android BoM (#1064)
* Use Firebase Android BoM

* Use androidx-bom to resolve androidx versions

* Revert "Use androidx-bom to resolve androidx versions"

This reverts commit 55a79a61cf.
2021-01-03 23:21:25 +00:00
Mikołaj Pich
bee62d4769
Remove remote and local repositories (#1065)
* Remove remote and local repos

* Move repositories out of sub-packages

* Update chucker config

* Move repositories tests from androidTest to unit tests

* Rewrite grades tests

* Fix more tests

* Update grade statistics tests
2021-01-03 23:13:50 +00:00
dependabot-preview[bot]
fb36fb379a
Bump room from 2.2.5 to 2.2.6 (#1058) 2021-01-03 22:57:41 +00:00
dependabot-preview[bot]
a2c4f4a51d
Bump mockk from 1.10.3-jdk8 to 1.10.4 (#1059) 2021-01-02 12:49:57 +00:00
Rafał Borcz
b0d713dc0c
New Crowdin updates (#1053) 2020-12-28 23:34:35 +01:00
Mikołaj Pich
5a2a0e3d6d
Github workflow config improvements (#1056) 2020-12-28 22:45:21 +01:00
Mikołaj Pich
7fe638130e
Configure github actions (#1055)
* Create test.yml

* Change list of emulator api levels

* Downgrade emulator with api 30 to 29

* Exclude jdk.internal in jacoco config

* Use jdk 15

* Downgrade jdk to 11 due to jacoco incompatibility

gradle/gradle#15038

* Fix tests on jdk11

* Add codecov

* Add missing jacoco report generaction command

* Add flags to codecov uploads

* Add deploy config

* Replace travis badge with gh actions badge

* Add info about coroutines to readme, replace dagger with hilt

* Decrease instrumentation tests to 15 minutes

* Skip duplicate actions

* Remove comment

* Change os of instrumentation tests

* Downgrade android emulator runner to v2.13.0

* Add pre-build job

* Pass prebuild files between jobs

* Fix gh actions yaml config

* Tar build cache

* Fix upload-artifact filename

* Fix prebuild cache name

* Add more to cache, change cache key
2020-12-27 17:30:50 +00:00
Mikołaj Pich
9763208688
Add additional lessons to timetable (#1019) 2020-12-27 14:06:07 +01:00
Rafał Borcz
295fd0fd90
Add language event (#1052)
* Add log event to language

* Add log event to app
2020-12-26 22:40:21 +01:00
Mikołaj Pich
c052f31424 Merge branch 'release/0.23.1' into develop 2020-12-16 21:19:57 +01:00
Mikołaj Pich
3486d52a26 Merge branch 'release/0.23.1' 2020-12-16 21:19:52 +01:00
Mikołaj Pich
88c5c7d9dc Version 0.23.1 2020-12-16 21:19:47 +01:00
Mikołaj Pich
315e9b0595
Fix username label on registers other than default (#1050) 2020-12-16 20:48:01 +01:00
Rafał Borcz
3eba89aeb9
Disable recordException in HMS (#1048) 2020-12-10 21:12:59 +01:00
Rafał Borcz
1680ad233e
New translations strings.xml (Czech) (#1049) 2020-12-10 21:12:14 +01:00
dependabot-preview[bot]
93bc4e92a9
Bump kotlin_version from 1.4.20 to 1.4.21 (#1047) 2020-12-09 15:38:06 +00:00
Mikołaj Pich
7536f98e6e Merge branch 'release/0.23.0' into develop 2020-12-06 22:21:42 +01:00
Mikołaj Pich
afee97a706 Merge branch 'release/0.23.0' 2020-12-06 22:21:36 +01:00
Mikołaj Pich
73a92497ed Version 0.23.0 2020-12-06 22:12:18 +01:00
Mikołaj Pich
67cef0f6d9
Add register variant auto-matching based on email (#1041) 2020-12-06 21:23:02 +01:00
Rafał Borcz
6ca5e11371
Fix HMS analytics and crashlytics (#1042) 2020-12-06 19:31:35 +01:00
dependabot-preview[bot]
05a597313b
Bump hilt_version from 2.29.1-alpha to 2.30.1-alpha (#1035) 2020-12-06 17:54:09 +00:00
dependabot-preview[bot]
33d540e1c9
Bump desugar_jdk_libs from 1.0.10 to 1.1.1 (#1039) 2020-12-06 15:04:43 +00:00
dependabot-preview[bot]
d115372c3b
Bump coil from 1.0.0 to 1.1.0 (#1040) 2020-12-06 14:57:50 +00:00
dependabot-preview[bot]
e637896ad3
Bump firebase-crashlytics from 17.2.2 to 17.3.0 (#1038) 2020-12-06 14:50:57 +00:00
dependabot-preview[bot]
ce802cc737
Bump about_libraries from 8.6.2 to 8.6.3 (#1037) 2020-12-06 14:43:48 +00:00
dependabot-preview[bot]
bf342ed289
Bump kotlinx-coroutines-test from 1.4.0 to 1.4.2-native-mt (#1031) 2020-12-06 14:32:08 +00:00
dependabot-preview[bot]
40ec5bbe86
Bump kotlinx-coroutines-android from 1.4.0 to 1.4.2-native-mt (#1032) 2020-12-06 14:29:32 +00:00
Rafał Borcz
41dbd2d25f
New Crowdin updates (#1033) 2020-12-06 15:14:58 +01:00
dependabot-preview[bot]
f263b5534a
Bump mockk from 1.10.2 to 1.10.3-jdk8 (#1034) 2020-12-06 14:08:26 +00:00
dependabot-preview[bot]
7ed4787496
Bump chucker from 3.3.0 to 3.4.0 (#1027) 2020-12-03 14:19:21 +00:00
dependabot-preview[bot]
1428887204
Bump agconnect-crash from 1.4.1.300 to 1.4.2.301 (#1030) 2020-12-03 13:57:37 +00:00
dependabot-preview[bot]
0fc828f006
Bump agcp from 1.4.1.300 to 1.4.2.301 (#1024) 2020-12-03 13:48:25 +00:00
dependabot-preview[bot]
13906a7d62
Bump about_libraries from 8.4.3 to 8.6.2 (#1025) 2020-12-03 13:47:26 +00:00
dependabot-preview[bot]
3c0dda9a82
Bump hianalytics from 5.0.4.301 to 5.0.5.301 (#1023) 2020-12-03 13:29:49 +00:00
dependabot-preview[bot]
c42333cd35
Bump firebase-crashlytics-gradle from 2.3.0 to 2.4.1 (#1029) 2020-12-03 13:28:10 +00:00
dependabot-preview[bot]
c675dc8b84
Bump kotlin_version from 1.4.10 to 1.4.20 (#1026) 2020-12-03 13:27:47 +00:00
Rafał Borcz
5e9853b043
New Crowdin updates (#1022) 2020-11-21 15:50:18 +01:00
Rafał Borcz
c7fdcc2bbd
Add facebook link to about (#1021) 2020-11-17 16:58:24 +01:00
Stanisław Jelnicki
8a00ae95b8
Update contributor's username (#1020) 2020-11-13 23:59:45 +01:00
Mikołaj Pich
a1ebf6c6ad
Add average in class grades statistics (#1017) 2020-11-11 16:03:52 +01:00
Rafał Borcz
ada5854d10
New Crowdin updates (#1013) 2020-11-02 17:54:02 +01:00
dependabot-preview[bot]
fe191bb0df
Bump firebase-analytics from 17.6.0 to 18.0.0 (#1009) 2020-11-01 18:36:55 +00:00
dependabot-preview[bot]
9eb091fbf4
Bump kotlinx-coroutines-android from 1.3.9 to 1.4.0 (#1005) 2020-11-01 18:16:21 +00:00
dependabot-preview[bot]
57e760844f
Bump kotlinx-coroutines-test from 1.3.9 to 1.4.0 (#1012) 2020-11-01 18:15:52 +00:00
Rafał Borcz
20644a7a67
Update english strings (#1014) 2020-11-01 19:05:05 +01:00
dependabot-preview[bot]
b3109aed0b
Bump firebase-messaging from 20.3.0 to 21.0.0 (#1008) 2020-11-01 16:40:39 +00:00
dependabot-preview[bot]
9ba999feb0
Bump about_libraries from 8.4.2 to 8.4.3 (#1011) 2020-11-01 16:28:32 +00:00
dependabot-preview[bot]
7c9e85793b
Bump firebase-inappmessaging-display-ktx from 19.1.1 to 19.1.2 (#1007) 2020-11-01 16:15:17 +00:00
dependabot-preview[bot]
6af8263952
Bump firebase-inappmessaging-ktx from 19.1.1 to 19.1.2 (#1010) 2020-11-01 15:55:51 +00:00
dependabot-preview[bot]
83d1d860a6
Bump coil from 1.0.0-rc3 to 1.0.0 (#1006) 2020-11-01 15:55:36 +00:00
Mikołaj Pich
8830240182
Add conferences (#1004) 2020-11-01 16:53:31 +01:00
Mikołaj Pich
c3061e75b5 Merge branch 'release/0.22.2' into develop 2020-10-30 12:31:58 +01:00
Mikołaj Pich
5f1bb7c1d0 Merge branch 'release/0.22.2' into master 2020-10-30 12:31:50 +01:00
Mikołaj Pich
c6f4c868b2 Version 0.22.2 2020-10-30 12:31:41 +01:00
Mikołaj Pich
c634c64e70
Update hianalytics to 5.0.4.301 (#1003) 2020-10-30 12:24:00 +01:00
Mikołaj Pich
da2b7dbf7e Merge branch 'release/0.22.1' into develop 2020-10-30 01:49:56 +01:00
Mikołaj Pich
26267507eb Merge branch 'release/0.22.1' into master 2020-10-30 01:49:42 +01:00
Mikołaj Pich
24d0c5057b Version 0.22.1 2020-10-30 01:49:30 +01:00
Rafał Borcz
b05026a6e6
New Crowdin updates (#1002) 2020-10-30 00:54:35 +01:00
Mikołaj Pich
8036f3d7f7
Add HMS flavor (#998) 2020-10-29 13:58:56 +01:00
Rafał Borcz
23e309d38e
New Crowdin updates (#993) 2020-10-26 11:54:27 +01:00
Mikołaj Pich
bf92c6b2e9
Fix grade header item object comparision (#999) 2020-10-25 12:16:19 +01:00
Kacper Ziubryniewicz
c00b5edaf7
Make AppGallery badge background transparent. (#997) 2020-10-22 16:17:52 +02:00
dependabot-preview[bot]
cb09ca13dc
Bump junit from 4.13 to 4.13.1 (#995) 2020-10-15 18:36:31 +00:00
dependabot-preview[bot]
3d68b8e629
Bump gradle from 4.0.2 to 4.1.0 (#996) 2020-10-15 18:36:13 +00:00
Mikołaj Pich
b3173581e5 Merge tag '0.22.0' into develop
Version 0.22.0
2020-10-15 17:54:27 +02:00
Mikołaj Pich
ddac1d0f98 Merge branch 'release/0.22.0' into master 2020-10-15 17:54:22 +02:00
Mikołaj Pich
db6a359bea Version 0.22.0 2020-10-15 17:54:14 +02:00
Mikołaj Pich
e7221e6a32
Add Vulcan and Scrapper Exceptions to known exceptions (#994) 2020-10-15 15:55:59 +02:00
Mikołaj Pich
db9c2640c7
Add in-app updates support (#914) 2020-10-15 01:00:41 +02:00
Mikołaj Pich
ca67e144e4
Add ConnectException and StreamResetException to known exceptions (#992) 2020-10-13 22:32:15 +02:00
Rafał Borcz
da2346ed83
New Crowdin updates (#987) 2020-10-11 21:00:48 +02:00
Mikołaj Pich
a87818f3d0
Cancel scheduled lesson notifications which turned into canceled (#991) 2020-10-11 20:51:03 +02:00
Mikołaj Pich
5092f8c0bf
Reload grade list on mark all as read (#990) 2020-10-11 20:33:18 +02:00
Mateusz Idziejczak
af0787c0b1
Add support for BIG font (#989)
Co-authored-by: Faierbel <RafalBO99@outlook.com>
2020-10-10 02:53:25 +02:00
Mateusz Idziejczak
721b4ac797
Add support for night mode in account switcher dialog (#988) 2020-10-09 21:24:58 +02:00
Rafał Borcz
26a69092cc
Add AppGallery badge (#986) 2020-10-07 11:19:34 +02:00
dependabot-preview[bot]
2bd0c75055
Bump about_libraries from 8.3.1 to 8.4.2 (#985) 2020-10-06 21:56:46 +00:00
dependabot-preview[bot]
d6f3c57293
Bump moshi from 1.10.0 to 1.11.0 (#984) 2020-10-06 21:45:38 +00:00
dependabot-preview[bot]
518387e7bb
Bump gradle from 4.0.1 to 4.0.2 (#982) 2020-10-06 21:43:56 +00:00
dependabot-preview[bot]
ca6dfbf2d0
Bump core-ktx from 1.3.1 to 1.3.2 (#983) 2020-10-06 21:43:50 +00:00
Rafał Borcz
da6d8a74fd
New Crowdin updates (#981) 2020-10-06 23:34:27 +02:00
Rafał Borcz
e35e4ef152
New Crowdin updates (#948) 2020-10-03 13:01:11 +02:00
Rafał Borcz
40fc6ec2e0
Upgrade android sdk to 30 (#966) 2020-10-03 01:08:57 +02:00
dependabot-preview[bot]
b91973aec3
Bump chucker from 3.2.0 to 3.3.0 (#979) 2020-10-01 15:38:29 +00:00
dependabot-preview[bot]
047e70ad46
Bump firebase-crashlytics from 17.2.1 to 17.2.2 (#974) 2020-09-30 20:13:18 +00:00
dependabot-preview[bot]
112c1eb793
Bump moshi from 1.9.3 to 1.10.0 (#972) 2020-09-30 20:13:01 +00:00
dependabot-preview[bot]
c479b31670
Bump coil from 1.0.0-rc2 to 1.0.0-rc3 (#976) 2020-09-30 20:01:45 +00:00
dependabot-preview[bot]
43ed8c8fce
Bump firebase-messaging from 20.2.4 to 20.3.0 (#973) 2020-09-30 19:52:02 +00:00
dependabot-preview[bot]
613fa44c27
Bump about_libraries from 8.3.0 to 8.3.1 (#975) 2020-09-30 19:34:53 +00:00
dependabot-preview[bot]
f21216286d
Bump mockk from 1.10.0 to 1.10.2 (#977) 2020-09-30 19:34:13 +00:00
dependabot-preview[bot]
7298d0d75a
Bump google-services from 4.3.3 to 4.3.4 (#978) 2020-09-30 19:33:22 +00:00
Mikołaj Pich
ee0fbcdfd6 Merge tag '0.21.2' into develop
Version 0.21.2
2020-09-29 21:10:17 +02:00
Mikołaj Pich
c362ad12c7 Merge branch 'release/0.21.2' into master 2020-09-29 21:10:11 +02:00
Mikołaj Pich
8a1a712d6d Version 0.21.2 2020-09-29 21:10:05 +02:00
Mikołaj Pich
1f0f6b3e51
Fix string pair list type converter (#971) 2020-09-29 21:02:49 +02:00
Mikołaj Pich
11487e77ca Merge tag '0.21.1' into develop
Version 0.21.1
2020-09-29 11:43:58 +02:00
Mikołaj Pich
fd0fd4df55 Merge branch 'release/0.21.1' into master 2020-09-29 11:43:54 +02:00
Mikołaj Pich
d95a33787b Version 0.21.1 2020-09-29 11:43:49 +02:00
Mikołaj Pich
e5661098d9
Fix string pair list type converter (#970) 2020-09-29 11:42:54 +02:00
Mikołaj Pich
d020b01794 Merge tag '0.21.0' into develop
Version 0.21.0
2020-09-27 22:12:31 +02:00
Mikołaj Pich
d8b1264024 Merge branch 'release/0.21.0' into master 2020-09-27 22:12:27 +02:00
Mikołaj Pich
cddd17650b Version 0.21.0 2020-09-27 22:11:55 +02:00
Mikołaj Pich
a0f9c70036
Migrate from gson to moshi (#969) 2020-09-27 20:59:27 +02:00
Mateusz Idziejczak
2e05416fb5
Show groups next to subjects in timetable (#953) 2020-09-27 16:33:36 +02:00
Mateusz Idziejczak
d32ebd66de
Add subjects sorting in grades (#946) 2020-09-27 16:28:39 +02:00
Mateusz Idziejczak
c6a99f1000
Add remembering the full screen mode in homework (#956)
Co-authored-by: Faierbel <RafalBO99@outlook.com>
2020-09-27 14:49:19 +02:00
Mateusz Idziejczak
bafe52e310
Different notification for notes and praises (#952) 2020-09-25 15:46:08 +02:00
Mateusz Idziejczak
e08abc1fc2
Show subjects without grades in "Grades" (#947) 2020-09-25 15:45:07 +02:00
Mateusz Idziejczak
2a74b11cce
Add app shortcuts (#939)
Co-authored-by: Faierbel <RafalBO99@outlook.com>
2020-09-25 15:37:19 +02:00
Mikołaj Pich
b0b3ccfd53
Upgrade gradle wrapper to 6.6.1 (#968) 2020-09-20 21:54:59 +02:00
Mikołaj Pich
6c68456f7a Merge tag '0.20.5' into develop
Version 0.20.5
2020-09-19 13:03:32 +02:00
Mikołaj Pich
3e8e9b4ecc Merge branch 'release/0.20.5' into master 2020-09-19 13:03:28 +02:00
Mikołaj Pich
d6ebc343d5 Version 0.20.5 2020-09-19 01:25:34 +02:00
Mikołaj Pich
73be416807
Fix crash in flowWithResourceIn() (#967) 2020-09-19 00:57:55 +02:00
Mikołaj Pich
0cb65a29ba Merge tag '0.20.4' into develop
Version 0.20.4
2020-09-13 19:00:45 +02:00
Mikołaj Pich
13198f2ab4 Merge branch 'release/0.20.4' into master 2020-09-13 19:00:39 +02:00
Mikołaj Pich
cd92f37435 Version 0.20.4 2020-09-13 19:00:32 +02:00
Mikołaj Pich
5d8fb376ab
Expand exam sync date range to next month (#960) 2020-09-13 18:37:34 +02:00
Mikołaj Pich
47150364d8
Fix lifecycle of timer tasks in timetable lessons (#958)
Co-authored-by: Faierbel <RafalBO99@outlook.com>
2020-09-13 16:27:53 +02:00
dependabot-preview[bot]
792b123598
Bump coil from 1.0.0-rc1 to 1.0.0-rc2 (#961) 2020-09-13 14:07:30 +00:00
dependabot-preview[bot]
acf5c8e9ba
Bump firebase-crashlytics-gradle from 2.2.1 to 2.3.0 (#964) 2020-09-13 14:04:41 +00:00
dependabot-preview[bot]
53561668fc
Bump hilt_version from 2.28.3-alpha to 2.29.1-alpha (#962) 2020-09-13 14:03:09 +00:00
dependabot-preview[bot]
7cfe58d311
Bump material from 1.2.0 to 1.2.1 (#963) 2020-09-13 14:02:31 +00:00
Mikołaj Pich
cd51fac621
Add eduportal.koszalin.pl register (#959) 2020-09-13 13:46:45 +02:00
Mikołaj Pich
adde5541e2
Move timetable notifications scheduling to background thread (#954) 2020-09-11 13:02:16 +02:00
Mikołaj Pich
6e56d3ff06
Ignore empty semesters on refresh (#955) 2020-09-09 13:28:44 +02:00
Mateusz Idziejczak
ec761f6329
Fix bug in grade statistics (#951) 2020-09-08 20:13:17 +02:00
Mateusz Idziejczak
6363c90e37
Disable sound of upcoming lessons notification (fix) (#950) 2020-09-07 20:28:32 +02:00
Mikołaj Pich
c30f105be5
Fix crash on unknown attendance category type (#949) 2020-09-07 09:35:26 +02:00
Mikołaj Pich
9f85b2206a Merge tag '0.20.3' into develop
Version 0.20.3
2020-09-04 23:42:12 +02:00
Mikołaj Pich
42515fd084 Merge branch 'release/0.20.3' into master 2020-09-04 23:42:07 +02:00
Mikołaj Pich
9a7c04fe7b Version 0.20.3 2020-09-04 23:42:01 +02:00
Mikołaj Pich
debb21f5f9
Add full stacktrace to errors list in sync now (#945) 2020-09-03 21:10:39 +02:00
Mikołaj Pich
18b9bf42e1
Fix crash in flowWithResourceIn() (#944) 2020-09-03 20:54:28 +02:00
Mikołaj Pich
6ded83d132
Fix attendance item description (#943) 2020-09-03 20:52:24 +02:00
Mikołaj Pich
71d37a1c6c Merge tag '0.20.2' into develop
Version 0.20.2
2020-09-02 00:23:49 +02:00
Mikołaj Pich
3975d06cde Merge branch 'release/0.20.2' into master 2020-09-02 00:23:45 +02:00
Mikołaj Pich
ee168bafe0 Version 0.20.2 2020-09-02 00:23:41 +02:00
Mikołaj Pich
42ed7e0ae1 Merge tag '0.20.1' into develop
Version 0.20.1
2020-09-02 00:14:35 +02:00
Mikołaj Pich
0e92447974 Merge branch 'release/0.20.1' into master 2020-09-02 00:14:23 +02:00
Mikołaj Pich
40492e6c01 Version 0.20.1 2020-09-02 00:14:18 +02:00
Mikołaj Pich
69a1193154
Fix semester list refresh on no current semester found (#940) 2020-09-01 23:58:18 +02:00
Mikołaj Pich
0f65af8958
Fix grade summary empty view (#941) 2020-09-01 23:57:56 +02:00
Rafał Borcz
2ad1d086e0
Fix lucky number notification (#937) 2020-09-01 15:39:34 +02:00
Rafał Borcz
f8b7baef24
Remove force sync dialog (#938) 2020-09-01 14:58:45 +02:00
Mateusz Idziejczak
90be9d1add
Disable notification sound (#936) 2020-09-01 12:57:45 +02:00
Mikołaj Pich
20f931c5cc
Fix recaptcha loading in password recover (#935) 2020-09-01 09:33:14 +02:00
Mikołaj Pich
9997b1adbb
Add skarzyskokamienna vulcan register (#934) 2020-09-01 09:31:36 +02:00
Mikołaj Pich
eb616eedc7
Fix crash in flowWithResourceIn() (#933) 2020-09-01 09:31:01 +02:00
Rafał Borcz
a5de39a366
Update UI dependencies (#927) 2020-08-31 12:55:51 +02:00
dependabot-preview[bot]
57bc2b2533
Bump firebase-crashlytics from 17.1.1 to 17.2.1 (#931) 2020-08-31 10:09:37 +00:00
dependabot-preview[bot]
d1ce16d2b1
Bump runner from 1.2.0 to 1.3.0 (#932) 2020-08-31 10:03:20 +00:00
dependabot-preview[bot]
54fb01cd0d
Bump firebase-inappmessaging-display-ktx from 19.1.0 to 19.1.1 (#930) 2020-08-31 09:42:25 +00:00
dependabot-preview[bot]
370cfbf22a
Bump core from 1.2.0 to 1.3.0 (#929) 2020-08-31 09:42:18 +00:00
Mikołaj Pich
d198a2ba21 Merge tag '0.20.0' into develop
Version 0.20.0
2020-08-29 23:57:20 +02:00
Mikołaj Pich
580ad58dd6 Merge branch 'release/0.20.0' into master 2020-08-29 23:57:14 +02:00
Mikołaj Pich
b5f7c5f318 Version 0.20.0 2020-08-29 23:57:06 +02:00
Mikołaj Pich
7e2de594a4
Fix messages after 20.09 update (#916) 2020-08-29 23:53:55 +02:00
dependabot-preview[bot]
36984e08b5
Bump coil from 0.11.0 to 1.0.0-rc1 (#920) 2020-08-29 11:12:27 +00:00
dependabot-preview[bot]
f8031e1eca
Bump appcompat from 1.2.0-rc02 to 1.2.0 (#926) 2020-08-29 09:39:31 +00:00
dependabot-preview[bot]
5bc49b2e74
Bump firebase-inappmessaging-ktx from 19.1.0 to 19.1.1 (#918) 2020-08-29 09:29:00 +00:00
dependabot-preview[bot]
ba81b4b465
Bump junit from 1.1.1 to 1.1.2 (#924) 2020-08-29 09:20:43 +00:00
dependabot-preview[bot]
5cc31a7c5e
Bump firebase-crashlytics-gradle from 2.2.0 to 2.2.1 (#923) 2020-08-29 09:14:35 +00:00
dependabot-preview[bot]
de70719d38
Bump appcompat-resources from 1.1.0 to 1.2.0 (#922) 2020-08-29 09:09:41 +00:00
dependabot-preview[bot]
9f315b3af1
Bump firebase-analytics from 17.4.4 to 17.5.0 (#917) 2020-08-29 08:50:49 +00:00
Mikołaj Pich
d5187d1808
Save semesters with students during registration (#915) 2020-08-26 10:25:01 +02:00
dependabot-preview[bot]
ca7d977342
Bump work_manager from 2.3.4 to 2.4.0 (#910)
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-08-02 18:41:22 +02:00
dependabot-preview[bot]
062985c5a0
Bump firebase-messaging from 20.2.3 to 20.2.4 (#912) 2020-08-02 16:30:31 +00:00
dependabot-preview[bot]
8922d7d48d
Bump core-ktx from 1.3.0 to 1.3.1 (#911) 2020-08-02 16:30:06 +00:00
Mikołaj Pich
3ba16f2903
Migrate to dagger hilt (#909) 2020-08-02 18:29:41 +02:00
Mikołaj Pich
6a1a347579
Migrate workers and app widgets to coroutines (#907) 2020-07-27 13:20:45 +02:00
Mikołaj Pich
6c4f27aff5
Remove threetenabp (#908) 2020-07-27 11:44:30 +02:00
dependabot-preview[bot]
f6dce0fbda
Bump kotlinx-coroutines-rx2 from 1.3.7 to 1.3.8 (#901) 2020-07-19 12:00:08 +00:00
Mikołaj Pich
1ac42bb56d
Migrate presenters from rxjava to coroutines flow (#894) 2020-07-19 13:30:29 +02:00
dependabot-preview[bot]
b0a674b471
Bump kotlinx-coroutines-core from 1.3.7 to 1.3.8 (#903) 2020-07-19 11:25:48 +00:00
dependabot-preview[bot]
1c1a90c12f
Bump firebase-inappmessaging-display-ktx from 19.0.7 to 19.1.0 (#905) 2020-07-18 23:51:24 +00:00
dependabot-preview[bot]
d4ee1f8b98
Bump firebase-crashlytics from 17.1.0 to 17.1.1 (#902) 2020-07-18 23:32:38 +00:00
dependabot-preview[bot]
152382a0c9
Bump firebase-analytics from 17.4.3 to 17.4.4 (#906) 2020-07-18 23:31:27 +00:00
dependabot-preview[bot]
776972514a
Bump firebase-inappmessaging-ktx from 19.0.7 to 19.1.0 (#904) 2020-07-18 23:00:03 +00:00
dependabot-preview[bot]
e072bf9fe3
Bump gradle from 4.0.0 to 4.0.1 (#900) 2020-07-18 22:42:05 +00:00
dependabot-preview[bot]
927415f9a3
Bump dagger from 2.28.1 to 2.28.3 (#899) 2020-07-18 22:41:41 +00:00
dependabot-preview[bot]
76b2ab1f25
Bump firebase-messaging from 20.2.1 to 20.2.3 (#898) 2020-07-18 22:40:01 +00:00
Rafał Borcz
c9a0bbda01
New Crowdin updates (#888) 2020-07-12 17:55:27 +02:00
dependabot-preview[bot]
cbabe44461
Bump about_libraries from 8.2.0 to 8.3.0 (#896) 2020-07-11 09:41:12 +00:00
dependabot-preview[bot]
5c313f986c
Bump swiperefreshlayout from 1.1.0-rc01 to 1.1.0 (#897) 2020-07-02 10:15:34 +00:00
dependabot-preview[bot]
f2682c6d30
Bump dagger from 2.28 to 2.28.1 (#895) 2020-07-02 10:15:28 +00:00
dependabot-preview[bot]
3571f8bd04
Bump firebase-crashlytics from 17.0.1 to 17.1.0 (#892) 2020-06-20 16:00:47 +00:00
dependabot-preview[bot]
dfcd5fc4d0
Bump firebase-crashlytics-gradle from 2.1.1 to 2.2.0 (#889) 2020-06-20 15:38:08 +00:00
dependabot-preview[bot]
b8ea0ab0f9
Bump firebase-messaging from 20.2.0 to 20.2.1 (#890) 2020-06-20 15:37:34 +00:00
Mikołaj Pich
4434d6f024
Migrate repositories from rxjava to coroutines (#885) 2020-06-20 15:07:57 +02:00
Mikołaj Pich
8cee882c08 Merge tag '0.19.0' into develop
Version 0.19.0
2020-06-14 22:44:41 +02:00
Mikołaj Pich
9f87b92937 Merge branch 'release/0.19.0' 2020-06-14 22:44:36 +02:00
Mikołaj Pich
c13f12f729 Version 0.19.0 2020-06-14 22:40:36 +02:00
Rafał Borcz
dfe7981e7f
New Crowdin translations (#874)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2020-06-14 22:37:58 +02:00
Dominik Korsa
6e1ddb482e
Message fuzzy search (#869) 2020-06-14 14:05:24 +02:00
Dominik Korsa
924bcb0d64
Message sharing and printing (#866) 2020-06-14 00:50:09 +02:00
Dominik Korsa
a6682c9b73
Add predicted and final grade notifications (#872) 2020-06-13 17:11:18 +02:00
Dominik Korsa
a529836937
Fix lint errors (#873) 2020-06-13 14:12:01 +02:00
Dominik Korsa
a05da2656a
Add account headers in student picker (#871) 2020-06-12 21:35:51 +02:00
Mikołaj Pich
30af77614e
Fix showing summary summary for subjects without partial grades (#877) 2020-06-11 14:38:04 +02:00
dependabot-preview[bot]
eedaa63771
Bump sonarqube-gradle-plugin from 2.8 to 3.0 (#882) 2020-06-11 12:05:54 +00:00
dependabot-preview[bot]
f151f7bd62
Bump about_libraries from 8.1.6 to 8.2.0 (#879) 2020-06-11 12:05:30 +00:00
dependabot-preview[bot]
00943717a2
Bump firebase-crashlytics from 17.0.0 to 17.0.1 (#880) 2020-06-11 12:02:38 +00:00
dependabot-preview[bot]
8cce81585a
Bump firebase-analytics from 17.4.2 to 17.4.3 (#881) 2020-06-11 12:02:10 +00:00
dependabot-preview[bot]
5529ffcf73
Bump fragment-ktx from 1.2.4 to 1.2.5 (#878) 2020-06-11 12:01:52 +00:00
Mikołaj Pich
7e6f892e23 Merge tag '0.18.3' into develop
Version 0.18.3
2020-06-10 19:18:31 +02:00
Mikołaj Pich
d3a6ea5acf Merge branch 'release/0.18.3' 2020-06-10 19:18:23 +02:00
Mikołaj Pich
674a78b661 Version 0.18.3 2020-06-10 19:18:09 +02:00
Mikołaj Pich
5c84c8d5b1
Fix force average calc from two semesters (#870) 2020-06-10 17:28:49 +02:00
Mikołaj Pich
522a36d670
Fix message deleting (#875) 2020-06-10 16:26:45 +02:00
Mikołaj Pich
2d0cfc3e8e Merge tag '0.18.2' into develop
Version 0.18.2
2020-06-02 17:08:02 +02:00
Mikołaj Pich
4b6b722f87 Merge branch 'release/0.18.2' 2020-06-02 17:07:58 +02:00
Mikołaj Pich
419675066f Version 0.18.2 2020-06-02 17:07:52 +02:00
Mikołaj Pich
191b1ad022
Emulate summaries from grade list when summaries are empty (#855) 2020-06-02 15:51:15 +02:00
Mikołaj Pich
792e44a9d0
Fix login button state in student select login fragment (#863) 2020-06-02 15:50:32 +02:00
Rafał Borcz
ff5a47b0df
New Crowdin translations (#856) 2020-06-02 15:18:41 +02:00
Mikołaj Pich
7bf0acb703
Revert "Bump sonarqube-gradle-plugin from 2.8 to 3.0" (#864)
This reverts commit ab7d30c995.
2020-06-02 15:13:41 +02:00
Mikołaj Pich
ba5dbf90d8
Fixes in updating adapter items (#854) 2020-06-02 01:04:41 +02:00
Mikołaj Pich
54f41aaa63
Fix too many alarms on samsung devices (#859) 2020-06-02 01:04:02 +02:00
dependabot-preview[bot]
1db42210e8
Bump about_libraries from 8.1.4 to 8.1.6 (#861)
Bumps `about_libraries` from 8.1.4 to 8.1.6.

Updates `aboutlibraries-plugin` from 8.1.4 to 8.1.6
- [Release notes](https://github.com/mikepenz/AboutLibraries/releases)
- [Changelog](https://github.com/mikepenz/AboutLibraries/blob/develop/gradle-release.gradle)
- [Commits](https://github.com/mikepenz/AboutLibraries/compare/v8.1.4...v8.1.6)

Updates `aboutlibraries-core` from 8.1.4 to 8.1.6
- [Release notes](https://github.com/mikepenz/AboutLibraries/releases)
- [Changelog](https://github.com/mikepenz/AboutLibraries/blob/develop/gradle-release.gradle)
- [Commits](https://github.com/mikepenz/AboutLibraries/compare/v8.1.4...v8.1.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-02 01:02:16 +02:00
Mikołaj Pich
fb554a4a3b
Fix capitalization in new message activity (#860) 2020-06-02 01:01:58 +02:00
Mikołaj Pich
d8d13c73fb
Filter out empty items in grade summary (#857) 2020-06-02 01:01:02 +02:00
Mikołaj Pich
5c0160a24d
Don't capture click on login student select checkbox (#862) 2020-06-02 00:57:22 +02:00
dependabot-preview[bot]
ab7d30c995
Bump sonarqube-gradle-plugin from 2.8 to 3.0 (#853) 2020-05-30 12:19:52 +00:00
dependabot-preview[bot]
1cfa1f15c0
Bump gradle from 3.6.3 to 4.0.0 (#852) 2020-05-30 11:33:43 +00:00
dependabot-preview[bot]
2149a4db9f
Bump about_libraries from 8.1.3 to 8.1.4 (#851) 2020-05-30 11:17:22 +00:00
dependabot-preview[bot]
df57d16d21
Bump dagger from 2.27 to 2.28 (#850) 2020-05-30 11:16:58 +00:00
Piotr Romanowski
2ff031005e
Fix displaying the feature disabled message in completed lessons (#849) 2020-05-30 13:15:28 +02:00
Mikołaj Pich
b9ab85ee55 Merge tag '0.18.1' into develop
Version 0.18.1
2020-05-24 21:20:28 +02:00
Mikołaj Pich
064998129e Merge branch 'release/0.18.1' 2020-05-24 21:20:23 +02:00
Mikołaj Pich
4044cdd9a5 Version 0.18.1 2020-05-24 21:20:17 +02:00
Rafał Borcz
1ee10a5902
New Crowdin translations (#847) 2020-05-24 21:18:49 +02:00
dependabot-preview[bot]
27b1d076c7
Bump firebase-inappmessaging-ktx from 19.0.6 to 19.0.7 (#844) 2020-05-24 21:03:35 +02:00
dependabot-preview[bot]
c8b32fdb3b
Bump firebase-analytics from 17.4.1 to 17.4.2 (#843) 2020-05-24 21:02:42 +02:00
dependabot-preview[bot]
0b4434fdb6
Bump firebase-crashlytics-gradle from 2.1.0 to 2.1.1 (#841) 2020-05-24 20:53:59 +02:00
Rafał Borcz
699fbff082
Fix debug channel (#846) 2020-05-24 20:53:23 +02:00
dependabot-preview[bot]
4c295f2ab4
Bump firebase-messaging from 20.1.7 to 20.2.0 (#839) 2020-05-24 18:42:24 +00:00
dependabot-preview[bot]
dcbaa170db
Bump about_libraries from 8.1.2 to 8.1.3 (#845) 2020-05-24 20:36:09 +02:00
dependabot-preview[bot]
c71b533645
Bump firebase-inappmessaging-display-ktx from 19.0.6 to 19.0.7 (#838) 2020-05-24 18:10:47 +00:00
Mikołaj Pich
63f2576ff1
Hide advanced login options button (#837) 2020-05-24 20:07:24 +02:00
Mikołaj Pich
b744a4182b
Open dontkillmyapp.com if no action found in app killer manager (#835) 2020-05-24 20:04:09 +02:00
Mikołaj Pich
0c4364609b
Show check for updates dialog before report a bug (#834) 2020-05-24 20:03:46 +02:00
Mikołaj Pich
3308d7fe6f
Wrap long preference titles (#836) 2020-05-24 19:52:01 +02:00
Mikołaj Pich
2cdde78c54
Allow access to saturday in timetable and attendance (#833) 2020-05-24 19:48:56 +02:00
Mikołaj Pich
428b599be0
Improve firebase logging (#832) 2020-05-24 19:48:14 +02:00
Mikołaj Pich
3541ab81b8
Destroy webview in password recover before setting binding to null (#829) 2020-05-24 19:47:20 +02:00
Mikołaj Pich
7fa14e5077
Set app_name in build.gradle (#830) 2020-05-24 19:36:40 +02:00
Mikołaj Pich
cec1068f2e
Fix crash in timetable time left (#826) 2020-05-24 19:34:10 +02:00
Mikołaj Pich
f737018548
Add debug statements to get/update methods in grade details adapter (#827) 2020-05-24 19:33:04 +02:00
Mikołaj Pich
9c01316178
Fix mark message as read in search mode (#828) 2020-05-24 19:24:01 +02:00
Mikołaj Pich
c3a6f8253a
Fix grade sorting (#825) 2020-05-24 19:23:35 +02:00
Rafał Borcz
d558c4db66
New Crowdin translations (#817) 2020-05-23 16:34:26 +02:00
Mikołaj Pich
722886aaf2 Merge tag '0.18.0' into develop
Version 0.18.0
2020-05-21 00:59:19 +02:00
Mikołaj Pich
31902a7667 Merge branch 'release/0.18.0' 2020-05-21 00:59:13 +02:00
Mikołaj Pich
4c1c4f8a43 Version 0.18.0 2020-05-21 00:59:05 +02:00
Mikołaj Pich
7850412ba9
Fix crash in timetable on api < 21 (#816) 2020-05-20 23:08:32 +02:00
Rafał Borcz
4f0ff5f49c
New Crowdin translations (#813) 2020-05-20 22:48:09 +02:00
Mikołaj Pich
131ba7dbb1
Add app killer manager to settings (#808) 2020-05-20 16:59:26 +02:00
Dominik Korsa
b95b529015
Add lesson time left display (#550) 2020-05-20 16:06:24 +02:00
Mikołaj Pich
29226dd93e
Add notification about upcoming lesson (#578) 2020-05-20 15:11:01 +02:00
Mikołaj Pich
115da64167
Add search in messages (#804) 2020-05-20 14:12:32 +02:00
Mikołaj Pich
6cd1877af7
Fix notifications on android 8.0 (#814) 2020-05-20 12:34:29 +02:00
dependabot-preview[bot]
78a90591fd
Bump coil from 0.10.1 to 0.11.0 (#812) 2020-05-16 21:06:45 +00:00
dependabot-preview[bot]
45265d025d
Bump appcompat from 1.2.0-beta01 to 1.2.0-rc01 (#811) 2020-05-16 20:52:37 +00:00
dependabot-preview[bot]
9bf5c2dc40
Bump firebase-crashlytics-gradle from 2.0.0 to 2.1.0 (#810) 2020-05-16 20:48:15 +00:00
dependabot-preview[bot]
ee4bdd2a9a
Bump firebase-analytics from 17.4.0 to 17.4.1 (#809) 2020-05-16 20:46:11 +00:00
Mikołaj Pich
0b75635ad5
Add option to hide/show chart list in grade class stats (#807) 2020-05-16 22:21:14 +02:00
Mikołaj Pich
f7b5b9c413
Add fullscreen mode to homework dialog (#806) 2020-05-16 22:06:00 +02:00
Rafał Borcz
52d66ac30b
New Crowdin translations (#797) 2020-05-13 11:25:50 +02:00
Mateusz Idziejczak
6ac5c6a0b4
Add widget system theme option (#759) 2020-05-10 12:00:21 +02:00
Rafał Borcz
45fc76a9a5
Update translations (#794) 2020-05-10 11:34:54 +02:00
Mikołaj Pich
6d1fa0cf05
Optimize grade average provider (#792) 2020-05-10 10:51:01 +02:00
Mikołaj Pich
8eb0c0351b
Use view binding instead of kotlin synthetics (#791) 2020-05-10 10:39:10 +02:00
Rafał Borcz
ec80f939f1 Update Crowdin configuration file 2020-05-06 23:10:19 +02:00
Rafał Borcz
70fc51a0b5 Update Crowdin configuration file 2020-05-06 23:07:13 +02:00
Rafał Borcz
bd700a88bf
Add nav bar color in night style (#790) 2020-05-03 15:06:49 +02:00
Mikołaj Pich
98f2f0e74f
Migrate from fabric to firebase crashlytics (#789) 2020-05-01 19:00:42 +02:00
Mikołaj Pich
4a3b746d48
Remove flexible adapter (#781) 2020-05-01 17:38:19 +02:00
Rafał Borcz
a1f864b35e
Add importantForAutofill to login fields (#788) 2020-05-01 12:54:01 +02:00
dependabot-preview[bot]
17ac3cfd52
Bump firebase-analytics from 17.3.0 to 17.4.0 (#787) 2020-04-30 22:40:38 +00:00
dependabot-preview[bot]
c6c2b1c6a3
Bump coil from 0.9.5 to 0.10.1 (#785) 2020-04-29 14:40:12 +00:00
dependabot-preview[bot]
5fba3d5775
Bump firebase-inappmessaging-ktx from 19.0.5 to 19.0.6 (#782) 2020-04-28 21:25:27 +00:00
dependabot-preview[bot]
6fe62edd63
Bump firebase-inappmessaging-display-ktx from 19.0.5 to 19.0.6 (#786) 2020-04-28 21:04:54 +00:00
dependabot-preview[bot]
87af3da1ad
Bump threetenabp from 1.2.3 to 1.2.4 (#783) 2020-04-28 20:57:14 +00:00
dependabot-preview[bot]
155f0cc347
Bump threetenbp from 1.4.3 to 1.4.4 (#784) 2020-04-28 20:56:55 +00:00
Mikołaj Pich
2de1ad5334 Merge tag '0.17.4' into develop
Version 0.17.4
2020-04-23 19:24:59 +02:00
Mikołaj Pich
763543a16e Merge branch 'release/0.17.4' 2020-04-23 19:24:54 +02:00
Mikołaj Pich
acabe90c9f Version 0.17.4 2020-04-23 19:24:49 +02:00
Mikołaj Pich
f79da9003a Merge tag '0.17.3' into develop
Version 0.17.3
2020-04-23 16:22:49 +02:00
Mikołaj Pich
fc9e558cd6 Merge branch 'release/0.17.3' 2020-04-23 16:22:44 +02:00
Mikołaj Pich
68140bd544 Version 0.17.3 2020-04-23 16:22:39 +02:00
Mikołaj Pich
2c4c2d1f49
Fix injector of ErrorDialog (#780) 2020-04-23 11:07:18 +02:00
dependabot-preview[bot]
4894086d9d
Bump about_libraries from 8.1.1 to 8.1.2 (#779) 2020-04-21 16:21:44 +00:00
Mikołaj Pich
1d29ef5fe3 Merge tag '0.17.2' into develop
Version 0.17.2
2020-04-19 23:42:00 +02:00
Mikołaj Pich
7fa333cff2 Merge branch 'release/0.17.2' 2020-04-19 23:41:53 +02:00
Mikołaj Pich
c1ffc2ae72 Version 0.17.2 2020-04-19 23:37:29 +02:00
Mikołaj Pich
9c0e2dc533
Refresh semesters if previous list was downloaded in different m… (#776) 2020-04-19 23:21:59 +02:00
Mikołaj Pich
9b18e3669d
Fix crash after send message when activity is in background (#777) 2020-04-19 23:21:25 +02:00
Mikołaj Pich
366ebc781d
Add error message and bug report button to error dialog (#778) 2020-04-19 23:20:55 +02:00
Mikołaj Pich
4bd0459155
Don't log common errors to crashlytics (#775) 2020-04-18 23:07:20 +02:00
Mikołaj Pich
b19084cb57
Fix visibility of dialog close button when homework content is l… (#774) 2020-04-18 23:06:05 +02:00
dependabot-preview[bot]
69be7ca412
Bump kotlin_version from 1.3.71 to 1.3.72 (#773) 2020-04-17 21:01:41 +00:00
dependabot-preview[bot]
07307b9709
Bump swiperefreshlayout from 1.1.0-beta01 to 1.1.0-rc01 (#770) 2020-04-17 20:59:02 +00:00
dependabot-preview[bot]
ee4a5e56a9
Bump gradle from 3.6.2 to 3.6.3 (#772) 2020-04-17 20:37:38 +00:00
dependabot-preview[bot]
c8f8ec77a9
Bump preference-ktx from 1.1.0 to 1.1.1 (#771) 2020-04-17 20:35:24 +00:00
Mikołaj Pich
be46a43427 Merge tag '0.17.1' into develop
Version 0.17.1
2020-04-12 19:20:59 +02:00
Mikołaj Pich
183e379223 Merge branch 'release/0.17.1' 2020-04-12 19:20:53 +02:00
Mikołaj Pich
2350fc2ddf Version 0.17.1 2020-04-12 19:20:44 +02:00
dependabot-preview[bot]
152f966a66
Bump firebase-inappmessaging-display-ktx from 19.0.4 to 19.0.5 (#767) 2020-04-12 17:19:06 +00:00
dependabot-preview[bot]
85ee7fad1d
Bump firebase-inappmessaging-ktx from 19.0.4 to 19.0.5 (#768) 2020-04-12 16:58:23 +00:00
Mikołaj Pich
3ac085573f
Show all known adfslight registers in register list (#766) 2020-04-12 18:55:16 +02:00
dependabot-preview[bot]
64a19d9627
Bump about_libraries from 8.1.0 to 8.1.1 (#769) 2020-04-12 15:14:08 +00:00
Mikołaj Pich
76af623c94
Add Sdk.init(student) call in all remote repositories (#764) 2020-04-12 15:13:35 +02:00
Mikołaj Pich
11c285be01
Fix homework dialog size (#765) 2020-04-12 15:12:25 +02:00
Mikołaj Pich
a0528496eb
Fix crash caused by updating view in not attached fragment (#763) 2020-04-09 23:46:42 +02:00
Mikołaj Pich
299345b864
Fix crash in message preview (#762) 2020-04-09 23:30:56 +02:00
Mikołaj Pich
0a18fefb1f
Use recycler view in homework details dialog (#761) 2020-04-08 18:17:20 +02:00
Mikołaj Pich
a26f0ec8c8 Merge tag '0.17.0' into develop
Version 0.17.0
2020-04-05 18:42:42 +02:00
Mikołaj Pich
232d8d38bd Merge branch 'release/0.17.0' 2020-04-05 18:42:36 +02:00
Mikołaj Pich
4833e1e130 Version 0.17.0 2020-04-05 18:35:00 +02:00
Mikołaj Pich
bb30cf2ce3
Revert "Add "System theme" option to widgets" (#753) 2020-04-05 18:32:57 +02:00
dependabot-preview[bot]
c9b35bed7e
Bump chucker from 3.1.1 to 3.2.0 (#755) 2020-04-05 16:22:50 +00:00
dependabot-preview[bot]
999672fcc3
Bump threetenbp from 1.4.2 to 1.4.3 (#756) 2020-04-05 15:32:18 +00:00
Dominik Korsa
6a0ce3a58d
Add force sync feature in settings (#643) 2020-04-05 16:46:49 +02:00
Mikołaj Pich
3612326628
Add missing sdk initialization in lucky number repository (#752) 2020-04-04 20:59:44 +02:00
Mikołaj Pich
bf61dd1bad
Add more details in email template (#751) 2020-04-04 20:57:50 +02:00
Mikołaj Pich
18c1153e12
Add mark as done feature in homework (#743) 2020-04-03 17:39:36 +02:00
Rafał Borcz
651be69ad2 Add firebase messaging (#740) 2020-04-02 22:47:10 +02:00
Rafał Borcz
394e3bb79c Add firebase messaging (#740) 2020-04-02 22:43:03 +02:00
Mikołaj Pich
502a98b70a
Add message attachments (#734) 2020-04-02 20:27:53 +02:00
Mikołaj Pich
da357775ff
Add better validation to login/email field (#741) 2020-04-02 20:27:14 +02:00
Mateusz Idziejczak
c0adeaadfd
Add "System theme" option to widgets (#739) 2020-04-02 20:26:28 +02:00
Rafał Borcz
358c87528a
Update gradle to 6.2.2 (#750) 2020-04-02 00:34:24 +02:00
dependabot-preview[bot]
0cb4866f40
Bump appcompat from 1.2.0-alpha03 to 1.2.0-beta01 (#749) 2020-04-01 22:21:25 +00:00
dependabot-preview[bot]
6ec13c896d
Bump about_libraries from 8.0.2 to 8.1.0 (#747) 2020-04-01 22:01:41 +00:00
dependabot-preview[bot]
a0587a8bce
Bump fragment-ktx from 1.2.3 to 1.2.4 (#748) 2020-04-01 22:00:50 +00:00
dependabot-preview[bot]
184c9413f8
Bump firebase-core from 17.2.3 to 17.3.0 (#746) 2020-04-01 18:58:26 +00:00
dependabot-preview[bot]
6440820dc5
Bump gradle from 3.6.1 to 3.6.2 (#744) 2020-04-01 18:56:41 +00:00
dependabot-preview[bot]
d9322b0df4
Bump aboutlibraries-core from 7.1.0 to 8.0.0 (#731) 2020-03-29 18:55:00 +02:00
Mikołaj Pich
b9a19b60e4
Bump appcompat from 1.1.0 to 1.2.0-alpha03 to fix webview crash… (#737) 2020-03-29 14:38:39 +02:00
Mikołaj Pich
6f697eff47
Add points to notes (#738) 2020-03-29 14:26:56 +02:00
Stanisław Jelnicki
d9c8bb399b
Change strings.xml form from male to impersonal (#736) 2020-03-28 19:51:22 +01:00
dependabot-preview[bot]
2137b6c225
Bump threetenabp from 1.2.2 to 1.2.3 (#735) 2020-03-28 10:56:07 +00:00
Mikołaj Pich
0320079d02
Bump chucker from 2.0.4 to 3.1.1 (#733) 2020-03-28 11:44:09 +01:00
dependabot-preview[bot]
95a833ea85
Bump room from 2.2.4 to 2.2.5 (#727) 2020-03-24 22:04:25 +00:00
dependabot-preview[bot]
a85a4fe7a0
Bump kotlin_version from 1.3.70 to 1.3.71 (#732) 2020-03-24 20:30:48 +00:00
dependabot-preview[bot]
f94b8c9be8
Bump threetenbp from 1.4.1 to 1.4.2 (#730) 2020-03-24 19:53:59 +00:00
dependabot-preview[bot]
5dfe9cdd4f
Bump work_manager from 2.3.3 to 2.3.4 (#728) 2020-03-24 19:52:47 +00:00
dependabot-preview[bot]
9a83b43d57
Bump fragment-ktx from 1.2.2 to 1.2.3 (#729) 2020-03-24 19:52:33 +00:00
dependabot-preview[bot]
7d21babd38
Bump rxjava from 2.2.18 to 2.2.19 (#726) 2020-03-14 22:25:05 +00:00
dependabot-preview[bot]
f763a42323
Bump mockito-inline from 3.3.1 to 3.3.3 (#725) 2020-03-14 22:20:14 +00:00
Mikołaj Pich
478596c4e6
Fix marking message as read in hybrid and mobile api mode (#722) 2020-03-14 23:19:59 +01:00
dependabot-preview[bot]
37842a3603
Bump dagger from 2.26 to 2.27 (#724) 2020-03-14 22:19:47 +00:00
dependabot-preview[bot]
1775e2fe62
Bump mockito-android from 3.3.1 to 3.3.3 (#723) 2020-03-14 22:18:34 +00:00
Mikołaj Pich
68b26d5e2b
Update gradle-publisher to 2.7.2 (#719) 2020-03-07 13:38:15 +01:00
dependabot-preview[bot]
6304395050
Bump swiperefreshlayout from 1.1.0-alpha03 to 1.1.0-beta01 (#718) 2020-03-05 10:59:07 +00:00
dependabot-preview[bot]
fa3c357665
Bump work_manager from 2.3.2 to 2.3.3 (#717) 2020-03-05 10:58:38 +00:00
Mikołaj Pich
83282aeab6 Merge tag '0.16.0' into develop
Version 0.16.0
2020-03-05 09:47:43 +01:00
Mikołaj Pich
5de2e9afbd Merge branch 'release/0.16.0' 2020-03-05 09:47:37 +01:00
Mikołaj Pich
cd99c6b2aa
Version 0.16.0 2020-03-05 09:20:46 +01:00
Rafał Borcz
42aacb755c
Add some login help messages (#716) 2020-03-04 22:39:28 +01:00
dependabot-preview[bot]
a880b3a9db
Bump kotlin_version from 1.3.61 to 1.3.70 (#715)
Bumps `kotlin_version` from 1.3.61 to 1.3.70.

Updates `kotlin-gradle-plugin` from 1.3.61 to 1.3.70

Updates `kotlin-stdlib-jdk8` from 1.3.61 to 1.3.70
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.3.61...v1.3.70)

Updates `kotlin-test` from 1.3.61 to 1.3.70
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.3.61...v1.3.70)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-04 16:39:13 +01:00
Mateusz Idziejczak
7837fae2aa
Add German language (#712) 2020-03-03 22:20:57 +01:00
stha
70e9f025bb
Replace Creators with Contributors (#675) 2020-03-03 18:07:38 +01:00
Rafał Borcz
ab1d9b358e
Change asset name and contributor name (#714) 2020-03-03 18:06:37 +01:00
Mikołaj Pich
2634c270b1
Set missing styles to small lesson items (#707) 2020-03-02 22:45:56 +01:00
Mikołaj Pich
79bd2fccdf
Replace Maybe with Single in Message DAO (#710) 2020-03-02 22:31:55 +01:00
Mikołaj Pich
87107ec474
Filter lucky numbers by school shortcut (#708) 2020-03-02 22:22:41 +01:00
AlexxPy
8aaa066142
Update Ukrainian language (#711) 2020-03-02 21:31:02 +01:00
Mikołaj Pich
5b7d465064
Add Ukrainian language (#709) 2020-03-02 20:56:53 +01:00
Mikołaj Pich
75c94865e4
Sort the second group's lessons below the student's lessons (#706) 2020-02-29 23:07:47 +01:00
Mikołaj Pich
f294e3d57c
Add separate host in login form to login to VULCAN adfslight (#704) 2020-02-29 10:30:20 +01:00
Rafał Borcz
565114a2d2
Update gradle to 6.2.1 (#705) 2020-02-29 02:37:58 +01:00
Mikołaj Pich
be057dd63c
Show list of charts in grade statistics (#689) 2020-02-29 02:19:48 +01:00
Mateusz Idziejczak
e61c2bced8
Add new notifications categories (#685) 2020-02-29 01:15:26 +01:00
dependabot-preview[bot]
3abfb9f819
Bump gradle from 3.6.0 to 3.6.1 (#702) 2020-02-28 23:19:38 +00:00
dependabot-preview[bot]
7c86fabd7b
Bump firebase-core from 17.2.2 to 17.2.3 (#703) 2020-02-28 23:19:00 +00:00
dependabot-preview[bot]
59f2d4b0f3
Bump gradle from 3.5.3 to 3.6.0 (#698) 2020-02-27 21:22:37 +00:00
dependabot-preview[bot]
8571586b0c
Bump room from 2.2.3 to 2.2.4 (#694) 2020-02-27 21:11:48 +00:00
dependabot-preview[bot]
e21de811e2
Bump mockito-android from 3.2.4 to 3.3.1 (#696) 2020-02-27 20:35:50 +00:00
dependabot-preview[bot]
7b502ce9a8
Bump mockito-inline from 3.2.4 to 3.3.1 (#693) 2020-02-27 20:35:28 +00:00
dependabot-preview[bot]
33447d2ada
Bump fragment-ktx from 1.2.0 to 1.2.2 (#695) 2020-02-27 20:35:05 +00:00
dependabot-preview[bot]
7f6b2ec096
Bump coil from 0.9.4 to 0.9.5 (#699) 2020-02-27 20:33:25 +00:00
dependabot-preview[bot]
2c35117dfa
Bump rxjava from 2.2.17 to 2.2.18 (#700) 2020-02-27 20:32:38 +00:00
dependabot-preview[bot]
5b2ca07506
Bump work_manager from 2.3.0 to 2.3.2 (#697) 2020-02-27 20:30:36 +00:00
doteq
18d6ec6961
Add account recover (#635) 2020-02-27 00:10:11 +01:00
Mikołaj Pich
96c1bb4c69
Automatically switch semesters without sync (#681) 2020-02-24 00:24:40 +01:00
Mikołaj Pich
00f5b9431e
Add log viewer (#686) 2020-02-22 21:24:06 +01:00
Mikołaj Pich
9a87df7315
Respect user settings in timetable app widget (#687) 2020-02-22 20:42:02 +01:00
Mikołaj Pich
30e43501ac
Refactor the resizing of the lucky number app widget (#682) 2020-02-14 10:04:53 +01:00
Mikołaj Pich
34738a4839
Show semester in appbar subtitle in grades view (#684) 2020-02-14 09:58:58 +01:00
dependabot-preview[bot]
1cc2080cb9
Bump material from 1.1.0-rc02 to 1.1.0 (#680) 2020-02-05 00:22:51 +00:00
dependabot-preview[bot]
0826e45a25
Bump coil from 0.9.2 to 0.9.4 (#679) 2020-02-05 00:22:12 +00:00
Dominik Korsa
6925204019
Fix showing empty total summary and ordering of summary months (#678) 2020-02-05 00:53:07 +01:00
Dominik Korsa
bdbf1fe304
Add dynamic nick/email in login (#676) 2020-02-05 00:42:49 +01:00
Dominik Korsa
720a530a6c
Disable signed in students in login (#677) 2020-02-04 09:43:24 +01:00
dependabot-preview[bot]
2f56f7e4a4
Bump dagger from 2.25.4 to 2.26 (#673) 2020-02-02 15:50:12 +00:00
Dominik Korsa
c3a6842027
Add total attendance summary (#672) 2020-02-02 16:40:00 +01:00
Dominik Korsa
731afbb00c
Fix login more options button in dark theme (#674) 2020-02-02 16:38:14 +01:00
Dominik Korsa
fb3853dc70
Fix timetable_show_whole_class_entries en translation (#668) 2020-01-30 00:13:34 +01:00
Mikołaj Pich
ec5503678a Merge tag '0.15.0' into develop
Version 0.15.0
2020-01-26 18:15:16 +01:00
Mikołaj Pich
4ab47fef46 Merge branch 'release/0.15.0' 2020-01-26 18:15:12 +01:00
Mikołaj Pich
8e17b1d72a
Version 0.15.0 2020-01-26 16:52:41 +01:00
Mikołaj Pich
ae9b616896 Show points sum in grades details (#664) 2020-01-26 02:16:05 +01:00
Mikołaj Pich
1999cd6eaf Visual enhancement of displaying grades point stats (#665) 2020-01-26 01:26:06 +01:00
Mikołaj Pich
1e5269c22c Don't hide password toggle button on error (#666) 2020-01-26 01:24:24 +01:00
Kacper Ziubryniewicz
19f495cba6 Add excusing for absence (#533) 2020-01-25 18:07:25 +01:00
dependabot-preview[bot]
0c5d45717c
Bump fragment-ktx from 1.2.0-rc05 to 1.2.0 (#662) 2020-01-24 09:18:54 +00:00
dependabot-preview[bot]
1dbe470391
Bump activity-ktx from 1.1.0-rc03 to 1.1.0 (#661) 2020-01-24 08:59:20 +00:00
dependabot-preview[bot]
7142e05561
Bump work_manager from 2.3.0-rc01 to 2.3.0 (#660) 2020-01-24 08:58:31 +00:00
Dominik Korsa
4640d114f6 Add creators list (#636) 2020-01-22 10:59:13 +01:00
Mikołaj Pich
ad3bb3a522 Add option to show only student plan lessons (#654) 2020-01-20 22:18:26 +01:00
dependabot-preview[bot]
e9fa95f113 Bump rxjava from 2.2.16 to 2.2.17 (#656)
Bumps [rxjava](https://github.com/ReactiveX/RxJava) from 2.2.16 to 2.2.17.
- [Release notes](https://github.com/ReactiveX/RxJava/releases)
- [Changelog](https://github.com/ReactiveX/RxJava/blob/v2.2.17/CHANGES.md)
- [Commits](https://github.com/ReactiveX/RxJava/compare/v2.2.16...v2.2.17)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 21:51:13 +01:00
Dominik Korsa
76a4bacb34 Fix login info autofill (#652) 2020-01-20 21:29:42 +01:00
Dominik Korsa
c5cadbd004 Improve grades dialog layout (#631) 2020-01-20 21:29:06 +01:00
dependabot-preview[bot]
77e7e4e6e9
Bump material from 1.1.0-rc01 to 1.1.0-rc02 (#655) 2020-01-20 20:27:52 +00:00
dependabot-preview[bot]
cc242e1e87
Bump threetenabp from 1.2.1 to 1.2.2 (#657) 2020-01-20 20:27:29 +00:00
dependabot-preview[bot]
e0ec2f8160
Bump firebase-core from 17.2.1 to 17.2.2 (#658) 2020-01-20 20:27:10 +00:00
dependabot-preview[bot]
eb1ce251a0
Bump threetenbp from 1.4.0 to 1.4.1 (#659) 2020-01-20 20:26:53 +00:00
Dominik Korsa
4d1de2d8ce Add debug notification icons (#637) 2020-01-12 14:21:33 +01:00
Mikołaj Pich
0af7c00d12 Merge tag '0.14.2' into develop
Version 0.14.2
2020-01-11 20:10:39 +01:00
Mikołaj Pich
afaf6c0e56 Merge branch 'release/0.14.2' 2020-01-11 20:10:34 +01:00
Mikołaj Pich
e8b4e16382
Version 0.14.2 2020-01-11 20:10:23 +01:00
Mikołaj Pich
83a8c857e5
Change color attr in backtround_header_note drawable to color re… (#644) 2020-01-11 20:09:33 +01:00
Mikołaj Pich
57e943fb3b Update error_service_unavailable string (#645) 2020-01-11 17:25:13 +01:00
Mikołaj Pich
ed310e7764 Merge tag '0.14.1' into develop
Version 0.14.1
2020-01-09 00:53:55 +01:00
Mikołaj Pich
16e3a877af Merge branch 'release/0.14.1' 2020-01-09 00:53:51 +01:00
Mikołaj Pich
2b5b87fe84
Version 0.14.1 2020-01-09 00:53:32 +01:00
Rafał Borcz
d706c000b9 Add missing translations (#642) 2020-01-09 00:42:16 +01:00
dependabot-preview[bot]
15184550f4
Bump junit from 4.12 to 4.13 (#640) 2020-01-08 23:25:02 +00:00
dependabot-preview[bot]
69a8e35150
Bump logging-interceptor from 3.12.6 to 3.12.7 (#641) 2020-01-08 23:05:59 +00:00
dependabot-preview[bot]
70166d0245
Bump fragment-ktx from 1.2.0-rc04 to 1.2.0-rc05 (#639) 2020-01-08 22:50:35 +00:00
dependabot-preview[bot]
e0657eb5b2
Bump work_manager from 2.3.0-beta02 to 2.3.0-rc01 (#638) 2020-01-08 22:48:37 +00:00
Dominik Korsa
f204264d2d Change grade header note to unread count (#634) 2020-01-04 01:46:42 +01:00
pcktm
b9378c24b5 Minor translation changes (#630) 2020-01-03 21:12:05 +01:00
dependabot-preview[bot]
8a6ceeb2e4
Bump aboutlibraries from 7.0.4 to 7.1.0 (#633) 2020-01-02 19:42:15 +00:00
dependabot-preview[bot]
a45c7bd3e3
Bump dagger from 2.25.3 to 2.25.4 (#632) 2019-12-31 22:04:35 +00:00
Mikołaj Pich
4df245755a Add fields validation in mobile api login (#629) 2019-12-31 17:31:26 +01:00
Mikołaj Pich
6be801d4a8 Fix error view which overlaps grade statistics content (#627) 2019-12-30 22:57:48 +01:00
Mikołaj Pich
54f3733b56 Merge tag '0.14.0' into develop
Version 0.14.0
2019-12-25 16:52:34 +01:00
Mikołaj Pich
4f60673e4e Merge branch 'release/0.14.0' 2019-12-25 16:52:28 +01:00
Mikołaj Pich
7bd4fd7cbd
Version 0.14.0 2019-12-25 16:52:17 +01:00
Nikolas Ostrowski
65995cdc6c Change Wulkanowy API link to SDK in README (#626) 2019-12-24 16:51:35 +01:00
Mikołaj Pich
9d27723f30 Don't copy teacher from previous lesson with changes if new one… (#622) 2019-12-22 20:19:31 +01:00
Mikołaj Pich
2e7d2b66f8 Fix lucky number empty screen (#623) 2019-12-22 20:18:48 +01:00
Mikołaj Pich
304c49d61e Migration to Wulkanowy SDK (#336) 2019-12-22 00:14:46 +01:00
dependabot-preview[bot]
826ea32fc0
Bump room from 2.2.2 to 2.2.3 (#618) 2019-12-20 10:18:00 +00:00
dependabot-preview[bot]
d70c4fa9fe
Bump work_manager from 2.3.0-beta01 to 2.3.0-beta02 (#620) 2019-12-20 09:46:28 +00:00
dependabot-preview[bot]
bc43359467
Bump mockito-inline from 3.2.0 to 3.2.4 (#621) 2019-12-20 09:44:18 +00:00
dependabot-preview[bot]
cf286f3c23
Bump mockito-android from 3.2.0 to 3.2.4 (#619) 2019-12-20 09:27:14 +00:00
dependabot-preview[bot]
57abd43214
Bump fragment-ktx from 1.2.0-rc03 to 1.2.0-rc04 (#617) 2019-12-20 09:24:51 +00:00
dependabot-preview[bot]
90bdc9d157
Bump material from 1.1.0-beta02 to 1.1.0-rc01 (#616) 2019-12-20 09:13:34 +00:00
dependabot-preview[bot]
93bce685bd
Bump dagger from 2.25.2 to 2.25.3 (#614) 2019-12-20 09:07:39 +00:00
dependabot-preview[bot]
4639a075b0
Bump rxjava from 2.2.15 to 2.2.16 (#615) 2019-12-20 09:06:52 +00:00
stha
91f63da6d0 Fixed capitalization in the about tab (en) (#613) 2019-12-09 17:35:18 +01:00
stha
3894c9d48e Fixed letter capitalization in the About tab (pl) (#612) 2019-12-09 17:34:58 +01:00
Mikołaj Pich
fb40701962 Merge tag '0.13.0' into develop
Version 0.13.0
2019-12-07 23:04:39 +01:00
Mikołaj Pich
ff1e794820 Merge branch 'release/0.13.0' 2019-12-07 23:04:26 +01:00
Mikołaj Pich
ceba5f7fe8
Version 0.13.0 2019-12-07 23:04:17 +01:00
Mikołaj Pich
f570acbed6 Add FAQ link (#611) 2019-12-07 22:06:15 +01:00
dependabot-preview[bot]
2a7a472d90
Bump fragment-ktx from 1.2.0-rc02 to 1.2.0-rc03 (#610) 2019-12-07 16:07:36 +00:00
dependabot-preview[bot]
138fbe5bf5
Bump activity-ktx from 1.1.0-rc02 to 1.1.0-rc03 (#608) 2019-12-07 12:51:40 +00:00
dependabot-preview[bot]
ad99cc75eb
Bump gradle from 3.5.2 to 3.5.3 (#609) 2019-12-07 12:51:24 +00:00
dependabot-preview[bot]
f6606e7a4f
Bump coordinatorlayout from 1.1.0-rc01 to 1.1.0 (#607) 2019-12-07 12:51:09 +00:00
dependabot-preview[bot]
3690deef1e
Bump mockito-android from 3.1.0 to 3.2.0 (#605) 2019-12-02 16:19:20 +00:00
dependabot-preview[bot]
cd1438587d
Bump kotlin_version from 1.3.60 to 1.3.61 (#606) 2019-12-02 16:18:56 +00:00
dependabot-preview[bot]
8193a57227
Bump mockito-inline from 3.1.0 to 3.2.0 (#604) 2019-12-02 16:18:27 +00:00
Rafał Borcz
8467f39ad9 Add russian language (#595) 2019-11-29 20:43:37 +01:00
dependabot-preview[bot]
0fc293f47a
Bump assisted-inject-processor-dagger2 from 0.5.1 to 0.5.2 (#601) 2019-11-25 17:15:23 +00:00
dependabot-preview[bot]
9b063edb0b
Bump rxjava from 2.2.14 to 2.2.15 (#603) 2019-11-25 16:48:56 +00:00
dependabot-preview[bot]
5d852eee87
Bump assisted-inject-annotations-dagger2 from 0.5.1 to 0.5.2 (#602) 2019-11-25 16:48:07 +00:00
Mikołaj Pich
54ab408135 Add error view showing on first loading in fragment view (#590) 2019-11-24 17:05:09 +01:00
Mikołaj Pich
41aa326f42 Add 0,00 grade modifier (#596) 2019-11-21 17:41:41 +01:00
dependabot-preview[bot]
24f605c71c
Bump work_manager from 2.3.0-alpha03 to 2.3.0-beta01 (#600) 2019-11-21 11:00:11 +00:00
dependabot-preview[bot]
5c52dcc74f
Bump room from 2.2.1 to 2.2.2 (#599) 2019-11-21 10:31:14 +00:00
dependabot-preview[bot]
667659fbe6
Bump core-ktx from 1.2.0-beta02 to 1.2.0-rc01 (#598) 2019-11-21 10:30:51 +00:00
dependabot-preview[bot]
d467bf096f
Bump recyclerview from 1.1.0-rc01 to 1.1.0 (#597) 2019-11-21 10:28:54 +00:00
dependabot-preview[bot]
98d556bcd5 Bump kotlin_version from 1.3.50 to 1.3.60 (#594) 2019-11-18 10:57:50 +01:00
dependabot-preview[bot]
8c730be635
Bump google-services from 4.3.2 to 4.3.3 (#591) 2019-11-18 08:58:17 +00:00
dependabot-preview[bot]
377d24fbb4
Bump sonarqube-gradle-plugin from 2.8 to 2.8.0.1969 (#593) 2019-11-18 08:26:46 +00:00
Mikołaj Pich
bde810e031
Fix screens loading state (#589) 2019-11-17 01:07:43 +01:00
Rafał Borcz
2f18d42c86 Update material design components (#587) 2019-11-10 16:45:53 +01:00
dependabot-preview[bot]
c708b0c20e
Bump activity-ktx from 1.1.0-rc01 to 1.1.0-rc02 (#586) 2019-11-09 13:35:59 +00:00
dependabot-preview[bot]
ff8d55d4f8
Bump fragment-ktx from 1.2.0-rc01 to 1.2.0-rc02 (#585) 2019-11-09 13:08:02 +00:00
dependabot-preview[bot]
49bf911c84
Bump core-ktx from 1.2.0-beta01 to 1.2.0-beta02 (#584) 2019-11-09 13:07:27 +00:00
Dinolek
9e33ef419f Fix LuckyNumberWidget not showing ThemeDialog (#583) 2019-11-09 13:59:33 +01:00
Mikołaj Pich
40e95eac1e Add BaseDao interface (#581) 2019-11-06 23:52:14 +01:00
dependabot-preview[bot]
19e76a0b5d
Bump rxjava from 2.2.13 to 2.2.14 (#580) 2019-11-04 19:23:50 +00:00
Rafał Borcz
5feafe3907 Update gradle wrapper (#579) 2019-11-03 15:07:32 +01:00
Piotr Romanowski
b7206ed714 Add DatePicker to Timetable and Attendance modules. (#522) 2019-11-03 14:52:35 +01:00
Rafał Borcz
38370d647d
Add language change settings (#577) 2019-11-03 12:37:03 +01:00
dependabot-preview[bot]
323bc188b1
Bump assisted-inject-annotations-dagger2 from 0.5.0 to 0.5.1 (#576) 2019-11-01 20:20:09 +00:00
dependabot-preview[bot]
b17356591a
Bump assisted-inject-processor-dagger2 from 0.5.0 to 0.5.1 (#575) 2019-11-01 19:50:28 +00:00
Mikołaj Pich
a02c444cf5 Merge tag '0.12.0' into develop
0.12.0
2019-10-29 00:25:17 +01:00
Mikołaj Pich
87a133beb9 Merge branch 'release/0.12.0' 2019-10-29 00:25:12 +01:00
Mikołaj Pich
1f4a208857
Version 0.12.0 2019-10-29 00:25:03 +01:00
Mikołaj Pich
a7c472989c Add support for edu.lublin.eu (#571) 2019-10-28 21:10:58 +01:00
dependabot-preview[bot]
747696e386
Bump firebase-core from 17.2.0 to 17.2.1 (#572) 2019-10-28 14:58:10 +00:00
Dominik Korsa
a71a183160 Add school quick actions (#570) 2019-10-27 00:36:39 +02:00
Rafał Borcz
125a010f03 Fix restoring state in exposed dropdown menu (#569) 2019-10-24 22:56:49 +02:00
doteq
5c5993cc2a Change FAB to extended FAB in messages (#536) 2019-10-24 18:45:05 +02:00
dependabot-preview[bot]
f234b71932 Bump dagger from 2.24 to 2.25.2 (#564) 2019-10-24 18:24:22 +02:00
dependabot-preview[bot]
497a3391d4
Bump fragment-ktx from 1.2.0-beta02 to 1.2.0-rc01 (#568) 2019-10-24 06:58:42 +00:00
dependabot-preview[bot]
a72c743c6f
Bump work_manager from 2.3.0-alpha02 to 2.3.0-alpha03 (#563) 2019-10-24 06:37:24 +00:00
dependabot-preview[bot]
98fdfd001a
Bump recyclerview from 1.1.0-beta05 to 1.1.0-rc01 (#566) 2019-10-24 06:17:11 +00:00
dependabot-preview[bot]
994b162ae3
Bump activity-ktx from 1.1.0-beta01 to 1.1.0-rc01 (#567) 2019-10-24 06:16:51 +00:00
dependabot-preview[bot]
90c60f399b
Bump coordinatorlayout from 1.1.0-beta01 to 1.1.0-rc01 (#565) 2019-10-24 06:15:58 +00:00
dependabot-preview[bot]
b16b225a1a
Bump room from 2.2.0 to 2.2.1 (#562) 2019-10-24 05:55:08 +00:00
Mikołaj Pich
7a4cf694ca Add school info (#557)
* Add db layer to school info

* Add base classes

* Add database migration

* Add base view

* Update icon

* Fix textviews height

* Handle error and empty results

* Improve school info look

* Add strings

* Fix action bar elevation in school fragment

* Add missing blank lines

* Reorganize strings

* Make field title first in order

* Make fields views selectable

* Rename SchoolInfo to School
2019-10-21 21:25:15 +02:00
dependabot-preview[bot]
1b492d50fe
Bump aboutlibraries from 7.0.3 to 7.0.4 (#559) 2019-10-21 19:23:41 +00:00
dependabot-preview[bot]
d9b5e000f8
Bump gradle from 1.31.1 to 1.31.2 (#560) 2019-10-21 19:23:13 +00:00
Dominik Korsa
7e30524876 Contact info after failed login (#556) 2019-10-20 19:10:32 +02:00
Rafał Borcz
ce9b12eb93 Add system theme setting for Android 10 (#554) 2019-10-16 22:27:16 +02:00
Mikołaj Pich
b602657d55 Move default preferences values to separate file (#555) 2019-10-16 20:10:24 +02:00
Rafał Borcz
360dfbcdb5 Update androidx dependencies (#553) 2019-10-15 19:15:28 +02:00
dependabot-preview[bot]
f466497970
Bump recyclerview from 1.1.0-beta04 to 1.1.0-beta05 (#551) 2019-10-11 21:56:19 +00:00
dependabot-preview[bot]
184a7ab200
Bump room from 2.2.0-rc01 to 2.2.0 (#552) 2019-10-11 21:55:28 +00:00
Mikołaj Pich
2e5ef7dfa2 Merge tag '0.11.0' into develop
Version 0.11.0
2019-10-07 00:11:59 +02:00
Mikołaj Pich
8f617f4ca1 Merge branch 'release/0.11.0' 2019-10-07 00:11:52 +02:00
Mikołaj Pich
fe5f96a394
Version 0.11.0 2019-10-07 00:11:33 +02:00
Rafał Borcz
cb9c35d772 Add navigate up to login view (#547) 2019-10-06 22:43:16 +02:00
dependabot-preview[bot]
7cf7977cc6
Bump gson from 2.8.5 to 2.8.6 (#549) 2019-10-06 20:15:53 +00:00
Dominik Korsa
1de747fa35 Add mark as read button enable logic (#534) 2019-10-06 21:25:24 +02:00
Rafał Borcz
93750829d7 Fix duplicate percentage in attendance summary (#548) 2019-10-06 18:21:56 +02:00
Rafał Borcz
798688e7dd Fix multidex in debug variant (#545) 2019-10-05 22:32:55 +02:00
Mikołaj Pich
6ab9c1d737 Update mockito to last version from maven central (#546) 2019-10-03 22:47:49 +02:00
dependabot-preview[bot]
b074ce99b7
Bump sonarqube-gradle-plugin from 2.7.1 to 2.8 (#543) 2019-10-03 20:21:43 +00:00
dependabot-preview[bot]
b03fd86be5
Bump gradle from 3.5.0 to 3.5.1 (#542) 2019-10-03 20:08:32 +00:00
dependabot-preview[bot]
3de2f5ff88
Bump githook from 1.1.0 to 1.2.0 (#539) 2019-10-03 19:54:16 +00:00
dependabot-preview[bot]
35adf83154
Bump rxjava from 2.2.12 to 2.2.13 (#538) 2019-10-03 19:43:12 +00:00
Dominik Korsa
0162c8bbee Add better timetable changes display (#513) 2019-10-03 21:13:01 +02:00
Dominik Korsa
736d570f26 Change timetable widget date format (#530) 2019-10-03 15:29:33 +02:00
Mikołaj Pich
5b0901e311 Clear Semesters table (#535) 2019-10-03 14:00:07 +02:00
Mikołaj Pich
f9474af39e Add points to class grades statistics (#512) 2019-10-03 00:46:08 +02:00
doteq
d411d86355 Add click to copy function (#531) 2019-10-02 23:42:38 +02:00
Dominik Korsa
a50c6707cb Update readme badges (#532) 2019-10-01 22:19:28 +02:00
dependabot-preview[bot]
6991c68d3a
Bump mockito-core from 3.0.8 to 3.0.11 (#525) 2019-09-30 10:31:07 +00:00
dependabot-preview[bot]
8b1e6f7bd6
Bump play-publisher from 2.4.1 to 2.4.2 (#528) 2019-09-30 10:16:38 +00:00
dependabot-preview[bot]
943fd9c622
Bump logging-interceptor from 3.12.5 to 3.12.6 (#529) 2019-09-30 10:09:57 +00:00
dependabot-preview[bot]
838e2781c0
Bump mockito-inline from 3.0.8 to 3.0.11 (#526) 2019-09-30 10:05:54 +00:00
dependabot-preview[bot]
66cfd7b52c
Bump mockito-android from 3.0.8 to 3.0.11 (#527) 2019-09-30 10:04:50 +00:00
Dominik Korsa
a45bc0eef6 Add teachers (#489) 2019-09-29 18:09:53 +02:00
Dominik Korsa
ed7996299e Improve date navigation (#519) 2019-09-28 20:37:14 +02:00
Rafał Borcz
d4b73fb73e Add dark theme for app widgets (#509) 2019-09-25 22:44:55 +02:00
dependabot-preview[bot]
d6ece78eff
Bump mockito-android from 3.0.7 to 3.0.8 (#518) 2019-09-22 11:03:41 +00:00
dependabot-preview[bot]
2f44f3c4ba
Bump gradle from 1.31.0 to 1.31.1 (#517) 2019-09-22 10:55:34 +00:00
dependabot-preview[bot]
23b49e4b8c
Bump mockito-inline from 3.0.7 to 3.0.8 (#516) 2019-09-22 10:50:21 +00:00
dependabot-preview[bot]
5d33cefe1d
Bump mockito-core from 3.0.7 to 3.0.8 (#515) 2019-09-22 10:49:39 +00:00
Rafał Borcz
6089df9462 Fix wrong index in form host value (#507) 2019-09-16 23:27:58 +02:00
Rafał Borcz
3ee98e2bd0 Fix privacy link position on small screens (#508) 2019-09-16 23:13:46 +02:00
Dominik Korsa
53a5d02051 Fix attendance_excused_lateness pl typo (#511) 2019-09-16 23:06:37 +02:00
dependabot-preview[bot]
e332fd9cf9
Bump logging-interceptor from 3.12.4 to 3.12.5 (#510) 2019-09-16 08:29:32 +00:00
Rafał Borcz
7232938c12 Update API 28 to API 29 (#506) 2019-09-12 16:36:32 +02:00
Mikołaj Pich
fd02f2253b Merge tag '0.10.2' into develop
Version 0.10.2
2019-09-10 13:01:52 +02:00
Mikołaj Pich
12046ef0a0 Merge branch 'release/0.10.2' 2019-09-10 13:01:38 +02:00
Mikołaj Pich
dfc84b4208
Version 0.10.2 2019-09-10 12:58:27 +02:00
Rafał Borcz
f5f11d5130 Fix login in symbol view (#493) 2019-09-10 12:25:08 +02:00
dependabot-preview[bot]
81ce328abd
Bump recyclerview from 1.1.0-beta03 to 1.1.0-beta04 (#504) 2019-09-09 14:05:04 +00:00
dependabot-preview[bot]
867951136a
Bump gradle-play-publisher from cdaeb61 to 2.4.0 (#501) 2019-09-09 13:43:55 +00:00
dependabot-preview[bot]
8b41ab27bd
Bump mockito-core from 3.0.6 to 3.0.7 (#502) 2019-09-09 09:25:52 +00:00
dependabot-preview[bot]
e542ef003c
Bump mockito-android from 3.0.6 to 3.0.7 (#503) 2019-09-09 08:54:03 +00:00
dependabot-preview[bot]
a5f212e6be
Bump room from 2.2.0-beta01 to 2.2.0-rc01 (#499) 2019-09-09 08:39:39 +00:00
dependabot-preview[bot]
385a320536
Bump google-services from 4.3.1 to 4.3.2 (#498) 2019-09-09 08:25:51 +00:00
dependabot-preview[bot]
e65000ec2c
Bump mockito-inline from 3.0.6 to 3.0.7 (#497) 2019-09-09 08:25:29 +00:00
dependabot-preview[bot]
c87de7b3c2
Bump logging-interceptor from 3.12.3 to 3.12.4 (#496) 2019-09-09 08:23:22 +00:00
Dominik Korsa
bb6023709f Fix grade details header unread info (#494) 2019-09-08 15:10:29 +02:00
Mikołaj Pich
e998e54d3e Merge tag '0.10.1' into develop
Version 0.10.1
2019-09-07 02:25:22 +02:00
Mikołaj Pich
e269886eae Merge branch 'release/0.10.1' 2019-09-07 02:25:12 +02:00
Mikołaj Pich
dabb83c522
Version 0.10.1 2019-09-07 02:23:44 +02:00
Rafał Borcz
6350b72e23 Fix account icon color in widgets (#488) 2019-09-06 18:23:51 +02:00
Rafał Borcz
e4100d940a Fix crashing tab layout on prelolipop (#492) 2019-09-06 13:55:26 +02:00
Dominik Korsa
6575674169 Fix about_feedback_summary typo (#487) 2019-09-05 18:57:37 +02:00
Mikołaj Pich
a13aad984c Merge tag '0.10.0' into develop
Version 0.10.0
2019-09-04 22:59:40 +02:00
Mikołaj Pich
750fa9a76d Merge branch 'release/0.10.0' 2019-09-04 22:59:26 +02:00
Mikołaj Pich
d0ad4d9364
Version 0.10.0 2019-09-04 22:58:53 +02:00
Rafał Borcz
4e0f41dcb2 Change marking current student in accounts dialog (#486) 2019-09-04 21:19:05 +02:00
Mikołaj Pich
c3bb489851 Mitigate disappearing teachers in timetable (#485) 2019-09-04 20:45:34 +02:00
Rafał Borcz
e64e6676f3 Fix status bar color on xiaomi (#484) 2019-09-04 13:52:55 +02:00
Dominik Korsa
108440b1ca Reduce grade color saturations (#482) 2019-09-03 22:43:17 +02:00
dependabot-preview[bot]
d54f5ed1aa Bump aboutlibraries from 7.0.2 to 7.0.3 (#480) 2019-09-03 22:39:05 +02:00
Rafał Borcz
0aac6459f3 Fix elevation overlay on pre-lolipop (#475) 2019-09-02 12:56:13 +02:00
Rafał Borcz
bb9ea7eda1 Fix spaming NoCurentStudentException (#476) 2019-09-02 12:38:09 +02:00
Rafał Borcz
455b04f183 Fix empty hosts list after activity recreating (#477) 2019-09-02 10:05:42 +02:00
Rafał Borcz
39fb4f5def
Update dependencies (#474) 2019-09-01 13:24:21 +02:00
Dominik Korsa
c60428e29b Add outline icons (#328) 2019-08-30 12:00:34 +02:00
dependabot-preview[bot]
5413ecabb4
Bump firebase-core from 17.1.0 to 17.2.0 (#473) 2019-08-28 17:03:51 +00:00
Rafał Borcz
c6d9dfa0c9 Change app theme (#330) 2019-08-26 20:54:20 +02:00
dependabot-preview[bot]
b0033af048
Bump rxjava from 2.2.11 to 2.2.12 (#472) 2019-08-26 13:11:35 +00:00
dependabot-preview[bot]
405d37e822
Bump play-publisher from 2.2.1 to 2.3.0 (#446) 2019-08-23 18:57:45 +00:00
dependabot-preview[bot]
0d514b7dc9
Bump gradle from 3.4.2 to 3.5.0 (#469) 2019-08-23 18:37:05 +00:00
dependabot-preview[bot]
c3596aa45c
Bump reactivenetwork-rx2 from 3.0.4 to 3.0.6 (#468) 2019-08-23 11:50:18 +00:00
dependabot-preview[bot]
d34bdb2ce3
Bump google-services from 4.3.0 to 4.3.1 (#470) 2019-08-23 11:49:51 +00:00
dependabot-preview[bot]
c91870cc04
Bump kotlin_version from 1.3.41 to 1.3.50 (#471) 2019-08-23 11:35:31 +00:00
dependabot-preview[bot]
2f6862967e
Bump mockito-core from 3.0.5 to 3.0.6 (#466) 2019-08-20 10:24:11 +00:00
dependabot-preview[bot]
7525395665
Bump mockito-inline from 3.0.5 to 3.0.6 (#465) 2019-08-20 10:07:52 +00:00
dependabot-preview[bot]
657e2b280e
Bump mockito-android from 3.0.5 to 3.0.6 (#467) 2019-08-20 10:06:40 +00:00
dependabot-preview[bot]
4ea9be582f
Bump mockito-core from 3.0.4 to 3.0.5 (#464) 2019-08-19 09:16:34 +00:00
dependabot-preview[bot]
3dcc8247bf
Bump mockito-inline from 3.0.4 to 3.0.5 (#463) 2019-08-19 08:50:35 +00:00
dependabot-preview[bot]
c45b7c04b9
Bump mockito-android from 3.0.4 to 3.0.5 (#462) 2019-08-19 08:42:55 +00:00
dependabot-preview[bot]
33d6ae8afc
Bump firebase-core from 17.0.1 to 17.1.0 (#461) 2019-08-19 08:42:26 +00:00
dependabot-preview[bot]
6871606bef Bump work_manager from 2.1.0 to 2.2.0 (#460) 2019-08-17 18:31:53 +02:00
Mikołaj Pich
6e266acec9 Merge tag '0.9.4' into develop
0.9.4
2019-08-12 23:18:04 +02:00
Mikołaj Pich
ba84f2be6e Merge branch 'release/0.9.4' 2019-08-12 23:17:57 +02:00
Mikołaj Pich
db7b7dbadf
Version 0.9.4 2019-08-12 23:17:02 +02:00
Mikołaj Pich
6bd07d2651 Fix day/week navigation on holiday (#459) 2019-08-12 12:17:39 +02:00
dependabot-preview[bot]
070fba734c
Bump assisted-inject-annotations-dagger2 from 0.4.0 to 0.5.0 (#458) 2019-08-09 12:04:05 +00:00
dependabot-preview[bot]
72ef366829
Bump assisted-inject-processor-dagger2 from 0.4.0 to 0.5.0 (#457) 2019-08-09 11:28:33 +00:00
Rafał Borcz
4adfb268a3 Update gitignore (#455) 2019-08-08 17:40:23 +02:00
dependabot-preview[bot]
bf0ea1b012
Bump reactivenetwork-rx2 from 3.0.3 to 3.0.4 (#456) 2019-08-07 17:09:26 +00:00
dependabot-preview[bot]
1267a39e32
Bump rxjava from 2.2.10 to 2.2.11 (#454) 2019-08-02 11:01:28 +00:00
dependabot-preview[bot]
462b917832
Bump mockito-core from 3.0.2 to 3.0.4 (#451) 2019-07-29 07:34:21 +00:00
dependabot-preview[bot]
c5b16bb0d0
Bump mockito-android from 3.0.2 to 3.0.4 (#450) 2019-07-29 07:04:29 +00:00
dependabot-preview[bot]
91268dcc67
Bump mockito-inline from 3.0.2 to 3.0.4 (#452) 2019-07-29 07:02:15 +00:00
dependabot-preview[bot]
13f9981be6 Bump dagger from 2.23.2 to 2.24 (#449) 2019-07-28 12:41:29 +02:00
dependabot-preview[bot]
f9b3bd7b3a
Bump gradle from 1.30.0 to 1.31.0 (#448) 2019-07-26 08:14:13 +00:00
Rafał Borcz
39916c2796 Update README (#447) 2019-07-17 13:41:47 +02:00
dependabot-preview[bot]
03f5ddaf0d
Bump work_manager from 2.0.1 to 2.1.0 (#441) 2019-07-12 12:50:56 +00:00
dependabot-preview[bot]
ea4f55c06d
Bump gradle from 1.29.0 to 1.30.0 (#443) 2019-07-12 08:48:33 +00:00
dependabot-preview[bot]
5b0232f77e
Bump mockito-inline from 3.0.1 to 3.0.2 (#442) 2019-07-12 08:47:36 +00:00
dependabot-preview[bot]
0b68091e55
Bump mockito-android from 3.0.1 to 3.0.2 (#444) 2019-07-12 08:47:11 +00:00
dependabot-preview[bot]
7136c9282e
Bump mockito-core from 3.0.1 to 3.0.2 (#445) 2019-07-12 08:46:52 +00:00
dependabot-preview[bot]
09303153a5
Bump firebase-core from 17.0.0 to 17.0.1 (#440) 2019-07-12 08:44:52 +00:00
dependabot-preview[bot]
bdf0fba95b
Bump gradle from 3.4.1 to 3.4.2 (#438) 2019-07-10 07:22:59 +00:00
Mikołaj Pich
86f24e5821 Group dependencies versions in variables (#437) 2019-07-09 13:33:36 +02:00
dependabot-preview[bot]
35f094b983
Bump kotlin_version from 1.3.40 to 1.3.41 (#433) 2019-07-09 07:45:20 +00:00
dependabot-preview[bot]
12cf1e0b66
Bump mockito-inline from 2.28.2 to 3.0.1 (#434) 2019-07-09 07:40:24 +00:00
dependabot-preview[bot]
68b37fc5dd
Bump mockito-android from 2.28.2 to 3.0.1 (#435) 2019-07-09 07:22:24 +00:00
dependabot-preview[bot]
ba5bad042a
Bump mockito-core from 2.28.2 to 3.0.1 (#436) 2019-07-09 07:21:54 +00:00
dependabot-preview[bot]
c5323ee811
Bump google-services from 4.2.0 to 4.3.0 (#432) 2019-06-28 18:29:30 +00:00
dependabot-preview[bot]
df9c685217
Bump frag-nav from 3.2.0 to 3.3.0 (#430) 2019-06-26 11:44:23 +00:00
dependabot-preview[bot]
73fa21d45f
Bump firebase-core from 16.0.9 to 17.0.0 (#423) 2019-06-21 14:06:24 +00:00
Rafał Borcz
344fa1bbd7 Increase min SDK to 16 (#429) 2019-06-21 14:54:10 +02:00
dependabot-preview[bot]
01318c8c29
Bump rxjava from 2.2.9 to 2.2.10 (#428) 2019-06-21 10:08:49 +00:00
dependabot-preview[bot]
851486df28
Bump dagger-android-support from 2.23.1 to 2.23.2 (#424) 2019-06-20 22:00:35 +00:00
dependabot-preview[bot]
d8b3c5d9d6
Bump dagger-android-processor from 2.23.1 to 2.23.2 (#425) 2019-06-20 21:43:05 +00:00
dependabot-preview[bot]
2883b21ddf
Bump dagger-compiler from 2.23.1 to 2.23.2 (#426) 2019-06-20 21:22:57 +00:00
dependabot-preview[bot]
4956cf3988
Bump kotlin_version from 1.3.31 to 1.3.40 (#427) 2019-06-20 21:17:57 +00:00
Mikołaj Pich
bdbcec786a Merge tag '0.9.3' into develop
0.9.3
2019-06-15 01:14:04 +02:00
Mikołaj Pich
c40bbf2398 Merge branch 'release/0.9.3' 2019-06-15 01:13:50 +02:00
Mikołaj Pich
08ecbb5341
Version 0.9.3 2019-06-15 01:13:36 +02:00
Rafał Borcz
e38e458386 Fix crash on login when error message is null (#420) 2019-06-15 00:51:54 +02:00
dependabot-preview[bot]
14674b7778
Bump room-testing from 2.1.0-rc01 to 2.1.0 (#417) 2019-06-13 22:33:12 +00:00
dependabot-preview[bot]
c6f0588165
Bump room-compiler from 2.1.0-rc01 to 2.1.0 (#415) 2019-06-13 22:12:23 +00:00
dependabot-preview[bot]
7591af0de1
Bump room-rxjava2 from 2.1.0-rc01 to 2.1.0 (#411) 2019-06-13 21:52:32 +00:00
dependabot-preview[bot]
cbfed09b52
Bump room-runtime from 2.1.0-rc01 to 2.1.0 (#419) 2019-06-13 21:29:47 +00:00
Rafał Borcz
5c185c5eca Merge branch 'release/0.9.2' 2019-06-08 11:38:42 +02:00
Rafał Borcz
4a026e4a70 Merge tag '0.9.2' into develop
0.9.2 0.9.2
2019-06-08 11:38:42 +02:00
Rafał Borcz
0bccbc6011 Version 0.9.2 2019-06-08 11:38:06 +02:00
Rafał Borcz
ed6a0f8cd0 Add StackOverflowError to RxJava's error handler (#408) 2019-06-07 21:38:53 +02:00
Rafał Borcz
58d5e4da0e Fix showing empty view in mobile device view (#407) 2019-06-07 19:03:26 +02:00
Rafał Borcz
ba6fb1a4b9 Fix update of grades in GradeDetailsFragment (#406) 2019-06-07 14:46:11 +02:00
Rafał Borcz
b6b862d4c3 Organize AndroidX libraries (#404) 2019-06-07 14:12:52 +02:00
Rafał Borcz
9b044a19fe Fix typo in service interval (#405) 2019-06-06 22:47:45 +02:00
Rafał Borcz
7485cb2a39 Fix change of worker specs after app update (#402) 2019-06-06 22:32:43 +02:00
Rafał Borcz
75122d0dcd Fix crash TabLayout on Android 4.x in new version of material components (#403) 2019-06-06 19:16:00 +02:00
dependabot-preview[bot]
39af56484b
Bump threetenabp from 1.2.0 to 1.2.1 (#401) 2019-06-04 11:23:50 +00:00
Mikołaj Pich
05f7e1d115 Merge tag '0.9.1' into develop
Version 0.9.1
2019-06-04 02:44:04 +02:00
Mikołaj Pich
9cd5377438 Merge branch 'release/0.9.1' 2019-06-04 02:43:54 +02:00
Mikołaj Pich
7a61b233f0
Version 0.9.1 2019-06-04 02:43:50 +02:00
Mikołaj Pich
83dbd9874e
Add option to force calc average by app (#400) 2019-06-04 02:27:15 +02:00
Mikołaj Pich
1d9a49d552 Add githook plugin (#398) 2019-06-04 01:53:20 +02:00
Rafał Borcz
6175081b88 Fix tab layout crash on prelolipop (#399) 2019-06-03 22:47:35 +02:00
Rafał Borcz
116e551186 Merge tag '0.9.0' into develop
0.9.0 0.9.0
2019-06-03 18:15:42 +02:00
Rafał Borcz
713500d892 Merge branch 'release/0.9.0' 2019-06-03 18:15:41 +02:00
Rafał Borcz
dfdbe374c2 Version 0.9.0 2019-06-03 18:15:11 +02:00
Mikołaj Pich
b1e3bab5e7 Add F-Droid flavor (#349) 2019-06-03 14:12:48 +02:00
Rafał Borcz
0b2ef367da Change timeout string (#397) 2019-06-03 13:15:21 +02:00
Mikołaj Pich
28f27db2b5 Add mobile access managment (#344) 2019-06-03 00:43:54 +02:00
Rafał Borcz
5c70cd8b8c Add session expired dialog after password change (#389) 2019-05-31 15:12:10 +02:00
Mikołaj Pich
0f75ff3206 Show grades average from register if exist instead of calculating (#374) 2019-05-31 14:40:53 +02:00
Rafał Borcz
383cab4dae Fix only wifi setting (#394) 2019-05-31 13:46:53 +02:00
dependabot-preview[bot]
e1b0db76c2 Bump material from 1.1.0-alpha06 to 1.1.0-alpha07 (#393) 2019-05-31 11:46:29 +02:00
dependabot-preview[bot]
f10684097c
Bump dagger-compiler from 2.23 to 2.23.1 (#391) 2019-05-31 02:02:09 +00:00
dependabot-preview[bot]
35d4342bec
Bump dagger-android-processor from 2.23 to 2.23.1 (#392) 2019-05-31 01:42:40 +00:00
dependabot-preview[bot]
068aee215a
Bump dagger-android-support from 2.23 to 2.23.1 (#390) 2019-05-31 01:19:26 +00:00
dependabot-preview[bot]
033074c66b Bump room-testing from 2.1.0-beta01 to 2.1.0-rc01 (#377) 2019-05-30 16:46:54 +02:00
dependabot-preview[bot]
0de534cb66 Bump room-rxjava2 from 2.1.0-beta01 to 2.1.0-rc01 (#385) 2019-05-30 16:46:28 +02:00
dependabot-preview[bot]
26e4619dde
Bump room-runtime from 2.1.0-beta01 to 2.1.0-rc01 (#388) 2019-05-30 14:06:06 +00:00
dependabot-preview[bot]
cf08d1ff24
Bump mockito-core from 2.28.1 to 2.28.2 (#387) 2019-05-30 13:58:42 +00:00
dependabot-preview[bot]
96c400a0bd
Bump runner from 1.1.1 to 1.2.0 (#386) 2019-05-30 13:50:28 +00:00
dependabot-preview[bot]
e238f65dde Bump rxjava from 2.2.8 to 2.2.9 (#381) 2019-05-30 15:22:15 +02:00
dependabot-preview[bot]
ba7966125b
Bump dagger-compiler from 2.22.1 to 2.23 (#380) 2019-05-30 12:01:15 +00:00
dependabot-preview[bot]
1536208e45
Bump core from 1.1.0 to 1.2.0 (#383) 2019-05-30 11:46:56 +00:00
dependabot-preview[bot]
24cc07264a
Bump dagger-android-support from 2.22.1 to 2.23 (#384) 2019-05-30 11:31:22 +00:00
dependabot-preview[bot]
1ad5232520
Bump mockito-inline from 2.28.1 to 2.28.2 (#382) 2019-05-30 11:29:13 +00:00
dependabot-preview[bot]
07f3333029
Bump mockito-android from 2.28.1 to 2.28.2 (#379) 2019-05-30 11:12:44 +00:00
dependabot-preview[bot]
214afb82a6
Bump junit from 1.1.0 to 1.1.1 (#378) 2019-05-30 11:05:05 +00:00
dependabot-preview[bot]
7a69710261
Bump dagger-android-processor from 2.22.1 to 2.23 (#376) 2019-05-30 10:54:26 +00:00
dependabot-preview[bot]
64d3afbdb3
Bump room-compiler from 2.1.0-beta01 to 2.1.0-rc01 (#375) 2019-05-30 10:53:35 +00:00
dependabot-preview[bot]
387e46f72d
Bump mockito-inline from 2.27.5 to 2.28.1 (#372) 2019-05-29 00:16:10 +00:00
dependabot-preview[bot]
89acc2f384
Bump mockito-android from 2.27.5 to 2.28.1 (#373) 2019-05-28 23:59:19 +00:00
dependabot-preview[bot]
4ef1439878 Bump mockito-core from 2.27.2 to 2.28.1 (#371) 2019-05-29 01:57:19 +02:00
dependabot-preview[bot]
6efd170e03
Bump mockito-inline from 2.27.0 to 2.27.5 (#367) 2019-05-28 14:57:39 +00:00
dependabot-preview[bot]
82cd39329a
Bump mockito-android from 2.27.0 to 2.27.5 (#354) 2019-05-28 14:22:24 +00:00
dependabot-preview[bot]
b38e0d04e7 Bump threetenbp from 1.3.8 to 1.4.0 (#366) 2019-05-28 14:41:48 +02:00
dependabot-preview[bot]
90b2ffe250 Bump logging-interceptor from 3.12.1 to 3.12.3 (#369)
Bumps logging-interceptor from 3.12.1 to 3.12.3.
2019-05-28 14:41:27 +02:00
dependabot-preview[bot]
33951dff54
Bump crashlytics from 2.9.9 to 2.10.1 (#365) 2019-05-28 11:30:42 +00:00
dependabot-preview[bot]
9ced00c4d7
Bump room-runtime from 2.1.0-alpha07 to 2.1.0-beta01 (#364) 2019-05-28 11:06:56 +00:00
dependabot-preview[bot]
2ac1638911
Bump room-testing from 2.1.0-alpha07 to 2.1.0-beta01 (#363) 2019-05-28 10:48:37 +00:00
dependabot-preview[bot]
463a7e2744 Bump gradle from 1.28.1 to 1.29.0 (#355)
Bumps gradle from 1.28.1 to 1.29.0.
2019-05-28 02:24:36 +02:00
dependabot-preview[bot]
d14382f3b4 Bump firebase-core from 16.0.8 to 16.0.9 (#358)
Bumps firebase-core from 16.0.8 to 16.0.9.
2019-05-28 00:58:09 +02:00
dependabot-preview[bot]
efa0b19cc1 Bump room-rxjava2 from 2.1.0-alpha07 to 2.1.0-beta01 (#357)
Bumps room-rxjava2 from 2.1.0-alpha07 to 2.1.0-beta01.
2019-05-28 00:39:12 +02:00
dependabot-preview[bot]
7cb893a254 Bump play-publisher from 2.2.0 to 2.2.1 (#356)
Bumps play-publisher from 2.2.0 to 2.2.1.
2019-05-28 00:37:06 +02:00
dependabot-preview[bot]
f7371f7b73 Bump room-compiler from 2.1.0-alpha07 to 2.1.0-beta01 (#350)
Bumps room-compiler from 2.1.0-alpha07 to 2.1.0-beta01.
2019-05-27 23:04:12 +02:00
dependabot-preview[bot]
9c626ad517 Bump reactivenetwork-rx2 from 3.0.2 to 3.0.3 (#351)
Bumps [reactivenetwork-rx2](https://github.com/pwittchen/ReactiveNetwork) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/pwittchen/ReactiveNetwork/releases)
- [Changelog](https://github.com/pwittchen/ReactiveNetwork/blob/RxJava2.x/CHANGELOG.md)
- [Commits](https://github.com/pwittchen/ReactiveNetwork/commits)
2019-05-27 22:58:17 +02:00
dependabot-preview[bot]
9c4c6b0192 Bump material from 1.1.0-alpha05 to 1.1.0-alpha06 (#353)
Bumps [material](https://github.com/material-components/material-components-android) from 1.1.0-alpha05 to 1.1.0-alpha06.
- [Release notes](https://github.com/material-components/material-components-android/releases)
- [Commits](https://github.com/material-components/material-components-android/compare/1.1.0-alpha05...1.1.0-alpha06)
2019-05-27 22:49:16 +02:00
dependabot-preview[bot]
8efc4d750d Bump sonarqube-gradle-plugin from 2.7 to 2.7.1 (#352)
Bumps sonarqube-gradle-plugin from 2.7 to 2.7.1.
2019-05-27 22:41:16 +02:00
Mikołaj Pich
e4a6caa13e
Version 0.8.4 2019-05-27 18:13:20 +02:00
Mikołaj Pich
209e75160a Fix network constraint in background sync (#348) 2019-05-25 14:34:17 +02:00
Mikołaj Pich
153e026a8d
Version 0.8.3 2019-05-20 00:21:30 +02:00
Mikołaj Pich
8731c2e1f2 Change help text when entering the symbol to a more precise one (#345) 2019-05-19 22:47:57 +02:00
Rafał Borcz
0977282a4b Fix no current student in services after logout all accounts (#342) 2019-05-18 23:42:47 +02:00
Rafał Borcz
667c4b6af7 Fix empty maybe when loading message content (#343) 2019-05-18 23:32:37 +02:00
Mikołaj Pich
1f5088cfc9 Don't copy teacher from previous lesson to completed (#341) 2019-05-18 13:03:38 +02:00
Rafał Borcz
bf6b857a3e Fix null returns in widgets (#340) 2019-05-18 00:22:07 +02:00
Mikołaj Pich
80cb94c434
Version 0.8.2 2019-05-15 19:26:25 +02:00
Rafał Borcz
0cb4eda32b Fix crash on reselecting fragment (#339) 2019-05-15 15:11:28 +02:00
Rafał Borcz
d169f964f2 Fix crash when no webview activity (#338) 2019-05-14 11:45:27 +02:00
Rafał Borcz
103ab95c80 Fix not attached fragment (#337)
* Add condition for error dialog
* Add safe call of forEach in LuckyNumberWidgetProvider
2019-05-09 22:06:11 +02:00
Mikołaj Pich
a191f03cdf
Version 0.8.1 2019-04-30 23:56:22 +02:00
Mikołaj Pich
63404b8576 Fix entity list comparing (#335) 2019-04-30 19:04:05 +02:00
Rafał Borcz
1b7760ff88 Fix dark theme background with custom theme engine (#334) 2019-04-30 17:45:37 +02:00
Rafał Borcz
24f58835e7 Fix menu view initialization and restoration (#333) 2019-04-30 17:28:09 +02:00
Mikołaj Pich
b032c459d1 Fix theme on release build (#332) 2019-04-30 11:16:23 +02:00
Mikołaj Pich
df0a1e59cc
Version 0.8.0 2019-04-29 20:39:35 +02:00
Kacper Ziubryniewicz
dbbc8069b1 Add showing proper fragment in notifications (#331) 2019-04-29 19:56:23 +02:00
Mikołaj Pich
f84040109c Add lucky number widget (#292) 2019-04-29 14:33:33 +02:00
Dominik Korsa
baf1420193 Improve login student selection layout (#329) 2019-04-29 00:55:30 +02:00
Rafał Borcz
4a36d78709 Add activity and fragment lifecycle logging (#327) 2019-04-26 23:53:02 +02:00
Rafał Borcz
4464812651 Fix configure activity's theme (#325) 2019-04-22 09:27:25 +02:00
Rafał Borcz
72a35481e5 Fix showing last message after update (#326) 2019-04-22 09:13:26 +02:00
Mikołaj Pich
017c200115 Fix grade summary final grade string (#324) 2019-04-20 22:19:06 +02:00
Mikołaj Pich
2bf7755157 Add AMOLED mode (#279) 2019-04-19 23:52:34 +02:00
Rafał Borcz
269af4b7ba Update dependencies (#323) 2019-04-18 16:38:49 +02:00
Rafał Borcz
7431738366 Add a selection of multiple students to login (#318) 2019-04-18 12:18:58 +02:00
Rafał Borcz
034b99c7ab Add counting of the full-year average to the summary of grades (#322) 2019-04-18 00:32:43 +02:00
Rafał Borcz
74e98e4430 Change style of privacy policy link (#321) 2019-04-09 23:33:53 +02:00
Mikołaj Pich
cbf3215dd1
Merge branch '0.7.x' 2019-04-08 13:51:02 +02:00
Rafał Borcz
c18877466f Add account picker for timetable widget (#314)
Close #281
2019-04-08 00:18:45 +02:00
Mikołaj Pich
6cd6cae1e0
Version 0.7.6 2019-04-07 11:08:46 +02:00
Mikołaj Pich
333f7bfa16
Add privacy policy link (#320) 2019-04-07 10:59:27 +02:00
Mikołaj Pich
aa6dcaff94
Merge branch '0.7.x' 2019-04-06 01:18:03 +02:00
Mikołaj Pich
f2fa04105d
Version 0.7.5 2019-04-06 01:06:11 +02:00
Mikołaj Pich
7d97d71066 Fix message loading if student and parent are logged in (#319)
Fixes #316
2019-04-05 19:35:21 +02:00
Mikołaj Pich
8daea5c900 Add class name to student (#315) 2019-04-04 13:00:07 +02:00
Kacper Ziubryniewicz
2bff468e56 Add deleting messages (#290) 2019-03-31 22:01:04 +02:00
Mikołaj Pich
f2855d598d
Merge branch '0.7.x' 2019-03-30 20:19:34 +01:00
Mikołaj Pich
297a2909ba Version 0.7.4 2019-03-30 19:45:57 +01:00
Rafał Borcz
935bec3f5b Add 0,75 grade modifier (#313) 2019-03-30 19:26:19 +01:00
Mikołaj Pich
e71dd55066 Fix more than one current semester (#307) 2019-03-30 18:28:37 +01:00
Rafał Borcz
4e3864f26f Add opening login view on no current student (#312) 2019-03-30 09:31:30 +01:00
Rafał Borcz
8601093725 Again fix rejected execution in sync worker (#310) 2019-03-28 23:30:30 +01:00
Rafał Borcz
b97b94ae29 Fix more than one current student (#311)
Fix #309
2019-03-28 23:07:59 +01:00
Rafał Borcz
c6c7357623 Fix black spinner in login form (#308) 2019-03-28 18:27:17 +01:00
Mikołaj Pich
1ebc296bfe
Merge branch '0.7.x' 2019-03-26 21:22:17 +01:00
Mikołaj Pich
c2ab53cfeb
Version 0.7.3 2019-03-26 19:46:59 +01:00
Rafał Borcz
87268b3ef6 Fix rejected execution in sync worker (#305) 2019-03-26 16:47:14 +01:00
Rafał Borcz
b3cd7e8ac1 Fix undeliverable network exceptions (#306)
* Remove unnecessary this
2019-03-26 14:32:23 +01:00
Mikołaj Pich
a2a18e5652
Merge branch '0.7.x' 2019-03-24 23:22:44 +01:00
Mikołaj Pich
5a997dacb7
Version 0.7.2 2019-03-24 22:42:09 +01:00
Rafał Borcz
ed9458d9a5 Fix more than one current semester in database (#304) 2019-03-24 20:21:05 +01:00
Mikołaj Pich
3656d3161f Fix crash on duplicate items (#303) 2019-03-24 17:31:39 +01:00
Rafał Borcz
d178c15d2f Update dependencies (#302) 2019-03-24 16:03:51 +01:00
Rafał Borcz
1f65b8465e Add logging to sync worker (#300) 2019-03-23 18:35:56 +01:00
Mikołaj Pich
6bb03b3be8 Fix day navigation unevenition (#301) 2019-03-23 17:29:34 +01:00
Rafał Borcz
68b9847927 Fix reselecting root fragments (#299) 2019-03-23 16:35:33 +01:00
Rafał Borcz
e1a83927c4 Fix reset button in timetable widget (#298) 2019-03-23 14:44:52 +01:00
Mikołaj Pich
fc9981aa5d Fix issues when loading lucky number (#297) 2019-03-23 13:01:01 +01:00
Rafał Borcz
2d6610e05c Set max concurrency in sync worker (#296) 2019-03-23 01:12:17 +01:00
Rafał Borcz
316cd2f7f9 Add checking current student in background services (#295) 2019-03-23 00:37:13 +01:00
Rafał Borcz
36785f019a Fix restoring the grade fragment (#293) 2019-03-22 23:54:58 +01:00
Rafał Borcz
4b78862486 Remove retry sync work when completed lessons is disabled (#294) 2019-03-22 23:41:41 +01:00
Kacper Ziubryniewicz
cd1ceea860 Add messages forwarding (#288) 2019-03-21 22:55:47 +01:00
Rafał Borcz
20d0abba29 Fix empty container id in grade fragemnt adapter (#289) 2019-03-21 22:34:41 +01:00
Mikołaj Pich
5add95ece1
Version 0.7.1 2019-03-20 21:02:09 +01:00
Rafał Borcz
575e244b3a Add swipe refresh to grade fragment (#287) 2019-03-20 20:45:26 +01:00
Rafał Borcz
8db73e9459 Fix the application finish after selecting an account (#286) 2019-03-19 18:14:55 +01:00
Mikołaj Pich
040857ba20 Change grade weightValue type to double (#285) 2019-03-19 13:23:52 +01:00
Mikołaj Pich
4b0f0de52c
Version 0.7.0 2019-03-17 21:20:37 +01:00
Kacper Ziubryniewicz
ba76453e45 Add replying to messages (#263) 2019-03-17 21:02:41 +01:00
Dominik Korsa
824ed3f282 Centre the login form (#283) 2019-03-17 19:57:25 +01:00
Mikołaj Pich
d27d069ce2 Change homework view to weekly (#284) 2019-03-17 00:17:16 +01:00
Mikołaj Pich
38aa26a3ff Add homepage button in about fragment (#280) 2019-03-16 14:22:51 +01:00
Rafał Borcz
be807cb6c8 Change settings for checking the internet connection (#282) 2019-03-15 21:33:14 +01:00
Mikołaj Pich
35f1fe8d61 Follow current grade scheme in stats chart (#277) 2019-03-12 17:34:04 +01:00
Mikołaj Pich
2621e5680d Improve the display of changes in the timetable (#275)
Closes #264
2019-03-11 20:56:47 +01:00
Rafał Borcz
475e7dd6a3 Update dependencies (#274) 2019-03-10 20:18:40 +01:00
Mikołaj Pich
feb38b97e4 Change login progress bars (#272) 2019-03-10 11:57:11 +01:00
Mikołaj Pich
f773310cdb Disable swipe to refresh on data loading (#270) 2019-03-09 21:40:20 +01:00
Rafał Borcz
f21feabc49 Add debug notification for worker (#271) 2019-03-09 20:34:30 +01:00
Mikołaj Pich
ca23f92096 Add missing text when no grade description (#269) 2019-03-09 17:16:30 +01:00
Rafał Borcz
919680c766 Migration to WorkManager (#254)
Closes #241
2019-03-09 10:13:36 +01:00
Rafał Borcz
722f8d691a Fix timetable widget automatic day switching (#267) 2019-03-07 16:38:34 +01:00
Mikołaj Pich
4f0021919c Fix grade stats loading issues (#266) 2019-03-07 13:08:59 +01:00
Mikołaj Pich
1b7db4bfbb Mitigate disappearing room numbers in timetable (#265) 2019-03-07 13:08:11 +01:00
Mikołaj Pich
dcab8df4b9 Add grade statistics (#251) 2019-03-04 12:13:37 +01:00
Mikołaj Pich
cae4f140e6 Add option to change grade (background) color scheme (#259) 2019-03-03 15:11:20 +01:00
Dominik Korsa
1b30b00bb8 Settings rename view section (#262) 2019-03-02 19:55:32 +01:00
Dominik Korsa
514d1e11aa Update grade colors (#231) 2019-03-02 19:41:38 +01:00
Dominik Korsa
66bd566526 Update login error message (#260) 2019-03-02 19:18:26 +01:00
Mikołaj Pich
e910c7a48e Mitigate notifications from old grades (#258)
Fixes #257
2019-03-02 19:15:37 +01:00
Kacper Ziubryniewicz
f8ee5cb062 Add lucky number logging (#256) 2019-02-24 19:23:03 +01:00
Kacper Ziubryniewicz
c72c301039 Add sending messages (#232) 2019-02-24 15:11:32 +01:00
Mikołaj Pich
5ba12cf8c6 Fill login credentials with default values upon fakelog selection (#255)
Resolves #245
2019-02-23 14:39:22 +01:00
Mikołaj Pich
82d7cf94e8 Mark as read items older than student registration date (#253) 2019-02-20 15:34:24 +01:00
Dominik Korsa
c365564a77 Login form style fix (#252) 2019-02-17 19:15:26 +01:00
Rafał Borcz
5526691cb6 Fix timetable widget crash on update (#250) 2019-02-17 17:32:22 +01:00
Dominik Korsa
1d7585071d Update login form to Material Design 2 (#229) 2019-02-17 00:42:09 +01:00
Mikołaj Pich
11b6c00e4a Entities unification (#248)
* Remove default entieties params

* Change var to vals

* Fix indent in data classes

* Change message unread to val

* Make all fields in Message non-nullable

* Add destructive db migrations #246

* Fix password decrypting

* Fix tests

* Fix student logout

* Use orEmpty() on nullable strings

* Use var in Student password and Message unread
2019-02-16 21:20:23 +01:00
Mikołaj Pich
c56cfec564 Apply ripple effect on grade details header only if item is expandable (#239)
Resolves #234
2019-02-14 22:23:52 +01:00
Mikołaj Pich
f305a7a599 Sort repositories (#244) 2019-02-13 21:44:40 +01:00
Rafał Borcz
ad9b6d42f0 Fix no current student (#243) 2019-02-13 20:49:19 +01:00
Mikołaj Pich
297502056c Add completed lessons (#236) 2019-02-13 19:21:27 +01:00
Kacper Ziubryniewicz
52ed7dcb6c Fix lucky number crash (#242) 2019-02-13 14:10:21 +01:00
Rafał Borcz
9fcf245ecd Fix uninitialized fragment after restoring the activity (#237) 2019-02-12 00:41:02 +01:00
Rafał Borcz
1b1f2ae3bb Split login form for two fragments (#230) 2019-02-11 02:04:24 +01:00
Kacper Ziubryniewicz
2f87779647 Add Firebase Analytics for the loaded lucky number (#233) 2019-02-05 18:18:49 +01:00
Mikołaj Pich
79093ca6f2
Merge branch '0.6.x' 2019-01-26 00:04:11 +01:00
Mikołaj Pich
7f162441e2
Version 0.6.6 2019-01-25 22:12:19 +01:00
Kacper Ziubryniewicz
4da812af39 Add lucky numbers (#216) 2019-01-25 20:54:27 +01:00
Mikołaj Pich
43f6048c27 Upgrade to Gradle Play Publisher v2 (#228) 2019-01-25 20:41:03 +01:00
Rafał Borcz
ffc2ef9a4e Remove renaming source file in R8 (#227) 2019-01-25 19:20:13 +01:00
Rafał Borcz
d3c13b8fc3 Fix empty fragment list in fragment manager (#226) 2019-01-24 21:16:22 +01:00
Kacper Ziubryniewicz
c78fb83774 Fix receiving a lot of notifications after turning them off for a while (#225) 2019-01-24 18:32:51 +01:00
Rafał Borcz
941765a3a3 Fix empty Maybe in student repository (#224) 2019-01-23 18:28:51 +01:00
Mikołaj Pich
189830e0f4
Version 0.6.5 2019-01-20 23:38:02 +01:00
Mikołaj Pich
2061d6408f
Change icon of semester switch (#223) 2019-01-20 23:36:16 +01:00
Rafał Borcz
e29886560e Disable obfuscate in R8 (#222) 2019-01-20 22:43:50 +01:00
Mikołaj Pich
20d9313257
Version 0.6.4 2019-01-20 15:39:11 +01:00
Rafał Borcz
8476f0e62e Update dependencies (#221) 2019-01-20 15:00:33 +01:00
Rafał Borcz
a174ae998d Add api initialization to the message repository (#220) 2019-01-20 14:16:24 +01:00
Rafał Borcz
c5bab52fa2 Add more logging (#219) 2019-01-19 23:15:14 +01:00
Rafał Borcz
e6d60e670e Fix crash on duplicate notes (#218) 2019-01-18 19:10:14 +01:00
Dominik Korsa
c0ddd82e03 Fix exam_no_items english translation (#217)
Changed `exam_no_items` from **No exams in this week** to **No exams this week**
2019-01-18 12:41:11 +01:00
Rafał Borcz
28f1430be0 Fix crash on Meizu devices (#215) 2019-01-13 23:53:01 +01:00
Rafał Borcz
840b21a213 Fix dialog state (#214) 2019-01-13 23:25:07 +01:00
Mikołaj Pich
65230a31ec
Version 0.6.3 2019-01-12 14:41:23 +01:00
Rafał Borcz
c2bcbfaaa9 Add grade id to equals (#213) 2019-01-12 14:16:59 +01:00
Mikołaj Pich
c3d354cd5b Add chucker okhttp inspector (#205) 2019-01-10 17:10:10 +01:00
Rafał Borcz
ed49eb4c9c Fix stable id in grade fragment (#211) 2019-01-09 17:30:31 +01:00
Rafał Borcz
7d1866c304 Fix NPE on error dialog (#212) 2019-01-09 17:29:55 +01:00
Mikołaj Pich
d2a736295a
Version 0.6.2 2019-01-07 13:31:49 +01:00
Rafał Borcz
a9e788f7ff Fix scroll to start in grade fragment (#210) 2019-01-07 12:52:55 +01:00
Mikołaj Pich
ea6a928cb4 Fix spinner dropdown arrow not displaying in attendance summary (#207) 2019-01-07 00:56:32 +01:00
Mikołaj Pich
b9ac592ea9 Fix broken grade summary view (#208) 2019-01-07 00:55:39 +01:00
Mikołaj Pich
450ae4e124 Fix item sorting in grades details (#209) 2019-01-06 23:56:01 +01:00
Mikołaj Pich
ca504f6efc Change icon of the attendance summary (#206) 2019-01-06 23:53:20 +01:00
Dominik Korsa
4e1fd6b2cf English translation fix (#204) 2019-01-03 09:49:54 +01:00
Dominik Korsa
3ab15e0e00 Added icon for the DEV version (#203) 2018-12-20 15:03:42 +01:00
Mikołaj Pich
504a73ee6c
Version 0.6.1 2018-12-18 16:24:45 +01:00
Mikołaj Pich
24e4870baf Fix firebase crashlytics (#202) 2018-12-18 16:12:15 +01:00
Mikołaj Pich
30388fffd7
Version 0.6.0 2018-12-17 02:19:50 +01:00
Rafał Borcz
04f386ea3d Fix error message snackbar (#201) 2018-12-17 00:17:21 +01:00
Rafał Borcz
9c94305ba5 Configure code shrinking (#200) 2018-12-15 21:29:57 +01:00
Rafał Borcz
765eac5251 Fix blank number and change strikethrough lesson in widget (#198) 2018-12-14 22:36:21 +01:00
Pavuloff
2d4ada6c9e Add new app icon (#199) 2018-12-14 21:09:15 +01:00
Mikołaj Pich
5ee979447f Migrate to firebase (#196) 2018-12-14 00:20:54 +01:00
Rafał Borcz
229bfe8d22 Adjustment login layout to material design (#197) 2018-12-11 15:54:26 +01:00
Rafał Borcz
175f2d7b57 Update dependencies (#195) 2018-12-08 14:30:10 +01:00
Rafał Borcz
247e81ba00 Show full subject name on expand (#193) 2018-12-08 12:27:00 +01:00
Rafał Borcz
6fd70a0194 Add mark as read to grade menu (#194) 2018-12-08 12:24:52 +01:00
Rafał Borcz
f96d0ebed9 Add a summary of attendance (#132) 2018-12-07 19:01:19 +01:00
Mikołaj Pich
900065d758 Add option to change plus and minus modifier separately (#192) 2018-12-07 00:19:04 +01:00
Mikołaj Pich
92baecbd0d Add messages (#148) 2018-12-06 18:35:02 +01:00
Rafał Borcz
48f96b5932 Avoid re-loading fragments on the current week/day (#191) 2018-12-02 15:23:46 +01:00
Rafał Borcz
9a298833f5 Add workaround password decryption error (#189) 2018-12-01 15:59:03 +01:00
Rafał Borcz
11cc85e37c Fix the deformed settings icon (#190) 2018-11-30 23:15:13 +01:00
Rafał Borcz
60c7316742 Add version text to login form (#188) 2018-11-29 19:07:44 +01:00
Rafał Borcz
834ef7c297 Fix login when an error occurs (#187) 2018-11-28 20:06:08 +01:00
Rafał Borcz
7686228e01 Add details to error message (#186) 2018-11-25 15:03:47 +01:00
Rafał Borcz
7a3c0de7ad Add account manager (#183) 2018-11-24 18:51:41 +01:00
Mikołaj Pich
1f30deb36e Add config for travis ci (#185) 2018-11-23 12:38:55 +01:00
Rafał Borcz
c2b8f85ad9 Fix no expandable grades (#184) 2018-11-15 17:33:12 +01:00
Mikołaj Pich
9f04dbf60f Add homework (#181) 2018-11-14 09:18:00 +01:00
Rafał Borcz
24f59b45c3 Fix crash on restore LoginActivity (#182) 2018-11-11 23:24:49 +01:00
Mikołaj Pich
cb7e70471b Add notes (#179) 2018-11-11 17:45:58 +01:00
Rafał Borcz
240e61df0e Add preference for the expandable grades (#178) 2018-11-10 23:29:18 +01:00
Mikołaj Pich
2b60f555e9 Move night mode initialization to WulkanowyApp (#180)
Fixes #162
2018-11-10 23:24:33 +01:00
Rafał Borcz
2f24b25399 Add preference for the grades modifier (#177)
Resolve #163
2018-11-04 13:23:34 +01:00
Rafał Borcz
533637d32a Add vibrate permission (#176) 2018-11-03 15:21:29 +01:00
Mikołaj Pich
fd6c0b6c74
Merge pull request #153 from wulkanowy/app-modules-refactor
Refactor app modules
2018-11-03 15:01:30 +01:00
Mikołaj Pich
5e30c8e949 Logger refactor (#175) 2018-11-03 14:49:20 +01:00
Rafał Borcz
7f6f632b73 Timetable widget refactor (#171) 2018-11-02 17:38:20 +01:00
Mikołaj Pich
70879945f2 Services refactor (#168) 2018-11-01 19:27:02 +01:00
Mikołaj Pich
ab71dd3fde Sort lessons by number (#174) 2018-10-30 22:07:44 +01:00
Mikołaj Pich
0a7f09077f Dark theme refactor (#173) 2018-10-30 22:06:29 +01:00
Mikołaj Pich
745894f3a3 Fix range of days in exam navigation (#172) 2018-10-24 16:31:08 +02:00
Rafał Borcz
0211a7f0a0 Refactor packages hierarchy (#170) 2018-10-23 17:12:57 +02:00
Rafał Borcz
837bce7286 Settings refactor (#166) 2018-10-22 22:47:54 +02:00
Rafał Borcz
b680cc4366 Migrate to AndroidX (#169) 2018-10-20 20:59:46 +02:00
Mikołaj Pich
f35d9d4b93 Change all entities ids from string to int (#167) 2018-10-20 17:57:24 +02:00
Rafał Borcz
27f6fc7e04 Modules improvements (#164) 2018-10-14 22:16:58 +02:00
Mikołaj Pich
bb69d1b643 Refactor multi logs support (#165) 2018-10-14 15:42:36 +02:00
Mikołaj Pich
5cd8ed88c0 Refactor timetable module (#160) 2018-10-06 10:53:34 +02:00
Rafał Borcz
f2b7c0e781 Refactor grade module (#156) 2018-10-03 21:28:23 +02:00
Mikołaj Pich
357b2350cb Refactor attendance module (#161) 2018-10-01 19:41:09 +02:00
Mikołaj Pich
a1f64baca4 Refactor exam module (#157) 2018-09-24 15:21:47 +02:00
Mikołaj
6b07a56a1b Created issue template (#159) 2018-09-22 23:01:19 +02:00
Rafał Borcz
b617957891 Migrate to new api (#155) 2018-08-26 00:18:31 +02:00
Rafał Borcz
0e962c17c2 Refactor main module (#154) 2018-08-24 15:48:29 +02:00
Rafał Borcz
a90d5cb9c3 Refactor login module (#151) 2018-08-22 22:31:17 +02:00
fossabot
64b0919b7f Add license scan report and status (#152) 2018-08-17 14:35:41 +02:00
Mikołaj Pich
0f5a801464 Add homework api (#150) 2018-08-16 12:27:32 +02:00
Mikołaj Pich
d7eac45e96 Make API responses structure flat (#149) 2018-07-27 13:28:32 +02:00
Rafał Borcz
ef5d3aead9 Refactoring password encryption (#147) 2018-07-18 21:13:57 +02:00
Mikołaj Pich
5dcd4f9b72
Version 0.5.2 2018-07-15 19:09:31 +02:00
Mikołaj Pich
c4792289ef Fix 29 migration (#146) 2018-07-15 19:02:49 +02:00
Mikołaj Pich
4b93a76693
Version 0.5.1 2018-07-15 15:40:07 +02:00
Mikołaj Pich
d44a1dbce1 Add weight on grades list (#145) 2018-07-15 15:15:19 +02:00
Mikołaj Pich
083765b020 Adjust colors of grades in dark theme (#143) 2018-07-15 14:20:22 +02:00
Rafał Borcz
b8a31c3faf Upgrade android SDK (#144) 2018-07-14 20:09:58 +02:00
Mikołaj Pich
378aba9716 Add support for multiple SnP sites (#140) 2018-07-14 16:52:09 +02:00
Mikołaj Pich
5a4b8b22f3 Stop synchronization on holidays (#142) 2018-07-14 14:06:57 +02:00
Mikołaj Pich
8725640168 User short grade names in grades summary (#141) 2018-06-29 11:27:18 +02:00
Rafał Borcz
dab1bd4ac6
Version 0.5.0 2018-06-14 14:45:32 +02:00
Mikołaj Pich
11578aa735 Add dark theme (#133) 2018-06-14 11:40:46 +02:00
Rafał Borcz
b63e28f9a9 Separate synchronization from login (#137) 2018-06-13 18:53:42 +02:00
Rafał Borcz
072c504d2b Clean data user on bad user credentials (#138) 2018-06-13 03:07:34 +02:00
Mikołaj Pich
7b7be1eef1 API fixes (#136) 2018-06-10 19:46:34 +02:00
Rafał Borcz
81d177c270 Hide actionbar on scroll (#135) 2018-06-09 00:59:39 +02:00
Rafał
8d014ab7e9
Fix displaying the replacements in widget (#134) 2018-06-07 08:13:49 +02:00
Mikołaj Pich
a06d114127 Add logger (#131) 2018-06-06 19:38:54 +02:00
Rafał Borcz
0e16519baf Add a summary of grades (#127) 2018-06-04 21:47:46 +02:00
Mikołaj Pich
dde5775a41 Move ticks converter to api (#130) 2018-06-01 12:52:03 +02:00
Mikołaj Pich
e2003e2538 Expand current day on startup (#129) 2018-05-31 23:54:59 +02:00
Mikołaj Pich
228f680e5d Hide empty fields in summary (#128) 2018-05-31 23:01:52 +02:00
Mikołaj Pich
306092ce45 Add mobile access API (#126) 2018-05-30 11:57:29 +02:00
Mikołaj Pich
d4b172e022 Version 0.4.5 2018-05-28 11:32:39 +02:00
Rafał Borcz
b4c765b482 [API] Fix timetable endpoint (#125) 2018-05-28 11:29:43 +02:00
Rafał Borcz
3f1fff6d96 Implementation of a new Dagger injection (#103) 2018-05-26 20:44:06 +02:00
Mikołaj Pich
b59008a90f
Version 0.4.4 2018-05-25 20:33:45 +02:00
Mikołaj Pich
74c0dda999 Fix lesson description from warning (#124) 2018-05-25 20:14:16 +02:00
Rafał Borcz
2288ceffb8 Stop refreshing while semester switching window open (#123) 2018-05-25 19:10:34 +02:00
Mikołaj Pich
ffe8511e3f Add some fabric answers (#120) 2018-05-25 16:35:12 +02:00
Mikołaj Pich
34205e4a8b Fix autofill on api lvl 26 (#122) 2018-05-25 11:49:53 +02:00
Rafał Borcz
ef648c7f8b Clear db before register (#121) 2018-05-24 22:25:24 +02:00
Mikołaj Pich
3592946e6f Fix api login(#119) 2018-05-23 19:21:35 +02:00
Mikołaj Pich
859f8dc319 Avoid null if cell second div not contain span (#118) 2018-05-23 18:44:04 +02:00
1338 changed files with 138919 additions and 23120 deletions

View file

@ -1,5 +1,3 @@
exclude: component_depth: 10
- /app/src/main/java/io/github/wulkanowy/data/db/dao/entities/.*
component_depth: 1
languages: languages:
- java - kotlin

View file

@ -7,11 +7,11 @@ references:
container_config: &container_config container_config: &container_config
docker: docker:
- image: circleci/android:api-26-alpha - image: circleci/android@sha256:5cdc8626cc6f13efe5ed982cdcdb432b0472f8740fed8743a6461e025ad6cdfc
working_directory: *workspace_root working_directory: *workspace_root
environment: environment:
environment: environment:
JVM_OPTS: -Xmx3200m _JAVA_OPTS: -Xmx3072m
attach_workspace: &attach_workspace attach_workspace: &attach_workspace
attach_workspace: attach_workspace:
@ -25,27 +25,20 @@ jobs:
build: build:
<<: *container_config <<: *container_config
steps: steps:
- run: |
curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | bash
- checkout - checkout
- restore_cache: - restore_cache:
<<: *general_cache_key <<: *general_cache_key
- run: - run:
name: Setup environment name: Setup environment
command: ./gradlew dependencies --no-daemon --stacktrace --console=plain -PdisablePreDex || true command: ./gradlew dependencies --no-daemon --stacktrace --console=plain -PdisablePreDex || true
- run:
name: Decrypt keys
command: |
openssl aes-256-cbc -d -in ./app/key-encrypted.p12 -k $ENCRYPT_KEY >> ./app/key.p12
openssl aes-256-cbc -d -in ./app/upload-key-encrypted.jks -k $ENCRYPT_KEY >> ./app/upload-key.jks
- run: - run:
name: Initial build name: Initial build
command: ./gradlew build assembleDebug -x test -x lint -x fabricGenerateResourcesRelease --no-daemon --stacktrace --console=plain -PdisablePreDex command: ./gradlew build -x test -x lint -x fabricGenerateResourcesFdroidRelease -x fabricGenerateResourcesPlayRelease -x packageRelease --no-daemon --stacktrace --console=plain -PdisablePreDex
- run: - run:
name: Clear keys name: Run FOSSA
command: | command: fossa --no-ansi || true
rm ./app/key.p12 ./app/upload-key.jks
- store_artifacts:
path: ./app/build/outputs/apk/
destination: apks/
- persist_to_workspace: - persist_to_workspace:
root: *workspace_root root: *workspace_root
paths: paths:
@ -63,7 +56,7 @@ jobs:
<<: *general_cache_key <<: *general_cache_key
- run: - run:
name: Run lint name: Run lint
command: ./gradlew lint -x fabricGenerateResourcesRelease --no-daemon --stacktrace --console=plain -PdisablePreDex command: ./gradlew lint -x fabricGenerateResourcesFdroidRelease -x fabricGenerateResourcesPlayRelease --no-daemon --stacktrace --console=plain -PdisablePreDex
- store_artifacts: - store_artifacts:
path: ./app/build/reports/ path: ./app/build/reports/
destination: lint_reports/app/ destination: lint_reports/app/
@ -82,16 +75,13 @@ jobs:
<<: *general_cache_key <<: *general_cache_key
- run: - run:
name: Run app tests name: Run app tests
command: ./gradlew :app:test :app:jacocoTestReport -x fabricGenerateResourcesRelease --no-daemon --stacktrace --console=plain -PdisablePreDex command: ./gradlew :app:test :app:jacocoTestReport -x fabricGenerateResourcesFdroidRelease -x fabricGenerateResourcesPlayRelease --no-daemon --stacktrace --console=plain -PdisablePreDex
- run: - run:
name: Upload unit code coverage to codecov name: Upload unit code coverage to codecov
command: bash <(curl -s https://codecov.io/bash) -F app command: bash <(curl -s https://codecov.io/bash) -F app
- store_artifacts: - store_artifacts:
path: ./app/build/reports/tests/ path: ./app/build/reports/
destination: tests_reports/ destination: reports/
- store_artifacts:
path: ./app/build/reports/jacoco/jacocoTestDebugUnitTestReport/
destination: coverage_reports/
- store_test_results: - store_test_results:
path: ./app/build/test-results path: ./app/build/test-results
- persist_to_workspace: - persist_to_workspace:
@ -99,38 +89,16 @@ jobs:
paths: paths:
- "./app/build/jacoco" - "./app/build/jacoco"
api-test:
<<: *container_config
steps:
- *attach_workspace
- restore_cache:
<<: *general_cache_key
- run:
name: Run api tests
command: ./gradlew :api:test :api:jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex
- run:
name: Upload code coverage to codecov
command: bash <(curl -s https://codecov.io/bash) -F api
- store_artifacts:
path: ./api/build/reports/tests/
destination: tests_reports/
- store_artifacts:
path: ./api/build/reports/jacoco/test/
destination: coverage_reports/
- store_test_results:
path: ./api/build/test-results
- persist_to_workspace:
root: *workspace_root
paths:
- "./api/build/jacoco"
instrumented: instrumented:
<<: *container_config <<: *container_config
steps: steps:
- *attach_workspace - *attach_workspace
- run:
name: Accept licenses
command: yes | sdkmanager --licenses && yes | sdkmanager --update
- run: - run:
name: Setup emulator name: Setup emulator
command: sdkmanager "system-images;android-19;google_apis;armeabi-v7a" && echo "no" | avdmanager create avd -n test -k "system-images;android-19;google_apis;armeabi-v7a" command: sdkmanager "system-images;android-22;default;armeabi-v7a" && echo "no" | avdmanager create avd -n test -k "system-images;android-22;default;armeabi-v7a"
- run: - run:
name: Launch emulator name: Launch emulator
command: export LD_LIBRARY_PATH=${ANDROID_HOME}/emulator/lib64:${ANDROID_HOME}/emulator/lib64/qt/lib && emulator64-arm -avd test -noaudio -no-boot-anim -no-window -accel on command: export LD_LIBRARY_PATH=${ANDROID_HOME}/emulator/lib64:${ANDROID_HOME}/emulator/lib64/qt/lib && emulator64-arm -avd test -noaudio -no-boot-anim -no-window -accel on
@ -146,15 +114,13 @@ jobs:
# unlock the emulator screen # unlock the emulator screen
sleep 30 sleep 30
adb shell input keyevent 82 adb shell input keyevent 82
- run:
name: Clean project
command: ./gradlew clean --no-daemon --stacktrace --console=plain -PdisablePreDex
- run: - run:
name: Run instrumented tests name: Run instrumented tests
command: ./gradlew createDebugCoverageReport --no-daemon --stacktrace --console=plain -PdisablePreDex command: ./gradlew clean createFdroidDebugCoverageReport jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex
- run: - run:
name: Collect logs from emulator name: Collect logs from emulator
command: adb logcat -d > ./app/build/reports/logcat_emulator.txt command: adb logcat -d > ./app/build/reports/logcat_emulator.txt
when: always
- run: - run:
name: Upload code covarage to codecov name: Upload code covarage to codecov
command: bash <(curl -s https://codecov.io/bash) -F instrumented command: bash <(curl -s https://codecov.io/bash) -F instrumented
@ -179,7 +145,8 @@ jobs:
command: ./gradlew jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex command: ./gradlew jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex
- run: - run:
name: Run sonarqube runner name: Run sonarqube runner
command: ./gradlew -x test -x lint sonarqube -Dsonar.host.url=$SONAR_HOST -Dsonar.organization=$SONAR_ORG -Dsonar.login=$SONAR_KEY -Dsonar.branch.name=$CIRCLE_BRANCH --no-daemon --stacktrace --console=plain -PdisablePreDex command: if [ -z ${SONAR_HOST+x} ]; then echo "sonar scan skipped"; else ./gradlew -x test -x lint sonarqube -Dsonar.host.url=$SONAR_HOST -Dsonar.organization=$SONAR_ORG -Dsonar.login=$SONAR_KEY -Dsonar.branch.name=$CIRCLE_BRANCH --no-daemon --stacktrace --console=plain -PdisablePreDex; fi
command: "[[ -v CIRCLE_PR_NUMBER ]] && ./gradlew -x test -x lint sonarqube -Dsonar.host.url=$SONAR_HOST -Dsonar.organization=$SONAR_ORG -Dsonar.login=$SONAR_KEY -Dsonar.branch.name=$CIRCLE_BRANCH --no-daemon --stacktrace --console=plain -PdisablePreDex || true"
deploy: deploy:
<<: *container_config <<: *container_config
@ -190,11 +157,12 @@ jobs:
- run: - run:
name: Decrypt keys name: Decrypt keys
command: | command: |
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/google-services.json.gpg
openssl aes-256-cbc -d -in ./app/key-encrypted.p12 -k $ENCRYPT_KEY >> ./app/key.p12 openssl aes-256-cbc -d -in ./app/key-encrypted.p12 -k $ENCRYPT_KEY >> ./app/key.p12
openssl aes-256-cbc -d -in ./app/upload-key-encrypted.jks -k $ENCRYPT_KEY >> ./app/upload-key.jks openssl aes-256-cbc -d -in ./app/upload-key-encrypted.jks -k $ENCRYPT_KEY >> ./app/upload-key.jks
- run: - run:
name: Publish release name: Publish release
command: ./gradlew publishRelease --no-daemon --stacktrace --console=plain -PdisablePreDex command: ./gradlew publishPlayRelease --no-daemon --stacktrace --console=plain -PenableCrashlytics -PdisablePreDex
workflows: workflows:
version: 2 version: 2
@ -217,12 +185,6 @@ workflows:
only: /.*/ only: /.*/
requires: requires:
- build - build
- api-test:
filters:
tags:
only: /.*/
requires:
- build
- instrumented: - instrumented:
filters: filters:
tags: tags:
@ -237,7 +199,6 @@ workflows:
- build - build
- lint - lint
- app-test - app-test
- api-test
- instrumented - instrumented
- deploy: - deploy:
requires: requires:

12
.editorconfig Normal file
View file

@ -0,0 +1,12 @@
[*]
charset=utf-8
end_of_line=lf
insert_final_newline=true
indent_style=space
indent_size=4
[*.json]
indent_size=2
[*.{kt,kts}]
disabled_rules=import-ordering,no-wildcard-imports

26
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View file

@ -0,0 +1,26 @@
---
name: Bug report
about: Utwórz raport błędu, aby pomóc nam ulepszyć Wulkanowego
title: ''
labels: ''
assignees: ''
---
## Co powinno się dziać
## Co się dzieje
## Jak to zrobić kolejny raz:
1.
2.
3.
## Informacje o urządzeniu i dzienniku
- Wersja aplikacji:
- Wersja Androida:
- Adres URL dziennika:

View file

@ -0,0 +1,20 @@
---
name: Feature request
about: Zaproponuj nowy pomysł dla Wulkanowego
title: ''
labels: ''
assignees: ''
---
** Czy Twoja prośba o funkcję jest związana z problemem? Proszę opisz.**
Jasny i zwięzły opis problemu. Np. Zawsze jestem sfrustrowany, gdy [...]
** Opisz żądane rozwiązanie **
Jasny i zwięzły opis tego, co chcesz, aby się wydarzyło.
** Opisz alternatywy, które rozważałeś **
Jasny i zwięzły opis wszelkich rozważanych alternatywnych rozwiązań lub funkcji.
** Dodatkowy kontekst **
Dodaj inny kontekst lub zrzuty ekranu dotyczące żądania funkcji tutaj.

12
.github/dependabot.yml vendored Normal file
View file

@ -0,0 +1,12 @@
version: 2
updates:
- package-ecosystem: gradle
directory: "/"
schedule:
interval: weekly
open-pull-requests-limit: 10
target-branch: develop
ignore:
- dependency-name: io.github.wulkanowy:sdk
reviewers:
- Faierbel

76
.github/workflows/deploy-store.yml vendored Normal file
View file

@ -0,0 +1,76 @@
name: Deploy to app stores
on:
release:
types: [ created ]
jobs:
deploy-google-play:
name: Deploy to google play
runs-on: ubuntu-latest
timeout-minutes: 10
environment: google-play
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
- name: Decrypt keys
env:
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
SERVICES_ENCRYPT_KEY: ${{ secrets.SERVICES_ENCRYPT_KEY }}
run: |
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/google-services.json.gpg
gpg --yes --batch --passphrase=$ENCRYPT_KEY ./app/upload-key.jks.gpg
- name: Upload apk to google play
env:
PLAY_STORE_PASSWORD: ${{ secrets.PLAY_STORE_PASSWORD }}
PLAY_KEY_ALIAS: ${{ secrets.PLAY_KEY_ALIAS }}
PLAY_KEY_PASSWORD: ${{ secrets.PLAY_KEY_PASSWORD }}
ANDROID_PUBLISHER_CREDENTIALS: ${{ secrets.ANDROID_PUBLISHER_CREDENTIALS }}
ADMOB_PROJECT_ID: ${{ secrets.ADMOB_PROJECT_ID }}
SINGLE_SUPPORT_AD_ID: ${{ secrets.SINGLE_SUPPORT_AD_ID }}
SET_BUILD_TIMESTAMP: ${{ secrets.SET_BUILD_TIMESTAMP }}
run: ./gradlew publishPlayReleaseApps -PenableFirebase --stacktrace;
deploy-app-gallery:
name: Deploy to AppGallery
runs-on: ubuntu-latest
timeout-minutes: 10
environment: app-gallery
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
- name: Decrypt keys
env:
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
SERVICES_ENCRYPT_KEY: ${{ secrets.SERVICES_ENCRYPT_KEY }}
run: |
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/agconnect-services.json.gpg
gpg --yes --batch --passphrase=$ENCRYPT_KEY ./app/upload-key.jks.gpg
- name: Prepare credentials
env:
AGC_CREDENTIALS: ${{ secrets.AGC_CREDENTIALS }}
run: echo $AGC_CREDENTIALS > ./app/src/release/agconnect-credentials.json
- name: Build and publish HMS version
env:
PLAY_STORE_PASSWORD: ${{ secrets.PLAY_STORE_PASSWORD }}
PLAY_KEY_ALIAS: ${{ secrets.PLAY_KEY_ALIAS }}
PLAY_KEY_PASSWORD: ${{ secrets.PLAY_KEY_PASSWORD }}
SET_BUILD_TIMESTAMP: ${{ secrets.SET_BUILD_TIMESTAMP }}
run: ./gradlew bundleHmsRelease --stacktrace && ./gradlew publishHuaweiAppGalleryHmsRelease --stacktrace

144
.github/workflows/deploy-test.yml vendored Normal file
View file

@ -0,0 +1,144 @@
name: Deploy to app tests
on:
push:
# branches: [ develop ]
branches: [ '!*' ]
pull_request_target:
# branches: [ develop ]
branches: [ '!*' ]
workflow_dispatch:
jobs:
deploy-appcenter:
name: App Center
runs-on: ubuntu-latest
timeout-minutes: 10
environment: app-center
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
- name: Set run number with offset
env:
BUILD_NUMBER_OFFSET: ${{ secrets.BUILD_NUMBER_OFFSET }}
run: echo "RUN_NUMBER=$((GITHUB_RUN_NUMBER+BUILD_NUMBER_OFFSET))" >> $GITHUB_ENV
- name: Prepare build configuration
run: |
sed -i -e "s#applicationIdSuffix \".dev\"#applicationIdSuffix \".${GITHUB_HEAD_REF//[-.\/]/_}\"#" app/build.gradle
sed -i -e "s#.dev\"#.${GITHUB_HEAD_REF//[-.\/]/_}\"#" app/src/debug/google-services.json
sed -i -e "s#.dev\"#.${GITHUB_HEAD_REF//[-.\/]/_}\"#" app/src/debug/agconnect-services.json
sed -i -e '/versionNameSuffix/d' app/build.gradle
- name: Add signing config
run: |
cat >> app/build.gradle <<EOF
android.signingConfigs.debug {
storeFile file("bitrise.jks")
storePassword System.getenv("BITRISE_KEYSTORE_PASSWORD")
keyAlias System.getenv("BITRISE_KEY_ALIAS")
keyPassword System.getenv("BITRISE_KEY_PASSWORD")
}
EOF
- name: Decrypt keys
env:
BITRISE_ENCRYPT_KEY: ${{ secrets.BITRISE_ENCRYPT_KEY }}
run: |
gpg --yes --batch --passphrase=$BITRISE_ENCRYPT_KEY ./app/bitrise.jks.gpg
- name: Bump version
uses: chkfung/android-version-actions@v1.1
with:
gradlePath: app/build.gradle
versionCode: ${{ env.RUN_NUMBER }}
versionName: ${{ env.RUN_NUMBER }}-${{ github.head_ref }}
- name: Build apk
env:
BITRISE_KEYSTORE_PASSWORD: ${{ secrets.BITRISE_KEYSTORE_PASSWORD }}
BITRISE_KEY_ALIAS: ${{ secrets.BITRISE_KEY_ALIAS }}
BITRISE_KEY_PASSWORD: ${{ secrets.BITRISE_KEY_PASSWORD }}
run: ./gradlew assembleFdroidDebug --stacktrace
- name: Upload apk to github artifacts
uses: actions/upload-artifact@v2
with:
name: wulkanowyDEV-${{ env.RUN_NUMBER }}.apk
path: app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk
- name: Deploy to app center
uses: wzieba/AppCenter-Github-Action@v1
with:
appName: wulkanowy/wulkanowy
token: ${{ secrets.APP_CENTER_TOKEN }}
group: Testers
file: app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk
notifyTesters: true
debug: true
deploy-app-distribution:
name: App Distribution
runs-on: ubuntu-latest
timeout-minutes: 10
environment: app-distribution
if: github.event_name != 'pull_request_target'
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
- name: Set run number with offset
env:
BUILD_NUMBER_OFFSET: ${{ secrets.BUILD_NUMBER_OFFSET }}
run: echo "RUN_NUMBER=$((GITHUB_RUN_NUMBER+BUILD_NUMBER_OFFSET))" >> $GITHUB_ENV
- name: Add signing config
run: |
cat >> app/build.gradle <<EOF
android.signingConfigs.debug {
storeFile file("bitrise.jks")
storePassword System.getenv("BITRISE_KEYSTORE_PASSWORD")
keyAlias System.getenv("BITRISE_KEY_ALIAS")
keyPassword System.getenv("BITRISE_KEY_PASSWORD")
}
EOF
- name: Decrypt keys
env:
BITRISE_ENCRYPT_KEY: ${{ secrets.BITRISE_ENCRYPT_KEY }}
BITRISE_SERVICES_ENCRYPT_KEY: ${{ secrets.BITRISE_SERVICES_ENCRYPT_KEY }}
run: |
gpg --yes --batch --passphrase=$BITRISE_SERVICES_ENCRYPT_KEY ./app/src/debug/google-services.json.gpg
gpg --yes --batch --passphrase=$BITRISE_ENCRYPT_KEY ./app/bitrise.jks.gpg
- name: Bump version
uses: chkfung/android-version-actions@v1.1
with:
gradlePath: app/build.gradle
versionCode: ${{ env.RUN_NUMBER }}
versionName: ${{ env.RUN_NUMBER }}
- name: Build apk
env:
BITRISE_KEYSTORE_PASSWORD: ${{ secrets.BITRISE_KEYSTORE_PASSWORD }}
BITRISE_KEY_ALIAS: ${{ secrets.BITRISE_KEY_ALIAS }}
BITRISE_KEY_PASSWORD: ${{ secrets.BITRISE_KEY_PASSWORD }}
run: ./gradlew assemblePlayDebug -PenableFirebase --stacktrace
- name: Upload apk to github artifacts
uses: actions/upload-artifact@v2
with:
name: wulkanowyDEV-${{ env.RUN_NUMBER }}-dev.apk
path: app/build/outputs/apk/play/debug/app-play-debug.apk
- name: Deploy to app distribution
uses: wzieba/Firebase-Distribution-Github-Action@v1
with:
appId: ${{ secrets.FIREBASE_APP_ID }}
token: ${{ secrets.FIREBASE_TOKEN }}
groups: discord
file: app/build/outputs/apk/play/debug/app-play-debug.apk

34
.github/workflows/test.yml vendored Normal file
View file

@ -0,0 +1,34 @@
name: Tests
on:
push:
branches: [ master, develop ]
tags: [ '*' ]
pull_request:
branches: [ master, develop ]
jobs:
unit-tests:
name: Unit tests
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: fkirc/skip-duplicate-actions@master
- uses: actions/checkout@v2
- uses: gradle/wrapper-validation-action@v1
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
- name: Unit tests
run: |
./gradlew testFdroidDebugUnitTest --stacktrace
./gradlew jacocoTestReport --stacktrace
- uses: codecov/codecov-action@v1
with:
flags: unit

121
.gitignore vendored
View file

@ -1,40 +1,92 @@
/captures # Created by https://www.gitignore.io
.externalNativeBuild
## https://gist.github.com/iainconnor/8605514
# Built application files # Built application files
/build *.apk
/*/build/ *.ap_
*.aab
# Crashlytics configuations # Files for the ART/Dalvik VM
com_crashlytics_export_strings.xml *.dex
# Java class files
*.class
# Generated files
bin/
gen/
out/
# Gradle files
.gradle/
build/
.build-cache
# Local configuration file (sdk path, etc) # Local configuration file (sdk path, etc)
local.properties local.properties
# Gradle generated files # Proguard folder generated by Eclipse
.gradle/ proguard/
# Signing files # Log Files
.signing/ *.log
# User-specific configurations # Android Studio Navigation editor temp files
.idea/copyright/profiles_settings.xml .navigation/
# Android Studio captures folder
captures/
# IntelliJ configurations
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
.idea/caches
.idea/modules.xml
.idea/navEditor.xml
.idea/caches/
.idea/libraries/ .idea/libraries/
.idea/inspectionProfiles/ .idea/shelf/
.idea/.name .idea/.name
.idea/compiler.xml .idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml .idea/encodings.xml
.idea/misc.xml .idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml .idea/scopes/scope_settings.xml
.idea/tasks.xml
.idea/vcs.xml .idea/vcs.xml
.idea/workspace.xml .idea/jsLibraryMappings.xml
.idea/caches/ .idea/datasources.xml
.idea/codeStyles/ .idea/dataSources.ids
*.iml .idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml
.idea/runConfigurations.xml
.idea/discord.xml
# Keystore files
*.jks
*.keystore
*.p12
# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
# Version control
vcs.xml
# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
lint/reports/
### Android Patch ###
gen-external-apklibs
output.json
# OS-specific files # OS-specific files
.DS_Store .DS_Store
@ -44,7 +96,26 @@ local.properties
.Trashes .Trashes
ehthumbs.db ehthumbs.db
Thumbs.db Thumbs.db
.idea/codeStyles/
.idea/caches/ # Legacy Eclipse project files
./app/key.p12 .classpath
./app/upload-key.jks .project
.cproject
.settings/
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.war
*.ear
### AndroidStudio Patch ###
!/gradle/wrapper/gradle-wrapper.jar
.idea/jarRepositories.xml
app/src/release/agconnect-services.json
app/src/release/agconnect-credentials.json
.idea/deploymentTargetDropDown.xml

View file

@ -1,4 +1,4 @@
image: circleci/android:api-27-alpha image: circleci/android:api-28-alpha
before_script: before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle - export GRADLE_USER_HOME=`pwd`/.gradle
@ -12,7 +12,7 @@ build:
script: script:
- ./gradlew --no-daemon --stacktrace dependencies || true - ./gradlew --no-daemon --stacktrace dependencies || true
- ./gradlew --no-daemon --stacktrace assembleDebug - ./gradlew --no-daemon --stacktrace assembleDebug
- mv app/build/outputs/apk/debug/app-debug.apk . - mv app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk .
artifacts: artifacts:
name: "${CI_PROJECT_NAME}_${CI_BUILD_REF_NAME}-${CI_BUILD_ID}" name: "${CI_PROJECT_NAME}_${CI_BUILD_REF_NAME}-${CI_BUILD_ID}"
paths: paths:
@ -26,7 +26,7 @@ tests:
- .gradle - .gradle
policy: pull policy: pull
script: script:
- ./gradlew --no-daemon --stacktrace -x fabricGenerateResourcesRelease test - ./gradlew --no-daemon --stacktrace -x fabricGenerateResourcesFdroidRelease -x fabricGenerateResourcesPlayRelease test
artifacts: artifacts:
paths: paths:
- app/build/reports/tests - app/build/reports/tests
@ -39,7 +39,7 @@ lint:
- .gradle - .gradle
policy: pull policy: pull
script: script:
- ./gradlew --no-daemon --stacktrace -x fabricGenerateResourcesRelease lint - ./gradlew --no-daemon --stacktrace -x fabricGenerateResourcesFdroidRelease -x fabricGenerateResourcesPlayRelease lint
artifacts: artifacts:
paths: paths:
- app/build/reports - app/build/reports

View file

@ -1,226 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectCodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
<value />
</option>
<option name="IMPORT_LAYOUT_TABLE">
<value>
<package name="android" withSubpackages="true" static="false" />
<emptyLine />
<package name="com" withSubpackages="true" static="false" />
<emptyLine />
<package name="junit" withSubpackages="true" static="false" />
<emptyLine />
<package name="net" withSubpackages="true" static="false" />
<emptyLine />
<package name="org" withSubpackages="true" static="false" />
<emptyLine />
<package name="java" withSubpackages="true" static="false" />
<emptyLine />
<package name="javax" withSubpackages="true" static="false" />
<emptyLine />
<package name="" withSubpackages="true" static="false" />
<emptyLine />
<package name="" withSubpackages="true" static="true" />
<emptyLine />
</value>
</option>
<option name="RIGHT_MARGIN" value="100" />
<AndroidXmlCodeStyleSettings>
<option name="USE_CUSTOM_SETTINGS" value="true" />
</AndroidXmlCodeStyleSettings>
<Objective-C-extensions>
<file>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
</file>
<class>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
</class>
<extensions>
<pair source="cpp" header="h" />
<pair source="c" header="h" />
</extensions>
</Objective-C-extensions>
<XML>
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
</XML>
<codeStyleSettings language="XML">
<option name="FORCE_REARRANGE_MODE" value="1" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_width</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_height</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_.*</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:width</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:height</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
</value>
</option>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</component>
</project>

123
.idea/codeStyles/Project.xml generated Normal file
View file

@ -0,0 +1,123 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="LINE_SEPARATOR" value="&#10;" />
<JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<codeStyleSettings language="XML">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</codeStyleSettings>
</code_scheme>
</component>

5
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View file

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

19
.idea/gradle.xml generated
View file

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/api" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
</GradleProjectSettings>
</option>
</component>
</project>

View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
</set>
</option>
</component>
</project>

68
.travis.yml Normal file
View file

@ -0,0 +1,68 @@
language: android
jdk: oraclejdk8
env:
global:
- ANDROID_API_LEVEL=30
- ANDROID_BUILD_TOOLS_VERSION=30.0.2
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
branches:
only:
- develop
- 0.24.0
android:
licenses:
- android-sdk-preview-license-.+
- android-sdk-license-.+
- google-gdk-license-.+
components:
- tools
- platform-tools
# The BuildTools version used by your project
- build-tools-$ANDROID_BUILD_TOOLS_VERSION
# The SDK version used to compile your project
- android-$ANDROID_API_LEVEL
# Additional components
- extra-google-google_play_services
- extra-google-m2repository
- extra-android-m2repository
- addon-google_apis-google-$ANDROID_API_LEVEL
# Android emulator
- android-22
- sys-img-armeabi-v7a-android-22
before_install:
- yes | sdkmanager "platforms;android-30"
- yes | sdkmanager "build-tools;30.0.2"
before_script:
# Launch emulator before the execution
- echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
- emulator -avd test -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
- "curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | sudo bash"
script:
- ./gradlew dependencies --stacktrace --daemon
- fossa --no-ansi || true
- ./gradlew -Pcoverage testFdroidDebugUnitTest --stacktrace --daemon
- ./gradlew -Pcoverage connectedFdroidDebugAndroidTest --stacktrace --daemon
- ./gradlew -Pcoverage jacocoTestReport --stacktrace --daemon
- |
if [ $TRAVIS_TAG ]; then
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/google-services.json.gpg;
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/agconnect-services.json.gpg;
gpg --yes --batch --passphrase=$ENCRYPT_KEY ./app/key.p12.gpg;
gpg --yes --batch --passphrase=$ENCRYPT_KEY ./app/upload-key.jks.gpg;
./gradlew publishPlayRelease -PenableFirebase --stacktrace;
fi
after_success:
- bash <(curl -s https://codecov.io/bash)

View file

@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier same "printed page" as the copyright notice for easier
identification within third-party archives. identification within third-party archives.
Copyright 2017 wulkanowy Copyright 2022 Wulkanowy
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

78
README.cs.md Normal file
View file

@ -0,0 +1,78 @@
[English version of README](README.en.md)
[Deutsche Version von README](README.de.md)
[Polska wersja README](README.md)
[Slovenská verzia README](README.sk.md)
# Wulkanowy
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
[![Last release](https://img.shields.io/github/release/wulkanowy/wulkanowy.svg?logo=github&style=flat-square)](https://github.com/wulkanowy/wulkanowy/releases)
Neoficiální klient deníku VULCAN UONET+ pro žáka a rodiče
## Funkce
* přihlášení pomocí emailu a hesla
* funkce z webové stránky deníku:
* známky
* statistiky známek
* frekvence
* procento frekvence
* zkoušky
* plán lekce
* dokončené lekce
* zprávy
* domácí úkoly
* poznámky
* šťastné číslo
* další lekce
* školní setkání
* informace o žáku a škole
* výpočet průměru nezávisle na preferencích školy
* upozornění, např. o nových známkách
* podpora více účtů s možností přejmenování žáků
* tmavý a černý (AMOLED) motiv
* offline režim
* žádné reklamy
## Stáhnout
Aktuální verzi si můžete stáhnout z Google Play, F-Droid nebo Huawei AppGallery
[<img src="https://play.google.com/intl/cs-CZ/badges/images/generic/cs_badge_web_generic.png"
alt="Nyní na Google Play"
height="80">](https://play.google.com/store/apps/details?id=io.github.wulkanowy)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Stáhnout s F-Droid"
height="80">](https://f-droid.org/packages/io.github.wulkanowy/)
[<img src="https://i.imgur.com/baTGiDP.png"
alt="Objevuj v AppGallery"
height="80">](https://appgallery.cloud.huawei.com/ag/n/app/C101440411?channelId=Badge&id=1b3f7fbb700849a9be0dba6b520b2282&s=EB1D3BF9ED9D1564D869B7B94B18016D3CABFCA5AEFB8E29F675FA04E0DC131D&detailType=0&v=)
Můžete si také stáhnout [vývojovou verzi](https://wulkanowy.github.io/#download), která zahrnuje nové funkce připravované pro příští vydání
## Postaveno s
* [Wulkanowy SDK](https://github.com/wulkanowy/sdk)
* [Kotlin Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)
* [Hilt](https://dagger.dev/hilt/)
* [Room](https://developer.android.com/topic/libraries/architecture/room)
* [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager)
## Spolupráce
Přispějte do projektu vytvořením PR nebo odesláním issue na GitHub.
Pro zájemce o překlad aplikace do různých jazyků poskytujeme Crowdin:
https://crowdin.com/project/wulkanowy2
## Licence
Tento projekt je licencován pod licencí Apache License 2.0 - podrobnosti v souboru [LICENSE](LICENSE)

74
README.de.md Normal file
View file

@ -0,0 +1,74 @@
[Polska wersja README](README.md)
[English version of README](README.en.md)
# Wulkanowy
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
[![Last release](https://img.shields.io/github/release/wulkanowy/wulkanowy.svg?logo=github&style=flat-square)](https://github.com/wulkanowy/wulkanowy/releases)
Inoffizieller Android VULCAN UONET+ Registrierungsclient für Schüler und ihre Eltern
## Merkmale
* Einloggen mit E-Mail und Passwort
* Funktionen von der Registerwebsite:
* Noten
* Notenstatistik
* Anwesenheit
* Prozentsatz der Anwesenheit
* Prüfungen
* Stundenplan
* Unterricht abgeschlossen
* Nachrichten
* Hausaufgaben
* Anmerkungen
* Glückszahl
* Zusätzliche Lektionen
* Schulkonferenzen
* Schüler- und Schulinformationen
* Berechnung des Durchschnitts unabhängig von den Präferenzen der Schule
* Benachrichtigungen, z. B. über eine neue Note
* Unterstützung für mehrere Konten mit der Möglichkeit, den Namen des Schülers zu ändern
* dunkles und schwarzes (AMOLED) Thema
* Offline-Modus
* keine Werbung
## Herunterladen
Die aktuelle Version können Sie von der Google Play, F-Droid oder Huawei AppGallery store herunterladen
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png"
alt="Get it on Google Play"
height="80">](https://play.google.com/store/apps/details?id=io.github.wulkanowy)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Get it on F-Droid"
height="80">](https://f-droid.org/packages/io.github.wulkanowy/)
[<img src="appgallery_badge.png"
alt="Explore it on AppGallery"
height="80">](https://appgallery.cloud.huawei.com/ag/n/app/C101440411?channelId=Badge&id=1b3f7fbb700849a9be0dba6b520b2282&s=EB1D3BF9ED9D1564D869B7B94B18016D3CABFCA5AEFB8E29F675FA04E0DC131D&detailType=0&v=)
Sie können auch ein [Entwicklungsversion herunterladen](https://wulkanowy.github.io/#download) das beinhaltet neue Funktionen, die für die nächste Version vorbereitet werden
## Gebaut mit
* [Wulkanowy SDK](https://github.com/wulkanowy/sdk)
* [Kotlin Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)
* [Hilt](https://dagger.dev/hilt/)
* [Room](https://developer.android.com/topic/libraries/architecture/room)
* [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager)
## Beitragen
Bitte tragen Sie zum Projekt bei, indem Sie entweder eine PR erstellen oder ein Issue auf GitHub einreichen.
Für Personen, die daran interessiert sind, die Anwendung in verschiedene Sprachen zu übersetzen, bieten wir Crowdin
https://crowdin.com/project/wulkanowy2
## Lizenz
Dieses Projekt ist unter der Apache License 2.0 lizenziert - siehe die [LIZENZ](LICENSE) Datei für Details

78
README.en.md Normal file
View file

@ -0,0 +1,78 @@
[Polska wersja README](README.md)
[Deutsche Version von README](README.de.md)
[Česká verze README](README.cs.md)
[Slovenská verzia README](README.sk.md)
# Wulkanowy
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
[![Last release](https://img.shields.io/github/release/wulkanowy/wulkanowy.svg?logo=github&style=flat-square)](https://github.com/wulkanowy/wulkanowy/releases)
Unofficial android VULCAN UONET+ register client for both students and their parents
## Features
* logging in using the email and password
* functions from the register website:
* grades
* grade statistics
* attendance
* percentage of attendance
* exams
* timetable
* completed lessons
* messages
* homework
* notes
* lucky number
* additional lessons
* school conferences
* student and school information
* calculation of the average independently of school's preferences
* notifications, e.g. about a new grade
* support for multiple accounts with the ability to rename students
* dark and black (AMOLED) theme
* offline mode
* no ads
## Download
You can download the current version from the Google Play, F-Droid or Huawei AppGallery store
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png"
alt="Get it on Google Play"
height="80">](https://play.google.com/store/apps/details?id=io.github.wulkanowy)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Get it on F-Droid"
height="80">](https://f-droid.org/packages/io.github.wulkanowy/)
[<img src="appgallery_badge.png"
alt="Explore it on AppGallery"
height="80">](https://appgallery.cloud.huawei.com/ag/n/app/C101440411?channelId=Badge&id=1b3f7fbb700849a9be0dba6b520b2282&s=EB1D3BF9ED9D1564D869B7B94B18016D3CABFCA5AEFB8E29F675FA04E0DC131D&detailType=0&v=)
You can also download a [development version](https://wulkanowy.github.io/#download) that includes new features being prepared for the next release
## Built With
* [Wulkanowy SDK](https://github.com/wulkanowy/sdk)
* [Kotlin Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)
* [Hilt](https://dagger.dev/hilt/)
* [Room](https://developer.android.com/topic/libraries/architecture/room)
* [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager)
## Contributing
Please contribute to the project either by creating a PR or submitting an issue on GitHub.
For people interested in translating the application into different languages, we provide Crowdin
https://crowdin.com/project/wulkanowy2
## License
This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details

View file

@ -1,15 +1,79 @@
[English version of README](README.en.md)
[Deutsche Version von README](README.de.md)
[Česká verze README](README.cs.md)
[Slovenská verzia README](README.sk.md)
# Wulkanowy # Wulkanowy
[![CircleCI](https://img.shields.io/circleci/project/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://circleci.com/gh/wulkanowy/wulkanowy) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Bitrise](https://img.shields.io/bitrise/daeff1893f3c8128/master.svg?token=Hjm1ACamk86JDeVVJHOeqQ&style=flat-square)](https://www.bitrise.io/app/daeff1893f3c8128)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy) [![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![BCH compliance](https://bettercodehub.com/edge/badge/wulkanowy/wulkanowy?branch=master)](https://bettercodehub.com/)
[![Scrutinizer](https://img.shields.io/scrutinizer/g/wulkanowy/wulkanowy.svg?style=flat-square)](https://scrutinizer-ci.com/g/wulkanowy/wulkanowy/?branch=master)
[![Bintray](https://img.shields.io/bintray/v/wulkanowy/wulkanowy/api.svg?style=flat-square)](https://bintray.com/wulkanowy/wulkanowy/api)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr) [![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
[![Last release](https://img.shields.io/github/release/wulkanowy/wulkanowy.svg?logo=github&style=flat-square)](https://github.com/wulkanowy/wulkanowy/releases)
[Pobierz wersję beta](https://play.google.com/store/apps/details?id=io.github.wulkanowy&amp;utm_source=vcs) Nieoficjalny klient dziennika VULCAN UONET+ dla ucznia i rodzica
[Pobierz wersję rozwojową](https://bitrise-redirector.herokuapp.com/v0.1/apps/daeff1893f3c8128/builds/master/artifacts/app-debug-bitrise-signed.apk) ## Funkcje
Androidowy klient dziennika VULCAN UONET+. * logowanie za pomocą e-maila i hasła
* funkcje ze strony internetowej dziennika:
* oceny
* statystyki ocen
* frekwencja
* procent frekwencji
* sprawdziany
* plan lekcji
* lekcje zrealizowane
* wiadomości
* zadania domowe
* uwagi
* szczęśliwy numerek
* dodatkowe lekcje
* zebrania w szkole
* informacje o uczniu i szkole
* obliczanie średniej niezależnie od preferencji szkoły
* powiadomienia np. o nowej ocenie
* obsługa wielu kont wraz z możliwością zmiany nazwy ucznia
* ciemny i czarny (AMOLED) motyw
* tryb offline
* brak reklam
## Pobierz
Aktualną wersję możesz pobrać ze sklepu Google Play, F-Droid lub Huawei AppGallery
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png"
alt="Pobierz z Google Play"
height="80">](https://play.google.com/store/apps/details?id=io.github.wulkanowy)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Pobierz z F-Droid"
height="80">](https://f-droid.org/packages/io.github.wulkanowy/)
[<img src="appgallery_badge.png"
alt="Odkrywaj w AppGallery"
height="80">](https://appgallery.cloud.huawei.com/ag/n/app/C101440411?channelId=Badge&id=1b3f7fbb700849a9be0dba6b520b2282&s=EB1D3BF9ED9D1564D869B7B94B18016D3CABFCA5AEFB8E29F675FA04E0DC131D&detailType=0&v=)
Możesz także pobrać [wersję rozwojową](https://wulkanowy.github.io/#download), która zawiera nowe funkcje przygotowywane do następnego wydania
## Zbudowana za pomocą
* [Wulkanowy SDK](https://github.com/wulkanowy/sdk)
* [Kotlin Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)
* [Hilt](https://dagger.dev/hilt/)
* [Room](https://developer.android.com/topic/libraries/architecture/room)
* [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager)
## Współpraca
Wnieś swój wkład w projekt, tworząc PR lub wysyłając issue na GitHub.
Dla osób zainteresowanych tłumaczeniem aplikacji na różne języki udostępniamy Crowdina
https://crowdin.com/project/wulkanowy2
## Licencja
Ten projekt udostępniany jest na licencji Apache License 2.0 - szczegóły w pliku [LICENSE](LICENSE)

78
README.sk.md Normal file
View file

@ -0,0 +1,78 @@
[English version of README](README.en.md)
[Deutsche Version von README](README.de.md)
[Polska wersja README](README.md)
[Česká verze README](README.cs.md)
# Wulkanowy
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
[![Last release](https://img.shields.io/github/release/wulkanowy/wulkanowy.svg?logo=github&style=flat-square)](https://github.com/wulkanowy/wulkanowy/releases)
Neoficiálny klient denníka VULCAN UONET+ pre žiaka a rodičov
## Funkcie
* prihlásenie pomocou emailu a hesla
* funkcie z webovej stránky denníka:
* známky
* štatistiky známok
* frekvencia
* percento frekvencie
* skúšky
* plán lekcie
* dokončené lekcie
* správy
* domáce úlohy
* poznámky
* šťastné číslo
* ďalšie lekcie
* školské stretnutie
* informácie o žiakovi a škole
* výpočet priemeru nezávisle od preferencií školy
* upozornenia, napr. o nových známkach
* podpora viacerých účtov s možnosťou premenovania žiakov
* tmavý a čierny (AMOLED) motív
* offline režim
* žiadne reklamy
## Stiahnuť
Aktuálnu verziu si môžete stiahnuť z Google Play, F-Droid alebo Huawei AppGallery
[<img src="https://play.google.com/intl/sk/badges/images/generic/sk_badge_web_generic.png"
alt="Nyní na Google Play"
height="80">](https://play.google.com/store/apps/details?id=io.github.wulkanowy)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Stiahnuť s F-Droid"
height="80">](https://f-droid.org/packages/io.github.wulkanowy/)
[<img src="https://i.imgur.com/sX8UyAw.png"
alt="Objavíte v AppGallery"
height="80">](https://appgallery.cloud.huawei.com/ag/n/app/C101440411?channelId=Badge&id=1b3f7fbb700849a9be0dba6b520b2282&s=EB1D3BF9ED9D1564D869B7B94B18016D3CABFCA5AEFB8E29F675FA04E0DC131D&detailType=0&v=)
Môžete si tiež stiahnuť [vývojovú verziu](https://wulkanowy.github.io/#download), ktorá zahrňuje nové funkcie pripravované pre budúce vydanie
## Postavené s
* [Wulkanowy SDK](https://github.com/wulkanowy/sdk)
* [Kotlin Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)
* [Hilt](https://dagger.dev/hilt/)
* [Room](https://developer.android.com/topic/libraries/architecture/room)
* [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager)
## Spolupráca
Prispejte do projektu vytvorením PR alebo odoslaním issue na GitHub.
Pre záujemcov o preklad aplikácie do rôznych jazykov poskytujeme Crowdin:
https://crowdin.com/project/wulkanowy2
## Licencia
Tento projekt je licencovaný pod licenciou Apache License 2.0 - podrobnosti v súbore [LICENSE](LICENSE)

View file

@ -1,117 +0,0 @@
apply plugin: 'java-library'
apply plugin: 'org.sonarqube'
apply plugin: 'jacoco'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
compileJava.options.encoding = "UTF-8"
compileTestJava.options.encoding = "UTF-8"
ext {
PUBLISH_GROUP_ID = GROUP_ID
PUBLISH_ARTIFACT_ID = 'api'
PUBLISH_VERSION = System.getenv('GIT_TAG')
}
test {
testLogging {
events "passed", "skipped", "failed", "standardOut", "standardError"
outputs.upToDateWhen {false}
showStandardStreams = true
}
}
jacocoTestReport {
reports {
xml.enabled true
}
}
dependencies {
implementation "org.jsoup:jsoup:$jsoup"
implementation "org.apache.commons:commons-lang3:$apacheLang"
implementation "com.google.code.gson:gson:$gson"
testImplementation "junit:junit:$junit"
testImplementation "org.mockito:mockito-core:$mockito"
}
version = PUBLISH_VERSION
group = GROUP_ID
sonarqube {
properties {
property "sonar.projectName", GROUP_ID + ":api"
property "sonar.projectKey", GROUP_ID + ":wulkanowy-api"
}
}
def siteUrl = 'https://github.com/wulkanowy/wulkanowy'
def gitUrl = 'https://github.com/wulkanowy/wulkanowy.git'
bintray {
user = System.getenv('BINTRAY_USER')
key = System.getenv('BINTRAY_KEY')
configurations = ['archives']
pkg {
repo = 'wulkanowy'
name = 'api'
userOrg = 'wulkanowy'
licenses = ['Apache-2.0']
vcsUrl = gitUrl
labels = ['aar', 'android', 'wulkanowy', 'api']
publicDownloadNumbers = true
publish = true
version {
name = PUBLISH_VERSION
vcsTag = PUBLISH_VERSION
released = new Date()
}
}
}
install {
repositories.mavenInstaller {
pom {
project {
packaging 'aar'
name 'Bintray publish Gradle aar'
url siteUrl
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer {
id 'mklkj'
name 'Mikołaj Pich'
email 'm.pich@outlook.com'
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
}

View file

@ -1,204 +0,0 @@
package io.github.wulkanowy.api;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
import java.util.Date;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import io.github.wulkanowy.api.login.Login;
public class Client {
private String protocol = "https";
private String host = "vulcan.net.pl";
private String email;
private String password;
private String symbol;
private Date lastSuccessRequest;
private Cookies cookies = new Cookies();
Client(String email, String password, String symbol) {
this.email = email;
this.password = password;
this.symbol = symbol;
setFullEndpointInfo(email);
}
private void setFullEndpointInfo(String info) {
String[] creds = info.split("\\\\");
email = info;
if (creds.length > 2) {
String[] url = creds[0].split("://");
protocol = url[0];
String[] path = url[1].split("/");
host = path[0];
if (path.length > 1) {
symbol = path[1];
}
email = creds[2];
}
}
private void login() throws IOException, VulcanException {
if (isLoggedIn()) {
return;
}
this.symbol = new Login(this).login(email, password, symbol);
}
private boolean isLoggedIn() {
return getCookies().size() > 0 && lastSuccessRequest != null &&
5 > TimeUnit.MILLISECONDS.toMinutes(new Date().getTime() - lastSuccessRequest.getTime());
}
public String getSymbol() {
return symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
public void addCookies(Map<String, String> items) {
cookies.addItems(items);
}
private Map<String, String> getCookies() {
return cookies.getItems();
}
String getHost() {
return host;
}
String getFilledUrl(String url) {
return url
.replace("{schema}", protocol)
.replace("{host}", host.replace(":", "%253A"))
.replace("{symbol}", symbol);
}
public Document getPageByUrl(String url) throws IOException, VulcanException {
return getPageByUrl(url, true, null);
}
public Document getPageByUrl(String url, boolean loginBefore) throws IOException, VulcanException {
return getPageByUrl(url, loginBefore, null);
}
public synchronized Document getPageByUrl(String url, boolean loginBefore, Map<String, String> cookies) throws IOException, VulcanException {
if (loginBefore) {
login();
}
if (null != cookies) {
this.cookies.addItems(cookies);
}
Connection.Response response = Jsoup.connect(getFilledUrl(url))
.followRedirects(true)
.cookies(getCookies())
.execute();
this.cookies.addItems(response.cookies());
Document doc = checkForErrors(response.parse());
if (loginBefore) {
lastSuccessRequest = new Date();
}
return doc;
}
public synchronized Document postPageByUrl(String url, String[][] params) throws IOException, VulcanException {
Connection connection = Jsoup.connect(getFilledUrl(url));
for (String[] data : params) {
connection.data(data[0], data[1]);
}
Connection.Response response = connection
.followRedirects(true)
.method(Connection.Method.POST)
.cookies(getCookies())
.execute();
this.cookies.addItems(response.cookies());
response.bufferUp(); // fixes cert parsing issues #109
return checkForErrors(response.parse());
}
public String getJsonStringByUrl(String url) throws IOException, VulcanException {
login();
Connection.Response response = Jsoup.connect(getFilledUrl(url))
.followRedirects(true)
.ignoreContentType(true)
.cookies(getCookies())
.execute();
this.cookies.addItems(response.cookies());
return response.body();
}
public String postJsonStringByUrl(String url, String[][] params) throws IOException, VulcanException {
login();
Connection connection = Jsoup.connect(getFilledUrl(url));
for (String[] data : params) {
connection.data(data[0], data[1]);
}
Connection.Response response = connection
.followRedirects(true)
.ignoreContentType(true)
.method(Connection.Method.POST)
.cookies(getCookies())
.execute();
this.cookies.addItems(response.cookies());
return response.body();
}
Document checkForErrors(Document doc) throws VulcanException {
lastSuccessRequest = null;
String title = doc.select("title").text();
if ("Przerwa techniczna".equals(title)) {
throw new VulcanOfflineException(title);
}
String singIn = doc.select(".loginButton").text();
if ("Zaloguj się".equals(singIn)) {
throw new NotLoggedInErrorException(singIn);
}
if (title.startsWith("Błąd")) {
throw new NotLoggedInErrorException(title + " " + doc.selectFirst("p, body"));
}
return doc;
}
}

View file

@ -1,17 +0,0 @@
package io.github.wulkanowy.api;
import java.util.HashMap;
import java.util.Map;
class Cookies {
private Map<String, String> jar = new HashMap<>();
Map<String, String> getItems() {
return jar;
}
void addItems(Map<String, String> items) {
jar.putAll(items);
}
}

View file

@ -1,38 +0,0 @@
package io.github.wulkanowy.api;
public class Diary implements ParamItem {
private String id = "";
private String name = "";
private boolean current = false;
public String getId() {
return id;
}
public Diary setId(String id) {
this.id = id;
return this;
}
public String getName() {
return name;
}
public Diary setName(String name) {
this.name = name;
return this;
}
@Override
public boolean isCurrent() {
return current;
}
public Diary setCurrent(boolean current) {
this.current = current;
return this;
}
}

View file

@ -1,8 +0,0 @@
package io.github.wulkanowy.api;
public class NotLoggedInErrorException extends VulcanException {
public NotLoggedInErrorException(String message) {
super(message);
}
}

View file

@ -1,12 +0,0 @@
package io.github.wulkanowy.api;
interface ParamItem {
ParamItem setId(String id);
ParamItem setName(String name);
ParamItem setCurrent(boolean isCurrent);
boolean isCurrent();
}

View file

@ -1,37 +0,0 @@
package io.github.wulkanowy.api;
public class Semester implements ParamItem {
private String id = "";
private String name = "";
private boolean current = false;
public String getId() {
return id;
}
public Semester setId(String id) {
this.id = id;
return this;
}
public String getName() {
return name;
}
public Semester setName(String number) {
this.name = number;
return this;
}
public boolean isCurrent() {
return current;
}
public Semester setCurrent(boolean current) {
this.current = current;
return this;
}
}

View file

@ -1,32 +0,0 @@
package io.github.wulkanowy.api;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import java.io.IOException;
import java.util.List;
public interface SnP {
String getSchoolID();
void setDiaryID(String id);
String getStudentID();
List<Student> getStudents() throws IOException, VulcanException;
StudentAndParent setUp() throws IOException, VulcanException;
String getRowDataChildValue(Element e, int index);
Document getSnPPageDocument(String url) throws IOException, VulcanException;
List<Diary> getDiaries() throws IOException, VulcanException;
List<Semester> getSemesters() throws IOException, VulcanException;
List<Semester> getSemesters(Document gradesPage);
<T> T getCurrent(List<? extends ParamItem> list);
}

View file

@ -1,37 +0,0 @@
package io.github.wulkanowy.api;
public class Student implements ParamItem {
private String id = "";
private String name = "";
private boolean current = false;
public String getId() {
return id;
}
public Student setId(String id) {
this.id = id;
return this;
}
public String getName() {
return name;
}
public Student setName(String name) {
this.name = name;
return this;
}
public boolean isCurrent() {
return current;
}
public Student setCurrent(boolean current) {
this.current = current;
return this;
}
}

View file

@ -1,200 +0,0 @@
package io.github.wulkanowy.api;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class StudentAndParent implements SnP {
private static final String START_PAGE_URL = "{schema}://uonetplus.{host}/{symbol}/Start.mvc/Index";
private static final String BASE_URL = "{schema}://uonetplus-opiekun.{host}/{symbol}/{ID}/";
private static final String GRADES_PAGE_URL = "Oceny/Wszystkie";
private Client client;
private String schoolID;
private String studentID;
private String diaryID;
StudentAndParent(Client client, String schoolID, String studentID, String diaryID) {
this.client = client;
this.schoolID = schoolID;
this.studentID = studentID;
this.diaryID = diaryID;
}
public StudentAndParent setUp() throws IOException, VulcanException {
if (null == getStudentID() || "".equals(getStudentID())) {
Document doc = client.getPageByUrl(getSnpHomePageUrl());
Student student = getCurrent(getStudents(doc));
studentID = student.getId();
Diary diary = getCurrent(getDiaries(doc));
diaryID = diary.getId();
}
return this;
}
public String getSchoolID() {
return schoolID;
}
public String getStudentID() {
return studentID;
}
private String getBaseUrl() {
return BASE_URL.replace("{ID}", getSchoolID());
}
String getSnpHomePageUrl() throws IOException, VulcanException {
if (null != getSchoolID()) {
return getBaseUrl();
}
// get url to uonetplus-opiekun.vulcan.net.pl
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");
}
String snpPageUrl = studentTileLink.attr("href");
this.schoolID = getExtractedIdFromUrl(snpPageUrl);
return snpPageUrl;
}
String getExtractedIdFromUrl(String snpPageUrl) throws NotLoggedInErrorException {
String[] path = snpPageUrl.split(client.getHost())[1].split("/");
if (5 != path.length) {
throw new NotLoggedInErrorException("You are probably not logged in");
}
return path[2];
}
public String getRowDataChildValue(Element e, int index) {
return e.select(".daneWiersz .wartosc").get(index - 1).text();
}
public void setDiaryID(String id) {
this.diaryID = id;
}
public Document getSnPPageDocument(String url) throws IOException, VulcanException {
Map<String, String> cookies = new HashMap<>();
cookies.put("idBiezacyDziennik", diaryID);
cookies.put("idBiezacyUczen", studentID);
client.addCookies(cookies);
Document doc = client.getPageByUrl(getBaseUrl() + url, true, cookies);
if (!doc.title().startsWith("Witryna ucznia i rodzica")) {
throw new VulcanException("Expected SnP page, got page with title: " + doc.title());
}
if (doc.title().endsWith("Strona główna")) {
throw new VulcanException("Sesja została nieprawidłowo zainicjowana");
}
return doc;
}
public List<Diary> getDiaries() throws IOException, VulcanException {
return getDiaries(client.getPageByUrl(getBaseUrl()));
}
private List<Diary> getDiaries(Document doc) throws IOException, VulcanException {
return getList(doc.select("#dziennikDropDownList option"), Diary.class);
}
public List<Student> getStudents() throws IOException, VulcanException {
return getStudents(client.getPageByUrl(getBaseUrl()));
}
private List<Student> getStudents(Document doc) throws IOException, VulcanException {
return getList(doc.select("#uczenDropDownList option"), Student.class);
}
public List<Semester> getSemesters() throws IOException, VulcanException {
return getSemesters(getSnPPageDocument(GRADES_PAGE_URL));
}
public List<Semester> getSemesters(Document gradesPage) {
Elements semesterOptions = gradesPage.select("#okresyKlasyfikacyjneDropDownList option");
List<Semester> semesters = new ArrayList<>();
for (Element e : semesterOptions) {
Semester semester = new Semester()
.setId(e.attr("value"))
.setName(e.text());
if (isCurrent(e)) {
semester.setCurrent(true);
}
semesters.add(semester);
}
return semesters;
}
@SuppressWarnings("unchecked")
private <T> List<T> getList(Elements options, Class<? extends ParamItem> type) throws IOException, VulcanException {
List<T> list = new ArrayList<>();
for (Element e : options) {
URL url = new URL(e.val());
try {
ParamItem item = type.newInstance()
.setId(url.getQuery().split("=")[1])
.setName(e.text());
if (isCurrent(e)) {
item.setCurrent(true);
}
list.add((T) item);
} catch (Exception ex) {
throw new VulcanException("Error while trying to parse params list", ex);
}
}
return list;
}
@SuppressWarnings("unchecked")
public <T> T getCurrent(List<? extends ParamItem> list) {
ParamItem current = null;
for (ParamItem s : list) {
if (s.isCurrent()) {
current = s;
break;
}
}
return (T) current;
}
private boolean isCurrent(Element e) {
return "selected".equals(e.attr("selected"));
}
}

View file

@ -1,114 +0,0 @@
package io.github.wulkanowy.api;
import java.io.IOException;
import io.github.wulkanowy.api.attendance.AttendanceStatistics;
import io.github.wulkanowy.api.attendance.AttendanceTable;
import io.github.wulkanowy.api.exams.ExamsWeek;
import io.github.wulkanowy.api.grades.GradesList;
import io.github.wulkanowy.api.grades.SubjectsList;
import io.github.wulkanowy.api.messages.Messages;
import io.github.wulkanowy.api.notes.AchievementsList;
import io.github.wulkanowy.api.notes.NotesList;
import io.github.wulkanowy.api.school.SchoolInfo;
import io.github.wulkanowy.api.school.TeachersInfo;
import io.github.wulkanowy.api.timetable.Timetable;
import io.github.wulkanowy.api.user.BasicInformation;
import io.github.wulkanowy.api.user.FamilyInformation;
public class Vulcan {
private SnP snp;
private Client client;
private String schoolId;
private String studentId;
private String diaryId;
public void setCredentials(String email, String password, String symbol, String schoolId, String studentId, String diaryId) {
this.schoolId = schoolId;
this.studentId = studentId;
this.diaryId = diaryId;
client = new Client(email, password, symbol);
}
public Client getClient() throws NotLoggedInErrorException {
if (null == client) {
throw new NotLoggedInErrorException("Use setCredentials() method first");
}
return client;
}
public String getSymbol() throws NotLoggedInErrorException {
return getClient().getSymbol();
}
public SnP getStudentAndParent() throws VulcanException, IOException {
if (null != this.snp) {
return this.snp;
}
this.snp = new StudentAndParent(getClient(), schoolId, studentId, diaryId)
.setUp();
return this.snp;
}
public AttendanceTable getAttendanceTable() throws IOException, VulcanException {
return new AttendanceTable(getStudentAndParent());
}
public AttendanceStatistics getAttendanceStatistics() throws IOException, VulcanException {
return new AttendanceStatistics(getStudentAndParent());
}
public ExamsWeek getExamsList() throws IOException, VulcanException {
return new ExamsWeek(getStudentAndParent());
}
public GradesList getGradesList() throws IOException, VulcanException {
return new GradesList(getStudentAndParent());
}
public SubjectsList getSubjectsList() throws IOException, VulcanException {
return new SubjectsList(getStudentAndParent());
}
public AchievementsList getAchievementsList() throws IOException, VulcanException {
return new AchievementsList(getStudentAndParent());
}
public NotesList getNotesList() throws IOException, VulcanException {
return new NotesList(getStudentAndParent());
}
public SchoolInfo getSchoolInfo() throws IOException, VulcanException {
return new SchoolInfo(getStudentAndParent());
}
public TeachersInfo getTeachersInfo() throws IOException, VulcanException {
return new TeachersInfo(getStudentAndParent());
}
public Timetable getTimetable() throws IOException, VulcanException {
return new Timetable(getStudentAndParent());
}
public BasicInformation getBasicInformation() throws IOException, VulcanException {
return new BasicInformation(getStudentAndParent());
}
public FamilyInformation getFamilyInformation() throws IOException, VulcanException {
return new FamilyInformation(getStudentAndParent());
}
public Messages getMessages() throws VulcanException {
return new Messages(getClient());
}
}

View file

@ -1,12 +0,0 @@
package io.github.wulkanowy.api;
public class VulcanException extends Exception {
public VulcanException(String message) {
super(message);
}
protected VulcanException(String message, Exception e) {
super(message, e);
}
}

View file

@ -1,8 +0,0 @@
package io.github.wulkanowy.api;
public class VulcanOfflineException extends VulcanException {
VulcanOfflineException(String message) {
super(message);
}
}

View file

@ -1,89 +0,0 @@
package io.github.wulkanowy.api.attendance;
import org.apache.commons.lang3.math.NumberUtils;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.VulcanException;
import io.github.wulkanowy.api.generic.Month;
import io.github.wulkanowy.api.generic.Subject;
public class AttendanceStatistics {
private SnP snp;
private String attendancePageUrl = "Frekwencja.mvc";
public AttendanceStatistics(SnP snp) {
this.snp = snp;
}
public Types getTypesTable() throws IOException, VulcanException {
return getTypesTable("");
}
public Types getTypesTable(String tick) throws IOException, VulcanException {
return getTypesTable(tick, -1);
}
public List<Subject> getSubjectList() throws IOException, VulcanException {
Element mainContainer = snp.getSnPPageDocument(attendancePageUrl)
.select(".mainContainer #idPrzedmiot").first();
List<Subject> subjectList = new ArrayList<>();
for (Element subject : mainContainer.select("option")) {
subjectList.add(new Subject()
.setId(Integer.parseInt(subject.attr("value")))
.setName(subject.text())
);
}
return subjectList;
}
public Types getTypesTable(String tick, Integer subjectId) throws IOException, VulcanException {
Element mainContainer = snp.getSnPPageDocument((attendancePageUrl
+ "?data={tick}&idPrzedmiot={subject}")
.replace("{tick}", tick)
.replace("{subject}", subjectId.toString())
).select(".mainContainer").first();
Element table = mainContainer.select("table:nth-of-type(2)").first();
Elements headerCells = table.select("thead th");
List<Type> typeList = new ArrayList<>();
Elements typesRows = table.select("tbody tr");
// fill types with months
for (Element row : typesRows) {
Elements monthsCells = row.select("td");
List<Month> monthList = new ArrayList<>();
// iterate over month in type, first column is empty, last is `total`; (0, n-1)
for (int i = 1; i < monthsCells.size() - 1; i++) {
monthList.add(new Month()
.setValue(NumberUtils.toInt(monthsCells.get(i).text(), 0))
.setName(headerCells.get(i).text()));
}
typeList.add(new Type()
.setTotal(NumberUtils.toInt(monthsCells.last().text(), 0))
.setName(monthsCells.get(0).text())
.setMonthList(monthList));
}
String total = mainContainer.select("h2").text().split(": ")[1];
return new Types()
.setTotal(NumberUtils.toDouble(total.replace("%", "").replace(",", ".")))
.setTypeList(typeList);
}
}

View file

@ -1,117 +0,0 @@
package io.github.wulkanowy.api.attendance;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.VulcanException;
import io.github.wulkanowy.api.generic.Day;
import io.github.wulkanowy.api.generic.Lesson;
import io.github.wulkanowy.api.generic.Week;
public class AttendanceTable {
private final static String ATTENDANCE_PAGE_URL = "Frekwencja.mvc?data=";
private SnP snp;
public AttendanceTable(SnP snp) {
this.snp = snp;
}
public Week<Day> getWeekTable() throws IOException, ParseException, VulcanException {
return getWeekTable("");
}
public Week<Day> getWeekTable(String tick) throws IOException, ParseException, VulcanException {
Element table = snp.getSnPPageDocument(ATTENDANCE_PAGE_URL + tick)
.select(".mainContainer .presentData").first();
Elements headerCells = table.select("thead th");
List<Day> days = new ArrayList<>();
for (int i = 1; i < headerCells.size(); i++) {
String[] dayHeaderCell = headerCells.get(i).html().split("<br>");
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy", Locale.ROOT);
Date d = sdf.parse(dayHeaderCell[1].trim());
sdf.applyPattern("yyyy-MM-dd");
Day day = new Day();
day.setDayName(dayHeaderCell[0]);
day.setDate(sdf.format(d));
days.add(day);
}
Elements hoursInDays = table.select("tbody tr");
// fill days in week with lessons
for (Element row : hoursInDays) {
Elements hours = row.select("td");
// fill hours in day
int size = hours.size();
for (int i = 1; i < size; i++) {
Lesson lesson = new Lesson();
lesson.setDate(days.get(i - 1).getDate());
lesson.setNumber(Integer.valueOf(hours.get(0).text()));
addLessonDetails(lesson, hours.get(i));
days.get(i - 1).setLesson(lesson);
}
}
return new Week<Day>()
.setStartDayDate(days.get(0).getDate())
.setDays(days);
}
private void addLessonDetails(Lesson lesson, Element cell) {
lesson.setSubject(cell.select("span").text());
if (LessonTypes.CLASS_NOT_EXIST.equals(cell.attr("class"))) {
lesson.setNotExist(true);
lesson.setEmpty(true);
return;
}
switch (cell.select("div").attr("class")) {
case LessonTypes.CLASS_PRESENCE:
lesson.setPresence(true);
break;
case LessonTypes.CLASS_ABSENCE_UNEXCUSED:
lesson.setAbsenceUnexcused(true);
break;
case LessonTypes.CLASS_ABSENCE_EXCUSED:
lesson.setAbsenceExcused(true);
break;
case LessonTypes.CLASS_ABSENCE_FOR_SCHOOL_REASONS:
lesson.setAbsenceForSchoolReasons(true);
break;
case LessonTypes.CLASS_UNEXCUSED_LATENESS:
lesson.setUnexcusedLateness(true);
break;
case LessonTypes.CLASS_EXCUSED_LATENESS:
lesson.setExcusedLateness(true);
break;
case LessonTypes.CLASS_EXEMPTION:
lesson.setExemption(true);
break;
default:
lesson.setEmpty(true);
break;
}
}
}

View file

@ -1,24 +0,0 @@
package io.github.wulkanowy.api.attendance;
class LessonTypes {
static final String CLASS_NOT_EXIST = "x-sp-nieobecny-w-oddziale";
static final String CLASS_PRESENCE = "x-obecnosc";
static final String CLASS_ABSENCE_UNEXCUSED = "x-nieobecnosc-nieuspr";
static final String CLASS_ABSENCE_EXCUSED = "x-nieobecnosc-uspr";
static final String CLASS_ABSENCE_FOR_SCHOOL_REASONS = "x-nieobecnosc-przycz-szkol";
static final String CLASS_UNEXCUSED_LATENESS = "x-sp-nieusprawiedliwione";
static final String CLASS_EXCUSED_LATENESS = "x-sp-spr";
static final String CLASS_EXEMPTION = "x-sp-zwolnienie";
private LessonTypes() {
throw new IllegalStateException("Utility class");
}
}

View file

@ -1,42 +0,0 @@
package io.github.wulkanowy.api.attendance;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.generic.Month;
public class Type {
private String name = "";
private int total = 0;
private List<Month> monthList = new ArrayList<>();
public String getName() {
return name;
}
public Type setName(String name) {
this.name = name;
return this;
}
public int getTotal() {
return total;
}
public Type setTotal(int total) {
this.total = total;
return this;
}
public List<Month> getMonthList() {
return monthList;
}
public Type setMonthList(List<Month> monthList) {
this.monthList = monthList;
return this;
}
}

View file

@ -1,29 +0,0 @@
package io.github.wulkanowy.api.attendance;
import java.util.ArrayList;
import java.util.List;
public class Types {
private double total = 0;
private List<Type> typeList = new ArrayList<>();
public double getTotal() {
return total;
}
public Types setTotal(double total) {
this.total = total;
return this;
}
public List<Type> getTypeList() {
return typeList;
}
public Types setTypeList(List<Type> typeList) {
this.typeList = typeList;
return this;
}
}

View file

@ -1,59 +0,0 @@
package io.github.wulkanowy.api.exams;
public class Exam {
private String subjectAndGroup = "";
private String type = "";
private String description = "";
private String teacher = "";
private String entryDate = "";
public String getSubjectAndGroup() {
return subjectAndGroup;
}
public Exam setSubjectAndGroup(String subjectAndGroup) {
this.subjectAndGroup = subjectAndGroup;
return this;
}
public String getType() {
return type;
}
public Exam setType(String type) {
this.type = type;
return this;
}
public String getDescription() {
return description;
}
public Exam setDescription(String description) {
this.description = description;
return this;
}
public String getTeacher() {
return teacher;
}
public Exam setTeacher(String teacher) {
this.teacher = teacher;
return this;
}
public String getEntryDate() {
return entryDate;
}
public Exam setEntryDate(String entryDate) {
this.entryDate = entryDate;
return this;
}
}

View file

@ -1,19 +0,0 @@
package io.github.wulkanowy.api.exams;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.generic.Day;
public class ExamDay extends Day {
private List<Exam> examList = new ArrayList<>();
public List<Exam> getExamList() {
return examList;
}
public void addExam(Exam exam) {
this.examList.add(exam);
}
}

View file

@ -1,81 +0,0 @@
package io.github.wulkanowy.api.exams;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.VulcanException;
import io.github.wulkanowy.api.generic.Week;
public class ExamsWeek {
private static final String EXAMS_PAGE_URL = "Sprawdziany.mvc/Terminarz?rodzajWidoku=2&data=";
private final SnP snp;
public ExamsWeek(SnP snp) {
this.snp = snp;
}
public Week<ExamDay> getCurrent() throws IOException, VulcanException, ParseException {
return getWeek("", true);
}
public Week<ExamDay> getWeek(String tick, final boolean onlyNotEmpty) throws IOException, VulcanException, ParseException {
Document examsPage = snp.getSnPPageDocument(EXAMS_PAGE_URL + tick);
Elements examsDays = examsPage.select(".mainContainer > div:not(.navigation)");
List<ExamDay> days = new ArrayList<>();
for (Element item : examsDays) {
ExamDay day = new ExamDay();
Element dayHeading = item.select("h2").first();
if (null == dayHeading && onlyNotEmpty) {
continue;
}
if (null != dayHeading) {
String[] dateHeader = dayHeading.text().split(", ");
day.setDayName(StringUtils.capitalize(dateHeader[0]));
day.setDate(getFormattedDate(dateHeader[1]));
}
Elements exams = item.select("article");
for (Element e : exams) {
day.addExam(new Exam()
.setSubjectAndGroup(snp.getRowDataChildValue(e, 1))
.setType(snp.getRowDataChildValue(e, 2))
.setDescription(snp.getRowDataChildValue(e, 3))
.setTeacher(snp.getRowDataChildValue(e, 4).split(", ")[0])
.setEntryDate(getFormattedDate(snp.getRowDataChildValue(e, 4).split(", ")[1]))
);
}
days.add(day);
}
return new Week<ExamDay>()
.setStartDayDate(getFormattedDate(examsPage.select(".mainContainer > h2")
.first().text().split(" ")[1]))
.setDays(days);
}
private String getFormattedDate(String date) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy", Locale.ROOT);
Date d = sdf.parse(date);
sdf.applyPattern("yyyy-MM-dd");
return sdf.format(d);
}
}

View file

@ -1,43 +0,0 @@
package io.github.wulkanowy.api.generic;
import java.util.ArrayList;
import java.util.List;
public class Day {
private List<Lesson> lessons = new ArrayList<>();
protected String date = "";
private String dayName = "";
public Lesson getLesson(int index) {
return lessons.get(index);
}
public List<Lesson> getLessons() {
return lessons;
}
public Day setLesson(Lesson lesson) {
this.lessons.add(lesson);
return this;
}
public String getDate() {
return date;
}
public Day setDate(String date) {
this.date = date;
return this;
}
public String getDayName() {
return dayName;
}
public void setDayName(String dayName) {
this.dayName = dayName;
}
}

View file

@ -1,241 +0,0 @@
package io.github.wulkanowy.api.generic;
public class Lesson {
private int number = 0;
private String subject = "";
private String teacher = "";
private String room = "";
private String description = "";
private String groupName = "";
private String startTime = "";
private String endTime = "";
private String date = "";
private boolean isEmpty = false;
private boolean isDivisionIntoGroups = false;
private boolean isPlanning = false;
private boolean isRealized = false;
private boolean isMovedOrCanceled = false;
private boolean isNewMovedInOrChanged = false;
private boolean isNotExist = false;
private boolean isPresence = false;
private boolean isAbsenceUnexcused = false;
private boolean isAbsenceExcused = false;
private boolean isUnexcusedLateness = false;
private boolean isAbsenceForSchoolReasons = false;
private boolean isExcusedLateness = false;
private boolean isExemption = false;
public int getNumber() {
return number;
}
public Lesson setNumber(int number) {
this.number = number;
return this;
}
public String getSubject() {
return subject;
}
public Lesson setSubject(String subject) {
this.subject = subject;
return this;
}
public String getTeacher() {
return teacher;
}
public Lesson setTeacher(String teacher) {
this.teacher = teacher;
return this;
}
public String getRoom() {
return room;
}
public Lesson setRoom(String room) {
this.room = room;
return this;
}
public String getDescription() {
return description;
}
public Lesson setDescription(String description) {
this.description = description;
return this;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getDate() {
return date;
}
public Lesson setDate(String date) {
this.date = date;
return this;
}
public boolean isEmpty() {
return isEmpty;
}
public Lesson setEmpty(boolean empty) {
isEmpty = empty;
return this;
}
public boolean isDivisionIntoGroups() {
return isDivisionIntoGroups;
}
public void setDivisionIntoGroups(boolean divisionIntoGroups) {
isDivisionIntoGroups = divisionIntoGroups;
}
public boolean isPlanning() {
return isPlanning;
}
public void setPlanning(boolean planning) {
isPlanning = planning;
}
public boolean isRealized() {
return isRealized;
}
public void setRealized(boolean realized) {
isRealized = realized;
}
public boolean isMovedOrCanceled() {
return isMovedOrCanceled;
}
public void setMovedOrCanceled(boolean movedOrCanceled) {
isMovedOrCanceled = movedOrCanceled;
}
public boolean isNewMovedInOrChanged() {
return isNewMovedInOrChanged;
}
public void setNewMovedInOrChanged(boolean newMovedInOrChanged) {
isNewMovedInOrChanged = newMovedInOrChanged;
}
public boolean isNotExist() {
return isNotExist;
}
public void setNotExist(boolean notExist) {
isNotExist = notExist;
}
public boolean isPresence() {
return isPresence;
}
public void setPresence(boolean presence) {
isPresence = presence;
}
public boolean isAbsenceUnexcused() {
return isAbsenceUnexcused;
}
public void setAbsenceUnexcused(boolean absenceUnexcused) {
isAbsenceUnexcused = absenceUnexcused;
}
public boolean isAbsenceExcused() {
return isAbsenceExcused;
}
public void setAbsenceExcused(boolean absenceExcused) {
isAbsenceExcused = absenceExcused;
}
public boolean isUnexcusedLateness() {
return isUnexcusedLateness;
}
public void setUnexcusedLateness(boolean unexcusedLateness) {
isUnexcusedLateness = unexcusedLateness;
}
public boolean isAbsenceForSchoolReasons() {
return isAbsenceForSchoolReasons;
}
public void setAbsenceForSchoolReasons(boolean absenceForSchoolReasons) {
isAbsenceForSchoolReasons = absenceForSchoolReasons;
}
public boolean isExcusedLateness() {
return isExcusedLateness;
}
public void setExcusedLateness(boolean excusedLateness) {
isExcusedLateness = excusedLateness;
}
public boolean isExemption() {
return isExemption;
}
public void setExemption(boolean exemption) {
isExemption = exemption;
}
}

View file

@ -1,26 +0,0 @@
package io.github.wulkanowy.api.generic;
public class Month {
private String name = "";
private int value = 0;
public String getName() {
return name;
}
public Month setName(String name) {
this.name = name;
return this;
}
public int getValue() {
return value;
}
public Month setValue(int value) {
this.value = value;
return this;
}
}

View file

@ -1,26 +0,0 @@
package io.github.wulkanowy.api.generic;
public class Subject {
private int id = -1;
private String name = "";
public int getId() {
return id;
}
public Subject setId(int id) {
this.id = id;
return this;
}
public String getName() {
return name;
}
public Subject setName(String name) {
this.name = name;
return this;
}
}

View file

@ -1,33 +0,0 @@
package io.github.wulkanowy.api.generic;
import java.util.ArrayList;
import java.util.List;
public class Week<T> {
private List<T> days = new ArrayList<>();
private String startDayDate = "";
public T getDay(int index) {
return days.get(index);
}
public List<T> getDays() {
return days;
}
public Week<T> setDays(List<T> days) {
this.days = days;
return this;
}
public String getStartDayDate() {
return startDayDate;
}
public Week<T> setStartDayDate(String startDayDate) {
this.startDayDate = startDayDate;
return this;
}
}

View file

@ -1,100 +0,0 @@
package io.github.wulkanowy.api.grades;
public class Grade {
protected String value = "";
private String subject = "";
private String color = "";
private String symbol = "";
private String description = "";
private String weight = "";
private String date = "";
private String teacher = "";
public String getSubject() {
return subject;
}
public Grade setSubject(String subject) {
this.subject = subject;
return this;
}
public String getValue() {
return value;
}
public Grade setValue(String value) {
this.value = value;
return this;
}
public String getColor() {
return color;
}
public Grade setColor(String color) {
this.color = color;
return this;
}
public String getSymbol() {
return symbol;
}
public Grade setSymbol(String symbol) {
this.symbol = symbol;
return this;
}
public String getDescription() {
return description;
}
public Grade setDescription(String description) {
this.description = description;
return this;
}
public String getWeight() {
return weight;
}
public Grade setWeight(String weight) {
this.weight = weight;
return this;
}
public String getDate() {
return date;
}
public Grade setDate(String date) {
this.date = date;
return this;
}
public String getTeacher() {
return teacher;
}
public Grade setTeacher(String teacher) {
this.teacher = teacher;
return this;
}
}

View file

@ -1,93 +0,0 @@
package io.github.wulkanowy.api.grades;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.VulcanException;
public class GradesList {
private static final String GRADES_PAGE_URL = "Oceny/Wszystkie?details=2&okres=";
private SnP snp;
private List<Grade> grades = new ArrayList<>();
public GradesList(SnP snp) {
this.snp = snp;
}
private String getGradesPageUrl() {
return GRADES_PAGE_URL;
}
public List<Grade> getAll() throws IOException, ParseException, VulcanException {
return getAll("");
}
public List<Grade> getAll(String semester) throws IOException, ParseException, VulcanException {
Document gradesPage = snp.getSnPPageDocument(getGradesPageUrl() + semester);
Elements gradesRows = gradesPage.select(".ocenySzczegoly-table > tbody > tr");
for (Element row : gradesRows) {
if ("Brak ocen".equals(row.select("td:nth-child(2)").text())) {
continue;
}
grades.add(getGrade(row));
}
return grades;
}
private Grade getGrade(Element row) throws ParseException {
String descriptions = row.select("td:nth-child(3)").text();
String symbol = descriptions.split(", ")[0];
String description = descriptions.replaceFirst(Pattern.quote(symbol), "").replaceFirst(", ", "");
String color = getColor(row.select("td:nth-child(2) span.ocenaCzastkowa").attr("style"));
String date = formatDate(row.select("td:nth-child(5)").text());
return new Grade()
.setSubject(row.select("td:nth-child(1)").text())
.setValue(row.select("td:nth-child(2)").text())
.setColor(color)
.setSymbol(symbol)
.setDescription(description)
.setWeight(row.select("td:nth-child(4)").text())
.setDate(date)
.setTeacher(row.select("td:nth-child(6)").text());
}
private String getColor(String styleAttr) {
Pattern pattern = Pattern.compile("#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})");
Matcher matcher = pattern.matcher(styleAttr);
String color = "";
while (matcher.find()) {
color = matcher.group(1);
}
return color;
}
private String formatDate(String date) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy", Locale.ROOT);
Date d = sdf.parse(date);
sdf.applyPattern("yyyy-MM-dd");
return sdf.format(d);
}
}

View file

@ -1,40 +0,0 @@
package io.github.wulkanowy.api.grades;
public class Subject {
private String name;
private String predictedRating;
private String finalRating;
public String getName() {
return name;
}
public Subject setName(String name) {
this.name = name;
return this;
}
public String getPredictedRating() {
return predictedRating;
}
public Subject setPredictedRating(String predictedRating) {
this.predictedRating = predictedRating;
return this;
}
public String getFinalRating() {
return finalRating;
}
public Subject setFinalRating(String finalRating) {
this.finalRating = finalRating;
return this;
}
}

View file

@ -1,46 +0,0 @@
package io.github.wulkanowy.api.grades;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.VulcanException;
public class SubjectsList {
private static final String SUBJECTS_PAGE_URL = "Oceny/Wszystkie?details=1&okres=";
private SnP snp;
public SubjectsList(SnP snp) {
this.snp = snp;
}
public List<Subject> getAll() throws IOException, VulcanException {
return getAll("");
}
public List<Subject> getAll(String semester) throws IOException, VulcanException {
Document subjectPage = snp.getSnPPageDocument(SUBJECTS_PAGE_URL + semester);
Elements rows = subjectPage.select(".ocenyZwykle-table > tbody > tr");
List<Subject> subjects = new ArrayList<>();
for (Element subjectRow : rows) {
subjects.add(new Subject()
.setName(subjectRow.select("td:nth-child(1)").text())
.setPredictedRating(subjectRow.select("td:nth-last-child(2)").text())
.setFinalRating(subjectRow.select("td:nth-last-child(1)").text())
);
}
return subjects;
}
}

View file

@ -1,10 +0,0 @@
package io.github.wulkanowy.api.login;
import io.github.wulkanowy.api.VulcanException;
public class AccountPermissionException extends VulcanException {
AccountPermissionException(String message) {
super(message);
}
}

View file

@ -1,10 +0,0 @@
package io.github.wulkanowy.api.login;
import io.github.wulkanowy.api.VulcanException;
public class BadCredentialsException extends VulcanException {
BadCredentialsException(String message) {
super(message);
}
}

View file

@ -1,133 +0,0 @@
package io.github.wulkanowy.api.login;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.parser.Parser;
import org.jsoup.select.Elements;
import java.io.IOException;
import io.github.wulkanowy.api.Client;
import io.github.wulkanowy.api.VulcanException;
public class Login {
static final String LOGIN_PAGE_URL = "{schema}://cufs.{host}/{symbol}/Account/LogOn" +
"?ReturnUrl=%2F{symbol}%2FFS%2FLS%3Fwa%3Dwsignin1.0%26wtrealm%3D" +
"{schema}%253a%252f%252fuonetplus.{host}%252f{symbol}%252fLoginEndpoint.aspx%26wctx%3D" +
"{schema}%253a%252f%252fuonetplus.{host}%252f{symbol}%252fLoginEndpoint.aspx";
private Client client;
public Login(Client client) {
this.client = client;
}
public String login(String email, String password, String symbol) throws VulcanException, IOException {
Document certDoc = sendCredentials(email, password);
return sendCertificate(certDoc, symbol);
}
Document sendCredentials(String email, String password) throws IOException, VulcanException {
String[][] credentials = new String[][]{
{"LoginName", email},
{"Password", password}
};
Document nextDoc = sendCredentialsData(credentials, LOGIN_PAGE_URL);
Element errorMessage = nextDoc.selectFirst(".ErrorMessage, #ErrorTextLabel");
if (null != errorMessage) {
throw new BadCredentialsException(errorMessage.text());
}
return nextDoc;
}
private Document sendCredentialsData(String[][] credentials, String nextUrl) throws IOException, VulcanException {
Element formFirst = client.getPageByUrl(nextUrl, false).selectFirst("#form1");
if (null != formFirst) { // only on adfs login
Document formSecond = client.postPageByUrl(
formFirst.attr("abs:action"),
getFormStateParams(formFirst, "", "")
);
credentials = getFormStateParams(formSecond, credentials[0][1], credentials[1][1]);
nextUrl = formSecond.selectFirst("#form1").attr("abs:action");
}
return client.postPageByUrl(nextUrl, credentials);
}
private String[][] getFormStateParams(Element form, String email, String password) {
return new String[][]{
{"__VIEWSTATE", form.select("#__VIEWSTATE").val()},
{"__VIEWSTATEGENERATOR", form.select("#__VIEWSTATEGENERATOR").val()},
{"__EVENTVALIDATION", form.select("#__EVENTVALIDATION").val()},
{"__db", form.select("input[name=__db]").val()},
{"PassiveSignInButton.x", "0"},
{"PassiveSignInButton.y", "0"},
{"SubmitButton.x", "0"},
{"SubmitButton.y", "0"},
{"UsernameTextBox", email},
{"PasswordTextBox", password},
};
}
String sendCertificate(Document doc, String defaultSymbol) throws IOException, VulcanException {
client.setSymbol(findSymbol(defaultSymbol, doc.select("input[name=wresult]").val()));
Document targetDoc = sendCertData(doc);
String title = targetDoc.title();
if ("Working...".equals(title)) { // on adfs login
title = sendCertData(targetDoc).title();
}
if ("Logowanie".equals(title)) {
throw new AccountPermissionException("No account access. Try another symbol");
}
if (!"Uonet+".equals(title)) {
throw new LoginErrorException("Expected page title `UONET+`, got " + title);
}
return client.getSymbol();
}
private Document sendCertData(Document doc) throws IOException, VulcanException {
String url = doc.select("form[name=hiddenform]").attr("action");
return client.postPageByUrl(url.replaceFirst("Default", "{symbol}"), new String[][]{
{"wa", "wsignin1.0"},
{"wresult", doc.select("input[name=wresult]").val()},
{"wctx", doc.select("input[name=wctx]").val()}
});
}
private String findSymbol(String symbol, String certificate) throws AccountPermissionException {
if ("Default".equals(symbol)) {
return findSymbolInCertificate(certificate);
}
return symbol;
}
String findSymbolInCertificate(String certificate) throws AccountPermissionException {
Elements instances = Jsoup
.parse(certificate.replaceAll(":", ""), "", Parser.xmlParser())
.select("[AttributeName=\"UserInstance\"] samlAttributeValue");
if (instances.isEmpty()) { // on adfs login
return "";
}
if (instances.size() < 2) { // 1st index is always `Default`
throw new AccountPermissionException("First login detected, specify symbol");
}
return instances.get(1).text();
}
}

View file

@ -1,10 +0,0 @@
package io.github.wulkanowy.api.login;
import io.github.wulkanowy.api.NotLoggedInErrorException;
class LoginErrorException extends NotLoggedInErrorException {
LoginErrorException(String message) {
super(message);
}
}

View file

@ -1,10 +0,0 @@
package io.github.wulkanowy.api.messages;
import io.github.wulkanowy.api.VulcanException;
class BadRequestException extends VulcanException {
BadRequestException(String message) {
super(message);
}
}

View file

@ -1,30 +0,0 @@
package io.github.wulkanowy.api.messages;
import com.google.gson.annotations.SerializedName;
public class Message {
@SerializedName("Nieprzeczytana")
public boolean unread;
@SerializedName("Data")
public String date;
@SerializedName("Tresc")
public String content;
@SerializedName("Temat")
public String subject;
@SerializedName("NadawcaNazwa")
public String sender;
@SerializedName("IdWiadomosci")
public int messageID;
@SerializedName("IdNadawca")
public int senderID;
@SerializedName("Id")
public int id;
}

View file

@ -1,99 +0,0 @@
package io.github.wulkanowy.api.messages;
import com.google.gson.Gson;
import com.google.gson.JsonParseException;
import java.io.IOException;
import java.util.List;
import io.github.wulkanowy.api.Client;
import io.github.wulkanowy.api.NotLoggedInErrorException;
import io.github.wulkanowy.api.VulcanException;
public class Messages {
private static final String BASE_URL = "{schema}://uonetplus-uzytkownik.{host}/{symbol}/";
private static final String LIST_BASE_URL = BASE_URL + "Wiadomosc.mvc/";
private static final String RECEIVED_URL = LIST_BASE_URL + "GetWiadomosciOdebrane";
private static final String SENT_URL = LIST_BASE_URL + "GetWiadomosciWyslane";
private static final String DELETED_URL = LIST_BASE_URL + "GetWiadomosciUsuniete";
private static final String MESSAGE_URL = LIST_BASE_URL + "GetTrescWiadomosci";
public static final int RECEIVED_FOLDER = 1;
public static final int SENT_FOLDER = 2;
public static final int DELETED_FOLDER = 3;
private static final String ERROR_TITLE = "Błąd strony";
private Client client;
public Messages(Client client) {
this.client = client;
}
public List<Message> getReceived() throws IOException, VulcanException {
return getMessages(RECEIVED_URL);
}
public List<Message> getSent() throws IOException, VulcanException {
return getMessages(SENT_URL);
}
public List<Message> getDeleted() throws IOException, VulcanException {
return getMessages(DELETED_URL);
}
private List<Message> getMessages(String url) throws IOException, VulcanException {
String res = client.getJsonStringByUrl(url);
List<Message> messages;
try {
messages = new Gson().fromJson(res, MessagesContainer.class).data;
} catch (JsonParseException e) {
if (res.contains(ERROR_TITLE)) {
throw new BadRequestException(ERROR_TITLE);
}
throw new NotLoggedInErrorException("You are probably not logged in");
}
return messages;
}
public Message getMessage(int id, int folder) throws IOException, VulcanException {
String res = client.postJsonStringByUrl(MESSAGE_URL, new String[][]{
{"idWiadomosc", String.valueOf(id)},
{"Folder", String.valueOf(folder)}
});
Message message;
try {
message = new Gson().fromJson(res, MessageContainer.class).data;
} catch (JsonParseException e) {
if (res.contains(ERROR_TITLE)) {
throw new BadRequestException(ERROR_TITLE);
}
throw new NotLoggedInErrorException("You are probably not logged in. Force login");
}
return message;
}
private static class MessagesContainer {
private List<Message> data;
}
private static class MessageContainer {
private Message data;
}
}

View file

@ -1,36 +0,0 @@
package io.github.wulkanowy.api.notes;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.VulcanException;
public class AchievementsList {
private static final String NOTES_PAGE_URL = "UwagiOsiagniecia.mvc/Wszystkie";
private SnP snp = null;
private List<String> achievements = new ArrayList<>();
public AchievementsList(SnP snp) {
this.snp = snp;
}
public List<String> getAllAchievements() throws IOException, VulcanException {
Element pageFragment = snp.getSnPPageDocument(NOTES_PAGE_URL)
.select(".mainContainer > div").get(1);
Elements items = pageFragment.select("article");
for (Element item : items) {
achievements.add(item.text());
}
return achievements;
}
}

View file

@ -1,48 +0,0 @@
package io.github.wulkanowy.api.notes;
public class Note {
private String date;
private String teacher;
private String category;
private String content;
public String getDate() {
return date;
}
public Note setDate(String date) {
this.date = date;
return this;
}
public String getTeacher() {
return teacher;
}
public Note setTeacher(String teacher) {
this.teacher = teacher;
return this;
}
public String getCategory() {
return category;
}
public Note setCategory(String category) {
this.category = category;
return this;
}
public String getContent() {
return content;
}
public Note setContent(String content) {
this.content = content;
return this;
}
}

View file

@ -1,43 +0,0 @@
package io.github.wulkanowy.api.notes;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.VulcanException;
public class NotesList {
private static final String NOTES_PAGE_URL = "UwagiOsiagniecia.mvc/Wszystkie";
private SnP snp = null;
private List<Note> notes = new ArrayList<>();
public NotesList(SnP snp) {
this.snp = snp;
}
public List<Note> getAllNotes() throws IOException, VulcanException {
Element pageFragment = snp.getSnPPageDocument(NOTES_PAGE_URL)
.select(".mainContainer > div").get(0);
Elements items = pageFragment.select("article");
Elements dates = pageFragment.select("h2");
int index = 0;
for (Element item : items) {
notes.add(new Note()
.setDate(dates.get(index++).text())
.setTeacher(snp.getRowDataChildValue(item, 1))
.setCategory(snp.getRowDataChildValue(item, 2))
.setContent(snp.getRowDataChildValue(item, 3))
);
}
return notes;
}
}

View file

@ -1,59 +0,0 @@
package io.github.wulkanowy.api.school;
public class SchoolData {
private String name = "";
private String address = "";
private String phoneNumber = "";
private String headmaster = "";
private String[] pedagogue;
public String getName() {
return name;
}
public SchoolData setName(String name) {
this.name = name;
return this;
}
public String getAddress() {
return address;
}
public SchoolData setAddress(String address) {
this.address = address;
return this;
}
public String getPhoneNumber() {
return phoneNumber;
}
public SchoolData setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
return this;
}
public String getHeadmaster() {
return headmaster;
}
public SchoolData setHeadmaster(String headmaster) {
this.headmaster = headmaster;
return this;
}
public String[] getPedagogues() {
return pedagogue;
}
public SchoolData setPedagogue(String[] pedagogue) {
this.pedagogue = pedagogue;
return this;
}
}

View file

@ -1,31 +0,0 @@
package io.github.wulkanowy.api.school;
import org.jsoup.nodes.Element;
import java.io.IOException;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.VulcanException;
public class SchoolInfo {
private static final String SCHOOL_PAGE_URL = "Szkola.mvc/Nauczyciele";
private SnP snp = null;
public SchoolInfo(SnP snp) {
this.snp = snp;
}
public SchoolData getSchoolData() throws IOException, VulcanException {
Element e = snp.getSnPPageDocument(SCHOOL_PAGE_URL)
.select(".mainContainer > article").get(0);
return new SchoolData()
.setName(snp.getRowDataChildValue(e, 1))
.setAddress(snp.getRowDataChildValue(e, 2))
.setPhoneNumber(snp.getRowDataChildValue(e, 3))
.setHeadmaster(snp.getRowDataChildValue(e, 4))
.setPedagogue(snp.getRowDataChildValue(e, 5).split(", "));
}
}

View file

@ -1,26 +0,0 @@
package io.github.wulkanowy.api.school;
public class Subject {
private String name = "";
private String[] teachers;
public String getName() {
return name;
}
public Subject setName(String name) {
this.name = name;
return this;
}
public String[] getTeachers() {
return teachers;
}
public Subject setTeachers(String[] teachers) {
this.teachers = teachers;
return this;
}
}

View file

@ -1,39 +0,0 @@
package io.github.wulkanowy.api.school;
import java.util.List;
public class TeachersData {
private String className = "";
private String[] classTeacher;
private List<Subject> subjects;
public String getClassName() {
return className;
}
public TeachersData setClassName(String className) {
this.className = className;
return this;
}
public String[] getClassTeacher() {
return classTeacher;
}
public TeachersData setClassTeacher(String[] classTeacher) {
this.classTeacher = classTeacher;
return this;
}
public List<Subject> getSubjects() {
return subjects;
}
public TeachersData setSubjects(List<Subject> subjects) {
this.subjects = subjects;
return this;
}
}

View file

@ -1,43 +0,0 @@
package io.github.wulkanowy.api.school;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.VulcanException;
public class TeachersInfo {
private static final String SCHOOL_PAGE_URL = "Szkola.mvc/Nauczyciele";
private SnP snp = null;
public TeachersInfo(SnP snp) {
this.snp = snp;
}
public TeachersData getTeachersData() throws IOException, VulcanException {
Document doc = snp.getSnPPageDocument(SCHOOL_PAGE_URL);
Elements rows = doc.select(".mainContainer > table tbody tr");
String description = doc.select(".mainContainer > p").first().text();
List<Subject> subjects = new ArrayList<>();
for (Element subject : rows) {
subjects.add(new Subject()
.setName(subject.select("td").get(1).text())
.setTeachers(subject.select("td").get(2).text().split(", "))
);
}
return new TeachersData()
.setClassName(description.split(", ")[0].split(": ")[1].trim())
.setClassTeacher(description.split("Wychowawcy:")[1].trim().split(", "))
.setSubjects(subjects);
}
}

View file

@ -1,16 +0,0 @@
package io.github.wulkanowy.api.timetable;
class LessonTypes {
static final String CLASS_PLANNING = "x-treelabel-ppl";
static final String CLASS_REALIZED = "x-treelabel-rlz";
static final String CLASS_MOVED_OR_CANCELED = "x-treelabel-inv";
static final String CLASS_NEW_MOVED_IN_OR_CHANGED = "x-treelabel-zas";
private LessonTypes() {
throw new IllegalStateException("Utility class");
}
}

View file

@ -1,226 +0,0 @@
package io.github.wulkanowy.api.timetable;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.VulcanException;
import io.github.wulkanowy.api.generic.Lesson;
import io.github.wulkanowy.api.generic.Week;
public class Timetable {
private static final String TIMETABLE_PAGE_URL = "Lekcja.mvc/PlanLekcji?data=";
private SnP snp;
public Timetable(SnP snp) {
this.snp = snp;
}
public Week<TimetableDay> getWeekTable() throws IOException, ParseException, VulcanException {
return getWeekTable("");
}
public Week<TimetableDay> getWeekTable(final String tick) throws IOException, ParseException, VulcanException {
Element table = snp.getSnPPageDocument(TIMETABLE_PAGE_URL + tick)
.select(".mainContainer .presentData").first();
List<TimetableDay> days = getDays(table.select("thead th"));
setLessonToDays(table, days);
return new Week<TimetableDay>()
.setStartDayDate(days.get(0).getDate())
.setDays(days);
}
private List<TimetableDay> getDays(Elements tableHeaderCells) throws ParseException {
List<TimetableDay> days = new ArrayList<>();
for (int i = 2; i < 7; i++) {
String[] dayHeaderCell = tableHeaderCells.get(i).html().split("<br>");
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy", Locale.ROOT);
Date d = sdf.parse(dayHeaderCell[1].trim());
sdf.applyPattern("yyyy-MM-dd");
TimetableDay day = new TimetableDay();
day.setDayName(dayHeaderCell[0]);
day.setDate(sdf.format(d));
if (tableHeaderCells.get(i).hasClass("free-day")) {
day.setFreeDay(true);
day.setFreeDayName(dayHeaderCell[2]);
}
days.add(day);
}
return days;
}
private void setLessonToDays(Element table, List<TimetableDay> days) {
for (Element row : table.select("tbody tr")) {
Elements hours = row.select("td");
// fill hours in day
for (int i = 2; i < hours.size(); i++) {
Lesson lesson = new Lesson();
String[] startEndEnd = hours.get(1).text().split(" ");
lesson.setStartTime(startEndEnd[0]);
lesson.setEndTime(startEndEnd[1]);
lesson.setDate(days.get(i - 2).getDate());
lesson.setNumber(Integer.valueOf(hours.get(0).text()));
addLessonDetails(lesson, hours.get(i).select("div"));
days.get(i - 2).setLesson(lesson);
}
}
}
private void addLessonDetails(Lesson lesson, Elements e) {
moveWarningToLessonNode(e);
switch (e.size()) {
case 1:
addLessonInfoFromElement(lesson, e.first());
break;
case 2:
Element span = e.last().select("span").first();
if (span.hasClass(LessonTypes.CLASS_MOVED_OR_CANCELED)) {
lesson.setNewMovedInOrChanged(true);
lesson.setDescription("poprzednio: " + getLessonAndGroupInfoFromSpan(span)[0]);
addLessonInfoFromElement(lesson, e.first());
} else {
addLessonInfoFromElement(lesson, e.last());
}
break;
case 3:
addLessonInfoFromElement(lesson, e.get(1));
break;
default:
lesson.setEmpty(true);
break;
}
}
private void moveWarningToLessonNode(Elements e) {
Elements warn = e.select(".uwaga-panel");
if (!warn.isEmpty()) {
e.select(".x-treelabel-rlz").last().text("(" + warn.text() + ")");
e.remove(1);
}
}
private void addLessonInfoFromElement(Lesson lesson, Element e) {
Elements spans = e.select("span");
addTypeInfo(lesson, spans);
addNormalLessonInfo(lesson, spans);
addChangesInfo(lesson, spans);
addGroupLessonInfo(lesson, spans);
}
private void addTypeInfo(Lesson lesson, Elements spans) {
if (spans.first().hasClass(LessonTypes.CLASS_PLANNING)) {
lesson.setPlanning(true);
}
if (spans.first().hasClass(LessonTypes.CLASS_MOVED_OR_CANCELED)) {
lesson.setMovedOrCanceled(true);
}
if (spans.first().hasClass(LessonTypes.CLASS_NEW_MOVED_IN_OR_CHANGED)) {
lesson.setNewMovedInOrChanged(true);
}
if (spans.last().hasClass(LessonTypes.CLASS_REALIZED) || "".equals(spans.first().attr("class"))) {
lesson.setRealized(true);
}
}
private void addNormalLessonInfo(Lesson lesson, Elements spans) {
if (3 == spans.size()) {
lesson.setSubject(spans.get(0).text());
lesson.setTeacher(spans.get(1).text());
lesson.setRoom(spans.get(2).text());
}
}
private void addChangesInfo(Lesson lesson, Elements spans) {
if (!spans.last().hasClass(LessonTypes.CLASS_REALIZED)) {
return;
}
if (7 == spans.size()) {
lesson.setSubject(spans.get(3).text());
lesson.setTeacher(spans.get(4).text());
lesson.setRoom(spans.get(5).text());
lesson.setMovedOrCanceled(false);
lesson.setNewMovedInOrChanged(true);
lesson.setDescription(StringUtils.defaultString(StringUtils.substringBetween(
spans.last().text(), "(", ")"), spans.last().text())
+ " (poprzednio: " + spans.get(0).text() + ")");
} else if (9 == spans.size()) {
String[] subjectAndGroupInfo = getLessonAndGroupInfoFromSpan(spans.get(4));
lesson.setSubject(subjectAndGroupInfo[0]);
lesson.setGroupName(subjectAndGroupInfo[1]);
lesson.setTeacher(spans.get(6).text());
lesson.setRoom(spans.get(7).text());
lesson.setMovedOrCanceled(false);
lesson.setNewMovedInOrChanged(true);
lesson.setDivisionIntoGroups(true);
lesson.setDescription(StringUtils.defaultString(StringUtils.substringBetween(
spans.last().text(), "(", ")"), spans.last().text())
+ " (poprzednio: " + getLessonAndGroupInfoFromSpan(spans.get(0))[0] + ")");
} else if (4 <= spans.size()) {
lesson.setSubject(spans.get(0).text());
lesson.setTeacher(spans.get(1).text());
lesson.setRoom(spans.get(2).text());
lesson.setDescription(StringUtils.defaultString(StringUtils.substringBetween(
spans.last().text(), "(", ")"), spans.last().text()));
}
}
private void addGroupLessonInfo(Lesson lesson, Elements spans) {
if (4 == spans.size() && !spans.last().hasClass(LessonTypes.CLASS_REALIZED)) {
lesson.setRoom(spans.last().text());
}
if ((4 == spans.size() && !spans.last().hasClass(LessonTypes.CLASS_REALIZED) || 5 == spans.size())) {
String[] subjectAndGroupInfo = getLessonAndGroupInfoFromSpan(spans.get(0));
lesson.setSubject(subjectAndGroupInfo[0]);
lesson.setGroupName(subjectAndGroupInfo[1]);
lesson.setTeacher(spans.get(2).text());
lesson.setDivisionIntoGroups(true);
}
if (5 == spans.size()) {
lesson.setRoom(spans.get(3).text());
}
}
private String[] getLessonAndGroupInfoFromSpan(Element span) {
String[] subjectNameArray = span.text().split(" ");
String groupName = subjectNameArray[subjectNameArray.length - 1];
return new String[]{
span.text().replace(" " + groupName, ""),
StringUtils.defaultString(StringUtils.substringBetween(
groupName, "[", "]"), groupName)
};
}
}

View file

@ -1,26 +0,0 @@
package io.github.wulkanowy.api.timetable;
import io.github.wulkanowy.api.generic.Day;
public class TimetableDay extends Day {
private boolean isFreeDay = false;
private String freeDayName = "";
public boolean isFreeDay() {
return isFreeDay;
}
public void setFreeDay(boolean freeDay) {
isFreeDay = freeDay;
}
public String getFreeDayName() {
return freeDayName;
}
public void setFreeDayName(String freeDayName) {
this.freeDayName = freeDayName;
}
}

View file

@ -1,40 +0,0 @@
package io.github.wulkanowy.api.user;
public class AddressData {
private String address = "";
private String registeredAddress = "";
private String correspondenceAddress = "";
public String getAddress() {
return address;
}
public AddressData setAddress(String address) {
this.address = address;
return this;
}
public String getRegisteredAddress() {
return registeredAddress;
}
public AddressData setRegisteredAddress(String registeredAddress) {
this.registeredAddress = registeredAddress;
return this;
}
public String getCorrespondenceAddress() {
return correspondenceAddress;
}
public AddressData setCorrespondenceAddress(String correspondenceAddress) {
this.correspondenceAddress = correspondenceAddress;
return this;
}
}

View file

@ -1,70 +0,0 @@
package io.github.wulkanowy.api.user;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import java.io.IOException;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.VulcanException;
public class BasicInformation {
private static final String STUDENT_DATA_PAGE_URL = "Uczen.mvc/DanePodstawowe";
private static final String CONTENT_QUERY = ".mainContainer > article";
private Document studentDataPageDocument;
private SnP snp;
public BasicInformation(SnP snp) {
this.snp = snp;
}
public Document getStudentDataPageDocument() throws IOException, VulcanException {
if (null == studentDataPageDocument) {
studentDataPageDocument = snp.getSnPPageDocument(STUDENT_DATA_PAGE_URL);
}
return studentDataPageDocument;
}
public PersonalData getPersonalData() throws IOException, VulcanException {
Element e = getStudentDataPageDocument().select(CONTENT_QUERY).get(0);
String name = snp.getRowDataChildValue(e, 1);
String[] names = name.split(" ");
return new PersonalData()
.setName(name)
.setFirstName(names[0])
.setSurname(names[names.length - 1])
.setFirstAndLastName(names[0] + " " + names[names.length - 1])
.setDateAndBirthPlace(snp.getRowDataChildValue(e, 2))
.setPesel(snp.getRowDataChildValue(e, 3))
.setGender(snp.getRowDataChildValue(e, 4))
.setPolishCitizenship("Tak".equals(snp.getRowDataChildValue(e, 5)))
.setFamilyName(snp.getRowDataChildValue(e, 6))
.setParentsNames(snp.getRowDataChildValue(e, 7));
}
public AddressData getAddressData() throws IOException, VulcanException {
Element e = getStudentDataPageDocument().select(CONTENT_QUERY).get(1);
return new AddressData()
.setAddress(snp.getRowDataChildValue(e, 1))
.setRegisteredAddress(snp.getRowDataChildValue(e, 2))
.setCorrespondenceAddress(snp.getRowDataChildValue(e, 3));
}
public ContactDetails getContactDetails() throws IOException, VulcanException {
Element e = getStudentDataPageDocument().select(CONTENT_QUERY).get(2);
return new ContactDetails()
.setPhoneNumber(snp.getRowDataChildValue(e, 1))
.setCellPhoneNumber(snp.getRowDataChildValue(e, 2))
.setEmail(snp.getRowDataChildValue(e, 3));
}
}

View file

@ -1,37 +0,0 @@
package io.github.wulkanowy.api.user;
public class ContactDetails {
private String phoneNumber = "";
private String cellPhoneNumber = "";
private String email = "";
public String getPhoneNumber() {
return phoneNumber;
}
public ContactDetails setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
return this;
}
public String getCellPhoneNumber() {
return cellPhoneNumber;
}
public ContactDetails setCellPhoneNumber(String cellPhoneNumber) {
this.cellPhoneNumber = cellPhoneNumber;
return this;
}
public String getEmail() {
return email;
}
public ContactDetails setEmail(String email) {
this.email = email;
return this;
}
}

View file

@ -1,41 +0,0 @@
package io.github.wulkanowy.api.user;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.VulcanException;
public class FamilyInformation {
private static final String STUDENT_DATA_PAGE_URL = "Uczen.mvc/DanePodstawowe";
private SnP snp;
public FamilyInformation(SnP snp) {
this.snp = snp;
}
public List<FamilyMember> getFamilyMembers() throws IOException, VulcanException {
Elements membersElements = snp.getSnPPageDocument(STUDENT_DATA_PAGE_URL)
.select(".mainContainer > article:nth-of-type(n+4)");
List<FamilyMember> familyMembers = new ArrayList<>();
for (Element e : membersElements) {
familyMembers.add(new FamilyMember()
.setName(snp.getRowDataChildValue(e, 1))
.setKinship(snp.getRowDataChildValue(e, 2))
.setAddress(snp.getRowDataChildValue(e, 3))
.setTelephones(snp.getRowDataChildValue(e, 4))
.setEmail(snp.getRowDataChildValue(e, 5))
);
}
return familyMembers;
}
}

View file

@ -1,59 +0,0 @@
package io.github.wulkanowy.api.user;
public class FamilyMember {
private String name = "";
private String kinship = "";
private String address = "";
private String telephones = "";
private String email = "";
public String getName() {
return name;
}
public FamilyMember setName(String name) {
this.name = name;
return this;
}
public String getKinship() {
return kinship;
}
public FamilyMember setKinship(String kinship) {
this.kinship = kinship;
return this;
}
public String getAddress() {
return address;
}
public FamilyMember setAddress(String address) {
this.address = address;
return this;
}
public String getTelephones() {
return telephones;
}
public FamilyMember setTelephones(String telephones) {
this.telephones = telephones;
return this;
}
public String getEmail() {
return email;
}
public FamilyMember setEmail(String email) {
this.email = email;
return this;
}
}

View file

@ -1,114 +0,0 @@
package io.github.wulkanowy.api.user;
public class PersonalData {
private String name = "";
private String firstName = "";
private String surname = "";
private String firstAndLastName = "";
private String dateAndBirthPlace = "";
private String pesel = "";
private String gender = "";
private boolean isPolishCitizenship;
private String familyName = "";
private String parentsNames = "";
public String getName() {
return name;
}
public PersonalData setName(String name) {
this.name = name;
return this;
}
public String getFirstName() {
return firstName;
}
public PersonalData setFirstName(String firstName) {
this.firstName = firstName;
return this;
}
public String getSurname() {
return surname;
}
public PersonalData setSurname(String surname) {
this.surname = surname;
return this;
}
public String getFirstAndLastName() {
return firstAndLastName;
}
public PersonalData setFirstAndLastName(String firstAndLastName) {
this.firstAndLastName = firstAndLastName;
return this;
}
public String getDateAndBirthPlace() {
return dateAndBirthPlace;
}
public PersonalData setDateAndBirthPlace(String dateAndBirthPlace) {
this.dateAndBirthPlace = dateAndBirthPlace;
return this;
}
public String getPesel() {
return pesel;
}
public PersonalData setPesel(String pesel) {
this.pesel = pesel;
return this;
}
public String getGender() {
return gender;
}
public PersonalData setGender(String gender) {
this.gender = gender;
return this;
}
public boolean isPolishCitizenship() {
return isPolishCitizenship;
}
public PersonalData setPolishCitizenship(boolean polishCitizenship) {
isPolishCitizenship = polishCitizenship;
return this;
}
public String getFamilyName() {
return familyName;
}
public PersonalData setFamilyName(String familyName) {
this.familyName = familyName;
return this;
}
public String getParentsNames() {
return parentsNames;
}
public PersonalData setParentsNames(String parentsNames) {
this.parentsNames = parentsNames;
return this;
}
}

View file

@ -1,63 +0,0 @@
package io.github.wulkanowy.api;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.junit.Assert;
import org.junit.Test;
public class ClientTest {
private String getFixtureAsString(String fixtureFileName) {
return FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName));
}
@Test
public void setFullEndpointInfoTest() throws Exception {
Client client = new Client("http://fakelog.net\\\\admin", "pass", "Default");
Assert.assertEquals("fakelog.net", client.getHost());
Assert.assertEquals("Default", client.getSymbol());
}
@Test
public void checkForNoErrorsTest() throws Exception {
Client client = new Client("", "", "");
Document doc = Jsoup.parse(getFixtureAsString("login/Logowanie-success.html"));
Assert.assertEquals(doc, client.checkForErrors(doc));
}
@Test(expected = VulcanOfflineException.class)
public void checkForErrorsOffline() throws Exception {
Client client = new Client("", "", "");
Document doc = Jsoup.parse(getFixtureAsString("login/PrzerwaTechniczna.html"));
client.checkForErrors(doc);
}
@Test(expected = NotLoggedInErrorException.class)
public void checkForErrors() throws Exception {
Client client = new Client("", "", "");
Document doc = Jsoup.parse(getFixtureAsString("login/Logowanie-notLoggedIn.html"));
client.checkForErrors(doc);
}
@Test
public void getFilledUrlTest() throws Exception {
Client client = new Client("http://fakelog.cf\\\\admin", "", "symbol123");
Assert.assertEquals("http://uonetplus.fakelog.cf/symbol123/LoginEndpoint.aspx",
client.getFilledUrl("{schema}://uonetplus.{host}/{symbol}/LoginEndpoint.aspx"));
}
@Test
public void getSymbolTest() throws Exception {
Client client = new Client("", "", "symbol4321");
Assert.assertEquals("symbol4321", client.getSymbol());
}
}

View file

@ -1,12 +0,0 @@
package io.github.wulkanowy.api;
import java.io.InputStream;
import java.util.Scanner;
public class FixtureHelper {
public static String getAsString(InputStream inputStream) {
Scanner s = new Scanner(inputStream).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
}

View file

@ -1,156 +0,0 @@
package io.github.wulkanowy.api;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class StudentAndParentTest {
private Client client;
@Before
public void setUp() throws Exception {
String input = FixtureHelper.getAsString(
getClass().getResourceAsStream("OcenyWszystkie-semester.html"));
Document gradesPageDocument = Jsoup.parse(input);
client = Mockito.mock(Client.class);
Mockito.when(client.getPageByUrl(Mockito.anyString())).thenReturn(gradesPageDocument);
Mockito.when(client.getPageByUrl(
Mockito.anyString(),
Mockito.anyBoolean(), Mockito.anyMap())).thenReturn(gradesPageDocument);
}
@Test
public void snpTest() {
StudentAndParent snp = new StudentAndParent(client, "id123", null, null);
Assert.assertEquals("id123", snp.getSchoolID());
}
@Test
public void getSnpPageUrlWithIdTest() throws Exception {
Assert.assertEquals("{schema}://uonetplus-opiekun.{host}/{symbol}/123456/",
(new StudentAndParent(client, "123456", null, null)).getSnpHomePageUrl());
}
@Test
public void getSnpPageUrlWithoutIdTest() throws Exception {
String input = FixtureHelper.getAsString(getClass().getResourceAsStream("Start.html"));
Document startPageDocument = Jsoup.parse(input);
Mockito.when(client.getHost()).thenReturn("vulcan.net.pl");
Mockito.when(client.getPageByUrl(Mockito.anyString())).thenReturn(startPageDocument);
StudentAndParent snp = new StudentAndParent(client, null, null, null);
Assert.assertEquals("https://uonetplus-opiekun.vulcan.net.pl/symbol/534213/Start/Index/",
snp.getSnpHomePageUrl());
}
@Test(expected = NotLoggedInErrorException.class)
public void getSnpPageUrlWithWrongPage() throws Exception {
Document wrongPageDocument = Jsoup.parse(
FixtureHelper.getAsString(getClass().getResourceAsStream("OcenyWszystkie-semester.html"))
);
Mockito.when(client.getPageByUrl(Mockito.anyString())).thenReturn(wrongPageDocument);
StudentAndParent snp = new StudentAndParent(client, null, null, null);
snp.getSnpHomePageUrl();
}
@Test
public void getExtractedIDStandardTest() throws Exception {
Mockito.when(client.getHost()).thenReturn("vulcan.net.pl");
StudentAndParent snp = new StudentAndParent(client, "symbol", null, null);
Assert.assertEquals("123456", snp.getExtractedIdFromUrl("https://uonetplus-opiekun"
+ ".vulcan.net.pl/powiat/123456/Start/Index/"));
}
@Test
public void getExtractedIDDemoTest() throws Exception {
Mockito.when(client.getHost()).thenReturn("vulcan.net.pl");
StudentAndParent snp = new StudentAndParent(client, "symbol", null, null);
Assert.assertEquals("demo12345",
snp.getExtractedIdFromUrl("https://uonetplus-opiekun.vulcan.net.pl/demoupowiat/demo12345/Start/Index/"));
}
@Test(expected = NotLoggedInErrorException.class)
public void getExtractedIDNotLoggedTest() throws Exception {
Mockito.when(client.getHost()).thenReturn("vulcan.net.pl");
StudentAndParent snp = new StudentAndParent(client, "symbol", null, null);
Assert.assertEquals("123",
snp.getExtractedIdFromUrl("https://uonetplus.vulcan.net.pl/powiat/"));
}
@Test
public void getSemestersTest() throws Exception {
SnP snp = new StudentAndParent(client, "123456", null, null);
List<Semester> semesters = snp.getSemesters();
Assert.assertEquals(2, semesters.size());
Assert.assertEquals("1", semesters.get(0).getName());
Assert.assertEquals("1234", semesters.get(0).getId());
Assert.assertFalse(semesters.get(0).isCurrent());
Assert.assertEquals("2", semesters.get(1).getName());
Assert.assertEquals("1235", semesters.get(1).getId());
Assert.assertTrue(semesters.get(1).isCurrent());
}
@Test
public void getCurrentSemesterTest() {
List<Semester> semesters = new ArrayList<>();
semesters.add(new Semester().setName("1500100900").setId("1").setCurrent(false));
semesters.add(new Semester().setName("1500100901").setId("2").setCurrent(true));
SnP snp = new StudentAndParent(client, "", null, null);
Semester semester = snp.getCurrent(semesters);
Assert.assertTrue(semester.isCurrent());
Assert.assertEquals("2", semester.getId());
Assert.assertEquals("1500100901", semester.getName());
}
@Test
public void getCurrentSemesterFromEmptyTest() {
SnP snp = new StudentAndParent(client, "", null, null);
List<Semester> semesters = new ArrayList<>();
Assert.assertNull(snp.getCurrent(semesters));
}
@Test
public void getDiariesAndStudentTest() throws IOException, VulcanException {
Document snpHome = Jsoup.parse(FixtureHelper.getAsString(
getClass().getResourceAsStream("StudentAndParent.html")));
client = Mockito.mock(Client.class);
Mockito.when(client.getPageByUrl(Mockito.anyString())).thenReturn(snpHome);
SnP snp = new StudentAndParent(client, "", null, null);
snp.setUp();
Assert.assertEquals("3Ti 2017", snp.getDiaries().get(0).getName());
Assert.assertEquals("2Ti 2016", snp.getDiaries().get(1).getName());
Assert.assertEquals("1Ti 2015", snp.getDiaries().get(2).getName());
Assert.assertEquals("1300", snp.getDiaries().get(0).getId());
Assert.assertEquals("1200", snp.getDiaries().get(1).getId());
Assert.assertEquals("1100", snp.getDiaries().get(2).getId());
Assert.assertTrue(snp.getDiaries().get(0).isCurrent());
Assert.assertFalse(snp.getDiaries().get(1).isCurrent());
Assert.assertFalse(snp.getDiaries().get(2).isCurrent());
Assert.assertEquals("Jan Kowal", snp.getStudents().get(0).getName());
Assert.assertEquals("100", snp.getStudents().get(0).getId());
}
}

View file

@ -1,26 +0,0 @@
package io.github.wulkanowy.api;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.mockito.Mockito;
public abstract class StudentAndParentTestCase {
protected StudentAndParent getSnp(String fixtureFileName) throws Exception {
String input = FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName));
Document tablePageDocument = Jsoup.parse(input);
StudentAndParent snp = Mockito.mock(StudentAndParent.class);
Mockito.when(snp.getSnPPageDocument(Mockito.anyString()))
.thenReturn(tablePageDocument);
Mockito.when(snp.getSemesters(Mockito.any(Document.class))).thenCallRealMethod();
Mockito.when(snp.getCurrent(Mockito.<Semester>anyList()))
.thenCallRealMethod();
Mockito.when(snp.getRowDataChildValue(Mockito.any(Element.class),
Mockito.anyInt())).thenCallRealMethod();
return snp;
}
}

View file

@ -1,31 +0,0 @@
package io.github.wulkanowy.api;
import org.hamcrest.CoreMatchers;
import org.junit.Assert;
import org.junit.Test;
public class VulcanTest {
@Test(expected = NotLoggedInErrorException.class)
public void getClientWithoutLoginTest() throws Exception {
Vulcan vulcan = new Vulcan();
vulcan.getClient();
}
@Test
public void getClientTest() throws Exception {
Vulcan vulcan = new Vulcan();
vulcan.setCredentials("email", "password", "symbol", null, null, null);
Assert.assertThat(vulcan.getClient(), CoreMatchers.instanceOf(Client.class));
}
@Test
public void getClientTwiceTest() throws Exception {
Vulcan vulcan = new Vulcan();
vulcan.setCredentials("email", "password", "symbol", null, null, null);
Assert.assertEquals(vulcan.getClient(), vulcan.getClient());
}
}

View file

@ -1,144 +0,0 @@
package io.github.wulkanowy.api.attendance;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
import io.github.wulkanowy.api.generic.Month;
public class AttendanceStatisticsTest extends StudentAndParentTestCase {
private AttendanceStatistics excellent;
private AttendanceStatistics full;
@Before
public void setUp() throws Exception {
this.excellent = new AttendanceStatistics(getSnp("Frekwencja-excellent.html"));
this.full = new AttendanceStatistics(getSnp("Frekwencja-full.html"));
}
@Test
public void getSubjectList() throws Exception {
Assert.assertEquals(26, excellent.getSubjectList().size());
Assert.assertEquals(23, full.getSubjectList().size());
}
@Test
public void getSubjectListId() throws Exception {
Assert.assertEquals(-1, excellent.getSubjectList().get(0).getId());
Assert.assertEquals(63, excellent.getSubjectList().get(10).getId());
Assert.assertEquals(0, excellent.getSubjectList().get(25).getId());
Assert.assertEquals(-1, full.getSubjectList().get(0).getId());
Assert.assertEquals(108, full.getSubjectList().get(14).getId());
Assert.assertEquals(492, full.getSubjectList().get(21).getId());
}
@Test
public void getSubjectListName() throws Exception {
Assert.assertEquals("Wszystkie", excellent.getSubjectList().get(0).getName());
Assert.assertEquals("Fizyka", excellent.getSubjectList().get(8).getName());
Assert.assertEquals("Sieci komputerowe i administrowanie sieciami",
excellent.getSubjectList().get(21).getName());
Assert.assertEquals("Praktyka zawodowa", full.getSubjectList().get(11).getName());
Assert.assertEquals("Użytkowanie urządzeń peryferyjnych komputera",
full.getSubjectList().get(16).getName());
Assert.assertEquals("Brak opisu lekcji", full.getSubjectList().get(22).getName());
}
@Test
public void getTypesTotal() throws Exception {
Assert.assertEquals(100.0, excellent.getTypesTable().getTotal(), 0);
Assert.assertEquals(80.94, full.getTypesTable().getTotal(), 0);
}
@Test
public void getTypeName() throws Exception {
List<Type> typeList1 = excellent.getTypesTable().getTypeList();
Assert.assertEquals("Obecność", typeList1.get(0).getName());
Assert.assertEquals("Nieobecność nieusprawiedliwiona", typeList1.get(1).getName());
Assert.assertEquals("Nieobecność usprawiedliwiona", typeList1.get(2).getName());
Assert.assertEquals("Nieobecność z przyczyn szkolnych", typeList1.get(3).getName());
List<Type> typeList2 = full.getTypesTable().getTypeList();
Assert.assertEquals("Spóźnienie nieusprawiedliwione", typeList2.get(4).getName());
Assert.assertEquals("Spóźnienie usprawiedliwione", typeList2.get(5).getName());
Assert.assertEquals("Zwolnienie", typeList2.get(6).getName());
}
@Test
public void getTypeTotal() throws Exception {
List<Type> typeList1 = excellent.getTypesTable().getTypeList();
Assert.assertEquals(1211, typeList1.get(0).getTotal());
Assert.assertEquals(0, typeList1.get(1).getTotal());
Assert.assertEquals(0, typeList1.get(2).getTotal());
Assert.assertEquals(0, typeList1.get(3).getTotal());
Assert.assertEquals(0, typeList1.get(4).getTotal());
Assert.assertEquals(0, typeList1.get(5).getTotal());
Assert.assertEquals(0, typeList1.get(6).getTotal());
List<Type> typeList2 = full.getTypesTable().getTypeList();
Assert.assertEquals(822, typeList2.get(0).getTotal());
Assert.assertEquals(6, typeList2.get(1).getTotal());
Assert.assertEquals(192, typeList2.get(2).getTotal());
Assert.assertEquals(7, typeList2.get(3).getTotal());
Assert.assertEquals(12, typeList2.get(4).getTotal());
Assert.assertEquals(1, typeList2.get(5).getTotal());
Assert.assertEquals(2, typeList2.get(6).getTotal());
}
@Test
public void getTypeList() throws Exception {
List<Type> typesList1 = excellent.getTypesTable().getTypeList();
Assert.assertEquals(12, typesList1.get(0).getMonthList().size());
Assert.assertEquals(12, typesList1.get(5).getMonthList().size());
List<Type> typesList2 = full.getTypesTable().getTypeList();
Assert.assertEquals(12, typesList2.get(0).getMonthList().size());
Assert.assertEquals(12, typesList2.get(5).getMonthList().size());
}
@Test
public void getMonthList() throws Exception {
List<Type> typeList1 = excellent.getTypesTable().getTypeList();
Assert.assertEquals(12, typeList1.get(0).getMonthList().size());
List<Type> typeList2 = full.getTypesTable().getTypeList();
Assert.assertEquals(12, typeList2.get(0).getMonthList().size());
}
@Test
public void getMonthName() throws Exception {
List<Month> monthsList1 = excellent.getTypesTable().getTypeList().get(0).getMonthList();
Assert.assertEquals("IX", monthsList1.get(0).getName());
Assert.assertEquals("III", monthsList1.get(6).getName());
Assert.assertEquals("VIII", monthsList1.get(11).getName());
List<Month> monthsList2 = full.getTypesTable().getTypeList().get(0).getMonthList();
Assert.assertEquals("XI", monthsList2.get(2).getName());
Assert.assertEquals("II", monthsList2.get(5).getName());
Assert.assertEquals("VI", monthsList2.get(9).getName());
}
@Test
public void getMonthValue() throws Exception {
List<Month> monthsList1 = excellent.getTypesTable().getTypeList().get(0).getMonthList();
Assert.assertEquals(142, monthsList1.get(0).getValue());
Assert.assertEquals(131, monthsList1.get(4).getValue());
Assert.assertEquals(139, monthsList1.get(7).getValue());
Assert.assertEquals(114, monthsList1.get(9).getValue());
Assert.assertEquals(0, monthsList1.get(11).getValue());
List<Type> typeList1 = full.getTypesTable().getTypeList();
Assert.assertEquals(135, typeList1.get(0).getMonthList().get(0).getValue());
Assert.assertEquals(7, typeList1.get(3).getMonthList().get(5).getValue());
Assert.assertEquals(1, typeList1.get(5).getMonthList().get(0).getValue());
Assert.assertEquals(27, typeList1.get(2).getMonthList().get(9).getValue());
Assert.assertEquals(0, typeList1.get(0).getMonthList().get(11).getValue());
}
}

View file

@ -1,165 +0,0 @@
package io.github.wulkanowy.api.attendance;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class AttendanceTableTest extends StudentAndParentTestCase {
private AttendanceTable excellent;
private AttendanceTable full;
@Before
public void setUp() throws Exception {
excellent = new AttendanceTable(getSnp("Frekwencja-excellent.html"));
full = new AttendanceTable(getSnp("Frekwencja-full.html"));
}
@Test
public void getWeekStartByDate() throws Exception {
Assert.assertEquals("2015-08-31", excellent.getWeekTable().getStartDayDate());
Assert.assertEquals("2016-09-05", full.getWeekTable().getStartDayDate());
}
@Test
public void getWeekDaysNumber() throws Exception {
Assert.assertEquals(5, excellent.getWeekTable().getDays().size());
Assert.assertEquals(5, full.getWeekTable().getDays().size());
}
@Test
public void getDayLessonsNumber() throws Exception {
Assert.assertEquals(14, excellent.getWeekTable().getDay(0).getLessons().size());
Assert.assertEquals(14, full.getWeekTable().getDay(0).getLessons().size());
}
@Test
public void getDayDate() throws Exception {
Assert.assertEquals("2015-08-31", excellent.getWeekTable().getDay(0).getDate());
Assert.assertEquals("2015-09-02", excellent.getWeekTable().getDay(2).getDate());
Assert.assertEquals("2015-09-04", excellent.getWeekTable().getDay(4).getDate());
Assert.assertEquals("2016-09-05", full.getWeekTable().getDay(0).getDate());
Assert.assertEquals("2016-09-07", full.getWeekTable().getDay(2).getDate());
Assert.assertEquals("2016-09-09", full.getWeekTable().getDay(4).getDate());
}
@Test
public void getLessonSubject() throws Exception {
Assert.assertEquals("",
excellent.getWeekTable().getDay(0).getLesson(7).getSubject());
Assert.assertEquals("Uroczyste rozpoczęcie roku szkolnego 2015/2016",
excellent.getWeekTable().getDay(1).getLesson(1).getSubject());
Assert.assertEquals("Geografia",
excellent.getWeekTable().getDay(3).getLesson(4).getSubject());
Assert.assertEquals("Naprawa komputera",
full.getWeekTable().getDay(1).getLesson(8).getSubject());
Assert.assertEquals("Religia",
full.getWeekTable().getDay(3).getLesson(1).getSubject());
Assert.assertEquals("Metodologia programowania",
full.getWeekTable().getDay(4).getLesson(5).getSubject());
}
@Test
public void getLessonIsNotExist() throws Exception {
Assert.assertTrue(excellent.getWeekTable().getDay(0).getLesson(5).isNotExist());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(1).isNotExist());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isNotExist());
Assert.assertFalse(full.getWeekTable().getDay(1).getLesson(12).isAbsenceUnexcused());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isAbsenceUnexcused());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(5).isAbsenceUnexcused());
}
@Test
public void getLessonIsEmpty() throws Exception {
Assert.assertTrue(excellent.getWeekTable().getDay(0).getLesson(0).isEmpty());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(6).isEmpty());
Assert.assertTrue(excellent.getWeekTable().getDay(4).getLesson(12).isEmpty());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(9).isEmpty());
Assert.assertFalse(full.getWeekTable().getDay(2).getLesson(5).isEmpty());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(2).isEmpty());
}
@Test
public void getLessonIsPresence() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(7).isPresence());
Assert.assertTrue(excellent.getWeekTable().getDay(1).getLesson(1).isPresence());
Assert.assertTrue(excellent.getWeekTable().getDay(3).getLesson(7).isPresence());
Assert.assertTrue(full.getWeekTable().getDay(0).getLesson(1).isPresence());
Assert.assertTrue(full.getWeekTable().getDay(2).getLesson(6).isPresence());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(7).isPresence());
}
@Test
public void getLessonIsAbsenceUnexcused() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(7).isAbsenceUnexcused());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(0).isAbsenceUnexcused());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(4).isAbsenceUnexcused());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(8).isAbsenceUnexcused());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isAbsenceUnexcused());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(8).isAbsenceUnexcused());
}
@Test
public void getLessonIsAbsenceExcused() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(7).isAbsenceExcused());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(0).isAbsenceExcused());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(4).isAbsenceExcused());
Assert.assertFalse(full.getWeekTable().getDay(2).getLesson(5).isAbsenceExcused());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isAbsenceExcused());
Assert.assertTrue(full.getWeekTable().getDay(4).getLesson(3).isAbsenceExcused());
}
@Test
public void getLessonIsAbsenceForSchoolReasons() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(4).isAbsenceForSchoolReasons());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(8).isAbsenceForSchoolReasons());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isAbsenceForSchoolReasons());
Assert.assertTrue(full.getWeekTable().getDay(2).getLesson(5).isAbsenceForSchoolReasons());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isAbsenceForSchoolReasons());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(8).isAbsenceForSchoolReasons());
}
@Test
public void getLessonIsUnexcusedLateness() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(4).isUnexcusedLateness());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(8).isUnexcusedLateness());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isUnexcusedLateness());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(6).isUnexcusedLateness());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isUnexcusedLateness());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(8).isUnexcusedLateness());
}
@Test
public void getLessonIsExcusedLateness() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(4).isExcusedLateness());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(8).isExcusedLateness());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isExcusedLateness());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(7).isExcusedLateness());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isExcusedLateness());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(8).isExcusedLateness());
}
@Test
public void getLessonIsExemption() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(4).isExemption());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(8).isExemption());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isExemption());
Assert.assertFalse(full.getWeekTable().getDay(2).getLesson(5).isExemption());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isExemption());
Assert.assertTrue(full.getWeekTable().getDay(4).getLesson(8).isExemption());
}
}

View file

@ -1,111 +0,0 @@
package io.github.wulkanowy.api.exams;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class ExamsWeekTest extends StudentAndParentTestCase {
private ExamsWeek onePerDay;
private ExamsWeek empty;
@Before
public void getCurrent() throws Exception {
onePerDay = new ExamsWeek(getSnp("Sprawdziany-one-per-day.html"));
empty = new ExamsWeek(getSnp("Sprawdziany-empty.html"));
}
@Test
public void getWeekTest() throws Exception {
Assert.assertEquals("2017-10-23", onePerDay.getCurrent().getStartDayDate());
Assert.assertEquals("2018-04-30", empty.getCurrent().getStartDayDate());
}
@Test
public void getDaysListTest() throws Exception {
Assert.assertEquals(3, onePerDay.getCurrent().getDays().size());
Assert.assertEquals(7, onePerDay.getWeek("", false).getDays().size());
Assert.assertEquals(0, empty.getCurrent().getDays().size());
}
@Test
public void getExamsListTest() throws Exception {
List<ExamDay> notEmpty = onePerDay.getCurrent().getDays();
Assert.assertEquals(1, notEmpty.get(0).getExamList().size());
Assert.assertEquals(1, notEmpty.get(1).getExamList().size());
Assert.assertEquals(1, notEmpty.get(2).getExamList().size());
List<ExamDay> emptyToo = onePerDay.getWeek("", false).getDays();
Assert.assertEquals(1, emptyToo.get(0).getExamList().size());
Assert.assertEquals(1, emptyToo.get(1).getExamList().size());
Assert.assertEquals(1, emptyToo.get(4).getExamList().size());
}
@Test
public void getDayDateTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("2017-10-23", dayList.get(0).getDate());
Assert.assertEquals("2017-10-24", dayList.get(1).getDate());
Assert.assertEquals("2017-10-27", dayList.get(2).getDate());
}
@Test
public void getDayNameTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("Poniedziałek", dayList.get(0).getDayName());
Assert.assertEquals("Wtorek", dayList.get(1).getDayName());
Assert.assertEquals("Piątek", dayList.get(2).getDayName());
}
@Test
public void getExamSubjectAndGroupTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("Sieci komputerowe 3Ti|zaw2", dayList.get(0).getExamList().get(0).getSubjectAndGroup());
Assert.assertEquals("Język angielski 3Ti|J1", dayList.get(1).getExamList().get(0).getSubjectAndGroup());
Assert.assertEquals("Metodologia programowania 3Ti|zaw2", dayList.get(2).getExamList().get(0).getSubjectAndGroup());
}
@Test
public void getExamTypeTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("Sprawdzian", dayList.get(0).getExamList().get(0).getType());
Assert.assertEquals("Sprawdzian", dayList.get(1).getExamList().get(0).getType());
Assert.assertEquals("Sprawdzian", dayList.get(2).getExamList().get(0).getType());
}
@Test
public void getExamDescriptionTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("Łącza danych", dayList.get(0).getExamList().get(0).getDescription());
Assert.assertEquals("Czasy teraźniejsze", dayList.get(1).getExamList().get(0).getDescription());
Assert.assertEquals("", dayList.get(2).getExamList().get(0).getDescription());
}
@Test
public void getExamTeacherTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("Adam Wiśniewski [AW]", dayList.get(0).getExamList().get(0).getTeacher());
Assert.assertEquals("Natalia Nowak [NN]", dayList.get(1).getExamList().get(0).getTeacher());
Assert.assertEquals("Małgorzata Nowacka [MN]", dayList.get(2).getExamList().get(0).getTeacher());
}
@Test
public void getExamEntryDateTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("2017-10-16", dayList.get(0).getExamList().get(0).getEntryDate());
Assert.assertEquals("2017-10-17", dayList.get(1).getExamList().get(0).getEntryDate());
Assert.assertEquals("2017-10-16", dayList.get(2).getExamList().get(0).getEntryDate());
}
}

View file

@ -1,106 +0,0 @@
package io.github.wulkanowy.api.grades;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class GradesListTest extends StudentAndParentTestCase {
private GradesList filled;
@Before
public void setUp() throws Exception {
filled = new GradesList(getSnp("OcenyWszystkie-filled.html"));
}
@Test
public void getAllTest() throws Exception {
Assert.assertEquals(7, filled.getAll().size()); // 2 items are skipped
}
@Test
public void getSubjectTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("Zajęcia z wychowawcą", list.get(0).getSubject());
Assert.assertEquals("Język angielski", list.get(3).getSubject());
Assert.assertEquals("Wychowanie fizyczne", list.get(4).getSubject());
Assert.assertEquals("Język polski", list.get(5).getSubject());
}
@Test
public void getValueTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("5", list.get(0).getValue());
Assert.assertEquals("5", list.get(3).getValue());
Assert.assertEquals("1", list.get(4).getValue());
Assert.assertEquals("1", list.get(5).getValue());
}
@Test
public void getColorTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("000000", list.get(0).getColor());
Assert.assertEquals("1289F7", list.get(3).getColor());
Assert.assertEquals("6ECD07", list.get(4).getColor());
Assert.assertEquals("6ECD07", list.get(5).getColor());
}
@Test
public void getSymbolTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("A1", list.get(0).getSymbol());
Assert.assertEquals("BW3", list.get(3).getSymbol());
Assert.assertEquals("STR", list.get(4).getSymbol());
Assert.assertEquals("K", list.get(5).getSymbol());
Assert.assertEquals("+Odp", list.get(6).getSymbol());
}
@Test
public void getDescriptionTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("Dzień Kobiet w naszej klasie", list.get(0).getDescription());
Assert.assertEquals("Writing", list.get(3).getDescription());
Assert.assertEquals("", list.get(4).getDescription());
Assert.assertEquals("Kordian", list.get(5).getDescription());
Assert.assertEquals("Kordian", list.get(6).getDescription());
}
@Test
public void getWeightTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("1,00", list.get(0).getWeight());
Assert.assertEquals("3,00", list.get(3).getWeight());
Assert.assertEquals("8,00", list.get(4).getWeight());
Assert.assertEquals("5,00", list.get(5).getWeight());
}
@Test
public void getDateTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("2017-03-21", list.get(0).getDate());
Assert.assertEquals("2017-06-02", list.get(3).getDate());
Assert.assertEquals("2017-04-02", list.get(4).getDate());
Assert.assertEquals("2017-02-06", list.get(5).getDate());
}
@Test
public void getTeacherTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("Patryk Maciejewski", list.get(0).getTeacher());
Assert.assertEquals("Oliwia Woźniak", list.get(3).getTeacher());
Assert.assertEquals("Klaudia Dziedzic", list.get(4).getTeacher());
Assert.assertEquals("Amelia Stępień", list.get(5).getTeacher());
}
}

View file

@ -1,82 +0,0 @@
package io.github.wulkanowy.api.grades;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class SubjectsListTest extends StudentAndParentTestCase {
private SubjectsList std;
private SubjectsList average;
@Before
public void setUp() throws Exception {
std = new SubjectsList(getSnp("OcenyWszystkie-subjects.html"));
average = new SubjectsList(getSnp("OcenyWszystkie-subjects-average.html"));
}
@Test
public void getAllTest() throws Exception {
Assert.assertEquals(5, std.getAll().size());
Assert.assertEquals(5, average.getAll().size());
}
@Test
public void getNameTest() throws Exception {
List<Subject> stdList = std.getAll();
Assert.assertEquals("Zachowanie", stdList.get(0).getName());
Assert.assertEquals("Praktyka zawodowa", stdList.get(1).getName());
Assert.assertEquals("Metodologia programowania", stdList.get(2).getName());
Assert.assertEquals("Podstawy przedsiębiorczości", stdList.get(3).getName());
Assert.assertEquals("Wychowanie do życia w rodzinie", stdList.get(4).getName());
List<Subject> averageList = average.getAll();
Assert.assertEquals("Zachowanie", averageList.get(0).getName());
Assert.assertEquals("Język polski", averageList.get(1).getName());
Assert.assertEquals("Wychowanie fizyczne", averageList.get(2).getName());
Assert.assertEquals("Język angielski", averageList.get(3).getName());
Assert.assertEquals("Wiedza o społeczeństwie", averageList.get(4).getName());
}
@Test
public void getPredictedRatingTest() throws Exception {
List<Subject> stdList = std.getAll();
Assert.assertEquals("bardzo dobre", stdList.get(0).getPredictedRating());
Assert.assertEquals("-", stdList.get(1).getPredictedRating());
Assert.assertEquals("bardzo dobry", stdList.get(2).getPredictedRating());
Assert.assertEquals("3/4", stdList.get(3).getPredictedRating());
Assert.assertEquals("-", stdList.get(4).getPredictedRating());
List<Subject> averageList = average.getAll();
Assert.assertEquals("bardzo dobre", averageList.get(0).getPredictedRating());
Assert.assertEquals("-", averageList.get(1).getPredictedRating());
Assert.assertEquals("bardzo dobry", averageList.get(2).getPredictedRating());
Assert.assertEquals("4/5", averageList.get(3).getPredictedRating());
Assert.assertEquals("-", averageList.get(4).getPredictedRating());
}
@Test
public void getFinalRatingTest() throws Exception {
List<Subject> stdList = std.getAll();
Assert.assertEquals("bardzo dobre", stdList.get(0).getFinalRating());
Assert.assertEquals("celujący", stdList.get(1).getFinalRating());
Assert.assertEquals("celujący", stdList.get(2).getFinalRating());
Assert.assertEquals("dostateczny", stdList.get(3).getFinalRating());
Assert.assertEquals("-", stdList.get(4).getFinalRating());
List<Subject> averageList = average.getAll();
Assert.assertEquals("bardzo dobre", averageList.get(0).getFinalRating());
Assert.assertEquals("dobry", averageList.get(1).getFinalRating());
Assert.assertEquals("celujący", averageList.get(2).getFinalRating());
Assert.assertEquals("bardzo dobry", averageList.get(3).getFinalRating());
Assert.assertEquals("-", averageList.get(4).getFinalRating());
}
}

View file

@ -1,125 +0,0 @@
package io.github.wulkanowy.api.login;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
import io.github.wulkanowy.api.Client;
import io.github.wulkanowy.api.FixtureHelper;
public class LoginTest {
private Document getFixtureAsDocument(String fixtureFileName) {
return Jsoup.parse(getFixtureAsString(fixtureFileName));
}
private String getFixtureAsString(String fixtureFileName) {
return FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName));
}
private Client getClient(String fixtureFileName) throws Exception {
Document doc = getFixtureAsDocument(fixtureFileName);
Client client = Mockito.mock(Client.class);
Mockito.when(client.postPageByUrl(Mockito.anyString(), Mockito.any(String[][].class))).thenReturn(doc);
Mockito.when(client.getPageByUrl(Mockito.anyString(), Mockito.anyBoolean())).thenReturn(doc);
return client;
}
@Test
public void loginTest() throws Exception {
Client client = getClient("Logowanie-success.html");
Mockito.when(client.getPageByUrl(Mockito.anyString(), Mockito.anyBoolean()))
.thenReturn(getFixtureAsDocument("Logowanie-error.html"));
Mockito.when(client.postPageByUrl(Mockito.eq(Login.LOGIN_PAGE_URL), Mockito.any(String[][].class)))
.thenReturn(getFixtureAsDocument("Logowanie-certyfikat.html"));
Mockito.doCallRealMethod().when(client).setSymbol(Mockito.anyString());
Mockito.when(client.getSymbol()).thenCallRealMethod();
Login login = new Login(client);
Assert.assertEquals("d123", login.login("a@a", "pswd", "d123"));
}
@Test(expected = BadCredentialsException.class)
public void sendWrongCredentialsTest() throws Exception {
Client client = getClient("Logowanie-error.html");
Mockito.when(client.getPageByUrl(Mockito.anyString(), Mockito.anyBoolean()))
.thenReturn(getFixtureAsDocument("Logowanie-error.html")); // -error.html because it html with form used by
Login login = new Login(client);
login.sendCredentials("a@a", "pswd");
}
@Test
public void sendCredentialsCertificateTest() throws Exception {
Client client = getClient("Logowanie-certyfikat.html");
Mockito.when(client.getPageByUrl(Mockito.anyString(), Mockito.anyBoolean()))
.thenReturn(getFixtureAsDocument("Logowanie-error.html")); // -error.html because it html with form used by
Login login = new Login(client);
Assert.assertEquals(
getFixtureAsString("cert-stock.xml").replaceAll("\\s+", ""),
login.sendCredentials("a@a", "passwd")
.select("input[name=wresult]")
.attr("value")
.replaceAll("\\s+", "")
);
}
@Test
public void sendCertificateNotDefaultSymbolSuccessTest() throws Exception {
Client client = getClient("Logowanie-success.html");
Mockito.doCallRealMethod().when(client).setSymbol(Mockito.anyString());
Mockito.when(client.getSymbol()).thenCallRealMethod();
Login login = new Login(client);
Assert.assertEquals("wulkanowyschool321", login.sendCertificate(
getFixtureAsDocument("Logowanie-certyfikat.html"), "wulkanowyschool321"));
}
@Test
public void sendCertificateDefaultSymbolSuccessTest() throws Exception {
Client client = getClient("Logowanie-success.html");
Mockito.doCallRealMethod().when(client).setSymbol(Mockito.anyString());
Mockito.when(client.getSymbol()).thenCallRealMethod();
Login login = new Login(client);
Assert.assertEquals("demo12345",
login.sendCertificate(getFixtureAsDocument("Logowanie-certyfikat.html"), "Default"));
}
@Test(expected = AccountPermissionException.class)
public void sendCertificateAccountPermissionTest() throws Exception {
Client client = getClient("Logowanie-brak-dostepu.html");
Login login = new Login(client);
login.sendCertificate(getFixtureAsDocument("Logowanie-certyfikat.html"), "demo123");
}
@Test(expected = LoginErrorException.class)
public void sendCertificateLoginErrorTest() throws Exception {
Login login = new Login(getClient("Logowanie-certyfikat.html")); // change to other document
login.sendCertificate(getFixtureAsDocument("Logowanie-certyfikat.html"), "demo123");
}
@Test
public void findSymbolInCertificateTest() throws Exception {
Login login = new Login(getClient("Logowanie-certyfikat.html"));
String certificate = getFixtureAsString("cert-stock.xml");
Assert.assertEquals("demo12345", login.findSymbolInCertificate(certificate));
}
@Test(expected = AccountPermissionException.class)
public void findSymbolInCertificateWithoutSecondInstanceTest() throws Exception {
Login login = new Login(getClient("Logowanie-certyfikat.html"));
login.findSymbolInCertificate(getFixtureAsString("cert-no-symbols.xml"));
}
}

View file

@ -1,89 +0,0 @@
package io.github.wulkanowy.api.messages;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
import java.util.List;
import io.github.wulkanowy.api.Client;
import io.github.wulkanowy.api.FixtureHelper;
import io.github.wulkanowy.api.NotLoggedInErrorException;
public class MessagesTest {
private Client getFixtureAsString(String fixtureFileName) throws Exception {
Client client = Mockito.mock(Client.class);
Mockito.when(client.getJsonStringByUrl(Mockito.anyString()))
.thenReturn(FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName)));
Mockito.when(client.postJsonStringByUrl(Mockito.anyString(), Mockito.any()))
.thenReturn(FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName)));
return client;
}
@Test
public void getMessages() throws Exception {
Client client = getFixtureAsString("GetWiadomosciOdebrane.json");
Messages messages = new Messages(client);
List<Message> messageList = messages.getReceived();
Assert.assertEquals(true, messageList.get(1).unread);
Assert.assertEquals("2016-03-15 09:00:00", messageList.get(0).date);
Assert.assertEquals(null, messageList.get(0).content);
Assert.assertEquals("Kowalski Jan", messageList.get(0).sender);
Assert.assertEquals(12347, messageList.get(2).id);
}
@Test
public void getMessagesEmpty() throws Exception {
Client client = getFixtureAsString("GetWiadomosciUsuniete-empty.json");
Messages messages = new Messages(client);
List<Message> messageList = messages.getSent();
Assert.assertTrue(messageList.isEmpty());
}
@Test(expected = NotLoggedInErrorException.class)
public void getMessagesError() throws Exception {
Client client = getFixtureAsString("UndefinedError.txt");
Messages messages = new Messages(client);
messages.getDeleted();
}
@Test(expected = BadRequestException.class)
public void getMessagesBadRequest() throws Exception {
Client client = getFixtureAsString("PageError.html");
Messages messages = new Messages(client);
messages.getDeleted();
}
@Test
public void getMessage() throws Exception {
Client client = getFixtureAsString("GetTrescWiadomosci.json");
Messages messages = new Messages(client);
Message message = messages.getMessage(123, Messages.RECEIVED_FOLDER);
Assert.assertEquals(12345, message.id);
Assert.assertEquals("Witam, …. \nPozdrawiam Krzysztof Czerkas", message.content);
}
@Test(expected = NotLoggedInErrorException.class)
public void getMessageError() throws Exception {
Client client = getFixtureAsString("UndefinedError.txt");
Messages messages = new Messages(client);
messages.getMessage(321, Messages.SENT_FOLDER);
}
@Test(expected = BadRequestException.class)
public void getMessageBadRequest() throws Exception {
Client client = getFixtureAsString("PageError.html");
Messages messages = new Messages(client);
messages.getMessage(1, Messages.DELETED_FOLDER);
}
}

View file

@ -1,36 +0,0 @@
package io.github.wulkanowy.api.notes;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class AchievementsListTest extends StudentAndParentTestCase {
private AchievementsList filledAchievementsList;
private AchievementsList emptyAchievementsList;
@Before
public void setUp() throws Exception {
filledAchievementsList = new AchievementsList(getSnp("UwagiOsiagniecia-filled.html"));
emptyAchievementsList = new AchievementsList(getSnp("UwagiOsiagniecia-empty.html"));
}
@Test
public void getAllAchievementsTest() throws Exception {
Assert.assertEquals(2, filledAchievementsList.getAllAchievements().size());
Assert.assertEquals(0, emptyAchievementsList.getAllAchievements().size());
}
@Test
public void getAchievements() throws Exception {
List<String> filledList = filledAchievementsList.getAllAchievements();
Assert.assertEquals("I miejsce w ogólnopolskim konkursie ortograficznym", filledList.get(0));
Assert.assertEquals("III miejsce w ogólnopolskim konkursie plastycznym", filledList.get(1));
}
}

View file

@ -1,60 +0,0 @@
package io.github.wulkanowy.api.notes;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class NotesListTest extends StudentAndParentTestCase {
private NotesList filled;
private NotesList empty;
@Before
public void setUp() throws Exception {
filled = new NotesList(getSnp("UwagiOsiagniecia-filled.html"));
empty = new NotesList(getSnp("UwagiOsiagniecia-empty.html"));
}
@Test
public void getAllNotesTest() throws Exception {
Assert.assertEquals(3, filled.getAllNotes().size());
Assert.assertEquals(0, empty.getAllNotes().size());
}
@Test
public void getDateTest() throws Exception {
List<Note> filledList = filled.getAllNotes();
Assert.assertEquals("06.06.2017", filledList.get(0).getDate());
Assert.assertEquals("01.10.2016", filledList.get(2).getDate());
}
@Test
public void getTeacherTest() throws Exception {
List<Note> filledList = filled.getAllNotes();
Assert.assertEquals("Jan Kowalski [JK]", filledList.get(0).getTeacher());
Assert.assertEquals("Kochański Leszek [KL]", filledList.get(2).getTeacher());
}
@Test
public void getCategoryTest() throws Exception {
List<Note> filledList = filled.getAllNotes();
Assert.assertEquals("Zaangażowanie społeczne", filledList.get(0).getCategory());
Assert.assertEquals("Zachowanie na lekcji", filledList.get(2).getCategory());
}
@Test
public void getContentTest() throws Exception {
List<Note> filledList = filled.getAllNotes();
Assert.assertEquals("Pomoc przy pikniku charytatywnym", filledList.get(0).getContent());
Assert.assertEquals("Przeszkadzanie w prowadzeniu lekcji", filledList.get(2).getContent());
}
}

View file

@ -1,48 +0,0 @@
package io.github.wulkanowy.api.school;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class SchoolInfoTest extends StudentAndParentTestCase {
private SchoolInfo schoolInfo;
@Before
public void setUp() throws Exception {
schoolInfo = new SchoolInfo(getSnp("Szkola.html"));
}
@Test
public void getNameTest() throws Exception {
Assert.assertEquals("Zespół Szkół nr 64", schoolInfo.getSchoolData().getName());
}
@Test
public void getAddressTest() throws Exception {
Assert.assertEquals("ul. Wiśniowa 128, 01-234 Rogalowo, Nibylandia",
schoolInfo.getSchoolData().getAddress());
}
@Test
public void getPhoneNumberTest() throws Exception {
Assert.assertEquals("55 5555555", schoolInfo.getSchoolData().getPhoneNumber());
}
@Test
public void getHeadmasterTest() throws Exception {
Assert.assertEquals("Antoni Sobczyk", schoolInfo.getSchoolData().getHeadmaster());
}
@Test
public void getPedagoguesTest() throws Exception {
Assert.assertArrayEquals(new String[]{
"Zofia Czerwińska [ZC]",
"Aleksander Krzemiński [AK]",
"Karolina Kowalska [KK]",
"Bartek Dąbrowski [BD]"
}, schoolInfo.getSchoolData().getPedagogues());
}
}

View file

@ -1,56 +0,0 @@
package io.github.wulkanowy.api.school;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class TeachersInfoTest extends StudentAndParentTestCase {
private TeachersInfo teachersInfo;
@Before
public void setUp() throws Exception {
teachersInfo = new TeachersInfo(getSnp("Szkola.html"));
}
@Test
public void getClassNameTest() throws Exception {
Assert.assertEquals("1a", teachersInfo.getTeachersData().getClassName());
}
@Test
public void getClassTeacherTest() throws Exception {
Assert.assertArrayEquals(new String[]{
"Karolina Kowalska [AN]",
"Antoni Sobczyk [AS]"
}, teachersInfo.getTeachersData().getClassTeacher());
}
@Test
public void getTeachersDataSubjectsNameTest() throws Exception {
List<Subject> subjects = teachersInfo.getTeachersData().getSubjects();
Assert.assertEquals("Biologia", subjects.get(0).getName());
Assert.assertEquals("Język angielski", subjects.get(6).getName());
}
@Test
public void getTeachersDataSubjectsTeachersTest() throws Exception {
List<Subject> subjects = teachersInfo.getTeachersData().getSubjects();
Assert.assertArrayEquals(new String[]{"Karolina Kowalska [AN]"},
subjects.get(0).getTeachers());
Assert.assertEquals("Karolina Kowalska [AN]",
subjects.get(0).getTeachers()[0]);
Assert.assertArrayEquals(new String[]{
"Karolina Kowalska [AN]",
"Mateusz Kowal [MK]",
"Amelia Mazur [AM]"
}, subjects.get(6).getTeachers());
}
}

View file

@ -1,250 +0,0 @@
package io.github.wulkanowy.api.timetable;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class TimetableTest extends StudentAndParentTestCase {
private Timetable std;
private Timetable full;
private Timetable holidays;
@Before
public void setUp() throws Exception {
std = new Timetable(getSnp("PlanLekcji-std.html"));
full = new Timetable(getSnp("PlanLekcji-full.html"));
holidays = new Timetable(getSnp("PlanLekcji-holidays.html"));
}
// Week
@Test
public void getWeekTableTest() throws Exception {
Assert.assertEquals(5, std.getWeekTable().getDays().size());
Assert.assertEquals(5, full.getWeekTable().getDays().size());
Assert.assertEquals(5, holidays.getWeekTable().getDays().size());
}
@Test
public void getStartDayDateTest() throws Exception {
Assert.assertEquals("2017-06-19", std.getWeekTable().getStartDayDate());
Assert.assertEquals("2017-06-19", full.getWeekTable().getStartDayDate());
Assert.assertEquals("2017-07-31", holidays.getWeekTable().getStartDayDate());
}
// ExamDay
@Test
public void getDayNameTest() throws Exception {
Assert.assertEquals("poniedziałek", std.getWeekTable().getDay(0).getDayName());
Assert.assertEquals("piątek", std.getWeekTable().getDay(4).getDayName());
Assert.assertEquals("wtorek", full.getWeekTable().getDay(1).getDayName());
Assert.assertEquals("czwartek", full.getWeekTable().getDay(3).getDayName());
Assert.assertEquals("środa", holidays.getWeekTable().getDay(2).getDayName());
}
@Test
public void getDayDateTest() throws Exception {
Assert.assertEquals("2017-06-19", std.getWeekTable().getDay(0).getDate());
Assert.assertEquals("2017-06-23", std.getWeekTable().getDay(4).getDate());
Assert.assertEquals("2017-06-20", full.getWeekTable().getDay(1).getDate());
Assert.assertEquals("2017-06-22", full.getWeekTable().getDay(3).getDate());
Assert.assertEquals("2017-08-02", holidays.getWeekTable().getDay(2).getDate());
}
@Test
public void getDayIsFreeTest() throws Exception {
Assert.assertFalse(std.getWeekTable().getDay(0).isFreeDay());
Assert.assertFalse(full.getWeekTable().getDay(2).isFreeDay());
Assert.assertTrue(holidays.getWeekTable().getDay(4).isFreeDay());
}
@Test
public void getDayFreeDayName() throws Exception {
Assert.assertNotEquals("Wakacje", std.getWeekTable().getDay(0).getFreeDayName());
Assert.assertNotEquals("Ferie letnie", full.getWeekTable().getDay(1).getFreeDayName());
Assert.assertNotEquals("Wakacje", holidays.getWeekTable().getDay(2).getFreeDayName());
Assert.assertEquals("Ferie letnie", holidays.getWeekTable().getDay(4).getFreeDayName());
}
@Test
public void getDayLessonsTest() throws Exception {
Assert.assertEquals(8, std.getWeekTable().getDay(0).getLessons().size());
Assert.assertEquals(14, full.getWeekTable().getDay(2).getLessons().size());
Assert.assertEquals(14, holidays.getWeekTable().getDay(4).getLessons().size());
}
// Lesson
@Test
public void getLessonNumberTest() throws Exception {
Assert.assertEquals(2, std.getWeekTable().getDay(0).getLesson(1).getNumber());
Assert.assertEquals(5, std.getWeekTable().getDay(2).getLesson(4).getNumber());
Assert.assertEquals(0, full.getWeekTable().getDay(0).getLesson(0).getNumber());
Assert.assertEquals(13, full.getWeekTable().getDay(4).getLesson(13).getNumber());
Assert.assertEquals(3, holidays.getWeekTable().getDay(3).getLesson(3).getNumber());
}
@Test
public void getLessonDayTest() throws Exception {
Assert.assertEquals("2017-06-19", std.getWeekTable().getDay(0).getLesson(1).getDate());
Assert.assertEquals("2017-06-23", std.getWeekTable().getDay(4).getLesson(4).getDate());
Assert.assertEquals("2017-06-20", full.getWeekTable().getDay(1).getLesson(6).getDate());
Assert.assertEquals("2017-06-22", full.getWeekTable().getDay(3).getLesson(3).getDate());
Assert.assertEquals("2017-08-02", holidays.getWeekTable().getDay(2).getLesson(8).getDate());
}
@Test
public void getLessonSubjectTest() throws Exception {
Assert.assertEquals("Historia", std.getWeekTable().getDay(0).getLesson(1).getSubject());
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 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());
Assert.assertEquals("Fizyka", full.getWeekTable().getDay(0).getLesson(0).getSubject());
Assert.assertEquals("Metodologia programowania", full.getWeekTable().getDay(1).getLesson(0).getSubject());
Assert.assertEquals("Język niemiecki", full.getWeekTable().getDay(4).getLesson(2).getSubject());
Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getSubject());
}
@Test
public void getLessonTeacherTest() throws Exception {
Assert.assertEquals("Bogatka Katarzyna", std.getWeekTable().getDay(0).getLesson(1).getTeacher());
Assert.assertEquals("Chlebowski Stanisław", std.getWeekTable().getDay(2).getLesson(4).getTeacher());
Assert.assertEquals("Kobczyk Iwona", full.getWeekTable().getDay(0).getLesson(1).getTeacher());
Assert.assertEquals("Bączek Grzegorz", full.getWeekTable().getDay(0).getLesson(7).getTeacher());
Assert.assertEquals("Nowak Jadwiga", full.getWeekTable().getDay(2).getLesson(0).getTeacher());
Assert.assertEquals("Nowicka Irena", full.getWeekTable().getDay(3).getLesson(1).getTeacher());
Assert.assertEquals("Baran Małgorzata", full.getWeekTable().getDay(4).getLesson(0).getTeacher());
Assert.assertEquals("", full.getWeekTable().getDay(4).getLesson(1).getTeacher());
Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getTeacher());
}
@Test
public void getLessonRoomTest() throws Exception {
Assert.assertEquals("", std.getWeekTable().getDay(3).getLesson(3).getRoom());
Assert.assertEquals("33", full.getWeekTable().getDay(0).getLesson(7).getRoom());
Assert.assertEquals("19", full.getWeekTable().getDay(0).getLesson(0).getRoom());
Assert.assertEquals("32", full.getWeekTable().getDay(1).getLesson(0).getRoom());
Assert.assertEquals("32", full.getWeekTable().getDay(1).getLesson(8).getRoom());
Assert.assertEquals("32", full.getWeekTable().getDay(2).getLesson(8).getRoom());
Assert.assertEquals("G4", full.getWeekTable().getDay(3).getLesson(1).getRoom());
Assert.assertEquals("37", full.getWeekTable().getDay(4).getLesson(0).getRoom());
Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getRoom());
}
@Test
public void getLessonDescriptionTest() throws Exception {
Assert.assertEquals("", std.getWeekTable().getDay(3).getLesson(3).getDescription());
Assert.assertEquals("przeniesiona z lekcji 7, 01.12.2017", full.getWeekTable().getDay(1).getLesson(1).getDescription());
Assert.assertEquals("okienko dla uczniów", full.getWeekTable().getDay(0).getLesson(7).getDescription());
Assert.assertEquals("przeniesiona z lekcji 7, 20.06.2017", full.getWeekTable().getDay(1).getLesson(2).getDescription());
Assert.assertEquals("przeniesiona z lekcji 4, 20.06.2017", full.getWeekTable().getDay(1).getLesson(3).getDescription());
Assert.assertEquals("zastępstwo (poprzednio: Religia)", full.getWeekTable().getDay(2).getLesson(0).getDescription());
Assert.assertEquals("zastępstwo (poprzednio: Wychowanie fizyczne)", full.getWeekTable().getDay(3).getLesson(1).getDescription());
Assert.assertEquals("", full.getWeekTable().getDay(4).getLesson(0).getDescription());
Assert.assertEquals("", full.getWeekTable().getDay(4).getLesson(1).getDescription());
Assert.assertEquals("bez nawiasów (poprzednio: Religia)", full.getWeekTable().getDay(4).getLesson(3).getDescription());
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("", holidays.getWeekTable().getDay(3).getLesson(3).getDescription());
}
@Test
public void getLessonGroupNameTest() throws Exception {
Assert.assertEquals("CH", std.getWeekTable().getDay(0).getLesson(2).getGroupName());
Assert.assertEquals("JNPW", std.getWeekTable().getDay(4).getLesson(0).getGroupName());
Assert.assertEquals("", full.getWeekTable().getDay(0).getLesson(7).getGroupName());
Assert.assertEquals("zaw2", full.getWeekTable().getDay(1).getLesson(0).getGroupName());
Assert.assertEquals("wf2", full.getWeekTable().getDay(1).getLesson(3).getGroupName());
Assert.assertEquals("zaw1", full.getWeekTable().getDay(3).getLesson(1).getGroupName());
Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getGroupName());
}
@Test
public void getLessonStartTimeTest() throws Exception {
Assert.assertEquals("08:00", std.getWeekTable().getDay(0).getLesson(0).getStartTime());
Assert.assertEquals("14:10", std.getWeekTable().getDay(3).getLesson(7).getStartTime());
Assert.assertEquals("07:10", full.getWeekTable().getDay(0).getLesson(0).getStartTime());
Assert.assertEquals("12:20", full.getWeekTable().getDay(2).getLesson(6).getStartTime());
Assert.assertEquals("12:20", holidays.getWeekTable().getDay(2).getLesson(6).getStartTime());
}
@Test
public void getLessonEndTimeTest() throws Exception {
Assert.assertEquals("08:45", std.getWeekTable().getDay(1).getLesson(0).getEndTime());
Assert.assertEquals("12:15", std.getWeekTable().getDay(2).getLesson(4).getEndTime());
Assert.assertEquals("07:55", full.getWeekTable().getDay(1).getLesson(0).getEndTime());
Assert.assertEquals("19:00", full.getWeekTable().getDay(3).getLesson(13).getEndTime());
Assert.assertEquals("19:00", holidays.getWeekTable().getDay(3).getLesson(13).getEndTime());
}
@Test
public void getLessonIsEmptyTest() throws Exception {
Assert.assertFalse(std.getWeekTable().getDay(1).getLesson(4).isEmpty());
Assert.assertTrue(std.getWeekTable().getDay(3).getLesson(7).isEmpty());
Assert.assertFalse(full.getWeekTable().getDay(1).getLesson(1).isEmpty());
Assert.assertFalse(full.getWeekTable().getDay(1).getLesson(2).isEmpty());
Assert.assertFalse(full.getWeekTable().getDay(0).getLesson(7).isEmpty());
Assert.assertTrue(full.getWeekTable().getDay(2).getLesson(9).isEmpty());
Assert.assertTrue(holidays.getWeekTable().getDay(0).getLesson(5).isEmpty());
Assert.assertTrue(holidays.getWeekTable().getDay(4).getLesson(13).isEmpty());
}
@Test
public void getLessonIsDivisionIntoGroupsTest() throws Exception {
Assert.assertTrue(std.getWeekTable().getDay(0).getLesson(2).isDivisionIntoGroups());
Assert.assertTrue(std.getWeekTable().getDay(4).getLesson(0).isDivisionIntoGroups());
Assert.assertFalse(full.getWeekTable().getDay(0).getLesson(7).isDivisionIntoGroups());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(3).isDivisionIntoGroups());
Assert.assertTrue(full.getWeekTable().getDay(3).getLesson(1).isDivisionIntoGroups());
Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isDivisionIntoGroups());
}
@Test
public void getLessonIsPlanningTest() throws Exception {
Assert.assertFalse(std.getWeekTable().getDay(4).getLesson(4).isPlanning());
Assert.assertFalse(full.getWeekTable().getDay(0).getLesson(1).isPlanning());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(3).isPlanning());
Assert.assertTrue(full.getWeekTable().getDay(4).getLesson(0).isPlanning());
Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isPlanning());
}
@Test
public void getLessonIsRealizedTest() throws Exception {
Assert.assertTrue(std.getWeekTable().getDay(3).getLesson(3).isRealized());
Assert.assertTrue(full.getWeekTable().getDay(0).getLesson(1).isRealized());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(3).isRealized());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(0).isRealized());
Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isRealized());
}
@Test
public void getLessonIsMovedOrCanceledTest() throws Exception {
Assert.assertFalse(std.getWeekTable().getDay(3).getLesson(3).isMovedOrCanceled());
Assert.assertTrue(full.getWeekTable().getDay(0).getLesson(7).isMovedOrCanceled());
Assert.assertFalse(full.getWeekTable().getDay(1).getLesson(3).isMovedOrCanceled());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(0).isMovedOrCanceled());
Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isMovedOrCanceled());
}
@Test
public void getLessonIsNewMovedInOrChangedTest() throws Exception {
Assert.assertFalse(std.getWeekTable().getDay(3).getLesson(3).isNewMovedInOrChanged());
Assert.assertFalse(full.getWeekTable().getDay(0).getLesson(1).isNewMovedInOrChanged());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(2).isNewMovedInOrChanged());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(3).isNewMovedInOrChanged());
Assert.assertTrue(full.getWeekTable().getDay(3).getLesson(1).isNewMovedInOrChanged());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(1).isNewMovedInOrChanged());
Assert.assertTrue(full.getWeekTable().getDay(4).getLesson(2).isNewMovedInOrChanged());
Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isNewMovedInOrChanged());
}
}

View file

@ -1,106 +0,0 @@
package io.github.wulkanowy.api.user;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class BasicInformationTest extends StudentAndParentTestCase {
private BasicInformation basicInformation;
@Before
public void setUp() throws Exception {
basicInformation = new BasicInformation(getSnp("UczenDanePodstawowe.html"));
}
@Test
public void getPersonalFirstNameTest() throws Exception {
Assert.assertEquals("Maria", basicInformation.getPersonalData().getFirstName());
}
@Test
public void getPersonalSurnameTest() throws Exception {
Assert.assertEquals("Kamińska", basicInformation.getPersonalData().getSurname());
}
@Test
public void getPersonalFirstAndLastNameTest() throws Exception {
Assert.assertEquals("Maria Kamińska",
basicInformation.getPersonalData().getFirstAndLastName());
}
@Test
public void getPersonalNameTest() throws Exception {
Assert.assertEquals("Maria Aneta Kamińska", basicInformation.getPersonalData().getName());
}
@Test
public void getPersonalDateAndBirthPlaceTest() throws Exception {
Assert.assertEquals("01.01.1900, Warszawa",
basicInformation.getPersonalData().getDateAndBirthPlace());
}
@Test
public void getPersonalPeselTest() throws Exception {
Assert.assertEquals("12345678900", basicInformation.getPersonalData().getPesel());
}
@Test
public void getPersonalGenderTest() throws Exception {
Assert.assertEquals("Kobieta", basicInformation.getPersonalData().getGender());
}
@Test
public void isPersonalPolishCitizenshipTest() throws Exception {
Assert.assertTrue(basicInformation.getPersonalData().isPolishCitizenship());
}
@Test
public void getPersonalFamilyNameTest() throws Exception {
Assert.assertEquals("Nowak", basicInformation.getPersonalData().getFamilyName());
}
@Test
public void getPersonalParentsNames() throws Exception {
Assert.assertEquals("Gabriela, Kamil",
basicInformation.getPersonalData().getParentsNames());
}
@Test
public void getBasicAddressTest() throws Exception {
Assert.assertEquals("ul. Sportowa 16, 00-123 Warszawa",
basicInformation.getAddressData().getAddress());
}
@Test
public void getBasicRegisteredAddressTest() throws Exception {
Assert.assertEquals("ul. Sportowa 17, 00-123 Warszawa",
basicInformation.getAddressData().getRegisteredAddress());
}
@Test
public void getBasicCorrespondenceAddressTest() throws Exception {
Assert.assertEquals("ul. Sportowa 18, 00-123 Warszawa",
basicInformation.getAddressData().getCorrespondenceAddress());
}
@Test
public void getContactPhoneNumberTest() throws Exception {
Assert.assertEquals("005554433",
basicInformation.getContactDetails().getPhoneNumber());
}
@Test
public void getContactCellPhoneNumberTest() throws Exception {
Assert.assertEquals("555444333",
basicInformation.getContactDetails().getCellPhoneNumber());
}
@Test
public void getContactEmailTest() throws Exception {
Assert.assertEquals("wulkanowy@example.null",
basicInformation.getContactDetails().getEmail());
}
}

View file

@ -1,59 +0,0 @@
package io.github.wulkanowy.api.user;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class FamilyInformationTest extends StudentAndParentTestCase {
private FamilyInformation familyInformation;
@Before
public void setUp() throws Exception {
familyInformation = new FamilyInformation(getSnp("UczenDanePodstawowe.html"));
}
@Test
public void getFamilyMembers() throws Exception {
Assert.assertEquals(2, familyInformation.getFamilyMembers().size());
}
@Test
public void getNameTest() throws Exception {
List<FamilyMember> list = familyInformation.getFamilyMembers();
Assert.assertEquals("Marianna Pająk", list.get(0).getName());
Assert.assertEquals("Dawid Świątek", list.get(1).getName());
}
@Test
public void getKinshipTest() throws Exception {
List<FamilyMember> list = familyInformation.getFamilyMembers();
Assert.assertEquals("matka", list.get(0).getKinship());
Assert.assertEquals("ojciec", list.get(1).getKinship());
}
@Test
public void getAddressTest() throws Exception {
List<FamilyMember> list = familyInformation.getFamilyMembers();
Assert.assertEquals("ul. Sportowa 16, 00-123 Warszawa", list.get(0).getAddress());
Assert.assertEquals("ul. Sportowa 18, 00-123 Warszawa", list.get(1).getAddress());
}
@Test
public void getTelephonesTest() throws Exception {
List<FamilyMember> list = familyInformation.getFamilyMembers();
Assert.assertEquals("555111222", list.get(0).getTelephones());
Assert.assertEquals("555222111", list.get(1).getTelephones());
}
@Test
public void getEmailTest() throws Exception {
List<FamilyMember> list = familyInformation.getFamilyMembers();
Assert.assertEquals("wulkanowy@example.null", list.get(0).getEmail());
Assert.assertEquals("wulkanowy@example.null", list.get(1).getEmail());
}
}

View file

@ -1,22 +0,0 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="utf-8">
<title>Witryna ucznia i rodzica Oceny</title>
</head>
<body>
<main class="mainContainer">
<h1>Oceny</h1>
<div class="filters">
<div>
<label for="okresyKlasyfikacyjneDropDownList">Okres klasyfikacyjny:</label>
<select id="okresyKlasyfikacyjneDropDownList" name="okresyKlasyfikacyjneDropDownList">
<option value="1234">1</option>
<option selected="selected" value="1235">2</option>
</select>
</div>
</div>
</main>
<footer>wersja: 17.05.0000.24042</footer>
</body>
</html>

View file

@ -1,24 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Uonet+</title>
</head>
<body>
<div class="startScreen">
<div class="holder">
<div class="content">
<div class="panel linkownia pracownik klient">
<a href="https://uonetplus-opiekun.vulcan.net.pl/symbol/534213/Start/Index/">
<div class="imagedHeader directLink">
<div id="idEmptyAppUczeń">
<div class="name">Uczeń</div>
</div>
</div>
</a>
</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -1,37 +0,0 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="utf-8">
<title>Witryna ucznia i rodzica Strona gł&#243;wna</title>
</head>
<body>
<ul id="idSection">
<li>
<label for="uczenDropDownList">Uczeń:</label>
<select id="uczenDropDownList" name="uczenDropDownList">
<option selected="selected"
value="https://uonetplus-opiekun.fakelog.cf/Default/123456/Uczen/UczenOnChange?&amp;id=100">
Jan Kowal
</option>
</select>
</li>
<li>
<label for="dziennikDropDownList">Dziennik:</label>
<select id="dziennikDropDownList" name="dziennikDropDownList">
<option selected="selected"
value="https://uonetplus-opiekun.fakelog.cf/Default/123456/Dziennik/DziennikOnChange?&amp;id=1300">
3Ti 2017
</option>
<option value="https://uonetplus-opiekun.fakelog.cf/Default/123456/Dziennik/DziennikOnChange?&amp;id=1200">
2Ti 2016
</option>
<option value="https://uonetplus-opiekun.fakelog.cf/Default/123456/Dziennik/DziennikOnChange?&amp;id=1100">
1Ti 2015
</option>
</select>
</li>
</ul>
<footer>wersja: 17.09.0008.26553</footer>
</body>
</html>

View file

@ -1,408 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Witryna ucznia i rodzica Frekwencja</title>
<style>
.x-sp-nieobecny-w-oddziale:before {
content: 'nieobecny w oddziale';
background: grey;
}
.x-obecnosc:before {
content: 'obecność';
background: green;
}
.presentData td:not(.padding-zero):not(.x-sp-nieobecny-w-oddziale):not(:first-child):before {
content: 'pusta';
background: grey;
}
</style>
</head>
<body>
<main class="mainContainer">
<h1>Frekwencja</h1>
<table class="presentData">
<thead>
<tr>
<th>Lekcja</th>
<th>poniedziałek<br>31.08.2015</th>
<th>wtorek<br>01.09.2015</th>
<th>środa<br>02.09.2015</th>
<th>czwartek<br>03.09.2015</th>
<th>piątek<br>04.09.2015</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Uroczyste rozpoczęcie roku szkolnego 2015/2016</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Wychowanie do życia w rodzinie</span>
</div>
</td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
</tr>
<tr>
<td>2</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język angielski</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język niemiecki</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
</tr>
<tr>
<td>3</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Systemy operacyjne</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Chemia</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
</tr>
<tr>
<td>4</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Systemy operacyjne</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Geografia</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
</tr>
<tr>
<td>5</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Tworzenie stron internetowych</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Matematyka</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język polski</span>
</div>
</td>
</tr>
<tr>
<td>6</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Tworzenie stron internetowych</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Fizyka</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Matematyka</span>
</div>
</td>
</tr>
<tr>
<td>7</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Wychowanie fizyczne</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język polski</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Historia</span>
</div>
</td>
</tr>
<tr>
<td>8</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Wychowanie fizyczne</span>
</div>
</td>
<td></td>
<td></td>
</tr>
<tr>
<td>9</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>10</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>11</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>12</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>13</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h1 id="statystyki">Statystyki</h1>
<div>
<label for="idPrzedmiot">Przedmiot:</label>
<select id="idPrzedmiot" name="idPrzedmiot">
<option value="-1">Wszystkie</option>
<option value="1">Religia</option>
<option value="4">Język polski</option>
<option value="5">Język angielski</option>
<option value="9">Język niemiecki</option>
<option value="50">Historia</option>
<option value="56">Wiedza o społeczeństwie</option>
<option value="58">Matematyka</option>
<option value="59">Fizyka</option>
<option value="61">Chemia</option>
<option value="63">Biologia</option>
<option value="64">Geografia</option>
<option value="71">Informatyka</option>
<option value="75">Wychowanie fizyczne</option>
<option value="88">Edukacja dla bezpieczeństwa</option>
<option value="91">Wychowanie do życia w rodzinie</option>
<option value="94">Zajęcia z wychowawcą</option>
<option value="106">Techniki biurowe</option>
<option value="108">Urządzenia techniki komputerowej</option>
<option value="109">Naprawa komputera</option>
<option value="113">Systemy operacyjne</option>
<option value="114">Sieci komputerowe i administrowanie sieciami</option>
<option value="118">Tworzenie stron internetowych</option>
<option value="492">Opieka nad uczniami</option>
<option value="664">Fizyka doświadczalna</option>
<option value="0">Brak opisu lekcji</option>
</select>
</div>
<h2>Frekwencja od początku roku szkolnego: 100,00%</h2>
<table>
<thead>
<tr>
<th></th>
<th>IX</th>
<th>X</th>
<th>XI</th>
<th>XII</th>
<th>I</th>
<th>II</th>
<th>III</th>
<th>IV</th>
<th>V</th>
<th>VI</th>
<th>VII</th>
<th>VIII</th>
<th>Razem</th>
</tr>
</thead>
<tbody>
<tr>
<td>Obecność</td>
<td>142</td>
<td>143</td>
<td>139</td>
<td>110</td>
<td>131</td>
<td>75</td>
<td>126</td>
<td>139</td>
<td>92</td>
<td>114</td>
<td></td>
<td></td>
<td>1211</td>
</tr>
<tr>
<td>Nieobecność nieusprawiedliwiona</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Nieobecność usprawiedliwiona</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Nieobecność z przyczyn szkolnych</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Spóźnienie nieusprawiedliwione</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Spóźnienie usprawiedliwione</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Zwolnienie</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</main>
<footer>wersja: 17.07.0002.24480</footer>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show more