Skip to content

Commit

Permalink
Dev (#260)
Browse files Browse the repository at this point in the history
* 8 user authentication (#14)

* Update README.md and dependencies

* Add basic app structure and assets

* Implement first models, viewmodels and api calls needed for user auth

* Implement TUM-SSO authentication and update README.md and

* Clean up auth_handler.dart and update routes

* Update userState and userViewModel to use riverpod and rxdart

* Refactor code to improve readability

* Remove unused import

* Clean up code, refactor models, update error-handling

* 31 initial UI views (#53)

* Basic tum login functionality, not yet done internal account

* pushin android and yaml files also

* Added some more views,course overview and setting

* Added mycourses and public courses views,also solved navigation bug

* added bottom bar functionality with solving navigation using route=false

* removed views folder

* changed names of notification file

* Solved navigation bug from notification screen

* Added some photos,cleared login screen and add same on 1 screen and fixed bottom nav bar

* Added reusable widgets,constants,corrrected name for bookmark

* changed bookmarks text to pinned

* added login functionality

* solved login bug

---------

Co-authored-by: ge59dil <[email protected]>

* 32 implement custom errors (#55)

* Rename View->views and ViewModel -> view_model

* Run `dart fix --apply && dart format ./lib`

* Implement error handling for http requests&responses

* 54 set up grpc client (#59)

* Rename `lib/model` -> `lib/models` and `networking/apis` -> `networking/api`

* Update error handling to work with gRPC codes

* Setup proto dir structure

* Implement grpc_handler.dart

* Add (de-)serialization from/to proto

* Implement `fetchUser()` gRPC method in `user_handler.dart` and update `user_viewmodel.dart`

* Add doc

* Fix args & linting in model_generator.dart

* Update dependencies

* Update README.md

* Update `routes.dart` to automatically configure root url

* Update doc

* Add `setup_grpc.sh`

* Tmp (#69)

Update workflow with right bundle id

Co-authored-by: Jakob Körber <[email protected]>

* Update beta release workflow

* 34 clean code base (#83)

* Add config directory for better structure

* Refactor ModelGenerator

* Add Logging in handlers

* Add Logging in handlers

* Add secure storage for the token

* removed Bootstrap

* Add secure storage for the token

* Update `main.dart` to use `StreamBuilder` instead of `StreamProvider`

* Refactor  UserViewModel

* Replace old models with proto models

* Fix linting

* Improve code structure

* Add Theme

* Refactor 'internal_login_screen.dart'

* Refactor

* Refactor: Remove unused TextEditingController instances in WelcomeScreen

- Eliminated declarations of usernameController and passwordController in WelcomeScreen as they were not used.
- Ensured clean and optimized code by removing unnecessary Riverpod provider references.
- Improved overall code readability and maintainability.

* Optimize CourseOverview to Prevent Unnecessary Re-renders

- Resolved issue causing re-renders of AppBar and BottomNavigationBar on tab changes.
- Implemented Column layout to display 'My Courses' and 'Public Courses' sections together, ensuring consistent visibility.
- Added spacing between course sections for better visual clarity and user experience.
- Enhanced layout performance and overall responsiveness of the CourseOverview screen.

* Add code documentation for course_overview and course_section

* Refactor Course Sections for Reusability and Clarity

- Introduced CourseContentScreen to centralize the display logic of course sections.
- Refactored PinnedCourses and DownloadsScreen to use CourseContentScreen, enhancing code reusability.
- Added in-code documentation for clarity and future maintainability.

* Fix INT64 type

* Fix Linting

* Fix colors on TabBar not changing correctly

* Added list view builder in course_view

* changed list view to list view builder in course_view and addressed some trailing commas issue

* added material design switch in setting

* deleteing course outline

* Added base_view for app bar and bottom navigatoe

* Added base_view in course_Screen

* added onViewAll functionality

* no re rendering when click on same page

* Improve the usage of the user Model view.
- Added loading state when clicked on login
    - `handleSSOLogin()`
    - `handleSSOLogin()`
    - Added `BehaviorSubject<bool> isLoading = BehaviorSubject.seeded(false);`

* Refactor `course_card_view.dart` and added documentation for `base_view.dart`, `course_card_view.dart`, `course_overview_view.dart`

* Refactor `ssoAuth` and added documentation

* Refactor `SettingsScreen` and added documentation to `internal_login_view` and `welcome_screen_view`

* Fix in `ssoAuth` when ` Navigator.pushNamed(context, '/home');` called to set the loading state of login to false.

* Fix in `ssoAuth` when ` Navigator.pushNamed(context, '/home');` called to set the loading state of login to false.

* Rename `routes.dart` to `app_config.dart` and moved to the `config` package

* **Refactored** `UserViewModel` and Login Handling**: Moved login logic and `TextEditingController`s into `UserViewModel`

* ## Refactor: Integrate StateNotifier in UserViewModel
- Refactored `UserViewModel` to extend `StateNotifier<UserState>`.
- Eliminated separate `isLoading` BehaviorSubject in `UserViewModel`. All state changes, including loading states, are now handled directly through the unified `UserState` managed by the notifier.

* ## Refactor: Courses views to have `List<VideoCard>` or `List<VideoCard>

* ## Refactor: Courses views to have to make better use of `List.builder` and added a temporary `CourseModel` in course_model.dart that will be replaced once API courses retrieving works.

---------

Co-authored-by: carlobortolan <[email protected]>
Co-authored-by: ge59dil <[email protected]>

* Add redirect after "Continue Without" (#87)

* Tmp (#88)

Dev (#67)

* 8 user authentication (#14)

* Update README.md and dependencies

* Add basic app structure and assets

* Implement first models, viewmodels and api calls needed for user auth

* Implement TUM-SSO authentication and update README.md and

* Clean up auth_handler.dart and update routes

* Update userState and userViewModel to use riverpod and rxdart

* Refactor code to improve readability

* Remove unused import

* Clean up code, refactor models, update error-handling

* 31 initial UI views (#53)

* Basic tum login functionality, not yet done internal account

* pushin android and yaml files also

* Added some more views,course overview and setting

* Added mycourses and public courses views,also solved navigation bug

* added bottom bar functionality with solving navigation using route=false

* removed views folder

* changed names of notification file

* Solved navigation bug from notification screen

* Added some photos,cleared login screen and add same on 1 screen and fixed bottom nav bar

* Added reusable widgets,constants,corrrected name for bookmark

* changed bookmarks text to pinned

* added login functionality

* solved login bug

---------



* 32 implement custom errors (#55)

* Rename View->views and ViewModel -> view_model

* Run `dart fix --apply && dart format ./lib`

* Implement error handling for http requests&responses

* 54 set up grpc client (#59)

* Rename `lib/model` -> `lib/models` and `networking/apis` -> `networking/api`

* Update error handling to work with gRPC codes

* Setup proto dir structure

* Implement grpc_handler.dart

* Add (de-)serialization from/to proto

* Implement `fetchUser()` gRPC method in `user_handler.dart` and update `user_viewmodel.dart`

* Add doc

* Fix args & linting in model_generator.dart

* Update dependencies

* Update README.md

* Update `routes.dart` to automatically configure root url

* Update doc

* Add `setup_grpc.sh`

* Tmp (#69)

Update workflow with right bundle id



* Update beta release workflow

* 34 clean code base (#83)

* Add config directory for better structure

* Refactor ModelGenerator

* Add Logging in handlers

* Add Logging in handlers

* Add secure storage for the token

* removed Bootstrap

* Add secure storage for the token

* Update `main.dart` to use `StreamBuilder` instead of `StreamProvider`

* Refactor  UserViewModel

* Replace old models with proto models

* Fix linting

* Improve code structure

* Add Theme

* Refactor 'internal_login_screen.dart'

* Refactor

* Refactor: Remove unused TextEditingController instances in WelcomeScreen

- Eliminated declarations of usernameController and passwordController in WelcomeScreen as they were not used.
- Ensured clean and optimized code by removing unnecessary Riverpod provider references.
- Improved overall code readability and maintainability.

* Optimize CourseOverview to Prevent Unnecessary Re-renders

- Resolved issue causing re-renders of AppBar and BottomNavigationBar on tab changes.
- Implemented Column layout to display 'My Courses' and 'Public Courses' sections together, ensuring consistent visibility.
- Added spacing between course sections for better visual clarity and user experience.
- Enhanced layout performance and overall responsiveness of the CourseOverview screen.

* Add code documentation for course_overview and course_section

* Refactor Course Sections for Reusability and Clarity

- Introduced CourseContentScreen to centralize the display logic of course sections.
- Refactored PinnedCourses and DownloadsScreen to use CourseContentScreen, enhancing code reusability.
- Added in-code documentation for clarity and future maintainability.

* Fix INT64 type

* Fix Linting

* Fix colors on TabBar not changing correctly

* Added list view builder in course_view

* changed list view to list view builder in course_view and addressed some trailing commas issue

* added material design switch in setting

* deleteing course outline

* Added base_view for app bar and bottom navigatoe

* Added base_view in course_Screen

* added onViewAll functionality

* no re rendering when click on same page

* Improve the usage of the user Model view.
- Added loading state when clicked on login
    - `handleSSOLogin()`
    - `handleSSOLogin()`
    - Added `BehaviorSubject<bool> isLoading = BehaviorSubject.seeded(false);`

* Refactor `course_card_view.dart` and added documentation for `base_view.dart`, `course_card_view.dart`, `course_overview_view.dart`

* Refactor `ssoAuth` and added documentation

* Refactor `SettingsScreen` and added documentation to `internal_login_view` and `welcome_screen_view`

* Fix in `ssoAuth` when ` Navigator.pushNamed(context, '/home');` called to set the loading state of login to false.

* Fix in `ssoAuth` when ` Navigator.pushNamed(context, '/home');` called to set the loading state of login to false.

* Rename `routes.dart` to `app_config.dart` and moved to the `config` package

* **Refactored** `UserViewModel` and Login Handling**: Moved login logic and `TextEditingController`s into `UserViewModel`

* ## Refactor: Integrate StateNotifier in UserViewModel
- Refactored `UserViewModel` to extend `StateNotifier<UserState>`.
- Eliminated separate `isLoading` BehaviorSubject in `UserViewModel`. All state changes, including loading states, are now handled directly through the unified `UserState` managed by the notifier.

* ## Refactor: Courses views to have `List<VideoCard>` or `List<VideoCard>

* ## Refactor: Courses views to have to make better use of `List.builder` and added a temporary `CourseModel` in course_model.dart that will be replaced once API courses retrieving works.

---------




* Add redirect after "Continue Without" (#87)

---------

Co-authored-by: Anishyou <[email protected]>
Co-authored-by: ge59dil <[email protected]>
Co-authored-by: Jakob Körber <[email protected]>
Co-authored-by: Achraf Labidi <[email protected]>

* 46 fetch courses  (#104)

* Add gRPC calls to fetch courses

* Update `user_state_model.dart` and `UserViewModel.dart`

* Rename `UserViewModel.dart` -> `user_view_model.dart`

* Fix imports

* Update views to call endpoints

* Update views to handle fetching of courses

* ##Fix: fix Riverpod state management in `UserViewModel`.
- fix data fetching in `MyCourses` and `PublicCourses`.
- Improve navigation handling using Riverpod and `GlobalKey`.
- centralized `providers.dart`

* finished settings_screen_view

* Added updated logo

* Added logo on welcome_Screen

* fixed video_Card, added video_view

* deleting chat_view cuz not ready

* Add `courseHandler` and fix `fetchPublicCourses` to use the new api

* Add `reloadOnScroll` in base course_screen.dart and made the course_screen.dart a grid view

* added video player and many more functionalitites

* removed private

* Added live now, changed view all, changes course model

* warning resolved

* solved continue without

* fix course_cardview

* Update protofile and README

* Add `BooKMarkHandler`and `PinnedHandler` and updated `UserHandler` and `CourseHandler`

* Fetch `userCourses` and `publicCourses` in Overview screen and updated the state management to lavrage riverpod immutable states in `UserStateModel`

* Fetch `userCourses` and `publicCourses` in Overview screen and updated the state management to lavrage riverpod immutable states in `UserStateModel`

* Fix token cleanup in `logout()`

* Enhance UI for CourseOverview with Dynamic Resizing and Styling

* Enhance UI for CourseOverview with Dynamic Resizing and Styling

---------

Co-authored-by: carlobortolan <[email protected]>
Co-authored-by: ge59dil <[email protected]>

* 107 fix error reload (#108)

* Update protofiles and run `dart fix --apply && dart format ./lib`

* Fix AppError reloading bug and removed redundant code from `user_view_model.dart`

* 112 fix landscape potrait bug (#115)

* added potrait only mode in main()

* solved potrait for mobile only

* solved main() file

---------

Co-authored-by: ge59dil <[email protected]>

* 116 fix teamid and bundel when running xcode (#117)

* Fix `DEVELOPMENT_TEAM` in Xcode

* Add `project.pbxproj` to `.gitignore`

* fix `padding` for buttons, `internal link` UI (#118)

* 122-fix-padding-on-downloads-view (#123)

Adjust padding size of video card and title on Downloads view

* 97 add pin/unpin functionality to pinned view (#127)

* Adjust card view and padding on Pinned Courses

* Add pin/unpin functionality to Pinned Courses View

* Replace course details with a Course object

* Remove reload button on Pinned Courses View

* Fix Pinned Courses file names and directory structure

* 103 add-streaminghandler-and-settingshandler (#128)

* Add `stream_handler.dart`

* Remove optional values from fetch methods

* fix linting

* 109 move-token-removal-to-the-tokenhandler (#132)

Move `deleteToken('jwt')` to 'TokenHandler'

* 131 resolve-reloading-issue-on-pinned-courses-view (#133)

* Fix Reloading Issue on Pinned Courses View

* Fix bug courses disappear when reloading the page

* Remove dead code on pinned course view

* Remove unnecessary code from pinned course list

* 124 create-a-search-and-filter-button (#147)

* Add custom search navigation bar components with filter and back icons

* Remove unused library on Pinned Courses Base View

* 75 implement a video view UI  (#144)

* Remove `TouchIndicator` from app

* Add `MockData` for development purposes

* Add `OrientationManager` To manage orientations

* Extend `UserState` with `downloadedCourses`

* Remove `OrientationManager`

* Add `VideoPlayerControllerManager`, `VideoSourceType`, `VidePlayerPage`

* Rename `mockData` to `mock_data`

* Fix `WelcomeScreen` layout when in portrait mode

* Add `ChatView` sample, for videoPage usage

* Fix linting

* Add `StreamState` and `StreamViewModel` for proper stream and video handling

* Fix VideoOrientation in Fullscreen

* Fix `CustomSearchTopNavBar` UI

* Style notifications screen (#135)

* Style notifications screen

* Create notification_handler

for BannerAlerts and FeatureNotifications

* Add featureNotification to user_state_model

TODO: still bannerAlert

* Add bannerAlerts to user_state_model

* Add default notification views

* Fix linting, correct comments

* Add trailing commas to api_v2

according to previous linting error

* Remove unused inport

to fix linting

* Update protofiles, run `dart fix --apply && dart format`  and clean up imports

* Run `dart fix --apply && dart format ./lib`

* Update model_generator fields and fix fetching of notifications

* Fix formatting

* Update mock_data with newest proto messages

---------

Co-authored-by: carlobortolan <[email protected]>
Co-authored-by: Carlo Bortolan <[email protected]>

* 106 - Removing the back-arrow in course_overview_screen (#154)

solved the back arrow bug

Co-authored-by: ge59dil <[email protected]>

* 105 fix navigation system problems (#156)

* solving navigation

* corrected the navigation re rendering issue

* solved the navigation and added indexed stack

* solved the issue

* removed unecessary comments

---------

Co-authored-by: ge59dil <[email protected]>

* 157 bug-header-is-missing-on-pinned-courses (#158)

Fix bug in custom search nav bar on Pinned Courses View

* 160-fix-info-text-on-pinned-courses (#165)

* Fix alignment info text on when the pinned course is empty

* Fix padding Pinned Course Card on pinned course view

* 145-Bug-Internal-login-infinite-loop-for-loading (#166)

added a timeout so it does not take so long

Co-authored-by: ge59dil <[email protected]>

* 136 implement course view (#164)

* place Holder for the course view and handler

* correct course detail view (no thumbnail), id = 1

* handler for the thumbnails stream or vod

* searchbar and return bottom

* title set as the name of the course

* use stream view model instead of user state model

* fallback image updated

* streams fetched according to the courseId

* streams fetched according to the courseId

* taking the comments out

* fixing pubspec change

* fixing padding, and new nav bar, deleting useless classes

* fix back button bug, fix import statements,  documentation

* 168-[Bug]-Fix-expanded-exception (#169)

Remove Expanded from Navigation Tab

to eliminate exception

* #102-Improve-My-courses-and-public-courses-view-UI (#161)

* Style course card

- update live tag
- display tum id instead of slug
- remove blue background
- correct corners
- display most of course title

* Add null check for color

* Re-correct course screen title

Back to the original 'gocast'

---------

Co-authored-by: Achraf Labidi <[email protected]>

* 126-fetch-lecture-streams (#155)

* Fetch stream in PinnedView

* Code cleanup after merges

* linting fixes

* fetching lectures in course details view

* fix pinned_card title display

* Added `fetchProgress`, `putProgress`, and `markAsWatched` methods to `StreamHandler`

* fix video fetching to fetch exactly the clicked video

* Add `CompletionListener` and `ProgressListener` to update video state

* Moved `determineSourceType`

* handle case progress isn´t in the DB

* Add switching betwwen `playlistUrl`, `playlistUrlCAM` and `playlistUrlPRES`

* fix linting

* small loading time optimisation

* small loading time optimisation

* Fix ChewieController disposal issue and enhance state management

* Add check to display only available Playlists

* Add `Split view Icon`

* 146-dark-mode-in-settings (#173)

* some more changes for dark mode, added _loadtheme preference

* added more theme instead of basic hardcoded color

* solved linting, amde some more modifications for dark mode

* added theme for back arrow in custom search top navbar

---------

Co-authored-by: ge59dil <[email protected]>

* 167 unify cards (#175)

* break down cards into function, create unified one

* create inheritance between cards to avoid repetition

* avoid repetition in header

* renaming bigCard, renaming course_card.dart, moving the cards to the right folder

* rename to base_card

* 48-fetch-users-settings (#176)

* Add Settings Handler file

* Add update user settings method on User View Model

* Add Fetch and Update Settings on User View Model

* Fix update settings function on user view model

* 184 pin course in detail course view (#185)

* add a pin button next to the title

* put pin button in sparate class to avoid repetition

* use theme

* 163-revise-ipad-settings-UI (#174)

* Hamburger Settings Menu First Draft

- todo: refactor code, make it reusable
- test on more devices

* Refactor new tablet settings code into old

- delete new views and add conditionals to reuse old ones

* Reuse baseView

* Add return for phone view

and extract settings list code

* Remove debug print statement

---------

Co-authored-by: Achraf Labidi <[email protected]>

* Implemented dark mode for course cards (#199)

Co-authored-by: ge59dil <[email protected]>

* 195 implement theme colors for option menu in video player (#198)

* added theme

* solved

* removed unused variable

---------

Co-authored-by: ge59dil <[email protected]>

* 140-implement-user-settings-view-UI (#180)

* Add Edit Profile View on Settings View

* Add playback speed picker and custom playback input on Settings View

* Add Playback Speed Picker View on settings

* Add Custom Playback Speed View on settings

* Add login error dialog card view on settings view

* Add error handler and info text for edit profile screen

* Fix Linting on Edit Profile View

* Fix bug when user selects multiple playback speeds on Settings View

* Display custom playback speeds on playback speed picker list

* Add greeting preferences view

* Fix update function on Edit Profile View

* Add a playback speeds view for playback speed picker and custom speed input

* Fix linting error on settings screen view

* Add load settings function on settings screen view

* Edit and modularize the setting views

* Fix fetching bug on playback speed view

* Add border radius on Custom Playback Speed input cart

* Add theme color on Authentication Error Card View

* Add padding on Playback Speed Picker View

* Add an error text to prevent a negative number from being entered in the Custom Playback Speed View

* Add a limit to the custom playback speed input view

* Add a character limit to the edit profile screen

* Add char limitation on Custom Playback Speed View

* 177 add control bar to video player in fullscreen and basic ChatUI for android and iOS (#200)

* Fix `markedAsWatched` bug being called 3 times

* Add menu to videoPlayer and cleaned the code

* Move `ChatView` to seperate folder

* Add pin course while watching video

* Remove unused code

* Add basic chatUI to make the videoView functional

* update setup_grpc.sh

* Linked the settings playback speeds with the videoPlayer

* fix `updateSelectedSpeeds()`

* fix options not appearing in android

* 207-adjust-the-playback-speed-to-make-one-is-always-be-enabled (#208)

Fix playback speed picker view as one is always be enabled

Co-authored-by: Achraf Labidi <[email protected]>

* 51 implement download functionality (#187)

* added download func

* implemented download funcitonality

* implement some changes2

* changed fetchdownloads

* changed signing

* added delete functionality

* implemented delete func

* Add download in video control bar

* Adapt download to videoPlayer

* Revert "Add download in video control bar"

This reverts commit 53732f9.

* Add `OfflineVideoPlayerPage`

* Use `OfflineVideoPlayerPage`in the download view

* delete unused code

* added stream downloads ability

* configure downloads UI

* added delete all pop up

* added mock url

* solved pipeline error

* commented the mock url

* Added notification for video downloading and downloaded video and solved the refresh bug

* 80% to 90% comment updated

* added stream name as filename, would add it as placeholder in next PR

* solved the bug with changing state

* .

* Deleted downloadedvideos from stream_view_model.dart

* Solved some more potential bugs

---------

Co-authored-by: ge59dil <[email protected]>
Co-authored-by: Achraf Labidi <[email protected]>
Co-authored-by: Achraf Labidi <[email protected]>

* 73 implement push notifications (#172)

* Add firebase cloud messaging service

* Implement `notification_handler.dart` and `notifiation_view_model`

* Update protofiles

* Update push notification handling

* Add `fetchFeaturedNotifications` and `fetchFeaturedNotifications()`

* Fix notificationViewModel and add notification state & pushnotification model

* Added functionality to notification view

* Linting

* Fix duplicate push notification bug

* Reformat files

* Revert "Reformat files"

This reverts commit 292dca4.

* Implement notification view UI

* Upgrade dependencies

* Clean up notification code and add live pushnotification

* Update README.md

---------

Co-authored-by: Achraf Labidi <[email protected]>

* 85 implement chat functionalities using the api (#209)

* Update proto files

* Add `ChatHandlers`

* `fetch` and `post` chats from the `db`

* fix `clearError()`

* Add `fetchAllCourses()`

* Add `CourseState` and `CourseViewModel`

* Add intl

* Add `SuggestedStreamsWidget`

* Add `isRateLimitReached`, `isCoolDown` and `accessDenied` to `chatState`

* Add suggestions to chatView

* Add `_updateTimer` and `_isCooldownActive`

* Rename `chat_video_view` to `chat_view`

* Add DarkMode support

* Add DarkMode support

* Split chat view and state

* Merge conflicts fix

* fix `ChatState`

* 205-fix-settings-view-in-lanscape-and-fix-updating-settings (#222)

* Fix FocusScopeNode disposal issue in landscape mode on Settings View

* Made the BaseView a Consumer

* lint fix

* Create `SettingState` and `SettingViewModel`

* Rework the Settings updates

* fix the `_showLogoutDialog` using Navigator in async gap

* Add padding to setting view in Landscape mode

* Sort `playBackSpeed` and disabled speed higher than `2.0`

* Name shouldn´t be only empty spaces

* add padding to edit profile view for landscape

* show dialog box to handle error messages on edit profile view

---------

Co-authored-by: Achraf Labidi <[email protected]>
Co-authored-by: Achraf Labidi <[email protected]>

* 197 search and filter function (#210)

* search function in detail course

* move initialize thumbnail to initializestreams

* move search bar from pinned_courses_content_view.dart to pinned_courses_view.dart, create searchbar

* move search bar from pinned_courses_content_view.dart to pinned_courses_view.dart, create searchbar

* clean up pin course, create UI for popup menu

* add the functionality of the filter function.

* fix filter in detail course and UI for pinned course filter

* fix filter in pinned course for newest and oldest

* create a popup for semesters, the semesters are fetched

* create a functional semester filter

* add a search and filter bar to my course and public course

* implement functionality of search function in my course and public course

* debug the search function in public course

* implement filter function in public course and my course

* reduce repeated code

* rework the state management

* small bug when you open pinned course after the detail view the filter moves from semester

* using theme color

* solve the pin bug

* disable newest and oldest when a semester is set

* the default for semester is the current semester

* useriverpod to implement fitler and sort in public mycourse and pinned views

* useriverpod to implement fitler and sort in  detail view

* fixing some bug

* fix one wrong function call

* fix wrong fetch in public course

* fix wrong fetches

* fix the semester bug

* fix the bug in detail course view

* fix the bug by the back arrow in pinned view

* Merge branch 'dev' into 197-search-and-filter-function

* change the download view to stateful view. commenting out the buggy code in base view.

* reverting the base view

* Fix double `AppBar` problem

* Fix hamburger menu appearing when search clicked

---------

Co-authored-by: Achraf Labidi <[email protected]>
Co-authored-by: Achraf Labidi <[email protected]>

* GIve an option for different camera views (#243)

* Added different camera views download options

* Cleaned code in custom_video_control_bar.dart and added error message as saidd

---------

Co-authored-by: ge59dil <[email protected]>

* 188-BUG-Dark-Mode (#244)

* bug solved

* solved light mode text not showing

---------

Co-authored-by: ge59dil <[email protected]>

* #134-Create-new-home-design (#237)

* Basic Layout without Thumbnail done

* Display last lecture

TODO: somehow livenow never true (since streams are always empty)

* Add course card styling

- shadow
- correct corners
- outline

* Correct Shadow

* Display term, year in course card

* Add round icon, modify background and constraints

* Fix linting

* Livenow stream functionality

Still TODO: styling

* Add minimal styling

* Remove ViewAll for livecourses

future alternative: add LiveStream page to navigate to

* Styling

of
 -coursetitle and
- lineHeight

* Fix course_card

* Remove old livenow section

* Remove preview for publicCourses

* Add pulsing live

and
- image for mycourses
- viewCount
- roomnumber

todo:
- add redirect for room number
- icons/ colors for courses

removed settings hamburger menu for now

* Add redirect, fix background color

* Add scaling colored line

* Make border compatible with darkmode

* Add color picker

* Call the lastest stream

Problem: somehow this is empty

* Add URL launcher

* Fix linting

* Fix base light blue color on scrolling

* Bare minimum for course list view

* Add location image

* Fix expanded error

* Re-fix location aligning

* Livenow displayed correctly

* Fix linting

* Add navigation to course detail view

* Let livenow container hug content

* Refactor course section

* Refactor course card

* Pass lastLecture as lectureID

* Make lastLecture redirect

* Fix 'Don't use 'BuildContext's across async gaps.'

* Handle unmounted error

* Add null check for fetching lastLecture

Problem: fetching does not return stream correctly (a problem everywhere)

* Add rudimentary differentiation for Tablets

* Fix list view

* Add static progress bar

* Add functionality to progress

* Add stream length and date

* Make compatible with darkmode

* Commit before dev merge

* fix flutter dependencies

* Fix linting

* Avoid possible overflow error

* Fix lauchUrl on ios

* Add padding to downloads and pinns

* Fix padding for ipads

* Clean up comments, ..

- remove comments
- remove TODOS
- resolve error for course placeholder

* Redo merge stuff

* Add settings redirects

* Redo stream parameters

* Fix linting

* Remove thrown error

* Create folder `download_state_model`

* Remove comment

* Add shadow to the `BaseCard`

* Fix `progress` in stream card

---------

Co-authored-by: Achraf Labidi <[email protected]>
Co-authored-by: Achraf Labidi <[email protected]>

* Fix the displayed courses state and add swipe gesture to pin-unpin a course (#248)

* Remove `lastStream` in course card

* Use `PopScope` to fix swiping left taking to login screen.

* Change Pinned course to use `CourseCard`

* fix navigation to `public` and `MyCourses`

* fix `RefreshIndicator` in course overview course

* fix `RefreshIndicator` all views

* linting

* fix `livenow` all views

* fix linting

* add `updateDisplayPinnedCourse` fo the pinned view

* Add sliding to pin and upin

* fix the `drawer` appearing when swipping from left in protrait mode.

* Use `DrawerMotion()` in the slide

* Update integer types to be consistent with API

---------

Co-authored-by: carlobortolan <[email protected]>

* Adding download over wifi func (#242)

* Adding download over wifi func

* download over wifi func

* download func

* added error handing

* rollbacking Info.plist

* Added changes for mobile data.

* solved delete bug

* solved error

---------

Co-authored-by: ge59dil <[email protected]>
Co-authored-by: Achraf Labidi <[email protected]>

* 221 create quiz (#251)

* update protofiles

* add poll handler, state model, view model

* create placeholder for poll, separate the inactive overlay from chat view

* clean the unused parameters

* update protofile, convert int64 to int

* fix the trailing comma

* fix the trailing comma

* Fix Bugs and clean logs (#255)

* Fix multiple errors when wrong credentials.

* Clean log and double error throwing

* change `CircleLoading` to `gray send button` when cooldown is active in chat

* Made `PinState` seperated

* fix `grpcCalls` with empty token

* fix `fetchSemester` in public courses

* Fix continue without and other bugs (#256)

* use enum for section kind

* fix the no live stream bug

* separate course section and live stream section

* separate course card and small stream card

* reduce logged in

* fetch live now thumbnails

* fetch live now thumbnails

* fetch live now thumbnails

* Disable pinning when user not logged in and add token check (#258)

* 225 Add course name on downloads card UI (#246)

* Added video name and duration

* Adding description in video details

* added a dialog box for deletion

* Add swipe t delete too `DownloadCard`

* Add swipe t delete too `DownloadCard`

---------

Co-authored-by: ge59dil <[email protected]>
Co-authored-by: Achraf Labidi <[email protected]>
Co-authored-by: Achraf Labidi <[email protected]>

* Bug chat state not updating and add internationalization (#262)

---------

Co-authored-by: Anishyou <[email protected]>
Co-authored-by: ge59dil <[email protected]>
Co-authored-by: Jakob Körber <[email protected]>
Co-authored-by: Achraf Labidi <[email protected]>
Co-authored-by: Saina Amiri <[email protected]>
Co-authored-by: betül çimendağ <[email protected]>
Co-authored-by: Milena Rode-Kotzé <[email protected]>
Co-authored-by: Achraf Labidi <[email protected]>
  • Loading branch information
9 people authored Jan 30, 2024
1 parent 53aaaab commit 2169824
Show file tree
Hide file tree
Showing 167 changed files with 21,182 additions and 3,076 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,5 @@ app.*.map.json

ios/fastlane/report.xml
ios/fastlane/README.md

ios/Runner.xcodeproj/project.pbxproj
18 changes: 11 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ This mobile client for [gocast](https://github.com/TUM-Dev/gocast) is currently

- [x] Authentication using internal account
- [x] Authentication using TUM SSO
- [ ] Overview of own and publicly available Lectures
- [ ] Ability to watch lectures (single, multi - view and split - view)
- [ ] Bookmark lectures
- [ ] Automatic notifications if lecture starts
- [ ] Ability to search for lectures
- [ ] Ability to download lectures in a data privacy conform manner (non - exportable and remotely deletable)
- [x] Overview of own and publicly available Lectures
- [x] Ability to watch lectures (single, multi - view and split - view)
- [x] Pin lectures
- [x] Automatic notifications if course goes live starts and if new lecture VoD is uploaded
- [x] Ability to search for lectures
- [x] Ability to download lectures in a data privacy conform manner (non - exportable and remotely deletable)
- [ ] Ability to answer quizzes and feedback requests

## Config
Expand All @@ -28,4 +28,8 @@ This mobile client for [gocast](https://github.com/TUM-Dev/gocast) is currently
| Dependency | Usage | Where to download it |
|------------------------------------------|------------------------------------------|----------------------------------------------|
| `Flutter` (includes the `Dart` compiler) | SDK to develop this app | https://docs.flutter.dev/get-started/install |
| A local instance of [`gocast`](https://github.com/tum-dev/gocast) | API to fetch user data & streams | https://github.com/TUM-Dev/gocast#readme |
| A local instance of [`gocast`](https://github.com/tum-dev/gocast) | API to fetch user data & streams | https://github.com/TUM-Dev/gocast#readme |

## Push notifications

For the push notifications, gocast_mobile uses the Firebase Cloudmessaging API. For more details and a detailed setup instruction, see [gocast FCM guide](https://gist.github.com/carlobortolan/845141e175c2f43135b3893670f99c59).
29 changes: 29 additions & 0 deletions android/app/google-services.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "1098592064630",
"project_id": "ipraktikum-v1",
"storage_bucket": "ipraktikum-v1.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:1098592064630:android:fa116290547c8adf03fb57",
"android_client_info": {
"package_name": "de.tum.gocast"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyCCbpYL8mGCkRD0CZG7bv5WmaNZP67Yxto"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}
3 changes: 3 additions & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<application
android:label="gocast_mobile"
android:name="${applicationName}"
Expand All @@ -24,6 +25,8 @@
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="de.tum.gocast_mobile" />
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
Expand Down
Binary file modified android/app/src/main/res/mipmap-hdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified android/app/src/main/res/mipmap-mdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ buildscript {

dependencies {
classpath 'com.android.tools.build:gradle:7.3.0'
// START: FlutterFire Configuration
classpath 'com.google.gms:google-services:4.3.14'
// END: FlutterFire Configuration
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Expand Down
Binary file added assets/images/appicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/img.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sample.mp4
Binary file not shown.
2 changes: 1 addition & 1 deletion ios/Flutter/AppFrameworkInfo.plist
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>11.0</string>
<string>12.0</string>
</dict>
</plist>
2 changes: 1 addition & 1 deletion ios/Podfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '11.0'
platform :ios, '12.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down
128 changes: 124 additions & 4 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,4 +1,39 @@
PODS:
- connectivity_plus (0.0.1):
- Flutter
- ReachabilitySwift
- Firebase/CoreOnly (10.18.0):
- FirebaseCore (= 10.18.0)
- Firebase/Messaging (10.18.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 10.18.0)
- firebase_core (2.24.2):
- Firebase/CoreOnly (= 10.18.0)
- Flutter
- firebase_messaging (14.7.10):
- Firebase/Messaging (= 10.18.0)
- firebase_core
- Flutter
- FirebaseCore (10.18.0):
- FirebaseCoreInternal (~> 10.0)
- GoogleUtilities/Environment (~> 7.12)
- GoogleUtilities/Logger (~> 7.12)
- FirebaseCoreInternal (10.20.0):
- "GoogleUtilities/NSData+zlib (~> 7.8)"
- FirebaseInstallations (10.20.0):
- FirebaseCore (~> 10.0)
- GoogleUtilities/Environment (~> 7.8)
- GoogleUtilities/UserDefaults (~> 7.8)
- PromisesObjC (~> 2.1)
- FirebaseMessaging (10.18.0):
- FirebaseCore (~> 10.0)
- FirebaseInstallations (~> 10.0)
- GoogleDataTransport (~> 9.2)
- GoogleUtilities/AppDelegateSwizzler (~> 7.8)
- GoogleUtilities/Environment (~> 7.8)
- GoogleUtilities/Reachability (~> 7.8)
- GoogleUtilities/UserDefaults (~> 7.8)
- nanopb (< 2.30910.0, >= 2.30908.0)
- Flutter (1.0.0)
- flutter_inappwebview (0.0.1):
- Flutter
Expand All @@ -9,57 +44,142 @@ PODS:
- OrderedSet (~> 5.0)
- flutter_secure_storage (6.0.0):
- Flutter
- GoogleDataTransport (9.3.0):
- GoogleUtilities/Environment (~> 7.7)
- nanopb (< 2.30910.0, >= 2.30908.0)
- PromisesObjC (< 3.0, >= 1.2)
- GoogleUtilities/AppDelegateSwizzler (7.12.0):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- GoogleUtilities/Environment (7.12.0):
- PromisesObjC (< 3.0, >= 1.2)
- GoogleUtilities/Logger (7.12.0):
- GoogleUtilities/Environment
- GoogleUtilities/Network (7.12.0):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (7.12.0)"
- GoogleUtilities/Reachability (7.12.0):
- GoogleUtilities/Logger
- GoogleUtilities/UserDefaults (7.12.0):
- GoogleUtilities/Logger
- nanopb (2.30909.1):
- nanopb/decode (= 2.30909.1)
- nanopb/encode (= 2.30909.1)
- nanopb/decode (2.30909.1)
- nanopb/encode (2.30909.1)
- OrderedSet (5.0.0)
- package_info_plus (0.4.5):
- Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- PromisesObjC (2.3.1)
- ReachabilitySwift (5.0.0)
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- uni_links (0.0.1):
- Flutter
- url_launcher_ios (0.0.1):
- Flutter
- video_player_avfoundation (0.0.1):
- Flutter
- FlutterMacOS
- wakelock_plus (0.0.1):
- Flutter
- webview_flutter_wkwebview (0.0.1):
- Flutter

DEPENDENCIES:
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
- Flutter (from `Flutter`)
- flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`)
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- uni_links (from `.symlinks/plugins/uni_links/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
- wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
- webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)

SPEC REPOS:
trunk:
- Firebase
- FirebaseCore
- FirebaseCoreInternal
- FirebaseInstallations
- FirebaseMessaging
- GoogleDataTransport
- GoogleUtilities
- nanopb
- OrderedSet
- PromisesObjC
- ReachabilitySwift

EXTERNAL SOURCES:
connectivity_plus:
:path: ".symlinks/plugins/connectivity_plus/ios"
firebase_core:
:path: ".symlinks/plugins/firebase_core/ios"
firebase_messaging:
:path: ".symlinks/plugins/firebase_messaging/ios"
Flutter:
:path: Flutter
flutter_inappwebview:
:path: ".symlinks/plugins/flutter_inappwebview/ios"
flutter_secure_storage:
:path: ".symlinks/plugins/flutter_secure_storage/ios"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
uni_links:
:path: ".symlinks/plugins/uni_links/ios"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
video_player_avfoundation:
:path: ".symlinks/plugins/video_player_avfoundation/darwin"
wakelock_plus:
:path: ".symlinks/plugins/wakelock_plus/ios"
webview_flutter_wkwebview:
:path: ".symlinks/plugins/webview_flutter_wkwebview/ios"

SPEC CHECKSUMS:
connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d
Firebase: 414ad272f8d02dfbf12662a9d43f4bba9bec2a06
firebase_core: 0af4a2b24f62071f9bf283691c0ee41556dcb3f5
firebase_messaging: 90e8a6db84b6e1e876cebce4f30f01dc495e7014
FirebaseCore: 2322423314d92f946219c8791674d2f3345b598f
FirebaseCoreInternal: efeeb171ac02d623bdaefe121539939821e10811
FirebaseInstallations: 558b1da7d65afeb996fd5c814332f013234ece4e
FirebaseMessaging: 9bc34a98d2e0237e1b121915120d4d48ddcf301e
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
flutter_inappwebview: 3d32228f1304635e7c028b0d4252937730bbc6cf
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
GoogleDataTransport: 57c22343ab29bc686febbf7cbb13bad167c2d8fe
GoogleUtilities: 0759d1a57ebb953965c2dfe0ba4c82e95ccc2e34
nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126
package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
webview_flutter_wkwebview: 2e2d318f21a5e036e2c3f26171342e95908bd60a
url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812
video_player_avfoundation: 02011213dab73ae3687df27ce441fbbcc82b5579
wakelock_plus: 8b09852c8876491e4b6d179e17dfe2a0b5f60d47
webview_flutter_wkwebview: 4f3e50f7273d31e5500066ed267e3ae4309c5ae4

PODFILE CHECKSUM: 70d9d25280d0dd177a5f637cdb0f0b0b12c6a189
PODFILE CHECKSUM: 7be2f5f74864d463a8ad433546ed1de7e0f29aef

COCOAPODS: 1.14.3
Loading

0 comments on commit 2169824

Please sign in to comment.