Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New minor release #152

Merged
merged 118 commits into from
Feb 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
8ed84e5
Modify login.dart
vyPal Aug 29, 2023
30e85d2
Start rewriting load
vyPal Aug 29, 2023
9e89457
Testing login for new api
vyPal Sep 1, 2023
223f94f
Work on new api integration
vyPal Sep 7, 2023
f47f0ae
Start timetable implementation for new api
vyPal Sep 8, 2023
0de61ce
Merge branch 'master' into build-newapi
vyPal Sep 8, 2023
258f1de
Remove unused imports
vyPal Sep 8, 2023
19b0749
Restyled by prettier-yaml
restyled-commits Sep 8, 2023
3f9da39
Merge pull request #125 from DislikesSchool/restyled/build-newapi
vyPal Sep 8, 2023
d712bf7
Updated init api calls to use new api
vyPal Sep 11, 2023
9b298be
Message loading fix
vyPal Sep 14, 2023
8b461c0
Add TimeOfDay and DateTime extension tests
vyPal Sep 15, 2023
49e6347
Finish TimeOfDay test
vyPal Sep 15, 2023
f66c5de
Removed login page test from widget_test
vyPal Sep 15, 2023
38a7640
Complete List.move test
vyPal Sep 15, 2023
56dd488
Adapting for new API
vyPal Sep 18, 2023
0b3a862
Merge branch 'master' into build-newapi
vyPal Sep 20, 2023
43bfa7f
Error in default baseUrl
vyPal Sep 20, 2023
7184400
Merge pull request #135 from DislikesSchool/build-release
vyPal Sep 23, 2023
10cac2a
Fix date parsing for lunches
vyPal Sep 23, 2023
2583475
Update app version
vyPal Sep 23, 2023
d89e17f
Move patch checking to main.dart
vyPal Sep 23, 2023
5d371e6
Update workflows
vyPal Sep 23, 2023
f0b0ed1
Remove unused element
vyPal Sep 23, 2023
a9e7819
Add workflow badges to readme
vyPal Sep 23, 2023
d88d0f7
Remove unused import
vyPal Sep 23, 2023
52bd583
Add testing for route /test
vyPal Sep 23, 2023
be4d561
Merge pull request #137 from DislikesSchool/new-api-test
vyPal Sep 23, 2023
5b79515
Fix test route
vyPal Sep 23, 2023
6695464
Add lesser test fro TimeOfDay test
vyPal Sep 23, 2023
1994c31
[no ci] move custom endpoint
vyPal Sep 30, 2023
13c2b6b
Merge branch 'master' into build-newapi
vyPal Sep 30, 2023
c780b2b
Timetable implementation in load.dart
vyPal Oct 1, 2023
5dc16cc
Remove testing webhook
vyPal Oct 1, 2023
b586ca4
Replace default server url
vyPal Oct 1, 2023
69fe600
[no ci] Fix length called on null
vyPal Oct 2, 2023
ccb4d5a
[no ci] Fix LateInitialization error
vyPal Oct 2, 2023
b9f6c05
Check if message Values include key attachements
vyPal Oct 2, 2023
0b1166d
[no ci] timetable page horizontal scrolling
vyPal Oct 2, 2023
707ba6c
[no ci] New key for message id
vyPal Oct 2, 2023
300ee40
[no ci] modify baseUrl
vyPal Oct 3, 2023
0bf2162
[no ci] Create new timetable file for rewrite
vyPal Oct 3, 2023
c9163b5
Start new timetable [no ci]
vyPal Oct 13, 2023
ac87b31
Move remote config setup main initialization
vyPal Oct 15, 2023
347f249
Fix msgs not being instance of Map<String,dynamic>
vyPal Oct 15, 2023
5457b3b
Remove test discord webhook test
vyPal Oct 15, 2023
dcd92e0
Show lunch on home page when available
vyPal Oct 15, 2023
595e7b2
Remove second quickstart
vyPal Oct 15, 2023
eb13b09
Revert to old timetable
vyPal Oct 15, 2023
345f660
Fix buggy timetable when swiping
vyPal Oct 15, 2023
b3c2093
Add timetable periods to timetable data
vyPal Oct 16, 2023
191483c
Fix app not logging in
vyPal Oct 16, 2023
c079499
Fix timetable for new API
vyPal Oct 16, 2023
723c304
[no ci] FIx timetable not swiping backwards
vyPal Oct 18, 2023
5805625
Fix timetable stability issues
vyPal Oct 18, 2023
6b7d103
Fix opening message and attachments
vyPal Oct 18, 2023
55a7eb7
Add translating for attachment number
vyPal Oct 19, 2023
f5a861d
Fix replies not showing in message list
vyPal Oct 19, 2023
aab37dc
Start on _fecthMessages function
vyPal Oct 19, 2023
1484d58
Remove unused code
vyPal Oct 23, 2023
8d06e37
Remove unread messages label (not functioning)
vyPal Oct 24, 2023
3084a2a
Handle no classroom on homepage
vyPal Oct 24, 2023
0f3a9e9
Remove extra blank classes
vyPal Oct 26, 2023
a844251
Update homescreen timetable
vyPal Oct 26, 2023
54aec9c
Change default testUrl
vyPal Oct 26, 2023
af2c8ef
Fix messages not shown on homepage
vyPal Oct 28, 2023
f4817f2
Improved attachment rendering + important messages
vyPal Oct 28, 2023
06bea5d
Remove extra / in testUrl
vyPal Oct 28, 2023
1ebe9dd
Attachment UI improvements
vyPal Oct 28, 2023
d205803
Finish loading older messages on scroll
vyPal Oct 31, 2023
ac9cff5
Fix homework page
vyPal Oct 31, 2023
9ab9ae1
Remove debug print
vyPal Oct 31, 2023
407018c
Fix icanteen support
vyPal Oct 31, 2023
c5cecbf
Merge pull request #124 from DislikesSchool/build-newapi
vyPal Oct 31, 2023
a73d88a
Merge pull request #144 from DislikesSchool/master
vyPal Oct 31, 2023
3a89c6d
Bump version to 1.8.2 [no ci]
github-actions[bot] Oct 31, 2023
ba005b9
Bump version to 1.8.2 [no ci]
github-actions[bot] Oct 31, 2023
f1a1f5e
Merge branch 'master' into add-new-coverage-tests
vyPal Oct 31, 2023
a1bc0cf
Update app_sk.arb
SAMUELLL41 Oct 31, 2023
fd4e13d
Merge pull request #145 from DislikesSchool/build-prerelease
vyPal Nov 1, 2023
7afc93c
Merge pull request #146 from SAMUELLL41/master
vyPal Nov 1, 2023
2c927cd
Merge pull request #138 from DislikesSchool/add-new-coverage-tests
vyPal Nov 1, 2023
67b0df4
Fix null pointer exception in TimeTablePageState
vyPal Nov 10, 2023
72d97ea
Add import statement and refactor TimeTableClass
vyPal Nov 10, 2023
24a467c
Add EP2Data API to load.dart and message.dart, and
vyPal Nov 10, 2023
87f8b96
Fix integration test hanging forever
vyPal Nov 10, 2023
317ee10
Merge pull request #147 from DislikesSchool/master
vyPal Nov 10, 2023
6c61ceb
Comment out OneSignal push notification code.
vyPal Nov 10, 2023
7a61bea
Merge pull request #148 from DislikesSchool/master
vyPal Nov 11, 2023
f3efa15
Add localization and progress updates to EP2Data
vyPal Nov 11, 2023
07c4d41
Fix null and empty endpoint bug, remove unused
vyPal Nov 11, 2023
46bf6bd
Add backend status section to README.md
vyPal Nov 11, 2023
61efdd6
Add quickstart option to EP2Data class
vyPal Nov 13, 2023
bda400d
Remove unused imports and variables
vyPal Nov 13, 2023
277fea4
Fix date-only cache keys and add missing null
vyPal Nov 13, 2023
7c6a77f
Update emulator architecture to arm64-v8a
vyPal Nov 13, 2023
f8bf4f0
Revert emulator architecture to x86_64
vyPal Nov 13, 2023
11f93d4
Remove comment so that ci job runs
vyPal Nov 13, 2023
aafbb0b
Remove AVD caching
vyPal Nov 13, 2023
70972db
Try to increase ram to emulator
vyPal Nov 13, 2023
e17d2b4
Revert to x86_64 architecture
vyPal Nov 13, 2023
af367ed
Add AVD name to emulator options.
vyPal Nov 13, 2023
046c032
Sort classes by start and end period in timetable
vyPal Dec 26, 2023
0efcd83
Fix period parsing when period is 'ad'
vyPal Dec 26, 2023
cecdca8
Fix timetable loading issues
vyPal Dec 26, 2023
93b0b73
Update security.md
vyPal Dec 28, 2023
dcc2c01
Typo in security.md
vyPal Dec 28, 2023
0633ea7
Merge branch 'master' into data-management-rewrite
vyPal Dec 28, 2023
e596ba6
Bump tj-actions/changed-files from 37 to 41 in /.github/workflows
dependabot[bot] Jan 2, 2024
1935146
Merge pull request #150 from DislikesSchool/dependabot/github_actions…
vyPal Jan 4, 2024
8c5f423
Instant timetable load with quickstart
vyPal Feb 8, 2024
dd3f361
Upgrade packages, remove unused, reduce apk size
vyPal Feb 8, 2024
16eb0fa
Restyled by prettier-yaml
restyled-commits Feb 8, 2024
e2d287d
Merge pull request #151 from DislikesSchool/restyled/data-management-…
vyPal Feb 8, 2024
10f29b1
Merge pull request #149 from DislikesSchool/data-management-rewrite
vyPal Feb 8, 2024
47d6b75
Restyled by prettier-markdown
restyled-commits Feb 8, 2024
ea1f3c8
Merge pull request #153 from DislikesSchool/restyled/master
vyPal Feb 8, 2024
688cf99
Merge branch 'build-release' into master
vyPal Feb 8, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-patch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
with:
fetch-depth: 0
- name: Verify Changed files
uses: tj-actions/changed-files@v37
uses: tj-actions/changed-files@v41
id: verify-changed-files
with:
files: |
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/build-prerelease-apk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ jobs:
commitChange: true
branch: 'build-prerelease'
labels: 'bump'
message: 'Bump version to ${{ steps.semvers.outputs.patch }}'
message: 'Bump version to ${{ steps.semvers.outputs.patch }} [no ci]'
createPR: true
description: 'Automatic version bump to ${{ steps.semvers.outputs.patch }} for prerelease build'
- run: flutter pub get
- run: flutter gen-l10n
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/build-release-apk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ jobs:
commitChange: true
branch: 'build-release'
labels: 'bump'
message: 'Bump version to ${{ steps.semvers.outputs.minor }}'
createPR: true
message: 'Bump version to ${{ steps.semvers.outputs.minor }} [no ci]'
description: 'Automatic version bump to ${{ steps.semvers.outputs.minor }} for release build'
- run: flutter pub get
- run: flutter gen-l10n
Expand Down
31 changes: 5 additions & 26 deletions .github/workflows/test-coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@ jobs:
with:
fetch-depth: 0
- name: Verify Changed files
uses: tj-actions/changed-files@v37
uses: tj-actions/changed-files@v41
id: verify-changed-files
with:
files: |
.github/workflows/test-coverage.yml
pubspec.yaml
pubspec.lock
l10n.yaml
Expand All @@ -40,30 +41,6 @@ jobs:
with:
fetch-depth: 0

- name: Gradle cache
uses: gradle/gradle-build-action@v2

- name: AVD cache
uses: actions/cache@v3
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-33

- name: create AVD and generate snapshot for caching
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 31
arch: x86_64
profile: pixel_6_pro
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: false
script: echo "Generated AVD snapshot for caching."

- uses: actions/setup-java@v2
with:
distribution: 'zulu'
Expand All @@ -79,14 +56,16 @@ jobs:
- run: flutter analyze .
- run: flutter gen-l10n
- run: dart pub global run full_coverage
- run: flutter test --coverage --dart-define=USERNAME=${{ secrets.USERNAME }} --dart-define=PASSWORD=${{ secrets.PASSWORD }}
- run: flutter test --coverage
- name: run integration tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 31
arch: x86_64
profile: pixel_6_pro
avd-name: Pixel_6_Pro_API_31
force-avd-creation: false
ram-size: 4096M
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: flutter test integration_test/app_test.dart --coverage --dart-define=USERNAME=${{ secrets.USERNAME }} --dart-define=PASSWORD=${{ secrets.PASSWORD }} --dart-define=NAME="${{ secrets.NAME }}"
Expand Down
28 changes: 23 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,19 @@
</p>
</p>

[![build-release-android](https://github.com/DislikesSchool/EduPage2/actions/workflows/build-release-apk.yml/badge.svg)](https://github.com/DislikesSchool/EduPage2/actions/workflows/build-release-apk.yml) ![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/dislikesschool/edupage2) ![Downloads](https://img.shields.io/github/downloads/DislikesSchool/EduPage2/total) ![Contributors](https://img.shields.io/github/contributors/DislikesSchool/EduPage2?color=dark-green) ![Issues](https://img.shields.io/github/issues/DislikesSchool/EduPage2) ![License](https://img.shields.io/github/license/DislikesSchool/EduPage2) [![codecov](https://codecov.io/github/DislikesSchool/EduPage2/branch/master/graph/badge.svg?token=HKP9WFL0LN)](https://codecov.io/github/DislikesSchool/EduPage2)
![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/dislikesschool/edupage2) ![Downloads](https://img.shields.io/github/downloads/DislikesSchool/EduPage2/total) ![Contributors](https://img.shields.io/github/contributors/DislikesSchool/EduPage2?color=dark-green) ![Issues](https://img.shields.io/github/issues/DislikesSchool/EduPage2) ![License](https://img.shields.io/github/license/DislikesSchool/EduPage2) [![codecov](https://codecov.io/github/DislikesSchool/EduPage2/branch/master/graph/badge.svg?token=HKP9WFL0LN)](https://codecov.io/github/DislikesSchool/EduPage2)
[![Discord](https://discordapp.com/api/guilds/1143488418840584224/widget.png?style=banner2)](https://discord.gg/xy5nqWa2kQ)

[![test-coverage](https://github.com/DislikesSchool/EduPage2/actions/workflows/test-coverage.yml/badge.svg)](https://github.com/DislikesSchool/EduPage2/actions/workflows/test-coverage.yml)
[![build-patch-android](https://github.com/DislikesSchool/EduPage2/actions/workflows/build-patch.yml/badge.svg)](https://github.com/DislikesSchool/EduPage2/actions/workflows/build-patch.yml)

## Table Of Contents

- [Table Of Contents](#table-of-contents)
- [About The Project](#about-the-project)
- [Backend Status](#backend-status)
- [Quick status](#quick-status)
- [Statuspage](#statuspage)
- [Disclaimer](#disclaimer)
- [Built With](#built-with)
- [Getting Started](#getting-started)
Expand All @@ -43,6 +49,19 @@ And that's why we made EduPage2. So far, EduPage2 lacks a pretty big amount of f

EduPage2 uses local caching on your device, and a caching server with our own privte software, which periodically updates data from EduPage, strips it of all useless data (which EduPage includes for some reason), and finally sends out to your device when requested.

## Backend Status

### Quick status

| Host | Status |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Render.com | [![Better Stack Badge](https://uptime.betterstack.com/status-badges/v1/monitor/w8hv.svg)](https://uptime.betterstack.com/?utm_source=status_badge) |
| Deta.space | [![Better Stack Badge](https://uptime.betterstack.com/status-badges/v1/monitor/wt8i.svg)](https://uptime.betterstack.com/?utm_source=status_badge) |

### Statuspage

Currently there are two status pages for the EduPage2 backend. The one on [Better Stack](https://ep2.betteruptime.com/) which we have confirmed to work, and the other one on [Statuspage](https://edupage2.statuspage.io/) which seems to work, but we will have to wait unitl an outage occurs to test that.

## Disclaimer

**EduPage2** is an open-source project with contributions from multiple individuals and is not affiliated with or endorsed by the creators of EduPage. EduPage is a separate and (possibly) trademarked platform owned by asc Applied Software Consultants, s.r.o.
Expand All @@ -55,13 +74,12 @@ This project is open source and distributed under the [GPL-3.0 license](https://

This is a list of all the main tools, libraries and frameworks, that were used in this project

- [Flutter](https://flutter.dev/)
- [Firebase](https://firebase.google.com/)
- [OneSignal](https://onesignal.com/)
- [Flutter](https://flutter.dev/)
- [Express.js](https://expressjs.com/)
- [PlanetScale](https://planetscale.com/)
- [Passport.js](https://www.passportjs.org/)
- [Shorebird](https://shorebird.dev/)
- [Golang](https://go.dev/)
- [Gin](https://gin-gonic.com/)

## Getting Started

Expand Down
24 changes: 14 additions & 10 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,29 @@

### App versions

| Version | API | Supported | Remote patching \* | Changelog |
| Version | API | Supported | Remote patches \* | Changelog |
| ------------- | --- | ------------------ | ------------------ | ----------------------------------------------------------------------------------- |
| > 1.7.3 | β13 | :white_check_mark: | :white_check_mark: | [1.7.3...1.7.6](https://github.com/DislikesSchool/EduPage2/compare/v1.7.1...v1.7.3) |
| 1.7.1 - 1.7.3 | β13 | :white_check_mark: | :x: | [1.7.1...1.7.3](https://github.com/DislikesSchool/EduPage2/compare/v1.7.1...v1.7.3) |
| 1.7.1 | β13 | :white_check_mark: | :x: | [1.7.0...1.7.1](https://github.com/DislikesSchool/EduPage2/compare/v1.7.0...v1.7.1) |
| 1.7.0 | β12 | :warning: | :x: | [1.6.0...1.7.0](https://github.com/DislikesSchool/EduPage2/compare/v1.6.0...v1.7.0) |
| 1.6.0 | β12 | :warning: | :x: | [1.5.2...1.6.0](https://github.com/DislikesSchool/EduPage2/compare/v1.5.2...v1.6.0) |
| 1.8.2 | v1 | :white_check_mark: | :white_check_mark: | [1.8.0...1.8.2](https://github.com/DislikesSchool/EduPage2/compare/v1.8.0...v1.8.2) |
| 1.8.0 | β14 | :x: | :white_check_mark: | [1.7.9...1.8.0](https://github.com/DislikesSchool/EduPage2/compare/v1.7.9...v1.8.0) |
| 1.7.3 - 1.7.9 | β13 | :x: | :white_check_mark: | [1.7.3...1.7.9](https://github.com/DislikesSchool/EduPage2/compare/v1.7.1...v1.7.9) |
| 1.7.1 - 1.7.3 | β13 | :x: | :x: | [1.7.1...1.7.3](https://github.com/DislikesSchool/EduPage2/compare/v1.7.1...v1.7.3) |
| 1.7.1 | β13 | :x: | :x: | [1.7.0...1.7.1](https://github.com/DislikesSchool/EduPage2/compare/v1.7.0...v1.7.1) |
| 1.7.0 | β12 | :x: | :x: | [1.6.0...1.7.0](https://github.com/DislikesSchool/EduPage2/compare/v1.6.0...v1.7.0) |
| 1.6.0 | β12 | :x: | :x: | [1.5.2...1.6.0](https://github.com/DislikesSchool/EduPage2/compare/v1.5.2...v1.6.0) |
| 1.5.x | β11 | :x: | :x: | [1.5.0...1.5.2](https://github.com/DislikesSchool/EduPage2/compare/v1.5.0...v1.5.2) |
| < 1.5 | | :x: | :x: | |

\* Remote patching allows us to quickly push patches and bug fixes directly to your device without you having to redownload the app
\* Remote patches allow us to quickly push patches and bug fixes directly to your device without you having to redownload the app

### API version

| Version | Supported | New features in version |
| ------- | ------------------ | ----------------------- |
| β13 | :white_check_mark: | |
| β12 | :warning: | |
| β11 | :warning: | iCanteen setup |
| v1 | :white_check_mark: | Complete rewrite |
| β14 | :x: | |
| β13 | :x: | |
| β12 | :x: | |
| β11 | :x: | iCanteen setup |
| < β11 | :x: | |

:white_check_mark: - Version running on server
Expand Down
31 changes: 25 additions & 6 deletions integration_test/app_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';

import 'package:eduapge2/main.dart' as app;
import 'package:intl/intl.dart';
import 'package:shared_preferences/shared_preferences.dart';

import 'utils.dart';
Expand All @@ -25,20 +26,38 @@ void main() {
await prep(tester, username, password, name);

await tester.tap(find.byType(NavigationDestination).at(1));
await pumpUntilFound(tester, find.textContaining("Today"));
expect(find.textContaining("TODAY"), findsOneWidget);
await tester.pump(const Duration(seconds: 1));
String day = DateFormat('d', const Locale('en', 'US').toString())
.format(DateTime.now());
String month = DateFormat('MMMM', const Locale('en', 'US').toString())
.format(DateTime.now());

await pumpUntilFound(tester, find.textContaining("$day $month"));
expect(find.textContaining("$day $month"), findsWidgets);
});

testWidgets('Test TimeTable page scroll', (tester) async {
await prep(tester, username, password, name);

await tester.tap(find.byType(NavigationDestination).at(1));
await pumpUntilFound(tester, find.textContaining("Today"));
expect(find.textContaining("TODAY"), findsOneWidget);
await tester.pump(const Duration(seconds: 1));
String day = DateFormat('d', const Locale('en', 'US').toString())
.format(DateTime.now());
String month = DateFormat('MMMM', const Locale('en', 'US').toString())
.format(DateTime.now());

await pumpUntilFound(tester, find.textContaining("$day $month"));
expect(find.textContaining("$day $month"), findsWidgets);

await tester.tap(find.byKey(const Key("TimeTableScrollForward")));
await pumpUntilFound(tester, find.textContaining("Tomorrow"));
expect(find.textContaining("TOMORROW"), findsOneWidget);
await tester.pump(const Duration(seconds: 1));
day = DateFormat('d', const Locale('en').toString())
.format(DateTime.now().add(const Duration(days: 1)));
month = DateFormat('MMMM', const Locale('en').toString())
.format(DateTime.now().add(const Duration(days: 1)));

await pumpUntilFound(tester, find.textContaining("$day $month"));
expect(find.textContaining("$day $month"), findsWidgets);
});
});
}
Expand Down
Loading
Loading