Compare commits

...

341 Commits

Author SHA1 Message Date
Kuba Szczodrzyński
2d6d823a87
Merge branch 'develop-v4' into develop 2025-02-02 17:40:10 +01:00
Kuba Szczodrzyński
02a9724587
[4.14] Update build.gradle, signing and changelog 2025-02-02 17:04:56 +01:00
Kuba Szczodrzyński
c17237015e
Merge branch 'develop-v4' into develop 2025-02-02 17:03:32 +01:00
Kuba Szczodrzyński
2681794676
[Actions] Fix release workflow trigger tag name pattern 2025-02-02 16:59:23 +01:00
Kuba Szczodrzyński
42e59ac0db
[Actions] Update actions/upload-artifact to v4 2025-02-02 16:25:52 +01:00
Kuba Szczodrzyński
cac98ee3d4
[App] Force full sync on update 2025-02-02 15:48:11 +01:00
Kuba Szczodrzyński
aeecc48639
[App] Disable profile archiver permanently, force app sync on first login 2025-02-01 23:40:00 +01:00
Kuba Szczodrzyński
db444d89f0
[UI/Grades] Add config options for university grades 2025-02-01 23:00:21 +01:00
Kuba Szczodrzyński
29971777a7
[UI/Grades] Add "no grade" entity in USOS, count ECTS points by term 2025-02-01 22:24:27 +01:00
Kuba Szczodrzyński
88cd18b8c6
[UI/Grades] Allow filtering by semester for university grades 2025-02-01 21:40:46 +01:00
Kuba Szczodrzyński
30a77f1a99
[UI/Grades] Update views for university grades 2025-01-31 23:10:07 +01:00
Kuba Szczodrzyński
6de7ee9cee
[API/Usos] Store term names, add term ID to grades 2025-01-31 21:31:02 +01:00
Kuba Szczodrzyński
d44b85073a
[API/Usos] Implement basic grades support 2025-01-31 21:03:00 +01:00
Kuba Szczodrzyński
514fbafd00
[API/Usos] Change team codes to include unique ID or current year 2025-01-31 19:16:03 +01:00
Kuba Szczodrzyński
c35222cdfd
[API/Usos] Fix year end date on new school year 2025-01-31 19:03:31 +01:00
Kuba Szczodrzyński
37a94595c0
[UI] Enable colored app bars on scroll (#211)
Some checks failed
Schedule/dispatch / Build nightly release (APK) (push) Has been skipped
Schedule/dispatch / Check new changes (push) Failing after 25s
* Extract fragment scroll listener to separate file

* Replace canRefresh with isScrolled

* Add empty helper class to animate app bar color

* Implement AppBarColorAnimator

* Rename getRefreshScrollingView() to getScrollingView()

* Set isScrolled on drag start

* Clear isScrolled on fling to top

* Add getSyncParams() to fragments

* Convert getAppBars() to property

* Tint TabLayout background drawable
2024-07-09 18:15:03 +02:00
Kuba Szczodrzyński
58d9dec33c
[App] Enable nightly app updates, check every 12 hours
Some checks failed
Schedule/dispatch / Build nightly release (APK) (push) Has been skipped
Schedule/dispatch / Check new changes (push) Failing after 26s
2024-07-08 20:49:01 +02:00
Kuba Szczodrzyński
095403cc76
Merge branch 'master' into develop 2024-07-08 15:49:43 +02:00
Kuba Szczodrzyński
7f3a607246
[App] Fix RecyclerTabLayout ProGuard rules 2024-07-08 15:39:44 +02:00
Kuba Szczodrzyński
ffee78d4f7
[UI] Fix closing bottom sheet on scrim view click 2024-07-08 15:39:07 +02:00
Kuba Szczodrzyński
f2a20c3aae
Merge branch 'hotfix/nologin'
Some checks failed
Push (master) / Build for Google Play (AAB) (push) Failing after 1s
2024-07-08 14:39:02 +02:00
Kuba Szczodrzyński
1e7dbba995
[4.13.7] Update build.gradle, signing and changelog 2024-07-08 14:10:29 +02:00
Kuba Szczodrzyński
0b8f3fe94b
[Actions] Add build fixes from develop 2024-07-08 14:10:23 +02:00
Kuba Szczodrzyński
0e8b0673ca
[App] Add Demo login method 2024-07-08 13:28:54 +02:00
Kuba Szczodrzyński
8450f6953e
[UI] Enable swipe-to-refresh on home, grades, behaviour fragments
Some checks failed
Schedule/dispatch / Build nightly release (APK) (push) Has been skipped
Schedule/dispatch / Check new changes (push) Failing after 28s
2024-07-07 23:22:37 +02:00
Kuba Szczodrzyński
ddefda08f1
[App] Simplify enabling Dev Mode on nightly builds 2024-07-07 22:55:20 +02:00
Mateusz T
c5b173b40a
[API/Usos] Remove non-digit characters from student number (#189)
* Save only USOS ID number without indexes

* Checking student number is or is not empty

* Apply suggestions from code review

---------

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2024-07-07 22:24:50 +02:00
Kuba Szczodrzyński
f10bc42c7b
[UI] Implement RecyclerTabLayout, enable swipe-to-refresh in timetable (#209)
* Enable swipe-to-refresh in timetable

* Add basic RecyclerTabLayout view

* Implement tab scrolling in RecyclerTabLayout

* Implement tab clicking in RecyclerTabLayout

* Add selected tab indicator to RecyclerTabLayout

* Add ProGuard rules for RecyclerTabLayout

* Set RecyclerTabLayout background
2024-07-07 22:18:00 +02:00
Kuba Szczodrzyński
6371d71b7a
[UI] Add SimpleDialog class, migrate app dialogs (#208)
Some checks failed
Schedule/dispatch / Build nightly release (APK) (push) Has been skipped
Schedule/dispatch / Check new changes (push) Failing after 21s
* Make onShow() abstract and onDismiss() suspend

* Add dialog suspend show method

* Add SimpleDialog, support text field and choice items in BaseDialog

* Migrate MaterialAlertDialogBuilder to SimpleDialog

* Remove dialog onShow and onDismiss listeners
2024-07-06 19:36:59 +02:00
Kuba Szczodrzyński
09f0c986e0
[UI] Reformat layout XMLs, cleanup NavLib code (#207)
Some checks failed
Schedule/dispatch / Build nightly release (APK) (push) Has been skipped
Schedule/dispatch / Check new changes (push) Failing after 19s
* Remove Themes and getColorFromAttr() usage

* Reformat all layout XML files

* Remove <layout> from non-data binding XMLs

* Cleanup unused NavLib code

* Migrate NavBottomSheet to view binding, remove unused components

* Add IIcon.toDrawable() extension

* Make BottomSheet scrim opacity linear

* Support touch events on BottomSheet scrim
2024-07-05 18:46:37 +02:00
Kuba Szczodrzyński
10043cc62c
[UI] Migrate to base fragment classes, restructure base modules (#206)
Some checks failed
Schedule/dispatch / Build nightly release (APK) (push) Has been skipped
Schedule/dispatch / Check new changes (push) Failing after 20s
* Replace android:visibility with android:isVisible

* Move base dialogs and views to .ui.base

* Move uncategorized classes to ui.main

* Fix view classes in XML

* Add BaseFragment, use for LazyFragment

* Migrate fragments to BaseFragment

* Move activity setup from BaseFragment, recreate Job on attach

* Move BaseFragment initialization to onResume

* Add base PagerFragment, add TemplateFragment to drawer

* Support swipe-to-refresh in base fragments

* Remove SwipeRefreshLayout split implementation

* Rename onViewCreated to onViewReady

* Remove LazyFragment

* Save page selection in PagerFragment, migrate AttendanceFragment

* Migrate fragments to PagerFragment

* Migrate contributors to a fragment

* Migrate TimetableFragment to PagerFragment

* Fix disabling SwipeToRefresh on page scroll

* Fix crash in CrashActivity
2024-07-04 22:14:52 +02:00
Kuba Szczodrzyński
f795412551
[Actions] Use Europe/Warsaw timezone for build dates
Some checks failed
Schedule/dispatch / Build nightly release (APK) (push) Has been skipped
Schedule/dispatch / Check new changes (push) Failing after 23s
2024-07-02 14:01:05 +02:00
Kuba Szczodrzyński
6a7020a516
[Gradle] Fix copying signed release APK 2024-07-02 13:44:59 +02:00
Adam Rurański
137ea65e0f
[UI] Make snowfall condition consistent (#195)
Some checks failed
Schedule/dispatch / Build nightly release (APK) (push) Has been skipped
Schedule/dispatch / Check new changes (push) Failing after 17s
2024-07-01 22:39:47 +02:00
koliwbr
50ef7f8617
[Git] Fix build status badges in README (#193)
* Popraw statusy budowania w README

* Update README.md

---------

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2024-07-01 22:38:43 +02:00
Kuba Szczodrzyński
e1dbc2f050
[App] Refactor app core modules, use Timber for logging (#205)
* [App] Fix config migration issues

* Move .sync to .core

* Move .firebase, .network, .managers, .receivers, .sync to .core

* Replace HyperLog with Timber

* Cleanup logs every 7 days

* Rename NotificationChannelManager, reformat App

* Create FirebaseManager, ShortcutManager
2024-07-01 22:35:11 +02:00
Kuba Szczodrzyński
77e1acbb1e
[App] Disable R8 full mode, support devModePassword, fix build timestamp 2024-07-01 11:53:14 +02:00
Kuba Szczodrzyński
6e19f37d79
[Actions] Refactor build workflows, fix Gradle rename task
Some checks failed
Schedule/dispatch / Check new changes (push) Failing after 1m11s
Schedule/dispatch / Build nightly release (APK) (push) Has been skipped
2024-06-30 19:51:21 +02:00
0823e72328
[UI] Upgrade to Material 3 design, refactor some core elements (#201)
* Material 3 theme and color support, filled cards

* Change drawer header, dark bottombar color

* Replace MaterialComponents with Material3

* wielki powrót pr m3 do szkolnego (nie czytajcie tego kodu)

* fix M3 UI code & upgrade kotlin

* update dependencies

* fix missing Intent receiver flags for Tiramisu+

* fix kapt errors related to SelectiveDAO + migrate BuildConfig

* adapt code to updated dependencies + align lessons (based by szkolny-eu/szkolny-android#196)

* fix: no query filtering

* fix: duplicated items in about card

* fix: "Back button opens drawer" (redundant super call)

* fix: too small heading in agenda dialog

* adapt notes fragment to MD3

* add lock layout function (szkolny-eu/szkolny-android#199)

* hide classroom heading when no classroom is specified

* add support for grade column codes

* grades: join code and category together

* add cosmetic ui changes + fix build issues

* fix proguard rules (attempt 1)

* add new Retrofit2 rules

* add new ProGuard rules + fix QR scanning

* fix agenda view crash when building release variant

* improve LessonDetailsDialog

* remove duplicated string extension

* set separate app ID & icon for debug version

* remove unneeded import statement

* fix collapsing toolbar title when doing back gesture

* remove useless dependencies

* fix UI issues on old Android versions

* fix missing color resources + cleanup dependencies

* fix release building issue

* fix release building issue & remove ripple from NavView

* move version badge to the top bar

* Revert changes introduced by rebase

* Update NavLib from sadorowo/NavLib

* Revert "add lock layout function (szkolny-eu/szkolny-android#199)"

This reverts commit 2fd7038d0c0b43f2d39333d2e556bde066cd28b6.

* Revert "add support for grade column codes"

* Revert unnecessary code changes, part 1

* Lower minSdk to 19

* Revert unnecessary code changes, part 2

* Add new application logo

* Restore bottom bar support in NavLib, revert unnecessary changes

* Use new IconicsMaterialButton in MessageFragment

* Migrate NavView to view binding

* Support IconButton in IconicsMaterialButton

* Cleanup NavLib w600dp styles

* Remove NavLib text styles

* Refactor all application themes, update styles in layouts

* Move enums and config entry to .data, fix app crashing

* Rename non-theme styles to AppStyle

* Restructure app config classes, move config to .data

* Add Theme enum and UiManager, support basic theme changing

* Actually support basic theme changing

* Serialize enum as string, fix config migration, bring back DebugDb

* Fix changing themes, apply night mode in App

* Fix resolving ColorStateList attributes, add LabPlaygroundFragment

* add Iconics methods into ProGuard rules

* Replace home card icon buttons, remove unused icons

* Update gradle properties

* Update build.gradle

* Remove unnecessary dependencies

* Remove playstore icon

* Apply fixes after review

---------

Co-authored-by: Adam Kasprzycki <66315787+santoni0@users.noreply.github.com>
Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2024-06-30 16:12:07 +02:00
Kuba Szczodrzyński
fadf1d7754
[Gradle] Add NavLib 0.8.0 as local module
Some checks failed
Nightly build / Prepare build environment (push) Has been cancelled
Nightly build / Build APK (push) Has been cancelled
Nightly build / Sign APK (push) Has been cancelled
Nightly build / Publish APK (push) Has been cancelled
2024-06-18 17:45:26 +02:00
Kuba Szczodrzyński
1071a0848a
Merge branch 'develop' 2023-03-25 10:10:42 +01:00
Kuba Szczodrzyński
cefb0deba8
[Actions] Rename changelog output name. 2023-03-25 10:09:36 +01:00
Kuba Szczodrzyński
53c813f014
Merge branch 'develop' 2023-03-24 22:35:54 +01:00
Kuba Szczodrzyński
90a151c129
[4.13.6] Update build.gradle, signing and changelog. 2023-03-24 22:27:27 +01:00
Kuba Szczodrzyński
9fd9721ae7
[UI] Hide Debugging menu without dev mode. 2023-03-24 22:24:33 +01:00
Kuba Szczodrzyński
ceca75ef4b
[UI/Timetable] Add option to sync current week. 2023-03-24 22:16:34 +01:00
Kuba Szczodrzyński
21c00bbe53
[API] Fix detecting session cookies. Remove expired cookies. 2023-03-24 22:09:31 +01:00
Kuba Szczodrzyński
db00566ebf
[UI/Login] Fallback reCAPTCHA to WebView activity. 2023-03-24 22:09:31 +01:00
B.O.S.S
07ab1b984f
[API/Librus] Fix login. (#176) 2023-03-24 22:09:03 +01:00
Kuba Szczodrzyński
8177d4aa2d
[Widgets] Fix pending intents mutability. Hide timetable sync button. 2023-03-24 11:13:00 +01:00
Kuba Szczodrzyński
beff1b6460
[App] Fix cookie persistence. 2023-03-24 10:56:35 +01:00
Kuba Szczodrzyński
31b569b02e
[4.13.5] Update build.gradle, signing and changelog. 2023-03-22 23:16:28 +01:00
Kuba Szczodrzyński
8bf77817d2
[UI] Fix writing files on Android 13 and newer. 2023-03-22 23:15:45 +01:00
Kuba Szczodrzyński
87b7bd9b30
Merge branch 'develop' 2022-12-27 12:30:23 +01:00
Kuba Szczodrzyński
27b61adf1d
[Actions] Fix Play release publishing workflow. 2022-12-27 12:30:03 +01:00
Kuba Szczodrzyński
8d7dc511ea
Merge branch 'develop' 2022-12-27 12:09:04 +01:00
Kuba Szczodrzyński
a0244841ad
[4.13.4] Update build.gradle, signing and changelog. 2022-12-26 14:45:29 +01:00
Kuba Szczodrzyński
12c0c6f2ec
[UI] Always show event subject dropdown for university school. 2022-12-26 14:43:42 +01:00
Kuba Szczodrzyński
aaa3b8626e
[UI] Update event types for university school. 2022-12-26 14:01:25 +01:00
Kuba Szczodrzyński
48c9e2dfe3
[4.13.3] Update build.gradle, signing and changelog. 2022-12-06 10:35:23 +01:00
Kuba Szczodrzyński
81d4801d27
[UI] Add snowfall to CounterActivity. Enable in February as well. 2022-12-06 10:34:12 +01:00
Kuba Szczodrzyński
5f8016061d
[API/Vulcan] Fix wrong serializing of null in JSON causing API error. 2022-12-06 10:22:47 +01:00
Kuba Szczodrzyński
5007587192
[UI/Agenda] Allow prioritizing event subject over event type. 2022-11-30 11:29:43 +01:00
Kuba Szczodrzyński
dfd1083e41
[UI/Timetable] Show lesson replacing notes in all places. 2022-11-30 10:41:43 +01:00
Kuba Szczodrzyński
a322986df5
Merge branch 'develop' 2022-11-28 20:39:51 +01:00
Kuba Szczodrzyński
678baf46e5
[4.13.2] Update build.gradle, signing and changelog. 2022-11-28 20:30:11 +01:00
Kuba Szczodrzyński
4077fe448d
[4.13.2-rc.4] Update build.gradle, signing and changelog. 2022-11-25 16:52:16 +01:00
Kuba Szczodrzyński
f085e17ef7
[API/Vulcan] Once again fix ignoring 404 response on Addressbook. 2022-11-25 16:51:35 +01:00
Kuba Szczodrzyński
7fd2cad46b
[4.13.2-rc.3] Update build.gradle, signing and changelog. 2022-11-25 16:13:58 +01:00
Kuba Szczodrzyński
93dc2ac9ab
[API/Vulcan] Fix ignoring 404 response on Addressbook. 2022-11-25 16:11:50 +01:00
Kuba Szczodrzyński
ac53e267fc
[4.13.2-rc.2] Update build.gradle, signing and changelog. 2022-11-25 14:55:49 +01:00
Kuba Szczodrzyński
86eb1a0f42
[API/Vulcan] Actually ignore 404 response on Addressbook. 2022-11-25 14:54:05 +01:00
Kuba Szczodrzyński
710d82da27
[4.13.2-rc.1] Update build.gradle, signing and changelog. 2022-11-25 14:40:39 +01:00
Kuba Szczodrzyński
0123f50810
[API/Vulcan] Ignore 404 response on Addressbook. 2022-11-25 14:20:22 +01:00
Kuba Szczodrzyński
6d3eb65445
[API/Mobidziennik] Do not clear email field if not set. 2022-11-15 22:20:00 +01:00
Kuba Szczodrzyński
a9a0630226
[4.13.1] Update build.gradle, signing and changelog. 2022-11-03 22:59:40 +01:00
Kuba Szczodrzyński
ec7577f999
[App] Revert to use old devMode config key. 2022-11-03 22:29:22 +01:00
Kuba Szczodrzyński
05c7c0012c
[UI] Fix home cards order not saving. 2022-11-03 22:28:59 +01:00
B.O.S.S
d65c6db954
[API/Librus] Fix getting read date in messages for multiple receivers. (#154) 2022-11-03 21:53:01 +01:00
Oskar
771dc437e6
[Strings] Translate home timetable card "all lessons" to English. (#152) 2022-10-30 12:45:27 +01:00
B.O.S.S
3d5d3847cc
[API/Librus] Fix getting teacher name in notices. (#151) 2022-10-30 12:44:59 +01:00
kuba2k2
726c22b70a
Merge branch 'develop' 2022-10-26 22:21:13 +02:00
Kuba Szczodrzyński
18cc60a80b
[4.13] Update build.gradle, signing and changelog. 2022-10-26 20:55:50 +02:00
Kuba Szczodrzyński
fedde9f739
[UI/Home] Show all next lessons before school day start. 2022-10-26 20:34:48 +02:00
kuba2k2
9fde97bef0
[App] Share Lesson and Event notes to specific team only. 2022-10-26 11:14:32 +02:00
kuba2k2
742bd03e9e
[Lab] Fix JSON page crashing because of serializing AppDb. 2022-10-26 10:31:03 +02:00
Kuba Szczodrzyński
62ffc652ab
[4.13-rc.5] Update build.gradle, signing and changelog. 2022-10-25 20:50:19 +02:00
Kuba Szczodrzyński
bfd2e9883a
[App] Refactor getting profile config. 2022-10-25 20:48:10 +02:00
Kuba Szczodrzyński
00e077d01f
[UI] Fix notes not showing in note list dialog. 2022-10-25 20:07:48 +02:00
Kuba Szczodrzyński
c21d89cf60
[UI] Fix SettingsAboutCard having duplicate items. 2022-10-25 19:58:26 +02:00
Kuba Szczodrzyński
f52cc1b197
[UI] Make shared notes for lessons use a stable ID. 2022-10-25 19:58:09 +02:00
kuba2k2
c90ad97f55
[UI] Remove "enable shared events" setting. Reorder settings a bit. 2022-10-25 17:33:38 +02:00
Kuba Szczodrzyński
845e09d875
[API/Usos] Add prefixes to classroom and building names. 2022-10-25 12:36:11 +02:00
Kuba Szczodrzyński
158b69a8d3
[Lab] Fix full sync buttons. 2022-10-25 12:35:51 +02:00
Kuba Szczodrzyński
9535f53563
[App] Refactor profile methods as extensions. 2022-10-25 12:19:59 +02:00
Kuba Szczodrzyński
eeb3fc4621
[4.13-rc.4] Update build.gradle, signing and changelog. 2022-10-24 23:33:54 +02:00
Kuba Szczodrzyński
41693a9fc8
[App] Respect user setting before notifying about updates. 2022-10-24 23:33:02 +02:00
Kuba Szczodrzyński
d3599b8c89
[UI] Fix DateDropdown next week Friday not visible. 2022-10-24 23:32:21 +02:00
Kuba Szczodrzyński
ffd81f8b82
[UI] Add setting to share events/notes by default. 2022-10-24 23:32:09 +02:00
Kuba Szczodrzyński
2c34924052
[UI] Mark Firebase-received events as manual. Update legend icons. 2022-10-24 22:41:15 +02:00
Kuba Szczodrzyński
26ad6373e6
[4.13-rc.3] Update build.gradle, signing and changelog. 2022-10-23 23:16:23 +02:00
Kuba Szczodrzyński
cac8f94407
[Gradle] Update Chucker to fix Android 12 crash issue. 2022-10-23 23:16:08 +02:00
Kuba Szczodrzyński
6628b97faf
[API/Usos] Fix detecting term start and end date. 2022-10-23 23:11:49 +02:00
Kuba Szczodrzyński
8424414317
[Login] Fix configOverrides NPE during login. 2022-10-23 23:11:20 +02:00
Kuba Szczodrzyński
d8bb927703
[4.13-rc.2] Update build.gradle, signing and changelog. 2022-10-22 22:34:24 +02:00
Kuba Szczodrzyński
c8e8c172a2
[App] Rework update handling. 2022-10-22 22:10:04 +02:00
Kuba Szczodrzyński
0d4dee765a
[Lab] Allow setting custom API key. 2022-10-22 12:56:15 +02:00
Kuba Szczodrzyński
fd407b2b03
[Config] Set highest data version by default. 2022-10-22 12:31:40 +02:00
Kuba Szczodrzyński
40ed5a221f
[App] Fix crashes while deserializing AppData and Config. 2022-10-22 12:19:23 +02:00
Kuba Szczodrzyński
5150467372
[4.13-rc.1] Update build.gradle, signing and changelog. 2022-10-22 00:02:57 +02:00
Kuba Szczodrzyński
63c5720f63
[App] Move per-register settings to JSON resource. Rewrite Config to use delegates. (#150)
* [App] Add base for AppData loading.

* [UI] Fix timetable widget date navigation.

* [UI] Migrate register-specific behavior to use AppData.

* [App] Implement new delegate-based config base.

* [Config] Migrate config and profile config.

* [Config] Remove defaults from migrations.

* [App] Apply event types and config overrides from AppData.

* [Events] Change default event types for university type school.
2022-10-21 23:59:53 +02:00
Kuba Szczodrzyński
6c93cd4217
[4.13-beta.3] Update build.gradle, signing and changelog. 2022-10-20 22:02:01 +02:00
Kuba Szczodrzyński
649d4f619a
[UI] Hide unavailable settings depending on LoginType. 2022-10-20 21:59:01 +02:00
Kuba Szczodrzyński
ba10d10a10
[API] Refactor integer-based types to enum classes. (#145)
* [App] Add enum classes for common IDs.

* [App] Rename enum package names.

* [App] Migrate code to use new enums.

* [DB] Migrate loginStoreMode IDs to be unique.

* [UI] Fix minor issues after refactor.

* [API] Update sync method signature.

* [UI] Correct pop-to-home and back button drawer behavior.

* [App] Update Bundle extensions usage.

* [App] Migrate notification types to enum.

* [UI] Make Lab fragment compatible with enums.

* [API] Make EndpointTimer use FeatureType.

* [App] Migrate config & API lists to sets.
2022-10-20 21:58:10 +02:00
Kuba Szczodrzyński
1450d63fcb
[4.13-beta.2] Update build.gradle, signing and changelog. 2022-10-18 22:06:18 +02:00
Kuba Szczodrzyński
2ec06bc39a
[UI] Fix timetable lesson height. Add missing timetable settings. 2022-10-18 11:49:46 +02:00
Kuba Szczodrzyński
6f12227c2e
[4.13-beta.1] Update build.gradle, signing and changelog. 2022-10-17 22:56:22 +02:00
Kuba Szczodrzyński
3a91f87ccd
Merge pull request #142 from szkolny-eu/feature/usos
[API] Add USOS API support.
2022-10-17 22:52:08 +02:00
Kuba Szczodrzyński
52a53334ca
[Strings] Add USOS error descriptions. 2022-10-17 22:30:23 +02:00
Kuba Szczodrzyński
3ab9602865
[API/Usos] Fix re-logging in after user action. 2022-10-17 16:06:29 +02:00
kuba2k2
dc19043f73
[API/Usos] Implement basic error handling. 2022-10-17 12:56:07 +02:00
Kuba Szczodrzyński
cf25507850
[API/Usos] Save lecturers as teachers. Add team class. 2022-10-16 18:41:37 +02:00
Kuba Szczodrzyński
044cedff99
[Usos] Override lesson colors by activity type. 2022-10-16 18:13:22 +02:00
Kuba Szczodrzyński
4de066bf5f
[API/Usos] Implement Timetable. 2022-10-16 17:21:36 +02:00
Kuba Szczodrzyński
8d174bda01
Merge remote-tracking branch 'origin/develop' into feature/usos 2022-10-16 16:54:44 +02:00
Kuba Szczodrzyński
e2fd714070
[UI/Timetable] Show subject-based lesson colors. (#141)
* [UI/Timetable] Add timetable config dialog and implement UI options.

* [UI/Timetable] Fix reloading timetable after changing config.

* [UI/Timetable] Fix calculating lesson range boundaries.

* [UI/Timetable] Add coloring subject names.
2022-10-16 12:47:54 +02:00
Kuba Szczodrzyński
8097e8d06d
[API/Usos] Add syncing Courses and Terms. 2022-10-16 00:09:51 +02:00
Kuba Szczodrzyński
93ccdbdeb7
[API/Login] Make user action handling more universal. 2022-10-15 21:24:30 +02:00
Kuba Szczodrzyński
7ded400a30
[API/Usos] Implement first login. 2022-10-15 19:07:12 +02:00
Kuba Szczodrzyński
2ff784066e
[API/Usos] Implement OAuth authorization flow. 2022-10-14 21:44:58 +02:00
Kuba Szczodrzyński
6c96875c83
[API/Login] Allow passing LoginStore params in user action requests. 2022-10-14 19:44:22 +02:00
kuba2k2
9f3aaf6e86
[API] Move register platforms to new endpoint. 2022-10-14 14:43:40 +02:00
Kuba Szczodrzyński
55369eaa8b
[UI/Timetable] Add Timetable settings. (#140)
* [UI/Timetable] Add timetable config dialog and implement UI options.

* [UI/Timetable] Fix reloading timetable after changing config.

* [UI/Timetable] Fix calculating lesson range boundaries.
2022-10-14 00:25:22 +02:00
Adam Kasprzycki
c983c16907
[UI] Request notifications permission on API >= 33. (#143)
* Added requesting notifications permission on Android 13 devices

* Move permission check to PermissionManager

* Request permission on home screen
2022-10-14 00:24:00 +02:00
kuba2k2
c7362bce12
[API/Usos] Add base rest API class. 2022-10-13 21:27:55 +02:00
kuba2k2
7935d0f097
[API] Pass parameters to user action required errors. 2022-10-13 11:45:17 +02:00
Kuba Szczodrzyński
4b64277948
[API/Usos] Add basic USOS API structure. 2022-10-11 23:23:11 +02:00
Kuba Szczodrzyński
ef0996c80e
Merge branch 'develop' 2022-09-23 12:05:03 +02:00
Kuba Szczodrzyński
132729bbd9
[4.12.1] Update build.gradle, signing and changelog. 2022-09-23 11:32:08 +02:00
Kuba Szczodrzyński
6d36ab27d1
[UI/Login] Fix QR scanning icon not showing. 2022-09-23 11:30:23 +02:00
Kuba Szczodrzyński
11fabb231f
[4.12] Update build.gradle, signing and changelog. 2022-09-21 21:09:23 +02:00
Kuba Szczodrzyński
6fd999f88c
[UI/Widget] Fix showing lesson details dialog. 2022-09-21 21:02:09 +02:00
Kuba Szczodrzyński
7711413b30
[API/Vulcan] Fix getting MessageBoxes and changing message read status. 2022-09-21 20:43:18 +02:00
Kuba Szczodrzyński
cdc0c9d458
[4.11.9] Update build.gradle, signing and changelog. 2022-09-18 23:06:41 +02:00
Kuba Szczodrzyński
8e5f750a80
[Manifest] Remove APK install to comply with Google Play policies. 2022-09-18 23:05:46 +02:00
Kuba Szczodrzyński
f4e7e8978c
[API/Vulcan] Ensure messageBoxKey before syncing addressbook. 2022-09-18 22:52:43 +02:00
Kuba Szczodrzyński
14952307b3
Merge branch 'develop' 2022-09-17 23:06:32 +02:00
Kuba Szczodrzyński
96c542d6d2
[4.11.8] Update build.gradle, signing and changelog. 2022-09-17 18:02:11 +02:00
Kuba Szczodrzyński
77d22b87aa
[API] Move unused resources to the e-register graveyard. 2022-09-17 17:49:56 +02:00
Kuba Szczodrzyński
37c68443bd
[API] Remove EduDziennik implementation [*] 2022-09-17 17:39:45 +02:00
Kuba Szczodrzyński
9dbb5d70e9
[App] Fix PendingIntent crashing on API 31+. 2022-09-17 17:21:13 +02:00
Kuba Szczodrzyński
99afa77a63
[4.11.7] Update build.gradle, signing and changelog. 2022-09-17 16:00:38 +02:00
Kuba Szczodrzyński
a5d0f4212d
[UI/Login] Make Lab accessible from login page. 2022-09-17 15:00:34 +02:00
Kuba Szczodrzyński
a85f935eb4
[UI/Home] Improve displaying cancelled lessons in timetable card. 2022-09-17 14:58:54 +02:00
Antoni Czaplicki
bb44fa066c
[API/Vulcan] Migrate to new MessageBox API. (#134)
* Implement fetching vulcan messages from new api

* Bump kotlin version and fix timetable card lessons size display

* Revert formatting changes

* Revert disabling message composing

* Revert MultiDex changes and dependency upgrades

* Add missing MultiDex dependency, update Google Services

* Separate MessageBoxes sync, revert API data behavior changes

* Revert migrating MessageRecipient to Kotlin

* Use loginId from MessageBox address book

* Revert using compatible HTML mode in Vulcan

* Implement message meta and read status changing

* Always set attachment lists

* Fix setting tutor role description

* Implement sending messages

* Replace millis constant with WEEK

* Revert timetable changes

* Remove unused DataVulcan properties

* Ensure UUID-format recipient IDs

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2022-09-17 12:31:35 +02:00
Kuba Szczodrzyński
54a61c6254
[Gradle] Update dependencies, update target SDK to 33 2022-09-09 12:47:20 +02:00
Kuba Szczodrzyński
ac10874bf1
[4.11.6] Update build.gradle, signing and changelog. 2022-05-27 21:09:40 +02:00
B.O.S.S
fa55b4901a
[Messages/Librus] Disable text styling. (#130) 2022-05-27 18:55:24 +02:00
Kuba Szczodrzyński
86c41d9191
Merge branch 'develop' 2022-04-19 23:13:15 +02:00
Kuba Szczodrzyński
0f90430387
[4.11.5] Update build.gradle, signing and changelog. 2022-04-18 11:31:24 +02:00
Sylwester Zinkiewicz
745523c620
[UI] Fix touch events on swipe refresh pages (API 32+). (#129)
* [Hotfix] Fix touch events on swipe refresh pages (API 32)

* Add API SDK version check
2022-04-18 11:28:34 +02:00
Kuba Szczodrzyński
c1ef0e9d11
Merge branch 'develop' 2022-03-14 18:46:37 +01:00
Kuba Szczodrzyński
8911ce2bc1
[4.11.4] Update build.gradle, signing and changelog. 2022-03-14 17:45:11 +01:00
Kuba Szczodrzyński
2990fc5479
[Firebase] Disable notifications for past shared events. 2022-03-14 17:08:35 +01:00
Kuba Szczodrzyński
48b7adb564
[UI/Grades] Group unknown subjects without specified name. 2022-03-14 17:05:16 +01:00
Kuba Szczodrzyński
2e97467c57
Merge branch 'develop' 2022-02-21 22:12:46 +01:00
Kuba Szczodrzyński
f8ac9e793a
[4.11.3] Update build.gradle, signing and changelog. 2022-02-21 21:48:28 +01:00
Kuba Szczodrzyński
148597e578
[UI/Messages] Fix sending message not showing the message fragment. 2022-02-21 21:46:16 +01:00
Kuba Szczodrzyński
6c50a80b42
[UI/Timetable] Fix syncing a week not refreshing the current page. 2022-02-21 21:08:59 +01:00
Kuba Szczodrzyński
1bf0679e92
[App] Disable SSLProvider in Google Play builds. 2022-02-21 20:36:17 +01:00
Kuba Szczodrzyński
5b5dc5cade
[Gradle] Add non-Play flavor without self-updater. 2022-02-21 20:19:29 +01:00
Kuba Szczodrzyński
46de915965
Merge branch 'develop' 2022-02-05 21:11:40 +01:00
Kuba Szczodrzyński
98a89b1ca1
[4.11.2] Update build.gradle, signing and changelog. 2022-02-05 17:47:00 +01:00
Kuba Szczodrzyński
6d1e18cce2
[Strings] Update copyright dates. 2022-02-05 17:44:57 +01:00
Kuba Szczodrzyński
8fe0f88be4
[Strings] Fix a typo. 2022-02-05 17:39:40 +01:00
Kuba Szczodrzyński
aeed735521
[Mobidziennik] Fix syncing message lists. 2022-02-05 17:39:15 +01:00
Kuba Szczodrzyński
e314fafaff
[4.11.1] Update build.gradle, signing and changelog. 2022-01-14 15:23:31 +01:00
B.O.S.S
2ab0dd7546
[API/Librus] Revert getting time in teacher free days. (#124) 2021-12-16 12:23:33 +01:00
B.O.S.S
aa06868a4e
[API/Librus] Fix LibrusApiTeacherFreeDays. (#123)
* [API/Librus] Remove LibrusApiTeacherFreeDayTypes

* [API/Librus] Fix LibrusApiTeacherFreeDay

* [API/Librus] LibrusApiTeacherFreeDay: Clean up values of unused variables

* [API/Librus] LibrusApiTeacherFreeDay: Remove unnecessary variables

* [API/Librus] LibrusApiTeacherFreeDay: Assign null to 'name' object
2021-12-10 21:48:11 +01:00
Kuba Szczodrzyński
9a6d56ec77
Merge branch 'develop' 2021-11-01 14:00:30 +01:00
Kuba Szczodrzyński
2b104e6463
[4.11] Update build.gradle, signing and changelog. 2021-11-01 13:05:51 +01:00
Kuba Szczodrzyński
afb1863827
[Strings] Fix compilation problem. 2021-10-31 20:25:34 +01:00
Kuba Szczodrzyński
d8228748e4
[4.11-rc.3] Update build.gradle, signing and changelog. 2021-10-31 20:16:12 +01:00
Antoni Czaplicki
b0608c47c4
[Strings] Update English translation. (#117)
* Update translations

* Apply suggestions from code review

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update translations

* Update translations

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2021-10-31 20:15:24 +01:00
Kuba Szczodrzyński
dda0d88f19
[API/Vulcan] Fix Web login with multiple student IDs. 2021-10-31 18:19:18 +01:00
Antoni Czaplicki
a1b5560977
[API/Vulcan] Fix teachers endpoint last sync date. (#116) 2021-10-31 14:24:39 +01:00
Antoni Czaplicki
86f5811bda
[Login] Fix incorrect case mode validation. (#115) 2021-10-31 14:24:20 +01:00
Antoni Czaplicki
3f11e75985
[Lab] Add Open Chucker button. (#114) 2021-10-31 14:23:59 +01:00
Kuba Szczodrzyński
c39b5442c9
[API/Vulcan] Fix teacher list subjects retrieving. 2021-10-31 10:12:35 +01:00
Kuba Szczodrzyński
3b80adf355
[4.11-rc.2] Update build.gradle, signing and changelog. 2021-10-30 22:04:13 +02:00
Kuba Szczodrzyński
cae41d17b6
[Actions] Use Eclipse Temurin and gradle-build-action. 2021-10-30 22:02:59 +02:00
Kuba Szczodrzyński
519d75d9d9 [API/Vulcan] Force presence of a TeamClass. 2021-10-30 21:55:47 +02:00
Kuba Szczodrzyński
cb953ea8a8 [Config] Fix only notes card visible on new profiles. 2021-10-30 21:55:47 +02:00
Kuba Szczodrzyński
52968cafad [Proguard] Add a rule for Note. 2021-10-30 21:55:47 +02:00
Kuba Szczodrzyński
b7755dae96
[4.11-rc.1] Update build.gradle, signing and changelog. 2021-10-29 17:32:53 +02:00
Kuba Szczodrzyński
113ecc0ef1
[Gradle] Fix showing correct app version on debug builds. 2021-10-29 17:32:05 +02:00
Kuba Szczodrzyński
23bd9b8e05
[Strings] Update copyright dates. 2021-10-29 16:51:55 +02:00
Kuba Szczodrzyński
decfd2068a
[Signing] Fix incorrect version name for debug builds. 2021-10-29 16:48:53 +02:00
Kuba Szczodrzyński
a88cfb8ae3 [Notes] Hide notes button in day dialog. 2021-10-29 16:48:12 +02:00
Kuba Szczodrzyński
50cb0acc7d [Notes] Fix home card on click target fragment. 2021-10-29 16:48:12 +02:00
Kuba Szczodrzyński
27413a9745
[Messages] Fix HTML line break decoding and encoding. 2021-10-29 16:46:32 +02:00
Kuba Szczodrzyński
49a093201b
[Teachers] Make the list action buttons bigger. 2021-10-29 15:39:58 +02:00
Kuba Szczodrzyński
7c925cb88a
[UI] Add Notes feature. (#99)
* [DB] Add Room schema export location.

* [DB] Add Note entity and migration 96.

* Add correct database schema

* [Notes] Implement basic note list UI.

* [DB] Implement Noteable in Full entities. Add note relation and filtering.

* [Notes] Make Note searchable.

* [UI] Disable onClick listeners in adapters when null.

* [UI] Implement showing note list in dialog.

* [UI] Update note dialogs UI.

* [Notes] Add note details dialog.

* [Notes] Extract note dialogs header into a separate layout.

* [Notes] Add note editor dialog.

* [Notes] Show note icons in dialogs and lists.

* [Notes] Add showing substitute text.

* [Notes] Add replacing notes icon.

* [Notes] Add sharing and receiving notes.

* [Notes] Add notes list UI fragment.

* [Notes] Implement adding notes without owner.

* [Notes] Add color names.

* [Notes] Add notes card on home screen.

* [Notes] Add notes card migration.
2021-10-28 22:35:30 +02:00
Kuba Szczodrzyński
8745d7d526
[API/Szkolny] Fix user/device registration after API errors. (#111) 2021-10-28 12:11:00 +02:00
Antoni Czaplicki
e02246f97d
[UI] Add teacher list action buttons. (#105)
* Update code

TODO: Change icons color

* Change "More" icon, update teachers list

* Update code

* Update code

* Reformat code

* Apply suggestions from code review

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update code

* Update app/src/main/java/pl/szczodrzynski/edziennik/ui/teachers/TeachersListFragment.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update code

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2021-10-24 18:29:04 +02:00
Antoni Czaplicki
e629e03b33
[UI/Login] Implement login QR code scanning. (#100)
* Enable Vulcan QR login [WiP]

* [UI/Login] Implement login QR scanning.

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2021-10-23 17:23:42 +02:00
Kuba Szczodrzyński
e2ad3758e0
[Config] Fix notification filter setting not loading. 2021-10-22 17:03:20 +02:00
Kuba Szczodrzyński
f3e2d21b89
[UI] Refactor app dialogs. (#103)
* [UI] Add new base dialog classes.

* [UI] Migrate dialogs to the new base classes.
2021-10-22 16:57:10 +02:00
Kuba Szczodrzyński
fd62653d79
[Hotfix] Fix merge problems and migration 96 crashing. 2021-10-19 17:06:26 +02:00
Kuba Szczodrzyński
ca3e6f7fc9
Merge pull request #101 from szkolny-eu/feature/structure-refactor
Refactor the code structure
2021-10-19 16:26:26 +02:00
Kuba Szczodrzyński
d8abac1917
Merge branch 'develop' into feature/structure-refactor
# Conflicts:
#	app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt
#	app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt
#	app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Teacher.kt
#	app/src/main/java/pl/szczodrzynski/edziennik/ui/teachers/TeachersAdapter.kt
#	app/src/main/java/pl/szczodrzynski/edziennik/ui/teachers/TeachersListFragment.kt
2021-10-19 13:45:29 +02:00
Antoni Czaplicki
2807659da3
[UI] Add teachers list feature. (#94)
* Add teachers list feature

* Fix

* some fixes

* Auto stash before merge of "develop" and "origin/develop"

* Add teachers list feature

* Fix

* some fixes

* [UI] Fix updating badges crashing with expanded items.

* Add support for fetching teachers from vulcan, fix some code

* Update app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Teacher.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update some code

* Update app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Teacher.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeTeachers.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Teacher.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration96.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeTeachers.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Optimize code

* Fix loadTarget algorithm

* Apply suggestions from code review

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

* Update app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2021-10-18 23:46:39 +02:00
Kuba Szczodrzyński
7884bf4077
[Refactor] Cleanup most compilation warnings. 2021-10-17 23:02:27 +02:00
Kuba Szczodrzyński
59f80c049c
[Refactor] Split Extensions into separate files. 2021-10-17 22:18:00 +02:00
Kuba Szczodrzyński
f1e58db151
[Refactor] Flatten .ui package. 2021-10-17 21:02:35 +02:00
Kuba Szczodrzyński
74b766f18a
[UI] Add text styling to manual events. (#96)
* [UI] Move text styling outside of messages module.

* [UI] Add text styling to event manual dialog.

* [UI/Events] Implement showing HTML-formatted content.

* [UI] Fix searching in styled event topic. Create HtmlMode enum.

* [UI] Add HTML Simple mode to text styling manager. Fix CharSequence replacing.

* [Events] Disable self-shared event notifications.

* [UI] Fix simple HTML mode format. Fix HTML in notifications.

* [HTML] Replace usages of Html and HtmlCompat with BetterHtml.

* [Events] Fix editing self-added events from other devices.

* [Events] Implement receiving and fix showing HTML-formatted events.

* [UI/Events] Add observing changes in event details dialog.

* [Firebase] Disable self-shared event notifications.
2021-10-16 19:37:41 +02:00
Kuba Szczodrzyński
7e0f69d95d
[Gradle] Migrate JCenter dependencies to JitPack. (#97)
* [Gradle] Replace JCenter-based dependencies with JitPack.

* [API] Fix Jsoup usage after dependency update.
2021-10-15 22:37:46 +02:00
Kuba Szczodrzyński
fa318d4509
[UI] Update Iconics to remove the span workaround. 2021-10-13 19:23:17 +02:00
Kuba Szczodrzyński
63b74a9fda
[Mobidziennik] Add prefix and suffix for server name login field. 2021-10-11 20:23:57 +02:00
Kuba Szczodrzyński
1a543814f4
[UI] Implement homework searching. (#93)
* [Messages] Create message type checking methods.

* [UI] Refactor messages searching to a separate module.

* [Refactor] Move dialogs.event to modules package.

* [Refactor] Move classes from modules.messages to separate packages.

* [Homework] Implement searching homework lists.

* [Homework] Fix highlighting search query in addedBy text.

* [Homework] Workaround IconicsTextView discarding span data.

* [Messages] Make attachments searchable.

* [Events] Show icons for events with attachments.

* [Homework] Workaround IconicsTextView discarding span data, again.

* [Search] Fix serialization crashes with searchable models.

* [Messages] Fix searching in HTML body.
2021-10-10 19:21:50 +02:00
Kuba Szczodrzyński
50ae767fcd
[Messages] Add saving messages as draft. (#92)
* [Messages/Compose] Move original message handling code to MessageManager.

* [Messages/Compose] Add draft saving dialog on back button press.

* [Messages/Compose] Implement saving messages as draft.

* [Messages/Compose] Fix missing line breaks when saving/loading HTML.

* [Messages] Fix download button icon padding.

* [Messages] Fix showing correct message read date.

* [Messages] Improve (and fix) scrolling to previous list position.

* [Messages] Fix message body trimming.

* [Messages/Compose] Add draft-related bottom sheet items.

* [Refactor] Cleanup MainActivity code.

* [Messages/Compose] Set htmlCompatible to true by default.

* [Messages/Compose] Show confirmation dialog when navigating with unsaved changes.

* [Messages] Restore message body bottom padding.

* [Messages] Fix download button icon padding, again.
2021-10-09 22:48:41 +02:00
Kuba Szczodrzyński
44263ac95f
[Messages] Add support for starring messages. (#86)
* [UI/Messages] Add stars to message list layout.

* [Messages] Move text styling-related code to a manager.

* [Messages] Implement starring messages. Move more code to the manager. Update UI.

* [UI] Add padding to the no data text.

* [Messages] Fix checking sent message recipient read state.

* [Messages] Add star icon padding.
2021-10-08 21:43:11 +02:00
Kuba Szczodrzyński
a6aca42c8c
Merge pull request #91 from szkolny-eu/hotfix/messages
[UI] Various messages fixes.
2021-10-08 16:50:09 +02:00
Kuba Szczodrzyński
83daae46b8
[Messages] Fix multiplied recipients with more than one profile. 2021-10-07 11:57:23 +02:00
Kuba Szczodrzyński
6611fc5843
[Messages] Disable showing 0-byte attachment sizes. 2021-10-07 11:43:54 +02:00
Kuba Szczodrzyński
fe82c86c93
[Messages/Compose] Fix recipient adding dialog empty. 2021-10-07 11:28:56 +02:00
Kuba Szczodrzyński
692555732d
[Messages/Compose] Add text styling support. (#85)
* [UI/Messages] Add draft text styling support.

* [UI/Messages] Improve mid-word span styling. Restore subscript and superscript styles.

* [UI/Messages] Replace framework spans with custom classes on replying.

* [Messages/Compose] Move UI-related code to separate classes.

* [UI/Messages] Disable text style buttons when not in focus.

* [Messages/Compose] Disable text styling on Vulcan.

* [UI/Messages] Add hint toasts to text style toggles.

* [UI/Messages] Add button to clear text styling.

* [Messages/Compose] Fix XML formatting.
2021-10-05 20:28:29 +02:00
Kuba Szczodrzyński
d59286bb05
Merge pull request #84 from szkolny-eu/feature/mobidziennik-homework-attachments
[API/Mobidziennik] Fix showing homework attachments.
2021-10-03 16:02:58 +02:00
Kuba Szczodrzyński
91cfa7e945
[API/Mobidziennik] Implement syncing extra lessons. (#83) 2021-10-03 16:02:36 +02:00
Kuba Szczodrzyński
2d277e80cc
[UI] Restore showing message attachment size. 2021-10-02 16:15:32 +02:00
Kuba Szczodrzyński
3cdca5eb33
[API/Mobidziennik] Fix showing homework attachments. 2021-10-02 16:15:02 +02:00
Kuba Szczodrzyński
591abb4bb8
Merge pull request #81 from szkolny-eu/hotfix/mobidziennik-event-description
[API/Mobidziennik] Implement getting full event description.
2021-10-01 21:18:52 +02:00
Kuba Szczodrzyński
0b4421c7a7
[API/Mobidziennik] Implement getting full event description. 2021-10-01 21:06:48 +02:00
Kuba Szczodrzyński
325efd8b14
[Data] Refactor checking homework event type. 2021-10-01 19:46:11 +02:00
Antoni Czaplicki
959168771b
[UI] Add secret features. (#73)
* Add easter egg

* Remove big file

* Reformat code

* Remove unneded blank lines, optimize some code

* Fix small issue

* Update easter egg logic

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2021-10-01 18:40:44 +02:00
Kuba Szczodrzyński
41217190bb
Merge branch 'develop' 2021-09-23 22:09:20 +02:00
Kuba Szczodrzyński
18c306b9ea
[4.10] Update build.gradle, signing and changelog. 2021-09-22 13:55:01 +02:00
Kuba Szczodrzyński
c6be1a7954
[Strings] Update copyright dates. 2021-09-22 13:52:06 +02:00
Antoni Czaplicki
e8e9f04050
[UI] Show attendance info in timetable and lesson dialog. (#74)
* Show attendance in timetable view

* Optimize code and UX

* Update some code

* Update attendance layout

* Fix timetable view

* Bump iconics version

* Change umbrella icon

* Update app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/timetable/TimetableDayFragment.kt

* Update app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/timetable/TimetableDayFragment.kt

* Update app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/timetable/TimetableDayFragment.kt

* Update app/src/main/java/pl/szczodrzynski/edziennik/ui/modules/timetable/TimetableDayFragment.kt

* Update lesson cell margins

* Add attendance info in lesson dialog

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2021-09-22 00:03:31 +02:00
Kuba Szczodrzyński
3700a71c39
Merge pull request #75 from szkolny-eu/feature/availability-refactor
[API] Refactor register availability checking module.
2021-09-18 21:13:01 +02:00
Kuba Szczodrzyński
60f0628f5e
[Lab] Fix disabling Chucker and Dev Mode. Add new Lab options. 2021-09-18 16:37:24 +02:00
Kuba Szczodrzyński
80dcd9aa69
[API] Refactor register availability checking module. 2021-09-18 16:36:17 +02:00
Kuba Szczodrzyński
d60e622626
Merge branch 'develop' 2021-09-11 00:31:21 +02:00
Kuba Szczodrzyński
91b685576b
[4.9] Update build.gradle, signing and changelog. 2021-09-10 23:54:09 +02:00
Antoni Czaplicki
2e3e3dcf3c
[Lab] Add button to disable devmode and Chucker toggle. (#70)
* Add option to disable/enable chucker and option to disable dev mode from lab page

* Change "chucker" to "enableChucker"

* Update App.kt
2021-09-10 23:47:46 +02:00
Kuba Szczodrzyński
118f5e1794
[API/Vulcan] Fix missing attendance. (#72) 2021-09-10 23:45:29 +02:00
Kuba Szczodrzyński
e902352a4b
Merge pull request #69 from szkolny-eu/hotfix/message-attachments
[Messages] Fix downloading and displaying attachment on API 30+.
2021-09-10 23:44:26 +02:00
Kuba Szczodrzyński
2f7fcb6dc3
[API/Mobidziennik] Fix Web timetable scrapper. 2021-09-10 17:41:39 +02:00
Kuba Szczodrzyński
21ddb9d706
[Git] Update .gitignore for .idea. 2021-09-10 17:20:12 +02:00
Kuba Szczodrzyński
efa63452e7
[App] Fix Apply Changes not working due to manifest changes. 2021-09-10 17:17:31 +02:00
Kuba Szczodrzyński
83f84de019
[UI] Fix attachments view cut off on API 30+. 2021-09-10 17:11:21 +02:00
Kuba Szczodrzyński
b9aca981e5
[App] Change app-wide storage dir to Download subfolder. 2021-09-10 16:56:52 +02:00
Antoni Czaplicki
5913707519
[UI] Use number keyboard in the PIN field in Vulcan. (#68) 2021-09-10 06:49:17 +02:00
Kuba Szczodrzyński
dd6a2c0979
[API/Mobidziennik] Add Web timetable scrapper. (#66)
* [API] Add utils for getting teacher, subject and team by name.

* [API/Mobidziennik] Add Web timetable scrapper.

* [API/Mobidziennik] Add missing Regexes.
2021-09-09 23:14:24 +02:00
Kuba Szczodrzyński
9fdee6e0c7
[UI] Fix restoring header background dialog. (#65) 2021-09-09 23:14:07 +02:00
Czapla
b31bf5c1ab
[API/Vulcan] Fix missing timetable entries. (#67) 2021-09-09 23:13:39 +02:00
Czapla
cf4906f2f4
[API/Vulcan] Fix sending messages. (#64)
* Fix sending message

* Add checking for address name/hash when sending message.

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2021-09-09 18:52:04 +02:00
Kuba Szczodrzyński
680a5dfea3
[Mobidziennik] Fix missing linebreaks when sending messages. (#63) 2021-09-08 22:49:14 +02:00
Kuba Szczodrzyński
c1062cd7ed
[UI] Update drawer header background. (#62) 2021-09-08 22:49:00 +02:00
Kuba Szczodrzyński
8edc581f0b
[UI] Fix multiplicated day dialog in Agenda. (#61) 2021-09-08 22:48:48 +02:00
Kuba Szczodrzyński
ea9d801d08
[DB] Workaround missing event types after profile archiving. (#60) 2021-09-08 22:48:35 +02:00
Kuba Szczodrzyński
8f72e11d0c
[UI] Center "no data" text view. (#59) 2021-09-08 22:48:21 +02:00
Tomasz F
452271e8c0
[UI] Add list of contributors in Settings. (#15)
* Contributors item in settings

* Move contributors activity to settings package && actualize branch

* Update AndroidManifest.xml

* Getting contributors from github api

* Cleaning code

* Fetching data from szkolny api, displaying content, a lot of changes :D

* Strings

* Remove androidx legacy library

* Revert manifest changes

* Remove logging in SzkolnyApi

* Fix app name spelling

* Revert changes to dimens.xml

* Refactor contributors code

* Revert changes to dimens.xml

Again

* Revert changes to build.gradle

* Revert changes to gradle-wrapper.properties

* Revert changes to gradle.properties

* Make user name nullable

* Add caching, refactor plurals, add progress bar

* Update contributors UI

* Shorten activity name in manifest

* Remove unneeded line break

* Remove fragment_translators.xml

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2021-09-08 19:11:14 +02:00
doteq
7b4effe889
[UI] Fix block timetable export. (#57)
* Use MediaStore on SDK level >= 29 for timetable export

* Fix imports

* Use subdirectory in the Photos folder

* Use MediaStore for all API levels

* Remove not-null assertion

* Remove unnecessary outputStream close.

* Use File constructor for directory path

* Use File(File, String) constructor

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2021-09-07 22:11:29 +02:00
Kuba Szczodrzyński
e2bf48d1b6
[Actions] Use JDK 11. 2021-09-02 18:27:51 +02:00
Kuba Szczodrzyński
c88056ddb9
[Gradle] Update library dependencies. 2021-09-02 17:49:01 +02:00
Kuba Szczodrzyński
96dbb0a057
[Gradle] Update Kotlin to v1.5.20. 2021-09-02 17:48:02 +02:00
Kuba Szczodrzyński
288c80ea26
[Gradle] Update wrapper and AGP to match AS 2020.3.1. 2021-09-02 17:40:34 +02:00
Kuba Szczodrzyński
5a217aca01
[4.8.2] Update build.gradle, signing and changelog. 2021-06-15 18:13:18 +02:00
doteq
4bed62aa6f
[UI] Fix timetable crash when syncing (#54)
* Fix removeView

* Use removeView() instead of removeAllViews()

* Remove dayView from layout file
2021-06-11 22:06:07 +02:00
arin
a4d604e146
[API/Librus] Update JST Client ID (#53)
@6Arin9
2021-06-11 00:05:54 +02:00
Kuba Szczodrzyński
ae4405ef78
[4.8.1] Update build.gradle, signing and changelog. 2021-06-06 16:50:04 +02:00
Kuba Szczodrzyński
71ca51e813
[Strings] Update copyright dates. 2021-06-06 16:47:10 +02:00
B.O.S.S
1bf07d736f
[API/Librus] Update client ID (#51)
@BxOxSxS
2021-06-02 22:59:57 +02:00
Kuba Szczodrzyński
c011f550bb
Merge branch 'develop' 2021-05-26 22:32:14 +02:00
Kuba Szczodrzyński
909899612e
Revert "[Actions] Change Firebase token to service account file."
This reverts commit 4184fbb2cd7bde19fc0447057b0e4373db51b03f.
2021-05-26 21:51:52 +02:00
Kuba Szczodrzyński
4184fbb2cd
[Actions] Change Firebase token to service account file. 2021-05-26 20:44:48 +02:00
Kuba Szczodrzyński
75010c0771
[4.8] Update build.gradle, signing and changelog. 2021-05-26 20:01:08 +02:00
Kuba Szczodrzyński
5562498e84
Merge pull request #48 from szkolny-eu/feature/notification-long-text
[Notifications] Add long description text
2021-05-26 20:00:08 +02:00
Kuba Szczodrzyński
c2d0940a80
Merge pull request #46 from szkolny-eu/hotfix/mobidziennik-message-list
[Mobidziennik] Fix sending messages returning a not found error
2021-05-26 19:59:49 +02:00
Kuba Szczodrzyński
baa98f25c5
[UI] Fix easter egg prize receiving. 2021-05-26 19:09:10 +02:00
Kuba Szczodrzyński
26645ee83c
[DB] Add migration 93. 2021-05-26 19:00:24 +02:00
Kuba Szczodrzyński
85d74bec1c
[UI] Add long text for notification descriptions. 2021-05-26 19:00:09 +02:00
Kuba Szczodrzyński
fd0fc652a3
Merge pull request #47 from szkolny-eu/feature/elearning-events
[Agenda] Add e-learning event type.
2021-05-26 18:52:41 +02:00
Kuba Szczodrzyński
c85dac2e4d
[Strings] Update copyright dates. Fix event mark as done translation. 2021-05-26 18:00:37 +02:00
Kuba Szczodrzyński
c855f08f9c
[API/Mobidziennik] Update messages search query to contain student name. 2021-05-26 17:46:03 +02:00
Kuba Szczodrzyński
a31c68e87a
[Agenda] Add e-learning event type and DB migration. 2021-04-19 14:18:28 +02:00
Kuba Szczodrzyński
99021f6b3a
Merge pull request #39 from szkolny-eu/feature/messages-fixes
[Messages] UI updates and fixes
2021-04-14 22:45:44 +02:00
Kuba Szczodrzyński
e2b47db3fd
Merge branch 'develop' into feature/messages-fixes 2021-04-14 22:42:54 +02:00
Kuba Szczodrzyński
8609956ae7
[UI/Timetable] Add current time marker line. (#30) 2021-04-14 22:41:06 +02:00
Kuba Szczodrzyński
e25ca930e0
Merge pull request #28 from szkolny-eu/feature/agenda-updates
[UI] Agenda updates
2021-04-14 22:40:27 +02:00
Kuba Szczodrzyński
47ec1899a1
[UI/Messages] Add greeting text configuration dialog. 2021-04-14 21:08:27 +02:00
Kuba Szczodrzyński
1e8fb6a9ae
[UI/Messages] Restore search string after closing a message. Add message counter. 2021-04-14 20:19:04 +02:00
Kuba Szczodrzyński
02eb5b7ee4
[UI/Agenda] Disable not available config options. 2021-04-14 17:03:44 +02:00
Kuba Szczodrzyński
776806caef
[UI/Agenda] Update DayDialog for showing event group. 2021-04-14 17:03:30 +02:00
Kuba Szczodrzyński
755b846b50
[UI/Agenda] Move common code to EventManager. 2021-04-14 16:34:31 +02:00
Kuba Szczodrzyński
73f3ba17de
Merge branch 'develop' into feature/agenda-updates 2021-04-14 14:57:00 +02:00
Kuba Szczodrzyński
07fb1e0e12
[UI] Refactor dropdown inputs code. 2021-04-14 11:59:58 +02:00
Kuba Szczodrzyński
297867cbf3
[UI] Add event type colors to type dropdown. 2021-04-14 11:21:45 +02:00
Kuba Szczodrzyński
db598af28a
[UI] Add legend in event details dialog. 2021-04-14 10:20:00 +02:00
Kuba Szczodrzyński
ec765c9070
[UI] Fix updating event dialog when editing or removing. 2021-04-14 10:16:22 +02:00
Kuba Szczodrzyński
5eaa754401
[UI] Add icons for done and manual events. 2021-04-13 20:50:51 +02:00
Mateusz Idziejczak
b48b5589f4
[UI] Add eggfall. (#22)
* Add eggfall

* Add egg.png

* Add more eggs

* [Gradle] Update android-snowfall to a fork.

* [Eggfall] Add randomizing egg images.

* [UI] Restore snowfall icon. Add separate eggfall setting.

* [Eggfall] Limit eggfall to near-easter date only.

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2021-04-12 17:18:53 +02:00
Mateusz Idziejczak
634ef16bc5
[UI] Add notification icons. (#23)
* Add notification icons

* Change color of icons

* [Notifications] Update icon colors.

* [Notifications] Update lucky number icon.

* Add icons to Notifications List Fragment

* Update notifications_list_item.xml

* Move the gravity to the LinearLayout

* add paddingLeft

* Change IconicsImageView to View.

* Rearrange XML attributes.

Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2021-04-12 17:17:52 +02:00
Kuba Szczodrzyński
ccf0bdaf05
[4.7.1] Update build.gradle, signing and changelog. 2021-04-12 14:35:43 +02:00
Kuba Szczodrzyński
4647da7803
[IDE] Fix XML tags reordering when formatting. 2021-04-12 14:27:51 +02:00
Kuba Szczodrzyński
613f271c4e
Merge pull request #29 from szkolny-eu/hotfix/flavor-aware-availability
[App] Make registerAvailability flavor-aware.
2021-04-12 14:25:49 +02:00
Kuba Szczodrzyński
8b1529f240
[App] Make registerAvailability flavor-aware. 2021-04-12 13:13:10 +02:00
Mateusz Idziejczak
3eb09033bf
[Strings] Update copyright date (#26)
* Update copyright date

* Update copyright in other languages
2021-04-12 12:26:52 +02:00
Kuba Szczodrzyński
12619f6bde
[Agenda] Update scroll listeners code. 2021-04-12 11:50:54 +02:00
Kuba Szczodrzyński
f5ceaa9afe
[Agenda] Add unread badges to events and groups. 2021-04-11 22:08:33 +02:00
Kuba Szczodrzyński
777ae945e0
[Agenda] Implement grouping events by type. 2021-04-10 22:26:43 +02:00
Kuba Szczodrzyński
3eae8fb58b
[Agenda] Add config dialog. Add compact mode. 2021-04-10 20:51:29 +02:00
Kuba Szczodrzyński
b14ef5cd78
[Agenda] Limit event text to 3 lines max. 2021-04-10 18:49:24 +02:00
Kuba Szczodrzyński
98bf4f3bdc
[Agenda] Implement updating event list when changed. 2021-04-09 21:52:04 +02:00
Kuba Szczodrzyński
2d6cf50ca7
[Agenda] Refactor agenda UI code. 2021-04-09 15:32:44 +02:00
Kuba Szczodrzyński
95baf9fb9c
[UI/Dialogs] Add context menu for teachers' names. (#21)
* [UI] Rearrange BetterLink code.

* [UI/Dialogs] Add context menu for teachers' names.

* [Proguard] Update rules for BetterLink reflection.

* [Proguard] Fix rules for BetterLink reflection.
2021-04-08 00:39:59 +02:00
Kuba Szczodrzyński
61b7410bd0
Merge branch 'develop' 2021-04-07 18:43:05 +02:00
Kuba Szczodrzyński
dd0972b528
[Actions] Fix publishing in Google Play release workflow. 2021-04-07 18:42:50 +02:00
Kuba Szczodrzyński
d5c10fbd2b
Merge branch 'develop' 2021-04-07 18:31:03 +02:00
Kuba Szczodrzyński
d17f6297d3
[4.7] Update build.gradle, signing and changelog. 2021-04-07 18:22:54 +02:00
Kuba Szczodrzyński
3ae785a45c
[Actions] Limit Google Play changelog to 500 chars. 2021-04-06 21:50:51 +02:00
Kuba Szczodrzyński
dd254d4bec
[Actions] Fix nightly workflow changes detection. 2021-04-06 18:20:09 +02:00
Kuba Szczodrzyński
e04bd75f1f
[UI/Login] Add version information in login chooser. 2021-04-06 18:17:24 +02:00
Kuba Szczodrzyński
929ccb53db
[Strings] Fix invalid format exception in attendance. 2021-04-05 21:59:23 +02:00
Kuba Szczodrzyński
72319a4613
[API] Disable API caching for signed builds. 2021-04-05 21:52:38 +02:00
Kuba Szczodrzyński
fd31cafd8f Merge branch 'develop' 2021-02-26 23:45:28 +01:00
Kuba Szczodrzyński
df7044cc64 Merge branch 'develop' 2021-02-22 00:18:20 +01:00
Kuba Szczodrzyński
0a127ac6ee Merge branch 'develop' 2020-10-17 00:22:35 +02:00
Kuba Szczodrzyński
6b75715e87 Merge branch 'develop' 2020-09-05 19:39:17 +02:00
Kuba Szczodrzyński
b9e0d91220 Merge branch 'develop' 2020-09-04 15:44:55 +02:00
Kuba Szczodrzyński
0d5bb331f3 Merge branch 'develop' 2020-09-03 14:09:55 +02:00
Kuba Szczodrzyński
0e52fb7386 Merge branch 'develop' 2020-08-29 00:01:16 +02:00
Kuba Szczodrzyński
339bb9c8f6 Merge branch 'develop' 2020-08-28 15:32:36 +02:00
Kuba Szczodrzyński
b44fa6b2e4 Merge branch 'develop' 2020-05-22 14:49:24 +02:00
Kuba Szczodrzyński
9cc98fcf08 Merge branch 'develop' 2020-05-17 17:52:28 +02:00
Kuba Szczodrzyński
67b794ce2b Merge branch 'develop' 2020-04-20 19:13:49 +02:00
Kuba Szczodrzyński
31b502bb6c Merge branch 'develop' 2019-10-31 17:58:02 +01:00
Kuba Szczodrzyński
7686c451e6 Merge branch 'develop' 2019-10-09 19:16:15 +02:00
Kuba Szczodrzyński
04f3ce4d64 Merge branch 'develop' 2019-10-02 20:44:19 +02:00
Kuba Szczodrzyński
3a6087e421 Merge branch 'hotfix-3.0.3' 2019-09-26 22:36:28 +02:00
1209 changed files with 53226 additions and 26773 deletions

View File

@ -23,8 +23,6 @@ def get_password(
auth_plugin="mysql_native_password",
)
print(f"Generating passwords for version {version_name} ({version_code})")
password = base64.b64encode(secrets.token_bytes(16)).decode()
iv = secrets.token_bytes(16)

View File

@ -102,7 +102,9 @@ def get_commit_log(project_dir: str, format: str, max_lines: int = None) -> str:
)
log = subprocess.run(
args=f"git log {last_tag}..HEAD --format=%an%x00%at%x00%h%x00%s%x00%D".split(" "),
args=f"git log {last_tag}..HEAD --format=%an%x00%at%x00%h%x00%s%x00%D".split(
" "
),
cwd=project_dir,
stdout=subprocess.PIPE,
)

View File

@ -1,10 +1,7 @@
import json
import os
import re
import sys
from datetime import datetime, timedelta
import requests
from zoneinfo import ZoneInfo
from _utils import (
get_commit_log,
@ -18,38 +15,20 @@ if __name__ == "__main__":
print("usage: bump_nightly.py <project dir>")
exit(-1)
repo = os.getenv("GITHUB_REPOSITORY")
sha = os.getenv("GITHUB_SHA")
if not repo or not sha:
print("Missing GitHub environment variables.")
exit(-1)
with requests.get(
f"https://api.github.com/repos/{repo}/actions/runs?per_page=1&status=success"
) as r:
data = json.loads(r.text)
runs = [run for run in data["workflow_runs"] if run["head_sha"] == sha]
if runs:
print("::set-output name=hasNewChanges::false")
exit(0)
print("::set-output name=hasNewChanges::true")
project_dir = get_project_dir()
(version_code, version_name) = read_gradle_version(project_dir)
version_name = version_name.split("+")[0]
date = datetime.now()
date = datetime.now(tz=ZoneInfo("Europe/Warsaw"))
if date.hour > 6:
version_name += "+daily." + date.strftime("%Y%m%d-%H%M")
else:
date -= timedelta(days=1)
version_name += "+nightly." + date.strftime("%Y%m%d")
print("::set-output name=appVersionName::" + version_name)
print("::set-output name=appVersionCode::" + str(version_code))
print("appVersionName=" + version_name)
print("appVersionCode=" + str(version_code))
write_gradle_version(project_dir, version_code, version_name)

23
.github/utils/check_nightly.py vendored Normal file
View File

@ -0,0 +1,23 @@
import json
import os
import requests
if __name__ == "__main__":
repo = os.getenv("GITHUB_REPOSITORY")
sha = os.getenv("GITHUB_SHA")
if not repo or not sha:
print("Missing GitHub environment variables.")
exit(-1)
with requests.get(
f"https://api.github.com/repos/{repo}/actions/runs?per_page=5&status=success"
) as r:
data = json.loads(r.text)
runs = [run for run in data["workflow_runs"] if run["head_sha"] == sha]
if runs:
print("hasNewChanges=false")
exit(0)
print("hasNewChanges=true")

View File

@ -12,48 +12,60 @@ if __name__ == "__main__":
(version_code, version_name) = read_gradle_version(project_dir)
print("::set-output name=appVersionName::" + version_name)
print("::set-output name=appVersionCode::" + str(version_code))
print("appVersionName=" + version_name)
print("appVersionCode=" + str(version_code))
dir = f"{project_dir}/app/release/whatsnew-{version_name}/"
os.makedirs(dir, exist_ok=True)
print("::set-output name=changelogDir::" + dir)
print("changelogDir=" + dir)
(title, changelog) = get_changelog(project_dir, format="plain")
with open(dir + "whatsnew-pl-PL", "w", encoding="utf-8") as f:
f.write(changelog)
print("::set-output name=changelogPlainFile::" + dir + "whatsnew-pl-PL")
with open(dir + "whatsnew-titled.txt", "w", encoding="utf-8") as f:
# plain text changelog - Firebase App Distribution
with open(dir + "whatsnew_titled.txt", "w", encoding="utf-8") as f:
f.write(title)
f.write("\n")
f.write(changelog)
print("::set-output name=changelogPlainTitledFile::" + dir + "whatsnew-titled.txt")
print("changelogPlainTitledFile=" + dir + "whatsnew_titled.txt")
print("::set-output name=changelogTitle::" + title)
print("changelogTitle=" + title)
# plain text changelog, max 500 chars - Google Play
with open(dir + "whatsnew-pl-PL", "w", encoding="utf-8") as f:
changelog_lines = changelog.split("\n")
changelog = ""
for line in changelog_lines:
if len(changelog) + len(line) < 500:
changelog += "\n" + line
changelog = changelog.strip()
f.write(changelog)
print("changelogPlainFile=" + dir + "whatsnew-pl-PL")
# markdown changelog - Discord webhook
(_, changelog) = get_changelog(project_dir, format="markdown")
with open(dir + "whatsnew.md", "w", encoding="utf-8") as f:
f.write(changelog)
print("::set-output name=changelogMarkdownFile::" + dir + "whatsnew.md")
print("changelogMarkdownFile=" + dir + "whatsnew.md")
# html changelog - version info in DB
(_, changelog) = get_changelog(project_dir, format="html")
with open(dir + "whatsnew.html", "w", encoding="utf-8") as f:
f.write(changelog)
print("::set-output name=changelogHtmlFile::" + dir + "whatsnew.html")
print("changelogHtmlFile=" + dir + "whatsnew.html")
changelog = get_commit_log(project_dir, format="plain", max_lines=10)
with open(dir + "commit_log.txt", "w", encoding="utf-8") as f:
f.write(changelog)
print("::set-output name=commitLogPlainFile::" + dir + "commit_log.txt")
print("commitLogPlainFile=" + dir + "commit_log.txt")
changelog = get_commit_log(project_dir, format="markdown", max_lines=10)
with open(dir + "commit_log.md", "w", encoding="utf-8") as f:
f.write(changelog)
print("::set-output name=commitLogMarkdownFile::" + dir + "commit_log.md")
print("commitLogMarkdownFile=" + dir + "commit_log.md")
changelog = get_commit_log(project_dir, format="html", max_lines=10)
with open(dir + "commit_log.html", "w", encoding="utf-8") as f:
f.write(changelog)
print("::set-output name=commitLogHtmlFile::" + dir + "commit_log.html")
print("commitLogHtmlFile=" + dir + "commit_log.html")

View File

@ -13,7 +13,7 @@ if __name__ == "__main__":
files = glob.glob(f"{project_dir}/app/release/*.*")
for file in files:
file_relative = file.replace(os.getenv("GITHUB_WORKSPACE") + "/", "")
file_relative = file.replace(project_dir + "/", "")
if "-aligned.apk" in file:
os.unlink(file)
elif "-signed.apk" in file:
@ -22,5 +22,5 @@ if __name__ == "__main__":
os.unlink(new_file)
os.rename(file, new_file)
elif ".apk" in file or ".aab" in file:
print("::set-output name=signedReleaseFile::" + file)
print("::set-output name=signedReleaseFileRelative::" + file_relative)
print("signedReleaseFile=" + file)
print("signedReleaseFileRelative=" + file_relative)

View File

@ -3,6 +3,7 @@ import os
import sys
from datetime import datetime
from time import time
from zoneinfo import ZoneInfo
import mysql.connector as mysql
from dotenv import load_dotenv
@ -59,12 +60,22 @@ def save_version(
build_date = int(os.stat(file).st_mtime)
bundle_name_play = output_aab_play
build_date = datetime.fromtimestamp(build_date).strftime("%Y-%m-%d %H:%M:%S")
build_date = datetime.fromtimestamp(
build_date,
tz=ZoneInfo("Europe/Warsaw"),
).strftime("%Y-%m-%d %H:%M:%S")
if build_type in ["nightly", "daily"]:
download_url = apk_server_nightly + apk_name if apk_name else None
else:
download_url = apk_server_release + apk_name if apk_name else None
# download_url = apk_server_release + apk_name if apk_name else None
download_url = (
f"https://github.com/szkolny-eu/szkolny-android/releases/download/v{version_name}/{apk_name}"
if apk_name
else None
)
if download_url:
print("downloadUrl=" + download_url)
cols = [
"versionCode",
@ -119,4 +130,12 @@ if __name__ == "__main__":
APK_SERVER_RELEASE = os.getenv("APK_SERVER_RELEASE")
APK_SERVER_NIGHTLY = os.getenv("APK_SERVER_NIGHTLY")
save_version(project_dir, DB_HOST, DB_USER, DB_PASS, DB_NAME, APK_SERVER_RELEASE, APK_SERVER_NIGHTLY)
save_version(
project_dir,
DB_HOST,
DB_USER,
DB_PASS,
DB_NAME,
APK_SERVER_RELEASE,
APK_SERVER_NIGHTLY,
)

View File

@ -31,8 +31,6 @@ def sign(
SIGNING_FORMAT = "$param1.{}.$param2"
CPP_FORMAT = "/*{}*/\nstatic toys AES_IV[16] = {{\n\t{} }};"
print(f"Writing passwords for version {version_name} ({version_code})")
iv_hex = " ".join(["{:02x}".format(x) for x in iv])
iv_cpp = ", ".join(["0x{:02x}".format(x) for x in iv])
@ -71,8 +69,8 @@ if __name__ == "__main__":
version_name, version_code, DB_HOST, DB_USER, DB_PASS, DB_NAME
)
print("::set-output name=appVersionName::" + version_name)
print("::set-output name=appVersionCode::" + str(version_code))
print("appVersionName=" + version_name)
print("appVersionCode=" + str(version_code))
sign(
project_dir,

View File

@ -1,6 +1,7 @@
import os
import sys
from datetime import datetime
from zoneinfo import ZoneInfo
import requests
from dotenv import load_dotenv
@ -11,8 +12,7 @@ from _utils import get_changelog, get_commit_log, get_project_dir, read_gradle_v
def post_webhook(
project_dir: str,
apk_file: str,
apk_server_release: str,
apk_server_nightly: str,
download_url: str,
webhook_release: str,
webhook_testing: str,
):
@ -25,16 +25,13 @@ def post_webhook(
testing = ["dev", "beta", "nightly", "daily"]
testing = build_type in testing
apk_name = os.path.basename(apk_file)
if build_type in ["nightly", "daily"]:
download_url = apk_server_nightly + apk_name
else:
download_url = apk_server_release + apk_name
if testing:
build_date = int(os.stat(apk_file).st_mtime)
if build_date:
build_date = datetime.fromtimestamp(build_date).strftime("%Y-%m-%d %H:%M")
build_date = datetime.fromtimestamp(
build_date,
tz=ZoneInfo("Europe/Warsaw"),
).strftime("%Y-%m-%d %H:%M")
# untagged release, get commit log
if build_type in ["nightly", "daily"]:
@ -48,13 +45,17 @@ def post_webhook(
requests.post(url=webhook_testing, json=webhook)
else:
changelog = get_changelog(project_dir, format="markdown")
webhook = get_webhook_release(changelog, download_url)
webhook = get_webhook_release(version_name, changelog, download_url)
requests.post(url=webhook_release, json=webhook)
def get_webhook_release(changelog: str, download_url: str):
def get_webhook_release(version_name: str, changelog: str, download_url: str):
(title, content) = changelog
return {"content": f"__**{title}**__\n{content}\n{download_url}"}
return {
"content": (
f"__**{title}**__\n{content}\n[Szkolny.eu {version_name}]({download_url})"
),
}
def get_webhook_testing(
@ -73,9 +74,11 @@ def get_webhook_testing(
"fields": [
{
"name": f"Wersja `{version_name}`",
"value": f"[Pobierz .APK]({download_url})"
if download_url
else "*Pobieranie niedostępne*",
"value": (
f"[Pobierz .APK]({download_url})"
if download_url
else "*Pobieranie niedostępne*"
),
"inline": False,
},
{
@ -103,16 +106,14 @@ if __name__ == "__main__":
load_dotenv()
APK_FILE = os.getenv("APK_FILE")
APK_SERVER_RELEASE = os.getenv("APK_SERVER_RELEASE")
APK_SERVER_NIGHTLY = os.getenv("APK_SERVER_NIGHTLY")
DOWNLOAD_URL = os.getenv("DOWNLOAD_URL")
WEBHOOK_RELEASE = os.getenv("WEBHOOK_RELEASE")
WEBHOOK_TESTING = os.getenv("WEBHOOK_TESTING")
post_webhook(
project_dir,
APK_FILE,
APK_SERVER_RELEASE,
APK_SERVER_NIGHTLY,
DOWNLOAD_URL,
WEBHOOK_RELEASE,
WEBHOOK_TESTING,
)

195
.github/workflows/_build.yml vendored Normal file
View File

@ -0,0 +1,195 @@
name: "[reusable] Szkolny.eu Build"
on:
workflow_call:
inputs:
nightly:
type: boolean
default: false
build-apk:
type: boolean
default: false
build-aab:
type: boolean
default: false
release-ssh:
type: boolean
default: false
release-github:
type: boolean
default: false
release-firebase:
type: boolean
default: false
release-google-play:
type: boolean
default: false
release-discord:
type: boolean
default: false
secrets:
APK_SERVER_NIGHTLY:
APK_SERVER_RELEASE:
DB_HOST:
DB_NAME:
DB_PASS:
DB_USER:
FIREBASE_APP_ID:
FIREBASE_GROUPS_NIGHTLY:
FIREBASE_GROUPS_RELEASE:
FIREBASE_SERVICE_ACCOUNT_JSON:
KEY_ALIAS_PASSWORD:
KEY_ALIAS:
KEY_STORE_PASSWORD:
KEY_STORE:
PLAY_RELEASE_TRACK:
PLAY_SERVICE_ACCOUNT_JSON:
SSH_IP:
SSH_KEY:
SSH_PATH_NIGHTLY:
SSH_PATH_RELEASE:
SSH_USERNAME:
WEBHOOK_RELEASE:
WEBHOOK_TESTING:
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
clean: false
- name: Setup JDK 17
uses: actions/setup-java@v3
with:
distribution: "temurin"
java-version: "17"
- name: Setup Python
uses: actions/setup-python@v4
- name: Install Python packages
uses: BSFishy/pip-action@v1
with:
packages: |
python-dotenv
pycryptodome
mysql-connector-python
requests
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Bump nightly version
if: ${{ inputs.nightly }}
run: python $GITHUB_WORKSPACE/.github/utils/bump_nightly.py $GITHUB_WORKSPACE >> $GITHUB_OUTPUT
- name: Write signing passwords and keystore
env:
DB_HOST: ${{ secrets.DB_HOST }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASS: ${{ secrets.DB_PASS }}
DB_NAME: ${{ secrets.DB_NAME }}
KEY_STORE: ${{ secrets.KEY_STORE }}
run: |
python $GITHUB_WORKSPACE/.github/utils/sign.py $GITHUB_WORKSPACE commit >> $GITHUB_OUTPUT
echo $KEY_STORE | base64 --decode > keystore.jks
- name: Clean build artifacts
run: |
rm -rf app/release/*
rm -rf app/build/outputs/apk/*
rm -rf app/build/outputs/bundle/*
- name: Build app with Gradle
if: ${{ inputs.build-apk || inputs.build-aab }}
run: |
chmod +x ./gradlew
./gradlew \
${{ inputs.build-apk && 'assembleOfficialRelease' || '' }} \
${{ inputs.build-aab && 'bundlePlayRelease' || '' }} \
-P android.injected.signing.store.file=${{ github.workspace }}/keystore.jks \
-P android.injected.signing.store.password=${{ secrets.KEY_STORE_PASSWORD }} \
-P android.injected.signing.key.alias=${{ secrets.KEY_ALIAS }} \
-P android.injected.signing.key.password=${{ secrets.KEY_ALIAS_PASSWORD }}
- name: Upload release to server
if: ${{ inputs.release-ssh }}
uses: easingthemes/ssh-deploy@v2.1.6
env:
REMOTE_HOST: ${{ secrets.SSH_IP }}
REMOTE_USER: ${{ secrets.SSH_USERNAME }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY }}
SOURCE: app/release/
TARGET: ${{ inputs.nightly && secrets.SSH_PATH_NIGHTLY || secrets.SSH_PATH_RELEASE }}
- name: Find signed artifacts
id: artifacts
run: python $GITHUB_WORKSPACE/.github/utils/find_artifacts.py $GITHUB_WORKSPACE >> $GITHUB_OUTPUT
- name: Extract release changelogs
id: changelog
run: python $GITHUB_WORKSPACE/.github/utils/extract_changelogs.py $GITHUB_WORKSPACE >> $GITHUB_OUTPUT
- name: Save version to database
id: save
env:
DB_HOST: ${{ secrets.DB_HOST }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASS: ${{ secrets.DB_PASS }}
DB_NAME: ${{ secrets.DB_NAME }}
APK_SERVER_RELEASE: ${{ secrets.APK_SERVER_RELEASE }}
APK_SERVER_NIGHTLY: ${{ secrets.APK_SERVER_NIGHTLY }}
run: python $GITHUB_WORKSPACE/.github/utils/save_version.py $GITHUB_WORKSPACE >> $GITHUB_OUTPUT
- name: Release on GitHub
if: ${{ inputs.release-github }}
uses: softprops/action-gh-release@v1
with:
name: ${{ steps.changelog.outputs.changelogTitle }}
body_path: ${{ steps.changelog.outputs.changelogMarkdownFile }}
files: ${{ steps.artifacts.outputs.signedReleaseFile }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Distribute to App Distribution
if: ${{ inputs.release-firebase }}
uses: wzieba/Firebase-Distribution-Github-Action@v1
with:
appId: ${{ secrets.FIREBASE_APP_ID }}
serviceCredentialsFileContent: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_JSON }}
file: ${{ steps.artifacts.outputs.signedReleaseFile }}
groups: ${{ inputs.nightly && secrets.FIREBASE_GROUPS_NIGHTLY || secrets.FIREBASE_GROUPS_RELEASE }}
releaseNotesFile: ${{ inputs.nightly && steps.changelog.outputs.commitLogPlainFile || steps.changelog.outputs.changelogPlainTitledFile }}
- name: Publish AAB to Google Play
if: ${{ inputs.release-google-play }}
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.PLAY_SERVICE_ACCOUNT_JSON }}
packageName: pl.szczodrzynski.edziennik
releaseFiles: ${{ steps.artifacts.outputs.signedReleaseFile }}
releaseName: ${{ steps.changelog.outputs.appVersionName }}
track: ${{ secrets.PLAY_RELEASE_TRACK }}
whatsNewDirectory: ${{ steps.changelog.outputs.changelogDir }}
status: completed
- name: Post Discord webhook
if: ${{ inputs.release-discord }}
env:
APK_FILE: ${{ steps.artifacts.outputs.signedReleaseFile }}
DOWNLOAD_URL: ${{ steps.save.outputs.downloadUrl }}
WEBHOOK_RELEASE: ${{ secrets.WEBHOOK_RELEASE }}
WEBHOOK_TESTING: ${{ secrets.WEBHOOK_TESTING }}
run: python $GITHUB_WORKSPACE/.github/utils/webhook_discord.py $GITHUB_WORKSPACE >> $GITHUB_OUTPUT
- name: Upload workflow artifact
uses: actions/upload-artifact@v4
if: always()
with:
name: ${{ steps.changelog.outputs.appVersionName }}
path: |
app/release/whatsnew*/
app/release/*.apk
app/release/*.aab
app/release/*.json
app/release/*.txt

View File

@ -1,151 +0,0 @@
name: Nightly build
on:
schedule:
# 23:30 UTC, 0:30 or 1:30 CET/CEST
- cron: "30 23 * * *"
workflow_dispatch:
jobs:
prepare:
name: Prepare build environment
runs-on: self-hosted
outputs:
hasNewChanges: ${{ steps.nightly.outputs.hasNewChanges }}
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0
clean: false
- name: Set executable permissions to gradlew
run: chmod +x ./gradlew
- name: Setup Python
uses: actions/setup-python@v2
- name: Install packages
uses: BSFishy/pip-action@v1
with:
packages: |
python-dotenv
pycryptodome
mysql-connector-python
requests
- name: Bump nightly version
id: nightly
run: python $GITHUB_WORKSPACE/.github/utils/bump_nightly.py $GITHUB_WORKSPACE
- name: Write signing passwords
if: steps.nightly.outputs.hasNewChanges
env:
DB_HOST: ${{ secrets.DB_HOST }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASS: ${{ secrets.DB_PASS }}
DB_NAME: ${{ secrets.DB_NAME }}
run: python $GITHUB_WORKSPACE/.github/utils/sign.py $GITHUB_WORKSPACE commit
build:
name: Build APK
runs-on: self-hosted
needs:
- prepare
if: needs.prepare.outputs.hasNewChanges
outputs:
androidHome: ${{ env.ANDROID_HOME }}
androidSdkRoot: ${{ env.ANDROID_SDK_ROOT }}
steps:
- name: Setup JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Clean build artifacts
run: |
rm -rf app/release/*
rm -rf app/build/outputs/apk/*
rm -rf app/build/outputs/bundle/*
- name: Assemble official release with Gradle
run: ./gradlew assembleOfficialRelease
sign:
name: Sign APK
runs-on: self-hosted
needs:
- build
outputs:
signedReleaseFile: ${{ steps.artifacts.outputs.signedReleaseFile }}
signedReleaseFileRelative: ${{ steps.artifacts.outputs.signedReleaseFileRelative }}
steps:
- name: Sign build artifacts
id: sign_app
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: app/release
signingKeyBase64: ${{ secrets.KEY_STORE }}
alias: ${{ secrets.KEY_ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_ALIAS_PASSWORD }}
env:
ANDROID_HOME: ${{ needs.build.outputs.androidHome }}
ANDROID_SDK_ROOT: ${{ needs.build.outputs.androidSdkRoot }}
BUILD_TOOLS_VERSION: "30.0.2"
- name: Rename signed artifacts
id: artifacts
run: python $GITHUB_WORKSPACE/.github/utils/rename_artifacts.py $GITHUB_WORKSPACE
publish:
name: Publish APK
runs-on: self-hosted
needs:
- sign
steps:
- name: Setup Python
uses: actions/setup-python@v2
- name: Extract changelogs
id: changelog
run: python $GITHUB_WORKSPACE/.github/utils/extract_changelogs.py $GITHUB_WORKSPACE
- name: Upload APK to SFTP
uses: easingthemes/ssh-deploy@v2.1.6
env:
REMOTE_HOST: ${{ secrets.SSH_IP }}
REMOTE_USER: ${{ secrets.SSH_USERNAME }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY }}
SOURCE: ${{ needs.sign.outputs.signedReleaseFileRelative }}
TARGET: ${{ secrets.SSH_PATH_NIGHTLY }}
- name: Save version metadata
env:
DB_HOST: ${{ secrets.DB_HOST }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASS: ${{ secrets.DB_PASS }}
DB_NAME: ${{ secrets.DB_NAME }}
APK_SERVER_RELEASE: ${{ secrets.APK_SERVER_RELEASE }}
APK_SERVER_NIGHTLY: ${{ secrets.APK_SERVER_NIGHTLY }}
run: python $GITHUB_WORKSPACE/.github/utils/save_version.py $GITHUB_WORKSPACE
- name: Distribute to App Distribution
uses: wzieba/Firebase-Distribution-Github-Action@v1
with:
appId: ${{ secrets.FIREBASE_APP_ID }}
token: ${{ secrets.FIREBASE_TOKEN }}
groups: ${{ secrets.FIREBASE_GROUPS_NIGHTLY }}
file: ${{ needs.sign.outputs.signedReleaseFile }}
releaseNotesFile: ${{ steps.changelog.outputs.commitLogPlainFile }}
- name: Post Discord webhook
env:
APK_FILE: ${{ needs.sign.outputs.signedReleaseFile }}
APK_SERVER_RELEASE: ${{ secrets.APK_SERVER_RELEASE }}
APK_SERVER_NIGHTLY: ${{ secrets.APK_SERVER_NIGHTLY }}
WEBHOOK_RELEASE: ${{ secrets.WEBHOOK_RELEASE }}
WEBHOOK_TESTING: ${{ secrets.WEBHOOK_TESTING }}
run: python $GITHUB_WORKSPACE/.github/utils/webhook_discord.py $GITHUB_WORKSPACE
- name: Upload workflow artifact
uses: actions/upload-artifact@v2
if: true
with:
name: ${{ steps.changelog.outputs.appVersionName }}
path: |
app/release/whatsnew*/
app/release/*.apk
app/release/*.aab
app/release/*.json
app/release/*.txt

View File

@ -1,129 +0,0 @@
name: Release build - Google Play [AAB]
on:
push:
branches:
- "master"
jobs:
prepare:
name: Prepare build environment
runs-on: self-hosted
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0
clean: false
- name: Set executable permissions to gradlew
run: chmod +x ./gradlew
- name: Setup Python
uses: actions/setup-python@v2
- name: Install packages
uses: BSFishy/pip-action@v1
with:
packages: |
python-dotenv
pycryptodome
mysql-connector-python
requests
- name: Write signing passwords
env:
DB_HOST: ${{ secrets.DB_HOST }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASS: ${{ secrets.DB_PASS }}
DB_NAME: ${{ secrets.DB_NAME }}
run: python $GITHUB_WORKSPACE/.github/utils/sign.py $GITHUB_WORKSPACE commit
build:
name: Build App Bundle
runs-on: self-hosted
needs:
- prepare
outputs:
androidHome: ${{ env.ANDROID_HOME }}
androidSdkRoot: ${{ env.ANDROID_SDK_ROOT }}
steps:
- name: Setup JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Clean build artifacts
run: |
rm -rf app/release/*
rm -rf app/build/outputs/apk/*
rm -rf app/build/outputs/bundle/*
- name: Bundle play release with Gradle
run: ./gradlew bundlePlayRelease
sign:
name: Sign App Bundle
runs-on: self-hosted
needs:
- build
outputs:
signedReleaseFile: ${{ steps.artifacts.outputs.signedReleaseFile }}
signedReleaseFileRelative: ${{ steps.artifacts.outputs.signedReleaseFileRelative }}
steps:
- name: Sign build artifacts
id: sign_app
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: app/release
signingKeyBase64: ${{ secrets.KEY_STORE }}
alias: ${{ secrets.KEY_ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_ALIAS_PASSWORD }}
env:
ANDROID_HOME: ${{ needs.build.outputs.androidHome }}
ANDROID_SDK_ROOT: ${{ needs.build.outputs.androidSdkRoot }}
BUILD_TOOLS_VERSION: "30.0.2"
- name: Rename signed artifacts
id: artifacts
run: python $GITHUB_WORKSPACE/.github/utils/rename_artifacts.py $GITHUB_WORKSPACE
publish:
name: Publish App Bundle
runs-on: self-hosted
needs:
- sign
steps:
- name: Setup Python
uses: actions/setup-python@v2
- name: Extract changelogs
id: changelog
run: python $GITHUB_WORKSPACE/.github/utils/extract_changelogs.py $GITHUB_WORKSPACE
- name: Save version metadata
env:
DB_HOST: ${{ secrets.DB_HOST }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASS: ${{ secrets.DB_PASS }}
DB_NAME: ${{ secrets.DB_NAME }}
APK_SERVER_RELEASE: ${{ secrets.APK_SERVER_RELEASE }}
APK_SERVER_NIGHTLY: ${{ secrets.APK_SERVER_NIGHTLY }}
run: python $GITHUB_WORKSPACE/.github/utils/save_version.py $GITHUB_WORKSPACE
- name: Publish AAB to Google Play
uses: r0adkll/upload-google-play@v1
if: ${{ endsWith(needs.sign.outputs.signedReleaseFile, '.aab') }}
with:
serviceAccountJsonPlainText: ${{ secrets.PLAY_SERVICE_ACCOUNT_JSON }}
packageName: pl.szczodrzynski.edziennik
releaseFile: ${{ needs.sign.outputs.signedReleaseFile }}
releaseName: ${{ steps.changelog.outputs.appVersionName }}
track: ${{ secrets.PLAY_RELEASE_TRACK }}
userFraction: 1.0
whatsNewDirectory: ${{ steps.changelog.outputs.changelogDir }}
- name: Upload workflow artifact
uses: actions/upload-artifact@v2
if: true
with:
name: ${{ steps.changelog.outputs.appVersionName }}
path: |
app/release/whatsnew*/
app/release/*.apk
app/release/*.aab
app/release/*.json
app/release/*.txt

View File

@ -1,151 +0,0 @@
name: Release build - official
on:
push:
tags:
- "*"
jobs:
prepare:
name: Prepare build environment
runs-on: self-hosted
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0
clean: false
- name: Set executable permissions to gradlew
run: chmod +x ./gradlew
- name: Setup Python
uses: actions/setup-python@v2
- name: Install packages
uses: BSFishy/pip-action@v1
with:
packages: |
python-dotenv
pycryptodome
mysql-connector-python
requests
- name: Write signing passwords
env:
DB_HOST: ${{ secrets.DB_HOST }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASS: ${{ secrets.DB_PASS }}
DB_NAME: ${{ secrets.DB_NAME }}
run: python $GITHUB_WORKSPACE/.github/utils/sign.py $GITHUB_WORKSPACE commit
build:
name: Build APK
runs-on: self-hosted
needs:
- prepare
outputs:
androidHome: ${{ env.ANDROID_HOME }}
androidSdkRoot: ${{ env.ANDROID_SDK_ROOT }}
steps:
- name: Setup JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Clean build artifacts
run: |
rm -rf app/release/*
rm -rf app/build/outputs/apk/*
rm -rf app/build/outputs/bundle/*
- name: Assemble official release with Gradle
run: ./gradlew assembleOfficialRelease
sign:
name: Sign APK
runs-on: self-hosted
needs:
- build
outputs:
signedReleaseFile: ${{ steps.artifacts.outputs.signedReleaseFile }}
signedReleaseFileRelative: ${{ steps.artifacts.outputs.signedReleaseFileRelative }}
steps:
- name: Sign build artifacts
id: sign_app
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: app/release
signingKeyBase64: ${{ secrets.KEY_STORE }}
alias: ${{ secrets.KEY_ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_ALIAS_PASSWORD }}
env:
ANDROID_HOME: ${{ needs.build.outputs.androidHome }}
ANDROID_SDK_ROOT: ${{ needs.build.outputs.androidSdkRoot }}
BUILD_TOOLS_VERSION: "30.0.2"
- name: Rename signed artifacts
id: artifacts
run: python $GITHUB_WORKSPACE/.github/utils/rename_artifacts.py $GITHUB_WORKSPACE
publish:
name: Publish APK
runs-on: self-hosted
needs:
- sign
steps:
- name: Setup Python
uses: actions/setup-python@v2
- name: Extract changelogs
id: changelog
run: python $GITHUB_WORKSPACE/.github/utils/extract_changelogs.py $GITHUB_WORKSPACE
- name: Upload APK to SFTP
uses: easingthemes/ssh-deploy@v2.1.6
env:
REMOTE_HOST: ${{ secrets.SSH_IP }}
REMOTE_USER: ${{ secrets.SSH_USERNAME }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY }}
SOURCE: ${{ needs.sign.outputs.signedReleaseFileRelative }}
TARGET: ${{ secrets.SSH_PATH_RELEASE }}
- name: Save version metadata
env:
DB_HOST: ${{ secrets.DB_HOST }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASS: ${{ secrets.DB_PASS }}
DB_NAME: ${{ secrets.DB_NAME }}
APK_SERVER_RELEASE: ${{ secrets.APK_SERVER_RELEASE }}
APK_SERVER_NIGHTLY: ${{ secrets.APK_SERVER_NIGHTLY }}
run: python $GITHUB_WORKSPACE/.github/utils/save_version.py $GITHUB_WORKSPACE
- name: Distribute to App Distribution
uses: wzieba/Firebase-Distribution-Github-Action@v1
with:
appId: ${{ secrets.FIREBASE_APP_ID }}
token: ${{ secrets.FIREBASE_TOKEN }}
groups: ${{ secrets.FIREBASE_GROUPS_RELEASE }}
file: ${{ needs.sign.outputs.signedReleaseFile }}
releaseNotesFile: ${{ steps.changelog.outputs.changelogPlainTitledFile }}
- name: Release on GitHub
uses: softprops/action-gh-release@v1
with:
name: ${{ steps.changelog.outputs.changelogTitle }}
body_path: ${{ steps.changelog.outputs.changelogMarkdownFile }}
files: ${{ needs.sign.outputs.signedReleaseFile }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Post Discord webhook
env:
APK_FILE: ${{ needs.sign.outputs.signedReleaseFile }}
APK_SERVER_RELEASE: ${{ secrets.APK_SERVER_RELEASE }}
APK_SERVER_NIGHTLY: ${{ secrets.APK_SERVER_NIGHTLY }}
WEBHOOK_RELEASE: ${{ secrets.WEBHOOK_RELEASE }}
WEBHOOK_TESTING: ${{ secrets.WEBHOOK_TESTING }}
run: python $GITHUB_WORKSPACE/.github/utils/webhook_discord.py $GITHUB_WORKSPACE
- name: Upload workflow artifact
uses: actions/upload-artifact@v2
if: true
with:
name: ${{ steps.changelog.outputs.appVersionName }}
path: |
app/release/whatsnew*/
app/release/*.apk
app/release/*.aab
app/release/*.json
app/release/*.txt

13
.github/workflows/push-master.yml vendored Normal file
View File

@ -0,0 +1,13 @@
name: Push (master)
on:
push:
branches: ["master"]
jobs:
build:
name: Build for Google Play (AAB)
uses: szkolny-eu/szkolny-android/.github/workflows/_build.yml@develop
with:
build-aab: true
release-ssh: true
release-google-play: true
secrets: inherit

15
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,15 @@
name: Release
on:
push:
tags: ["v*.*.*"]
jobs:
build:
name: Build release (APK)
uses: szkolny-eu/szkolny-android/.github/workflows/_build.yml@develop
with:
build-apk: true
release-ssh: true
release-github: true
release-firebase: true
release-discord: true
secrets: inherit

42
.github/workflows/schedule-dispatch.yml vendored Normal file
View File

@ -0,0 +1,42 @@
name: Schedule/dispatch
on:
schedule:
# 23:30 UTC, 0:30 or 1:30 CET/CEST
- cron: "30 23 * * *"
workflow_dispatch:
jobs:
check:
name: Check new changes
runs-on: ubuntu-latest
outputs:
hasNewChanges: ${{ steps.nightly.outputs.hasNewChanges }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
clean: false
- name: Setup Python
uses: actions/setup-python@v4
- name: Install packages
uses: BSFishy/pip-action@v1
with:
packages: |
requests
- name: Check new changes
id: nightly
run: python $GITHUB_WORKSPACE/.github/utils/check_nightly.py $GITHUB_WORKSPACE >> $GITHUB_OUTPUT
build:
name: Build nightly release (APK)
needs:
- check
if: ${{ needs.check.outputs.hasNewChanges == 'true' }}
uses: szkolny-eu/szkolny-android/.github/workflows/_build.yml@develop
with:
nightly: true
build-apk: true
release-ssh: true
release-firebase: true
release-discord: true
secrets: inherit

1
.gitignore vendored
View File

@ -265,3 +265,4 @@ fabric.properties
# End of https://www.toptal.com/developers/gitignore/api/android,androidstudio,gradle,java,kotlin
signatures/
.idea/*.xml

View File

@ -1,8 +1,33 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<AndroidXmlCodeStyleSettings>
<option name="LAYOUT_SETTINGS">
<value>
<option name="INSERT_LINE_BREAK_BEFORE_NAMESPACE_DECLARATION" value="true" />
</value>
</option>
<option name="MANIFEST_SETTINGS">
<value>
<option name="INSERT_LINE_BREAK_BEFORE_NAMESPACE_DECLARATION" value="true" />
</value>
</option>
<option name="OTHER_SETTINGS">
<value>
<option name="INSERT_LINE_BREAK_BEFORE_NAMESPACE_DECLARATION" value="true" />
</value>
</option>
</AndroidXmlCodeStyleSettings>
<JetCodeStyleSettings>
<option name="ALLOW_TRAILING_COMMA" value="true" />
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<codeStyleSettings language="JSON">
<indentOptions>
<option name="INDENT_SIZE" value="4" />
<option name="USE_TAB_CHARACTER" value="true" />
<option name="SMART_TABS" value="true" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="XML">
<option name="FORCE_REARRANGE_MODE" value="1" />
<indentOptions>
@ -15,6 +40,7 @@
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
@ -25,6 +51,7 @@
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
@ -36,6 +63,7 @@
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
@ -46,6 +74,7 @@
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
@ -56,6 +85,7 @@
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
@ -66,6 +96,7 @@
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
@ -76,6 +107,7 @@
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
@ -87,6 +119,7 @@
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
@ -98,6 +131,7 @@
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
@ -109,6 +143,9 @@
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
<option name="PARAMETER_ANNOTATION_WRAP" value="2" />
<option name="ENUM_CONSTANTS_WRAP" value="2" />
</codeStyleSettings>
</code_scheme>
</component>

6
.idea/copyright/Antoni.xml generated Normal file
View File

@ -0,0 +1,6 @@
<component name="CopyrightManager">
<copyright>
<option name="notice" value="Copyright (c) Antoni Czaplicki &amp;#36;{today.year}-&amp;#36;{today.month}-&amp;#36;{today.day}. " />
<option name="myName" value="Antoni" />
</copyright>
</component>

View File

@ -4,7 +4,10 @@
<w>autoryzacji</w>
<w>ciasteczko</w>
<w>csrf</w>
<w>daynight</w>
<w>edziennik</w>
<w>eggfall</w>
<w>elearning</w>
<w>gson</w>
<w>hebe</w>
<w>idziennik</w>
@ -12,6 +15,7 @@
<w>synergia</w>
<w>szczodrzyński</w>
<w>szkolny</w>
<w>usos</w>
</words>
</dictionary>
</component>

9
.idea/discord.xml generated
View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="PROJECT_FILES" />
</component>
<component name="ProjectNotificationSettings">
<option name="askShowProject" value="false" />
</component>
</project>

6
.idea/kotlinc.xml generated
View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Kotlin2JvmCompilerArguments">
<option name="jvmTarget" value="1.8" />
</component>
</project>

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
<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>

View File

@ -6,13 +6,13 @@
[![Oficjalna strona](https://img.shields.io/badge/-website-orange?style=for-the-badge&logo=internet-explorer&logoColor=white)](https://szkolny.eu/)
[![Facebook Fanpage](https://img.shields.io/badge/-facebook-blue?style=for-the-badge&logo=facebook&logoColor=white)](https://szkolny.eu/facebook)
![Wersja Androida](https://img.shields.io/badge/android-4.1%2B-orange?style=for-the-badge&logo=android)
![Wersja Androida](https://img.shields.io/badge/android-4.4%2B-orange?style=for-the-badge&logo=android)
[![Najnowsza wersja](https://img.shields.io/github/v/release/szkolny-eu/szkolny-android?color=%2344CC11&include_prereleases&logo=github&logoColor=white&style=for-the-badge)](https://github.com/szkolny-eu/szkolny-android/releases/latest)
![Licencja](https://img.shields.io/github/license/szkolny-eu/szkolny-android?color=blue&logo=github&logoColor=white&style=for-the-badge)
[![Release build](https://img.shields.io/github/workflow/status/szkolny-eu/szkolny-android/Release%20build%20-%20official?label=Release&logo=github-actions&logoColor=white&style=for-the-badge)](https://github.com/szkolny-eu/szkolny-android/actions/workflows/build-release-apk.yml)
[![Play build](https://img.shields.io/github/workflow/status/szkolny-eu/szkolny-android/Release%20build%20-%20Google%20Play%20%5BAAB%5D?label=Play&logo=google-play&logoColor=white&style=for-the-badge)](https://github.com/szkolny-eu/szkolny-android/actions/workflows/build-release-aab-play.yml)
[![Nightly build](https://img.shields.io/github/workflow/status/szkolny-eu/szkolny-android/Nightly%20build?label=Nightly&logo=github-actions&logoColor=white&style=for-the-badge)](https://github.com/szkolny-eu/szkolny-android/actions/workflows/build-nightly-apk.yml)
[![Release build](https://img.shields.io/github/actions/workflow/status/szkolny-eu/szkolny-android/release.yml?label=Release&logo=github-actions&logoColor=white&style=for-the-badge)](https://github.com/szkolny-eu/szkolny-android/actions/workflows/release.yml)
[![Play build](https://img.shields.io/github/actions/workflow/status/szkolny-eu/szkolny-android/push-master.yml?label=Play&logo=google-play&logoColor=white&style=for-the-badge)](https://github.com/szkolny-eu/szkolny-android/actions/workflows/push-master.yml)
[![Nightly build](https://img.shields.io/github/actions/workflow/status/szkolny-eu/szkolny-android/schedule-dispatch.yml?label=Nightly&logo=github-actions&logoColor=white&style=for-the-badge)](https://github.com/szkolny-eu/szkolny-android/actions/workflows/schedule-dispatch.yml)
</div>

View File

@ -1,6 +1,7 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-parcelize'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
@ -9,8 +10,10 @@ apply from: 'git-info.gradle'
android {
compileSdkVersion setup.compileSdk
namespace "pl.szczodrzynski.edziennik"
defaultConfig {
applicationId 'pl.szczodrzynski.edziennik'
applicationId "pl.szczodrzynski.edziennik"
minSdkVersion setup.minSdk
targetSdkVersion setup.targetSdk
@ -19,8 +22,9 @@ android {
buildConfigField "java.util.Map<String, String>", "GIT_INFO", gitInfoMap
buildConfigField "String", "VERSION_BASE", "\"${release.versionName}\""
manifestPlaceholders = [
buildTimestamp: String.valueOf(System.currentTimeMillis())
buildTimestamp: String.valueOf(System.currentTimeMillis())
]
multiDexEnabled = true
@ -30,12 +34,26 @@ android {
cppFlags "-std=c++11"
}
}
kapt {
arguments {
arg("room.schemaLocation", "$projectDir/schemas")
}
correctErrorTypes = true
}
}
buildTypes {
debug {
getIsDefault().set(true)
minifyEnabled = false
applicationIdSuffix = ".debug"
manifestPlaceholders = [
buildTimestamp: "0"
]
}
release {
minifyEnabled = true
shrinkResources = true
@ -43,51 +61,82 @@ android {
proguardFiles fileTree('proguard').asList().toArray()
}
}
flavorDimensions "platform"
flavorDimensions += "platform"
productFlavors {
main {
versionName gitInfo.versionHuman
unofficial {
getIsDefault().set(true)
versionName "${release.versionName}-${gitInfo.versionSuffix}"
}
official {}
play {}
}
variantFilter { variant ->
def flavors = variant.flavors*.name
setIgnore(variant.buildType.name == "debug" && !flavors.contains("main"))
setIgnore(variant.buildType.name == "debug" && !flavors.contains("unofficial") || flavors.contains("main"))
}
sourceSets {
unofficial {
java.srcDirs = ["src/main/java", "src/play-not/java"]
manifest.srcFile("src/play-not/AndroidManifest.xml")
}
official {
java.srcDirs = ["src/main/java", "src/play-not/java"]
manifest.srcFile("src/play-not/AndroidManifest.xml")
}
play {
java.srcDirs = ["src/main/java", "src/play/java"]
}
}
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
lintOptions {
checkReleaseBuilds = false
}
buildFeatures {
dataBinding = true
viewBinding = true
buildConfig = true
}
compileOptions {
coreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
freeCompilerArgs += "-Xcontext-receivers"
}
packagingOptions {
exclude 'META-INF/library-core_release.kotlin_module'
resources {
excludes += ['META-INF/library-core_release.kotlin_module']
}
}
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
version "3.10.2"
}
}
lint {
checkReleaseBuilds false
}
}
tasks.whenTaskAdded { task ->
if (!task.name.endsWith("Release") && !task.name.endsWith("ReleaseWithR8"))
if (!(task.name == "assembleUnofficialRelease" || task.name == "assembleOfficialRelease" || task.name == "signPlayReleaseBundle"))
return
def renameTaskName = "rename${task.name.capitalize()}"
def flavor = ""
@ -97,17 +146,22 @@ tasks.whenTaskAdded { task ->
flavor = task.name.substring("assemble".length(), task.name.indexOf("Release")).uncapitalize()
if (task.name.startsWith("minify"))
flavor = task.name.substring("minify".length(), task.name.indexOf("Release")).uncapitalize()
if (task.name.startsWith("sign"))
flavor = task.name.substring("sign".length(), task.name.indexOf("Release")).uncapitalize()
if (flavor != "") {
tasks.create(renameTaskName, Copy) {
tasks.register(renameTaskName, Copy) {
dependsOn(task.name)
duplicatesStrategy DuplicatesStrategy.FAIL
from file("${projectDir}/${flavor}/release/"),
file("${buildDir}/outputs/mapping/${flavor}Release/"),
file("${buildDir}/outputs/apk/${flavor}/release/"),
file("${buildDir}/outputs/bundle/${flavor}Release/")
include "*.aab", "*.apk", "mapping.txt", "output-metadata.json"
file("${projectDir}/build/outputs/apk/${flavor}/release/"),
file("${projectDir}/build/outputs/mapping/${flavor}Release/"),
file("${projectDir}/build/outputs/bundle/${flavor}Release/")
include "*-release.aab", "*-release.apk", "mapping.txt", "output-metadata.json"
destinationDir file("${projectDir}/release/")
rename ".+?\\.(.+)", "Edziennik_${android.defaultConfig.versionName}_${flavor}." + '$1'
}
task.finalizedBy(renameTaskName)
}
}
@ -117,28 +171,30 @@ dependencies {
// Language cores
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.5"
implementation "androidx.multidex:multidex:2.0.1"
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.0.4"
// Android Jetpack
implementation "androidx.appcompat:appcompat:1.2.0"
implementation "androidx.appcompat:appcompat:1.7.0"
implementation "androidx.cardview:cardview:1.0.0"
implementation "androidx.constraintlayout:constraintlayout:2.0.4"
implementation "androidx.core:core-ktx:1.3.2"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.0"
implementation "androidx.navigation:navigation-fragment-ktx:2.3.4"
implementation "androidx.recyclerview:recyclerview:1.1.0"
implementation "androidx.room:room-runtime:2.2.6"
implementation "androidx.work:work-runtime-ktx:2.5.0"
kapt "androidx.room:room-compiler:2.2.6"
implementation "androidx.constraintlayout:constraintlayout:2.1.4"
implementation "androidx.core:core-ktx:1.13.1"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.8.2"
implementation "androidx.navigation:navigation-fragment-ktx:2.7.7"
implementation "androidx.recyclerview:recyclerview:1.3.2"
implementation "androidx.room:room-runtime:2.6.1"
implementation "androidx.room:room-ktx:2.6.1"
implementation "androidx.work:work-runtime-ktx:2.9.0"
kapt "androidx.room:room-compiler:2.6.1"
// Google design libs
implementation "com.google.android.material:material:1.3.0"
implementation "com.google.android:flexbox:2.0.1"
implementation "com.google.android.material:material:1.12.0"
implementation "com.google.android.flexbox:flexbox:3.0.0"
// Play Services/Firebase
implementation "com.google.android.gms:play-services-wearable:17.0.0"
implementation "com.google.firebase:firebase-core:18.0.2"
implementation "com.google.firebase:firebase-crashlytics:17.4.0"
implementation "com.google.android.gms:play-services-wearable:18.2.0"
implementation("com.google.firebase:firebase-core") { version { strictly "19.0.2" } }
implementation "com.google.firebase:firebase-crashlytics:19.0.1"
implementation("com.google.firebase:firebase-messaging") { version { strictly "20.1.3" } }
// OkHttp, Retrofit, Gson, Jsoup
@ -146,55 +202,60 @@ dependencies {
implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
implementation "com.squareup.retrofit2:converter-scalars:2.9.0"
implementation 'com.google.code.gson:gson:2.8.6'
implementation "org.jsoup:jsoup:1.13.1"
implementation 'com.google.code.gson:gson:2.11.0'
implementation 'org.jsoup:jsoup:1.14.3'
implementation "pl.droidsonroids:jspoon:1.3.2"
implementation "pl.droidsonroids.retrofit2:converter-jspoon:1.3.2"
// Szkolny.eu libraries/forks
implementation "eu.szkolny:agendacalendarview:1799f8ef47"
implementation project(":navlib")
implementation "eu.szkolny:android-snowfall:1ca9ea2da3"
implementation "eu.szkolny:agendacalendarview:1.0.4"
implementation "eu.szkolny:cafebar:5bf0c618de"
implementation "eu.szkolny.fslogin:lib:2.0.0"
implementation "eu.szkolny:material-about-library:1d5ebaf47c"
implementation "eu.szkolny:mhttp:af4b62e6e9"
implementation "eu.szkolny:nachos:0e5dfcaceb"
implementation "eu.szkolny.selective-dao:annotation:27f8f3f194"
implementation "eu.szkolny:ssl-provider:1.0.0"
implementation "pl.szczodrzynski:navlib:0.8.0"
implementation "eu.szkolny.selective-dao:annotation:6a337f9"
officialImplementation "eu.szkolny:ssl-provider:1.0.0"
unofficialImplementation "eu.szkolny:ssl-provider:1.0.0"
implementation "pl.szczodrzynski:numberslidingpicker:2921225f76"
implementation "pl.szczodrzynski:recyclertablayout:700f980584"
implementation "pl.szczodrzynski:tachyon:551943a6b5"
kapt "eu.szkolny.selective-dao:codegen:27f8f3f194"
kapt "eu.szkolny.selective-dao:codegen:6a337f9"
// Iconics & related
implementation "com.mikepenz:iconics-core:5.3.0-b01"
implementation "com.mikepenz:iconics-views:5.3.0-b01"
implementation "com.mikepenz:iconics-core:5.3.2"
implementation "com.mikepenz:iconics-views:5.3.2"
implementation "com.mikepenz:materialdrawer:9.0.1"
implementation "com.mikepenz:community-material-typeface:5.8.55.0-kotlin@aar"
implementation "eu.szkolny:szkolny-font:1.3"
implementation 'com.mikepenz:google-material-typeface:4.0.0.2-kotlin@aar'
implementation "eu.szkolny:szkolny-font:95eabe7"
// Other dependencies
implementation "cat.ereza:customactivityoncrash:2.3.0"
implementation "com.applandeo:material-calendar-view:1.5.0"
implementation "com.android.volley:volley:1.2.1"
implementation "com.daimajia.swipelayout:library:1.2.0@aar"
implementation "com.github.antonKozyriatskyi:CircularProgressIndicator:1.2.2"
implementation "com.github.bassaer:chatmessageview:2.0.1"
implementation "com.github.CanHub:Android-Image-Cropper:2.2.2"
implementation "com.github.ChuckerTeam.Chucker:library:3.0.1"
implementation "com.github.jetradarmobile:android-snowfall:1.2.0"
implementation "com.github.wulkanowy.uonet-request-signer:hebe-jvm:a99ca50a31"
implementation("com.heinrichreimersoftware:material-intro") { version { strictly "1.5.8" } }
implementation "com.hypertrack:hyperlog:0.0.10"
implementation "com.github.Applandeo:Material-Calendar-View:15de569cbc" // https://github.com/Applandeo/Material-Calendar-View
implementation "com.github.CanHub:Android-Image-Cropper:2.2.2" // https://github.com/CanHub/Android-Image-Cropper
implementation "com.github.ChuckerTeam.Chucker:library:3.5.2" // https://github.com/ChuckerTeam/chucker
implementation "com.github.antonKozyriatskyi:CircularProgressIndicator:1.2.2" // https://github.com/antonKozyriatskyi/CircularProgressIndicator
implementation "com.github.bassaer:chatmessageview:2.0.1" // https://github.com/bassaer/ChatMessageView
implementation "com.github.smuyyh:JsonViewer:V1.0.6" // https://github.com/smuyyh/JsonViewer
implementation "com.github.underwindfall.PowerPermission:powerpermission-coroutines:1.4.0" // https://github.com/underwindfall/PowerPermission
implementation "com.github.underwindfall.PowerPermission:powerpermission:1.4.0" // https://github.com/underwindfall/PowerPermission
implementation "com.github.wulkanowy.uonet-request-signer:hebe-jvm:a99ca50a31" // https://github.com/wulkanowy/uonet-request-signer
implementation 'com.jakewharton.timber:timber:5.0.1'
implementation "com.jaredrummler:colorpicker:1.1.0"
implementation "com.qifan.powerpermission:powerpermission-coroutines:1.3.0"
implementation "com.qifan.powerpermission:powerpermission:1.3.0"
implementation "com.yuyh.json:jsonviewer:1.0.6"
implementation "io.coil-kt:coil:1.1.1"
implementation "me.dm7.barcodescanner:zxing:1.9.8"
implementation "me.grantland:autofittextview:0.2.1"
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
implementation "org.greenrobot:eventbus:3.2.0"
implementation("com.heinrichreimersoftware:material-intro") { version { strictly "1.5.8" } }
implementation("pl.droidsonroids.gif:android-gif-drawable") { version { strictly "1.2.15" } }
// Debug-only dependencies
debugImplementation "com.amitshekhar.android:debug-db:1.0.5"
debugImplementation "com.github.amitshekhariitbhu.Android-Debug-Database:debug-db:v1.0.6"
}

View File

@ -5,7 +5,7 @@
buildscript {
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath "org.eclipse.jgit:org.eclipse.jgit:5.5.+"
@ -97,18 +97,17 @@ private def buildGitInfo() {
def tag = getLastTag(repo, git, head)
def tagName = tag[1]
def tagRevCount = tag[2]
def versionName = tagName.replace("v", "")
def result = [
hash : head.objectId.name,
branch : repo.branch,
dirty : dirty,
remotes : remotes,
unstaged : status.uncommittedChanges.join("; "),
tag : tagName,
revCount : tagRevCount,
version : """$tagName-$tagRevCount-g${head.objectId.name.substring(0, 8)}""" + (dirty ? ".dirty" : ""),
versionHuman: """$versionName-${repo.branch.replace("/", "_")}""" + (dirty ? ".dirty" : "")
hash : head.objectId.name,
branch : repo.branch,
dirty : dirty,
remotes : remotes,
unstaged : status.uncommittedChanges.join("; "),
tag : tagName,
revCount : tagRevCount,
version : """$tagName-$tagRevCount-g${head.objectId.name.substring(0, 8)}""" + (dirty ? ".dirty" : ""),
versionSuffix : """${repo.branch.replace("/", "_")}""" + (dirty ? ".dirty" : "")
]
return result
}

View File

@ -36,6 +36,37 @@
"status": 2
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:640759989760:android:4aa71407b25cdc8d",
"android_client_info": {
"package_name": "pl.szczodrzynski.edziennik.debug"
}
},
"oauth_client": [
{
"client_id": "640759989760-6f8q00u864lnuh3gh36e8g4cer9lv8pv.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAvq9HMPxulz9ntdAHZ0eZuPf2YQs4nDSU"
}
],
"services": {
"analytics_service": {
"status": 1
},
"appinvite_service": {
"status": 1,
"other_platform_oauth_client": []
},
"ads_service": {
"status": 2
}
}
}
],
"configuration_version": "1"

View File

@ -19,23 +19,46 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keepattributes Signature
-keep class android.support.v7.widget.** { *; }
-keep class com.google.gson.reflect.TypeToken { *; }
-keep class * extends com.google.gson.reflect.TypeToken
-keep class pl.szczodrzynski.edziennik.utils.models.** { *; }
-keep class pl.szczodrzynski.edziennik.data.enums.* { *; }
-keep class pl.szczodrzynski.edziennik.data.db.entity.Event { *; }
-keep class pl.szczodrzynski.edziennik.data.db.full.EventFull { *; }
-keep class pl.szczodrzynski.edziennik.data.db.entity.FeedbackMessage { *; }
-keep class pl.szczodrzynski.edziennik.ui.modules.home.HomeCardModel { *; }
-keep class pl.szczodrzynski.edziennik.data.db.entity.Note { *; }
-keep class pl.szczodrzynski.edziennik.ui.home.HomeCardModel { *; }
-keepclassmembers class pl.szczodrzynski.edziennik.ui.widgets.WidgetConfig { public *; }
-keepnames class pl.szczodrzynski.edziennik.ui.widgets.timetable.WidgetTimetableProvider
-keepnames class pl.szczodrzynski.edziennik.ui.widgets.notifications.WidgetNotificationsProvider
-keepnames class pl.szczodrzynski.edziennik.ui.widgets.luckynumber.WidgetLuckyNumberProvider
-keep class pl.szczodrzynski.edziennik.data.config.AppData { *; }
-keep class pl.szczodrzynski.edziennik.data.config.AppData$** { *; }
-keep class pl.szczodrzynski.edziennik.core.manager.TextStylingManager$HtmlMode { *; }
-keepnames class androidx.appcompat.view.menu.MenuBuilder { setHeaderTitleInt(java.lang.CharSequence); }
-keepclassmembernames class androidx.appcompat.view.menu.StandardMenuPopup { private *; }
-keepnames class androidx.appcompat.view.menu.MenuPopupHelper { showPopup(int, int, boolean, boolean); }
-keepclassmembernames class androidx.appcompat.view.menu.StandardMenuPopup { private *; }
-keepclassmembernames class androidx.appcompat.view.menu.MenuItemImpl { private *; }
-keepclassmembernames class com.mikepenz.materialdrawer.widget.MiniDrawerSliderView { private *; }
-keepclassmembernames class com.mikepenz.iconics.internal.IconicsViewsAttrsApplier {
<fields>;
readIconicsTextView(android.content.Context, android.util.AttributeSet, com.mikepenz.iconics.internal.CompoundIconsBundle);
getIconicsImageViewDrawable(android.content.Context, android.util.AttributeSet);
}
-keepclassmembernames class com.mikepenz.iconics.internal.CompoundIconsBundle {
setIcons(android.widget.TextView);
}
# for RecyclerTabView
-keepclassmembernames class com.google.android.material.tabs.TabLayout { *; }
-keepclassmembernames class com.google.android.material.tabs.TabLayout$TabView { *; }
-keepclassmembernames class com.google.android.material.tabs.TabIndicatorInterpolator { *; }
-keep class .R
-keep class **.R$* {
@ -49,8 +72,19 @@
-keep class com.google.android.material.tabs.** {*;}
# Exclude AgendaCalendarView
# Preserve generic type information for EventRenderer and its subclasses
-keepclassmembers class * extends com.github.tibolte.agendacalendarview.render.EventRenderer {
<fields>;
<methods>;
}
# Keep the EventRenderer class itself and all its subclasses
-keep class com.github.tibolte.agendacalendarview.render.EventRenderer
-keep class * extends com.github.tibolte.agendacalendarview.render.EventRenderer
# ServiceLoader support
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
# Most of volatile fields are updated with AFU and should not be mangled
@ -64,9 +98,10 @@
-keep class pl.szczodrzynski.edziennik.data.api.szkolny.interceptor.Signing { public final byte[] pleaseStopRightNow(java.lang.String, long); }
-keepclassmembers class pl.szczodrzynski.edziennik.ui.login.qr.* { *; }
-keepclassmembers class pl.szczodrzynski.edziennik.data.api.szkolny.request.** { *; }
-keepclassmembers class pl.szczodrzynski.edziennik.data.api.szkolny.response.** { *; }
-keepclassmembernames class pl.szczodrzynski.edziennik.ui.modules.login.LoginInfo$Platform { *; }
-keepclassmembernames class pl.szczodrzynski.edziennik.ui.login.LoginInfo$Platform { *; }
-keepclassmembernames class pl.szczodrzynski.fslogin.realm.RealmData { *; }
-keepclassmembernames class pl.szczodrzynski.fslogin.realm.RealmData$Type { *; }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,9 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="pl.szczodrzynski.edziennik">
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
@ -13,19 +11,21 @@
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<!-- PowerPermission uses minSdk 21, it's safe to override as it is used only in >= 23 -->
<uses-sdk tools:overrideLibrary="com.qifan.powerpermission.coroutines, com.qifan.powerpermission.core" />
<uses-sdk
tools:overrideLibrary="com.qifan.powerpermission.coroutines, com.qifan.powerpermission.core, com.mikepenz:materialdrawer, com.mikepenz.iconics.typeface.library.navlibfont, androidx.appcompat.resources, androidx.appcompat, com.google.android.gms.wearable, com.google.android.gms.base, com.google.firebase.crashlytics, com.google.firebase.sessions, com.google.firebase.ktx, com.google.firebase, com.google.android.gms.tasks, com.google.android.gms.common, com.google.firebase.components" />
<application
android:name=".App"
android:allowBackup="true"
android:fullBackupContent="@xml/backup_descriptor"
android:icon="@mipmap/ic_launcher"
android:icon="@mipmap/ic_launcher_v5"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:supportsRtl="true"
android:theme="@style/AppTheme.Dark"
android:theme="@style/AppTheme.M3.Blue"
android:usesCleartextTraffic="true"
tools:ignore="UnusedAttribute">
@ -41,8 +41,8 @@
|___/ -->
<activity android:name=".MainActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:launchMode="singleTop"
android:exported="true"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@ -66,14 +66,16 @@
android:configChanges="orientation|keyboardHidden"
android:excludeFromRecents="true"
android:noHistory="true"
android:theme="@style/AppTheme.Dark.NoDisplay">
android:exported="true"
android:theme="@style/AppTheme.M3.NoDisplay">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<!-- TIMETABLE -->
<receiver android:name=".ui.widgets.timetable.WidgetTimetableProvider"
android:label="@string/widget_timetable_title">
android:label="@string/widget_timetable_title"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
@ -82,16 +84,18 @@
android:resource="@xml/widget_timetable_info" />
</receiver>
<service android:name=".ui.widgets.timetable.WidgetTimetableService"
android:permission="android.permission.BIND_REMOTEVIEWS" />
android:permission="android.permission.BIND_REMOTEVIEWS" android:foregroundServiceType="dataSync"/>
<activity android:name=".ui.widgets.LessonDialogActivity"
android:label=""
android:configChanges="orientation|keyboardHidden"
android:excludeFromRecents="true"
android:noHistory="true"
android:theme="@style/AppTheme.Dark.NoDisplay" />
android:exported="true"
android:theme="@style/AppTheme.M3.NoDisplay" />
<!-- NOTIFICATIONS -->
<receiver android:name=".ui.widgets.notifications.WidgetNotificationsProvider"
android:label="@string/widget_notifications_title">
android:label="@string/widget_notifications_title"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
@ -101,10 +105,11 @@
android:resource="@xml/widget_notifications_info" />
</receiver>
<service android:name=".ui.widgets.notifications.WidgetNotificationsService"
android:permission="android.permission.BIND_REMOTEVIEWS" />
android:permission="android.permission.BIND_REMOTEVIEWS" android:foregroundServiceType="dataSync"/>
<!-- LUCKY NUMBER -->
<receiver android:name=".ui.widgets.luckynumber.WidgetLuckyNumberProvider"
android:label="@string/widget_lucky_number_title">
android:label="@string/widget_lucky_number_title"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
@ -121,31 +126,44 @@
/ ____ \ (__| |_| |\ V /| | |_| | __/\__ \
/_/ \_\___|\__|_| \_/ |_|\__|_|\___||___/
-->
<activity android:name=".ui.modules.base.CrashActivity"
<activity android:name=".ui.main.CrashActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:process=":error_activity"
android:exported="false"
android:theme="@style/DeadTheme" />
<activity android:name=".ui.modules.intro.ChangelogIntroActivity"
<activity android:name=".ui.intro.ChangelogIntroActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name"
android:exported="false"
android:theme="@style/Theme.Intro" />
<activity android:name=".ui.modules.login.LoginActivity"
<activity android:name=".ui.login.LoginActivity"
android:configChanges="orientation|screenSize"
android:launchMode="singleTop"
android:theme="@style/AppTheme.Light" />
<activity android:name=".ui.modules.home.CounterActivity"
android:theme="@style/AppTheme.Black" />
<activity android:name=".ui.modules.feedback.FeedbackActivity"
android:exported="false"
android:theme="@style/AppTheme.M3" />
<activity android:name=".ui.home.CounterActivity"
android:exported="false"
android:theme="@style/AppTheme.M3" />
<activity android:name=".ui.feedback.FeedbackActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:label="@string/app_name"
android:theme="@style/AppTheme" />
<activity android:name=".ui.modules.settings.SettingsLicenseActivity"
android:exported="false"
android:theme="@style/AppTheme.M3" />
<activity android:name=".ui.settings.SettingsLicenseActivity"
android:configChanges="orientation|keyboardHidden"
android:theme="@style/AppTheme" />
android:exported="false"
android:theme="@style/AppTheme.M3" />
<activity android:name="com.canhub.cropper.CropImageActivity"
android:configChanges="orientation|keyboardHidden"
android:exported="false"
android:theme="@style/Base.Theme.AppCompat" />
<activity android:name=".ui.modules.base.BuildInvalidActivity" />
<activity android:name=".ui.login.oauth.OAuthLoginActivity"
android:configChanges="orientation|keyboardHidden"
android:exported="false"
android:theme="@style/Theme.MaterialComponents.Light.DarkActionBar" />
<activity android:name=".ui.login.recaptcha.RecaptchaActivity"
android:configChanges="orientation|keyboardHidden"
android:exported="false"
android:theme="@style/Theme.MaterialComponents.Light.DarkActionBar" />
<activity android:name=".ui.main.BuildInvalidActivity" android:exported="false" />
<!-- _____ _
| __ \ (_)
@ -154,18 +172,20 @@
| | \ \ __/ (_| __/ |\ V / __/ | \__ \
|_| \_\___|\___\___|_| \_/ \___|_| |___/
-->
<receiver android:name=".receivers.UserPresentReceiver"
android:enabled="true">
<receiver android:name=".core.receiver.UserPresentReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver android:name=".sync.UpdateDownloaderService$DownloadProgressReceiver">
<receiver android:name=".sync.UpdateDownloaderService$DownloadProgressReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
</intent-filter>
</receiver>
<receiver android:name=".receivers.SzkolnyReceiver"
<receiver android:name=".core.receiver.SzkolnyReceiver"
android:exported="true">
<intent-filter>
<action android:name="pl.szczodrzynski.edziennik.SZKOLNY_MAIN" />
@ -179,15 +199,15 @@
____) | __/ | \ V /| | (_| __/\__ \
|_____/ \___|_| \_/ |_|\___\___||___/
-->
<service android:name=".data.api.ApiService" />
<service android:name=".data.firebase.MyFirebaseService"
android:exported="false">
<service android:name=".data.api.ApiService" android:foregroundServiceType="dataSync"/>
<service android:name=".core.firebase.MyFirebaseService"
android:exported="false" android:foregroundServiceType="dataSync">
<intent-filter android:priority="10000000">
<action android:name="com.google.firebase.MESSAGING_EVENT" />
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service android:name=".sync.UpdateDownloaderService" />
<service android:name=".sync.UpdateDownloaderService" android:foregroundServiceType="dataSync"/>
<!--
_____ _ _

View File

@ -1,15 +1,11 @@
<h3>Wersja 4.7-rc.2, 2021-04-05</h3>
<h3>Wersja 4.14, 2025-02-02</h3>
<ul>
<li><u>Szkolny.eu jest teraz open source!</u> Zapraszamy na stronę <a href="https://szkolny.eu/">https://szkolny.eu/</a> po więcej ważnych informacji.</li>
<li>Poprawiono wybieranie obrazków (tła nagłówka, tła aplikacji oraz profilu) z dowolnego źródła.</li>
<li>Zaktualizowano tłumaczenie na język angielski. @MarcinK50</li>
<li>Dodano ekran informacji o kompilacji w Ustawieniach.</li>
<li>Zaktualizowano ekran licencji open source.</li>
<li>Naprawiono zatrzymanie aplikacji na Androidzie 4.4 i starszych.</li>
<li>Naprawiono problemy z połączeniem internetowym na Androidzie 4.4 i starszych.</li>
<li>Zoptymalizowano wielkość aplikacji.</li>
<li>USOS: <b>dodano obsługę ocen</b>.</li>
<li>USOS: obliczanie średniej za studia oraz punktów ECTS.</li>
<li>USOS: poprawiono brak planu zajęć po rozpoczęciu roku.</li>
<li>Wyłączono archiwizator profili.</li>
</ul>
<br>
<br>
Dzięki za korzystanie ze Szkolnego!<br>
<i>&copy; [Kuba Szczodrzyński](@kuba2k2), [Kacper Ziubryniewicz](@kapi2289) 2021</i>
<i>&copy; [Kuba Szczodrzyński](@kuba2k2) 2025</i>

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