- Added `clazzFilter` and `selectedFilterTitle` to `ClazzListUiState`. - Implemented `onClickFilter` function in `ClazzListViewModel` to update the selected filter. - Updated `ClazzListScreen` to display a dropdown menu for selecting filters. - The selected filter is now displayed, and the dropdown shows available filter options. (commit: bb83117)
Refactor: Rename StudentViewModel to AddPersonToClazzViewModel
This commit renames `StudentViewModel` to `AddPersonToClazzViewModel` and updates its usages. The corresponding UI state `AddStudentUIState` is also renamed to `AddPersonToClazzUIState`. The `StudentScreen` composable is renamed to `AddPersonToClazzScreen`. (commit: 890b37f)
Refactor: Rename StudentViewModel to AddPersonToClazzViewModel
This commit renames `StudentViewModel` to `AddPersonToClazzViewModel` and updates its usages. The corresponding UI state `AddStudentUIState` is also renamed to `AddPersonToClazzUIState`. The `StudentScreen` composable is renamed to `AddPersonToClazzScreen`. (commit: 837321e)
Refactor: Rename Student route to AddPersonToClazz
The `Student` route in `AppRoutes.kt` has been renamed to `AddPersonToClazz`.
This change is reflected in: - `ClazzDetailViewModel.kt`: The navigation command for adding a person to a class now uses `AddPersonToClazz`. - `AppNavHost.kt`: The composable for the add person screen is now associated with the `AddPersonToClazz` route. - `AddPersonToClazzScreen.kt`: The "share with link or QR code" and "share QR code" options have been removed from this screen. - `ClazzDetailScreen.kt`: The "Invite Student" list item now navigates to `AddPersonToClazz`. The "Pending Invite", "Teachers", and "Students" list items now have a trailing arrow icon. The `onClickInviteStudent` parameter has been renamed to `onClickAddPersonToClazz`. (commit: 24b546c)
Populate Class Detail screen with fake roster data
The `ClazzDetailScreen` now displays teachers and students fetched from `FakeRosterDataSource`. The `FakeRosterDataSource` has been updated to provide a list of fake users with teacher and student roles. (commit: 90b3a2b)
Integrate pending invite list into class detail screen
This commit introduces a "Pending Invites" section to the class detail screen.
Key changes: - Added `enabledUser` field to `OneRosterUser` in `FakeRosterDataSource.kt` to differentiate between active and pending users. - Updated `ClazzDetailViewModel.kt` to fetch and store pending users in `listOfPending` within `ClazzDetailUiState`. - Modified `ClazzDetailScreen.kt` to display the list of pending invites, showing the user's name, role, and an avatar. (commit: 7ea89d7)
The `AcceptInviteScreen` and its associated `AcceptInviteViewModel` have been removed. Correspondingly, the `AcceptInvite` route and its usage within `ClazzDetailScreen`, `ClazzDetailViewModel`, `AppNavHost`, and `AppKoinModule` have been eliminated. (commit: 898149d)
The `AcceptInviteScreen` and its associated `AcceptInviteViewModel` have been removed. Correspondingly, the `AcceptInvite` route and its usage within `ClazzDetailScreen`, `ClazzDetailViewModel`, `AppNavHost`, and `AppKoinModule` have been eliminated. (commit: 6d2b783)
Add fields for class description, start date, and end date to AddClazzScreen
The `AddClazzScreen` now includes `OutlinedTextField` components for capturing the class description, start date, and end date.
Corresponding updates have been made to: - `AddClazzUiState` to include fields for `description`, `startDate`, and `endDate`. - `AddClazzViewModel` to handle changes to these new fields with dedicated `onClassDescriptionChange`, `onStartDateChange`, and `onEndDateChange` functions. - `strings.xml` to add string resources for the new labels.
The layout has been changed from `Column` to `LazyColumn` and a `Row` has been added to arrange the start and end date fields side-by-side. (commit: 0b8949e)
Refactor: Remove RespectAppLauncher from AppNavHost
The `RespectAppLauncher` screen has been removed from the `AppNavHost`. Additionally, minor code formatting adjustments have been made in `AddClazzScreen.kt`. (commit: 48fb2c0)
This commit introduces localized sort options for "First name" and "Last name" in the class list and class detail screens.
- Added new string resources for "First name" and "Last name". - Created a `SortOrderOption` data class to represent sort options. - Updated `ClazzDetailViewModel` and `ClazzListViewModel` to use `SortOrderOption` and initialize sort options with localized strings. - Modified `ClazzDetailScreen` and `ClazzListScreen` to use the new `SortOrderOption` for displaying sort options. - The default sort option is set to "First name". (commit: 0377053)
The composable functions `RespectFilterChip` and `RespectSortOption` have been renamed to `RespectFilterChipsHeader` and `RespectSortHeader` respectively.
Their usages in `LearningUnitListScreen`, `ClazzDetailScreen`, and `ClazzListScreen` have been updated to reflect these changes. (commit: 80a497f)
Refactor: Move AddPersonToClazzViewModel to addperson package
The `AddPersonToClazzViewModel` has been moved from the `clazz.student` package to `clazz.addperson`. Import statements have been updated accordingly in `AppKoinModule.kt`, `AppNavHost.kt`, and `AddPersonToClazzScreen.kt`.
Additionally, minor UI adjustments were made: - Increased spacing between filter chips in `RespectFilterChipsHeader`. - Increased padding for the dropdown icon in `RespectSortHeader`. - Removed explicit text color styling in `RespectFilterChipsHeader` as it's now handled by the `FilterChip` itself. (commit: bd2548f)
Refactor sort functionality and introduce bottom sheet option
This commit refactors the sort functionality across `ClazzListScreen`, `ClazzDetailScreen`, and `LearningUnitListScreen`.
Key changes: - Introduced `SortOrderOption` data class to represent sort options with field, flag, and order. - Updated ViewModels (`ClazzListViewModel`, `ClazzDetailViewModel`, `LearningUnitListViewModel`) to use `SortOrderOption` and manage active sort state. - Modified `RespectSortHeader` to `RespectListSortHeader`, now accepting `SortOrderOption` and handling sort order changes. - Added `RespectSortOptionsBottomSheet` composable for displaying sort options in a bottom sheet. - Added `RespectBottomSheetOption` composable for standard bottom sheet list items. - Added string resources for "ascending", "descending", "sort_by", and "language". - Added `SortOrderOptionExt.kt` for a `description()` extension function to format sort option display. - `RespectListSortHeader` now supports both `POPUP` and `BOTTOM_SHEET` modes for displaying sort options, with `BOTTOM_SHEET` as the default. (commit: 75834b1)
The following changes have been made: - Removed unused imports from `RespectFilterChipsHeader.kt` and `RespectSortHeader.kt`. - Removed the unused constant `NAME` from `ClazzDetailViewModel.kt`. - Removed the unused import `NAME` from `ClazzListViewModel.kt`. (commit: 7e1a4ba)
Add `getClazzBySourcedId` function to OneRosterDataSource
This commit introduces a new function `getClazzBySourcedId` to the `OneRosterRosterDataSource` interface and its implementation in `FakeRosterDataSource`.
The `ClazzDetailScreen` has also been updated to include a "description" list item. (commit: 30bd1a9)
Add `getClazzBySourcedId` function to OneRosterDataSource
This commit introduces a new function `getClazzBySourcedId` to the `OneRosterRosterDataSource` interface and its implementation in `FakeRosterDataSource`.
The `ClazzDetailScreen` has also been updated to include a "description" list item. (commit: 9340a19)
Refactor ClazzDetailScreen and ClazzListScreen for UI consistency
- Removed explicit sizing and font scaling from `RespectPersonAvatar` in `ClazzDetailScreen` and `ClazzListScreen` for consistent avatar appearance. - Replaced `LazyColumn` with a vertically scrollable `Column` in `AddClazzScreen` for simpler layout. - Added `onClickAcceptInvite` and `onClickDismissInvite` functions to `ClazzDetailViewModel`. - Implemented click handlers for accept and dismiss icons in `ClazzDetailScreen`'s pending user items. (commit: 909f215)
Add "Edit" string resource and update ClazzDetailViewModel
This commit introduces a new string resource "Edit" and updates the `ClazzDetailViewModel` to utilize it.
Specifically, the following changes were made: - Added `<string name="edit">Edit</string>` to `strings.xml`. - In `ClazzDetailViewModel`: - Updated `_appUiState` to set the title to "Classes", hide the back button, and configure the FAB: - Set FAB visibility to true. - Set FAB icon to `FabUiState.FabIcon.EDIT`. - Set FAB text to the newly added "Edit" string resource. - Set FAB `onClick` to navigate to `AddClazz`. - The start destination in `AppNavHost.kt` was changed from `Acknowledgement` to `RespectAppLauncher`. - Added `FabUiState.FabIcon.EDIT` to the `when` statement in `App.kt` to handle the edit icon for the FAB. - Set a default size of `40.dp` for `RespectPersonAvatar` in `RespectPersonAvatar.kt`. - Removed an extra newline in `ClazzListScreen.kt` within the `RespectPersonAvatar` composable. (commit: ae27aaf)
Add calendar icon to date fields in AddClazzScreen
This commit introduces a calendar icon to the start and end date input fields in the `AddClazzScreen`. Clicking the icon will eventually trigger a date picker.
Additionally, the following changes were made: - Set the default start destination in `AppNavHost.kt` to `Acknowledgement`. - Removed an unused function `onStartDateChange` from `AddClazzViewModel.kt`. - Displayed start and end dates in `ClazzDetailScreen.kt`. - Minor code formatting in `ClazzListScreen.kt`. (commit: ca60ee4)
The fake roster data for classes now includes `description`, `startDate`, and `endDate`.
The `ClazzListScreen` has been updated: - It now uses `ClazzList` for navigation instead of `Clazz`. - The `onClickClazz` function now accepts a `sourceId` to navigate to the correct class detail. - The UI displays the class titles from the `oneRoasterClass` list in the UI state.
The `AddClazzViewModel` has been updated to include the new fields (`description`, `startDate`, `endDate`) when creating a new class. (commit: 847caa4)
Refactor: Use default item padding in AddClazzScreen
The `AddClazzScreen` has been updated to use the `defaultItemPadding` modifier for consistent padding across its child elements. This replaces individual padding definitions for various `OutlinedTextField` components. (commit: 6f20d28)
The `RespectPersonAvatar` component now accepts `firstName` and `lastName` parameters directly, instead of a `RespectPerson` object. This simplifies the component's API and makes it more reusable.
The component's logic for generating the avatar color and initials has been updated to use the new `firstName` and `lastName` parameters. (commit: aca85a2)
This commit refactors the `AddClazz` functionality to `ClazzEdit`.
The following changes were made: - Renamed `AddClazzScreen.kt` to `ClazzEditScreen.kt` and updated its package and internal references. - Updated `AppKoinModule.kt` to use `ClazzEditViewModel` instead of `AddClazzViewModel`. - Renamed the `AddClazz` route object to `ClazzEdit` in `AppRoutes.kt`. - Updated `ClazzDetailViewModel.kt` and `ClazzListViewModel.kt` to navigate to `ClazzEdit` instead of `AddClazz`. - Renamed `AddClazzViewModel.kt` to `ClazzEditViewModel.kt` and updated its package and internal references, including `AddClazzUiState` to `ClazzEditUiState`. (commit: daaaaae)
This commit refactors the `AddClazz` functionality to `ClazzEdit`.
The following changes were made: - Renamed `AddClazzScreen.kt` to `ClazzEditScreen.kt` and updated its package and internal references. - Updated `AppKoinModule.kt` to use `ClazzEditViewModel` instead of `AddClazzViewModel`. - Renamed the `AddClazz` route object to `ClazzEdit` in `AppRoutes.kt`. - Updated `ClazzDetailViewModel.kt` and `ClazzListViewModel.kt` to navigate to `ClazzEdit` instead of `AddClazz`. - Renamed `AddClazzViewModel.kt` to `ClazzEditViewModel.kt` and updated its package and internal references, including `AddClazzUiState` to `ClazzEditUiState`. (commit: 8bb61e2)
Refactor: Simplify `OneRosterClass` and update `ClazzDetailViewModel`
Removed `description`, `startDate`, and `endDate` fields from `OneRosterClass`.
Updated `ClazzDetailViewModel`'s `onClickAcceptInvite` and `onClickDismissInvite` methods to accept a `OneRosterUser` parameter, and adjusted call sites in `ClazzDetailScreen` accordingly.
The `ClazzEditViewModel` was also updated to reflect the changes in `OneRosterClass` by removing the assignment of the removed fields. (commit: d12c541)
Refactor ClazzEditScreen to use OneRosterClass for data binding
The `ClazzEditScreen` and `ClazzEditViewModel` have been updated to use a `OneRosterClass` object (`entity`) in the UI state for managing class details. This simplifies data handling by directly modifying the `entity` instead of individual string fields.
The `onClazzChanged` function in the ViewModel now updates the `entity` in the UI state.
Additionally, the start destination of the `NavHost` in `AppNavHost.kt` has been changed from `Acknowledgement` to `RespectAppLauncher`. A new string resource `edit_clazz` has also been added. (commit: 3bed6f8)
Refactor: Update ClazzEditScreen with class name validation
This commit refactors the `ClazzEditScreen` to include validation for the class name field.
- The `OutlinedTextField` for the class name now displays an error message if the field is empty and indicates that it is a required field. - The `onClazzChanged` callback now accepts a non-nullable `OneRosterClass`. - The `FakeRosterDataSource` is now an object (singleton) and its `putClass` method will update an existing class or add a new one. - The `ClazzEditViewModel` now initializes with an existing class if `sourcedId` is provided, otherwise, it creates a new `OneRosterClass`. - The `onSaveClass` method in `ClazzEditViewModel` now performs validation for the class name before saving and updates the `dateLastModified` timestamp. - A new string resource `required` has been added. (commit: ede2aa8)
Updated `ClazzDetail` route to accept `sourcedId` as a parameter.
The `ClazzDetailViewModel` now retrieves and displays the class title based on the `sourcedId` from the route. The `ClazzListViewModel` now navigates to `ClazzDetail` with the `sourcedId` when a class is clicked. (commit: 4013b9d)
The `ClazzEdit` route has been modified to accept an optional `sourcedId` parameter.
- If `sourcedId` is provided, the `ClazzEditViewModel` will fetch the corresponding class data for editing. - If `sourcedId` is null, a new class will be created.
This change allows for both editing existing classes and creating new ones through the same route and view model. Navigations from `ClazzDetailViewModel` and `ClazzListViewModel` have been updated to utilize this new `ClazzEdit` route structure. (commit: 5df3280)
Enhance class editing with description and date fields
This commit introduces several improvements to the class editing functionality:
- **Description Field:** Added an `OutlinedTextField` for users to input a description (location) for the class. This field is now saved when the class is updated. - **Date Fields (UI only):** Added `OutlinedTextField` components for start and end dates. These are currently UI elements and not yet connected to data or saving logic. - **Padding Standardization:** Introduced an `editScreenPadding` modifier for consistent padding across edit screen elements. - **Fake Data Update:** The `FakeRosterDataSource` now includes a `location` (description) field for dummy class data. - **ViewModel Logic:** The `ClazzEditViewModel` now handles saving the class description. (commit: 91970e9)
The imports `androidx.compose.ui.platform.testTag` and `world.respect.app.components.defaultItemPadding` were removed as they were no longer being used in the `ClazzEditScreen.kt` file. (commit: fdd8847)
Refactor AddPersonToClazz route to accept roleType
The `AddPersonToClazz` route has been updated to accept a `roleType` parameter. This allows the `AddPersonToClazzViewModel` to dynamically set the screen title based on whether a teacher or student is being added.
The `ClazzDetailViewModel` and `ClazzDetailScreen` have been updated to pass the appropriate `roleType` when navigating to the `AddPersonToClazz` screen.
Additionally, the `ClazzDetailScreen` now displays the class location if available. (commit: f2fc77b)
Remove unused location property in ClazzEditViewModel
The `location` property was being copied from `initEntity` to `updatedEntity` without modification in `ClazzEditViewModel`. This redundant assignment has been removed.
Additionally, several unused imports were removed from `AppKoinModule.kt`. (commit: 6b8f67b)
Refactor FakeRosterDataSource to be a class and inject it
The `FakeRosterDataSource` has been changed from an `object` to a `class`. This allows it to be injected as a dependency into ViewModels.
The following ViewModels have been updated to accept `OneRosterRosterDataSource` as a constructor parameter: - `ClazzEditViewModel` - `ClazzListViewModel` - `ClazzDetailViewModel`
A Koin binding for `OneRosterRosterDataSource` has been added in `AppKoinModule.kt`, providing an instance of `FakeRosterDataSource`. (commit: a8035e4)
This commit introduces collapsible sections for Pending Invites, Teachers, and Students in the `ClazzDetailScreen`. Users can now expand or collapse these sections to better manage the displayed information.
Changes include: - Added `isPendingExpanded`, `isTeachersExpanded`, and `isStudentsExpanded` boolean flags to `ClazzDetailUiState` to manage the visibility of each section. - Implemented `onTogglePendingSection`, `onToggleTeachersSection`, and `onToggleStudentsSection` functions in `ClazzDetailViewModel` to update the UI state. - Updated `ClazzDetailScreen` to use these new state flags and functions to conditionally render the content of each section and handle user interactions for expanding/collapsing. - Added a new string resource `dismiss_invite`. - Added content descriptions for accessibility to various icons. (commit: 7b8f8c9)
Add content descriptions to expand/collapse icons in ClazzDetailScreen
Added new string resources for expand/collapse actions for pending invites, teachers, and student lists. Updated ClazzDetailScreen to use these strings for the contentDescription of the expand/collapse icons. (commit: 9a2963f)
Refactor string resource usage and remove unused strings
- Updated `ClazzEditViewModel` to use `Res.string.save.asUiText()` instead of `getString(Res.string.save)`. - Removed unused string resources: `last_name`, `save`, and `edit` from `strings.xml`. - Added imports for `people` and `PersonList` in `App.kt`. (commit: 0a04537)
feat: Implement OneRosterClass data layer and integrate with UI
This commit introduces the data layer for `OneRosterClass`, including: - Room entity (`OneRosterClassEntity`), DAO (`OneRoasterClassEntityDao`), and database integration. - Data source implementation (`OneRoasterClassDataSourceDb`) for database operations. - Adapter for mapping between `OneRosterClass` model and `OneRosterClassEntity`. - `ClazzListDetails` data class for list view. - Type converters for `OneRosterBaseStatusEnum` and `JsonObject`.
Updates include: - `RespectRealmDatabase` and `RespectAppDatabase` schemas to include `OneRosterClassEntity`. - `OneRosterRosterDataSource` interface with new methods for class operations. - `ClazzEditViewModel` to use the new data source, manage UI state for class editing/creation, and handle saving. - `ClazzEditScreen` to use the updated `ClazzEditViewModel`. - `RealmPrimaryKeyGenerator` to include `OneRosterClass.TABLE_ID`. - `FakeRosterDataSource` is now an abstract class. - Added `onRoasterDataSource` to `RespectRealmDataSource` and its implementations. (commit: 9e67837)
This commit introduces the `OneRosterClassEntity` to the database schema.
The `OneRosterClassEntity` includes the following fields: * `classSourcedId` (Primary Key) * `classStatus` * `classDateLastModified` * `classTitle` * `classLocation` * `classMetadata`
This commit refactors the OneRosterDataSource interface and its implementations. - Renamed `OneRosterRosterDataSource` to `OneRosterDataSource`. - Introduced `OneRoasterDataSourceLocal` interface. - Updated `OneRoasterDataSourceDb` to implement `OneRoasterDataSourceLocal` and added methods for fetching and putting class data. - Updated `ClazzListDetails` to have a non-nullable title. - Modified `ClazzEdit` route to remove `modeEdit` parameter. - Added `deleteBySourcedId` and `findAllListDetailsAsFlow` methods to `OneRoasterClassEntityDao`. - Updated ViewModels and UI screens to reflect these changes, including fetching class details using flows and adjusting UI based on data loading states. (commit: eeae70f)
Refactor: Rename OneRoaster to OneRoster and add User entity
This commit renames all instances of "OneRoaster" to "OneRoster" for consistency. It also introduces the `OneRosterUserEntity` and its corresponding adapter and DAO methods. The `FakeRosterDataSource.getAllUsers()` method has been commented out. Database schemas have been updated to reflect the new entity and name changes. (commit: 4088f95)
Refactor OneRoster adapters and FakeRosterDataSource
- Remove XXStringHasher dependency from `toEntities` functions in `OneRosterUserAdapter` and `OneRosterClassAdapter`. - Remove commented-out code for `getAllUsers` from `FakeRosterDataSource`. - Remove unused imports from `FakeRosterDataSource`. (commit: 62792d5)
Add input validation for class name in ClazzEditViewModel.
- Added `clazzNameError` to `ClazzEditUiState` to display validation errors. - Implemented `onClickSave` to validate if the class name is blank and update `clazzNameError` accordingly. - Added `onClearError` function to clear `clazzNameError`. - Updated `ClazzEditScreen` to display the error message and clear it when the input changes. - Modified `OneRosterUser.toEntities` and `OneRosterClass.toEntities` to accept `XXStringHasher` as a parameter. - Deleted `ClazzViewModel.kt`. (commit: 7ef5eb9)
Refactor: Move OneRoster models and remove FakeRosterDataSource
- Moved OneRoster model classes from `world.respect.datalayer.oneroster.rostering.model` to `world.respect.datalayer.oneroster.model`. - Moved `ClazzListDetails` from `world.respect.datalayer.oneroster.rostering.model.composites` to `world.respect.datalayer.oneroster.composites`. - Moved `OneRosterDataSource` and `OneRosterDataSourceLocal` from `world.respect.datalayer.oneroster.rostering` to `world.respect.datalayer.oneroster`. - Deleted `FakeRosterDataSource.kt`. - Removed `OneRosterBaseStatusEnum` and `JsonObject` type converters from `RealmTypeConverters.kt`. - Removed `OneRosterClassEntity` and `OneRosterUserEntity` from `RespectAppDatabase`. - Updated database schema version and identity hash. - Updated import statements across multiple files to reflect the new package structure. (commit: e7571ae)
Add `TypeConverter`s for `OneRosterBaseStatusEnum` and `JsonObject`
This commit introduces `TypeConverter`s to handle the conversion between `OneRosterBaseStatusEnum` and `String`, as well as `JsonObject` and `String` for Realm database persistence. (commit: db4b500)
Refactor: Rename OneRoasterSourceRepository and OneRosterClassEntityDao
- Renamed `OneRoasterSourceRepository.kt` to `OneRoasterDataSourceRepository.kt` and updated the class name accordingly. - Renamed `OneRosterClassEntityDao.kt` to `OneRosterEntityDao.kt`. (commit: f98bc73)
This commit refactors the codebase to replace references to "Realm" with "School" to better reflect the domain model.
Specific changes include: - Renamed `RespectRealmDataSource` to `SchoolDataSource`. - Renamed `RealmPrimaryKeyGenerator` to `SchoolPrimaryKeyGenerator`. - Updated `RespectInviteInfo` to use `SchoolDirectoryEntry` instead of `RespectRealm`. - Moved OneRoster related entities (`OneRosterClassEntity`, `OneRosterUserEntity`) and DAOs to `RespectSchoolDatabase` schema. - Updated `OneRosterDataSourceDb` to use `RespectSchoolDatabase` instead of `RespectRealmDatabase`. - Adjusted type converters and ViewModel dependencies accordingly. (commit: 9b3f8a8)
This commit updates the `getAllUsers` method across the data layer and view models to include a `sourcedId` parameter. This allows filtering users by a specific source.
Changes include: - Modified `PersonDataSource`, `PersonDataSourceDb`, `PersonDataSourceRepository`, and `PersonEntityDao` to accept `sourcedId` in `getAllUsers`. - Updated `ClazzDetailViewModel` to pass `sourcedId` when fetching users. - Refactored lambda expressions to member references in `ClazzDetailScreen`, `ClazzEditScreen`, and `ClazzListScreen` for conciseness. (commit: 54a132f)
Refactor: Update AGP version and ClazzListScreen UI
This commit updates the Android Gradle Plugin (AGP) version from 8.12.0 to 8.12.2.
It also refactors the `ClazzListScreen` and `ClazzDetailScreen`: - In `ClazzListScreen`: - Renamed `onSortOrderChanged` parameter to `onClickSortOption` for clarity. - Introduced a new `sortListMode` parameter to customize the sorting UI, defaulting to `defaultSortListMode()`. - Passed the `sortListMode` to the `RespectListSortHeader`. - In `ClazzDetailScreen`: - Minor code formatting changes for readability, primarily adding explicit `items` parameter names in `itemsIndexed` calls and adjusting newlines. (commit: 71582c4)
Refactor: Implement OneRoster primary key generation and update data sources
This commit introduces `OneRosterPrimaryKeyGenerator` for creating primary keys specific to OneRoster entities. It also updates `PersonDataSourceHttp` and `SchoolDataSourceHttp` to align with OneRoster data handling.
Changes include: - Added `OneRosterPrimaryKeyGenerator` data class. - Implemented `getAllUsers(sourcedId: String)` in `PersonDataSourceHttp`. - Added `onRoasterDataSource` property to `SchoolDataSourceHttp`. - Removed unused imports and updated dependencies in `AppKoinModule.kt`. (commit: 16fced6)
Refactor: Remove unused imports and string resources
This commit removes unused imports from `AppNavHost.kt` and deletes unused string resources related to "Language" and "Description". It also standardizes "Report" and "Reports" string resources.
Changes include: - Removed `ReportScreen` and `ReportViewModel` imports from `AppNavHost.kt`. - Removed `RespectAppLauncher` and `RespectAppList` navigation imports from `AppNavHost.kt`. - Updated `strings.xml` to have both singular "Report" and plural "Reports". - Removed "language" and "description" string resources from `strings.xml`. (commit: bdbfaca)
Refactor: Remove nested launch in ClazzListViewModel
This commit simplifies the `ClazzListViewModel` by removing a nested `viewModelScope.launch` within the collection of `schoolDataSource.onRoasterDataSource.findAll`. The inner launch was redundant as the collection itself is performed within a coroutine scope. (commit: df8ab60)