Add StudentGrouping EditViewModel and set up its navigation route. (commit: 0b6720a) (details)
student grouping UI and logic in class details and edit screens. (commit: 5494b89) (details)
Add student selection logic to `StudentGroupingEditViewModel` and validate student existence before group creation in `ClazzDetailViewModel`. (commit: c354924) (details)
Update UI accessibility, formatting, and Maestro test flow for student grouping screens. (commit: 0b70732) (details)
Update UI accessibility, formatting, and Maestro test flow for student grouping screens. (commit: af73a58) (details)
Update Maestro flows to rename "New Class" to "TestClass" and remove redundant navigation steps in subflows. (commit: ec17435) (details)
Update Maestro subflow `admin_add_app_and_teacher.yaml` to change the class name from "New Class" to "TestClass" across all steps and assertions. (commit: eb795da) (details)
Update class data loading and group handling in StudentGroupingDetailViewModel and ClazzDetailViewModel. (commit: 1e2e689) (details)
Update Maestro flow `004_001_add_groups_to_a_class_test.yaml` to include assertions for student counts and group deletion dialogs, and remove the redundant `admin_add_app` subflow. (commit: 5f05771) (details)
Update ClazzDetail and StudentGroupingDetail screens to show member avatars and counts. (commit: 3014781) (details)
Update ClazzDetail and StudentGroupingDetail screens to show member avatars and counts. (commit: 18a810f) (details)
Update ClazzDetail and StudentGroupingDetail screens to show member avatars and counts. (commit: c99f5b0) (details)
Correct the assertion text in the Maestro flow `004_001_add_groups_to_a_class_test.yaml` to verify the "Permanently delete this group" message instead of "playlist". (commit: 03302b5) (details)
Update xAPI model imports and switch to `xapiStatementsResource.post` for storing statements. (commit: 47d77de) (details)
Refactor student grouping to use GUIDs for member identification and simplify xAPI statement logic. (commit: f998ba3) (details)
Update `ClazzDetailViewModel` to fetch student groups from xAPI statements instead of metadata and fix a column name in `XapiStatementEntityDao` queries(The statementVerbId is a String (the URL), and statementVerbUid is a Long (the hashed UID). The query is comparing statementVerbId (String) with :verbUid parameter (which is being passed as a Long from the hash).) (commit: 7ba9aa2) (details)
Refactor group data fetching to use xAPI statements via flows across `ClazzDetail`, `StudentGroupingDetail`, and `StudentGroupingEdit` view models. (commit: be19ae8) (details)
Implement group deletion by voiding the corresponding xAPI statement in `StudentGroupingDetailViewModel`. (commit: c81f70d) (details)
Implement logic in `StudentGroupingDetailViewModel` to dynamically find and void the correct xAPI statement when deleting a group by matching the `groupId`. (commit: b76f911) (details)
Update group deletion logic to use `statementGroupId` from UI state and implement voided statement filtering in `ClazzDetailViewModel`. (commit: b79334d) (details)
Simplify xAPI statement handling by removing manual voided statement filtering in `ClazzDetailViewModel` and stripping redundant try-catch blocks and UI state updates in student grouping ViewModels. (commit: 1465c6e) (details)
Add `statementId` to student grouping navigation routes and update associated ViewModels to track and pass xAPI statement identifiers. (commit: 30b418c) (details)
Implement xAPI statement voiding when updating a student group in `StudentGroupingEditViewModel`. When editing an existing group, a voiding statement is sent for the old statement ID before posting the updated group information as a new statement. (commit: fe27bd6) (details)
Remove debug logging from `ClazzDetailViewModel` and `StudentGroupingEditViewModel`. (commit: 30117f6) (details)
Update `ClazzDetailViewModel`, `StudentGroupingDetailViewModel`, and `StudentGroupingEditViewModel` to filter out voided xAPI statements when retrieving groups. (commit: 11a551b) (details)
Update `ClazzDetailViewModel`, `StudentGroupingDetailViewModel`, and `StudentGroupingEditViewModel` to filter out voided xAPI statements when retrieving groups. (commit: e2640a3) (details)
Simplify xAPI statement retrieval by using timestamps to identify the latest group state and refactor `StudentGroupingDetailViewModel` to inject `NavResultReturner` via the constructor. (commit: 3bc78c6) (details)
Refactor `ClazzDetailViewModel.kt` to improve code formatting and update enrollment removal logic to mark records as `TO_BE_DELETED` if they were created on the current day. (commit: 55392bf) (details)
Implement xAPI group deletion and refine the student grouping data model. (commit: 5288f96) (details)
Relocate the `isIdentified` property within `XapiGroup.kt` and remove trailing whitespace. (commit: 1c842b5) (details)
Update `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel` to support direct xAPI statement lookups and explicit statement ID generation. (commit: c284dc3) (details)
Refactor xAPI statement retrieval and fix database DAO inconsistencies. (commit: cdd5bc0) (details)
Refactor `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel` to streamline account data handling and improve xAPI statement creation. (commit: 0f831ad) (details)
Update `ClazzDetailViewModel` and its UI to represent groups directly as `XapiGroup` objects rather than xAPI statements. (commit: bae9575) (details)
Update UI and state management for student groupings in `ClazzDetailScreen` and `StudentGroupingDetailScreen`. (commit: 2f87259) (details)
Refactor `ClazzDetailScreen.kt` and `StudentGroupingEditScreen.kt` to improve list performance and error handling. (commit: 49d5618) (details)
Refactor `ClazzDetailScreen.kt` and `StudentGroupingEditScreen.kt` to improve list performance and error handling. (commit: 07a352d) (details)
Refactor `ClazzDetailScreen.kt` and `ClazzDetailViewModel.kt` to improve group ID validation and filter out groups with null account names. (commit: 8d45259) (details)
Update `ClazzDetailViewModel` to include groups with null account names and update Maestro flow assertions to use "Example Web App" and "Examples" labels. (commit: 7ed7616) (details)
Refactor `ClazzDetailViewModel.kt` to clean up formatting and whitespace. (commit: c6dee1e) (details)
Introduce `XapiStatementExt.kt` to centralize xAPI helper functions and refactor student grouping ViewModels. (commit: a93d8f5) (details)
Remove unused `SchoolDataSource` import in `XapiStatementExt.kt`. (commit: a47996d) (details)
Remove unused `SchoolDataSource` import in `XapiStatementExt.kt`. (commit: fd555e5) (details)
Update group filtering logic in `ClazzDetailViewModel.kt` to handle null timestamps and ensure distinct groups are correctly mapped from xAPI statements. (commit: e686bec) (details)
Remove `XapiStatementExt.kt` and inline xAPI agent and statement creation logic within `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel`. Use `xapiAgent` directly from the selected account session and manually construct `XapiStatement` and `XapiAgent` objects for group management and voiding operations. (commit: ebd422f) (details)
Remove unnecessary empty lines in `ClazzDetailViewModel.kt`. (commit: b3324ae) (details)
Apply minor formatting and whitespace adjustments to `ClazzDetailViewModel.kt`. (commit: b8a2ca2) (details)
Improve error handling and data robustness in student grouping view models and screens. (commit: 129ac91) (details)
Replaced showAddStudent, showAddTeacher, and showStudentGrouping with a single isAdminOrTeacher because all three were always set to the exact same value. (commit: 2685c5b) (details)
Add `STACK_COUNT` constant to `ClazzDetailViewModel` and use it to limit member display in `ClazzDetailScreen`. (commit: 9bb25c6) (details)
Update `004_001_add_groups_to_a_class_test.yaml` to pass a class name environment variable to the `admin_add_class_with_members` subflow. (commit: c7398bc) (details)
Update teacher password in Maestro flow `004_001_add_groups_to_a_class_test.yaml`. (commit: 1be2c51) (details)
Update Maestro test flows to use "StudentB USER" instead of "StudentD USER" and remove "StudentD" from the class member setup. (commit: 9d652ac) (details)
Refactor: Put all xapi related resources under the XapiResource interface. (commit: 979673a) (details)
Add conditional back navigation to admin assignment Maestro test flow. (commit: 3fc1701) (details)
Update Maestro test flows with improved assertions and move test files to the flows directory. (commit: 63430bd) (details)
Update Maestro test flows with improved assertions and move test files to the flows directory. (commit: cd9c39c) (details)
Update Maestro flow `003_admin_user_assigns_assignment_to_a_class_test.yaml` to include navigation to classes, remove redundant wait timers, and add assertions for student assignment results. (commit: 4039a31) (details)
Add student selection logic to `StudentGroupingEditViewModel` and validate student existence before group creation in `ClazzDetailViewModel`. (commit: c354924)
Implement student grouping creation logic in `StudentGroupingEditViewModel`.
* Update `StudentGroupingEditScreen` to handle group name changes and display validation errors. * Extend `Clazz` model and database entities to support a `metadata` field for storing group IDs. * Implement `onClickSave` in `StudentGroupingEditViewModel` to generate xAPI statements for group creation and update class metadata. * Add `VERB_CREATED` and `VERB_UPDATED` constants to `XapiVerb`. * Update navigation and UI padding for the student grouping entry point. (commit: 2366df0)
Implement student grouping features in class and group detail screens.
* Add `getGroupDetail` and `getGroupsByIds` to `XapiActorDataSource` and its database implementation. * Update `ClazzDetailViewModel` to extract and load group details from class metadata. * Enhance `ClazzDetailScreen` to display a list of student groups with toggle functionality. * Implement member listing in `StudentGroupingDetailScreen` and populate it via `StudentGroupingDetailViewModel`. * Fix route parameter naming from `guid` to `classUid` in `StudentGroupingEdit` and related logic. * Remove unused database schema file. (commit: c761cf4)
Implement student grouping features in class and group detail screens.
* Add `getGroupDetail` and `getGroupsByIds` to `XapiActorDataSource` and its database implementation. * Update `ClazzDetailViewModel` to extract and load group details from class metadata. * Enhance `ClazzDetailScreen` to display a list of student groups with toggle functionality. * Implement member listing in `StudentGroupingDetailScreen` and populate it via `StudentGroupingDetailViewModel`. * Fix route parameter naming from `guid` to `classUid` in `StudentGroupingEdit` and related logic. * Remove unused database schema file. (commit: e9e6de8)
Update Maestro subflow `admin_add_app_and_teacher.yaml` to change the class name from "New Class" to "TestClass" across all steps and assertions. (commit: eb795da)
Implement group deletion in `StudentGroupingDetailScreen`.
* Added a delete confirmation dialog to `StudentGroupingDetailScreen` using `RespectBasicAlertDialog`. * Implemented `onClickDeleteGroup`, `onDismissDeleteGroupDialog`, and `onConfirmDeleteGroup` logic in `StudentGroupingDetailViewModel`. * Integrated xAPI statement generation for the "deleted" verb when a group is removed. * Updated `StudentGroupingEditViewModel` to correctly use the "updated" xAPI verb when modifying existing groups. * Added `VERB_DELETED` constant and new string resources for deletion UI. (commit: 7e65e02)
Update Maestro flow `004_001_add_groups_to_a_class_test.yaml` to include assertions for student counts and group deletion dialogs, and remove the redundant `admin_add_app` subflow. (commit: 5f05771)
Correct the assertion text in the Maestro flow `004_001_add_groups_to_a_class_test.yaml` to verify the "Permanently delete this group" message instead of "playlist". (commit: 03302b5)
Refactor student grouping to use GUIDs for member identification and simplify xAPI statement logic.
- Update `StudentGroupingEditViewModel` to track selected students by `Person` objects and GUIDs instead of names. - Switch xAPI verbs from `VERB_CREATED`/`VERB_UPDATED` to `VERB_SAVED`, and `VERB_DELETED` to `VERB_VOIDED`. - Enhance the xAPI statement context to include the parent class activity ID. - Remove redundant class metadata updates when saving groups, relying on the xAPI stream instead. - Update `StudentGroupingEditScreen` to verify student selection status using GUIDs. - Add a `CLASS` constant to `XapiGroup` for URI construction. (commit: f998ba3)
Update `ClazzDetailViewModel` to fetch student groups from xAPI statements instead of metadata and fix a column name in `XapiStatementEntityDao` queries(The statementVerbId is a String (the URL), and statementVerbUid is a Long (the hashed UID). The query is comparing statementVerbId (String) with :verbUid parameter (which is being passed as a Long from the hash).) (commit: 7ba9aa2)
Refactor group data fetching to use xAPI statements via flows across `ClazzDetail`, `StudentGroupingDetail`, and `StudentGroupingEdit` view models.
- Update `ClazzDetailViewModel` to observe groups from xAPI statements as a flow using `observeGroupsFromXapi`. - Update `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel` to retrieve group details by filtering statements associated with a specific class activity ID. - Remove deprecated group-related methods from `XapiActorDataSourceDb`. - Adjust `StudentGroupingDetailUiState` to remove the direct `Clazz` dependency. - Standardize on `DataLoadParams` from `world.respect.lib.dataloadstate`. (commit: be19ae8)
Implement group deletion by voiding the corresponding xAPI statement in `StudentGroupingDetailViewModel`.
- Add `statementId` to `StudentGroupingDetailUiState`. - Update `onConfirmDeleteGroup` to post a `VERB_VOIDED` statement referencing the original group statement. - Update data loading logic to filter out voided statements when fetching the group detail. - Remove obsolete debug logs in `ClazzDetailViewModel`. (commit: c81f70d)
Implement logic in `StudentGroupingDetailViewModel` to dynamically find and void the correct xAPI statement when deleting a group by matching the `groupId`. (commit: b76f911)
Update group deletion logic to use `statementGroupId` from UI state and implement voided statement filtering in `ClazzDetailViewModel`. (commit: b79334d)
Simplify xAPI statement handling by removing manual voided statement filtering in `ClazzDetailViewModel` and stripping redundant try-catch blocks and UI state updates in student grouping ViewModels. (commit: 1465c6e)
Add `statementId` to student grouping navigation routes and update associated ViewModels to track and pass xAPI statement identifiers.
Specific changes: * Add optional `statementId` parameter to the `StudentGroupingDetail` route. * Update `ClazzDetailViewModel` to extract `statementId` from xAPI statements and pass it when navigating to group details. * Update `StudentGroupingEditViewModel` to store the `statementId` from existing groups and include it in navigation commands. * Include `statementId` in `GroupDisplayData` and UI states for better tracking of group-related xAPI statements. * Add debug logging for group and statement identifiers across Clazz Detail, Student Grouping Detail, and Edit screens. (commit: 30b418c)
Implement xAPI statement voiding when updating a student group in `StudentGroupingEditViewModel`. When editing an existing group, a voiding statement is sent for the old statement ID before posting the updated group information as a new statement. (commit: fe27bd6)
Update `ClazzDetailViewModel`, `StudentGroupingDetailViewModel`, and `StudentGroupingEditViewModel` to filter out voided xAPI statements when retrieving groups. (commit: 11a551b)
Update `ClazzDetailViewModel`, `StudentGroupingDetailViewModel`, and `StudentGroupingEditViewModel` to filter out voided xAPI statements when retrieving groups. (commit: e2640a3)
Simplify xAPI statement retrieval by using timestamps to identify the latest group state and refactor `StudentGroupingDetailViewModel` to inject `NavResultReturner` via the constructor. (commit: 3bc78c6)
Refactor `ClazzDetailViewModel.kt` to improve code formatting and update enrollment removal logic to mark records as `TO_BE_DELETED` if they were created on the current day. (commit: 55392bf)
Implement xAPI group deletion and refine the student grouping data model.
- Implement `onConfirmDeleteGroup` in `StudentGroupingDetailViewModel` using xAPI `VOIDED` statements. - Update `StudentGroupingDetailUiState` to include the selected account and helper properties for person name and ID. - Remove unused `metadata` field and related `GROUP_IDS` constant from the `Clazz` model and `ClassEntity` database schema. - Fix a bug in `XapiStatementEntityDao` and `XapiStatementEntityJsonDao` where `statementVerbId` was incorrectly referenced as `statementVerbUid`. - Clean up UI code in `StudentGroupingEditScreen` and `StudentGroupingDetailScreen`, including improved paging keys and formatting. - Remove the unused `findGroupByAccountNameAsync` from `XapiActorDao`. - Define `SAVED` and `VOIDED` display constants in `XapiVerb`. (commit: 5288f96)
Update `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel` to support direct xAPI statement lookups and explicit statement ID generation.
- Update `StudentGroupingDetailViewModel` to query xAPI statements by `statementId` if available in the route, falling back to verb and activity filters. - Modify `StudentGroupingEditViewModel` to pre-generate a `Uuid` for new xAPI statements and pass it to the `StudentGroupingDetail` navigation route. (commit: c284dc3)
Refactor xAPI statement retrieval and fix database DAO inconsistencies.
- Simplify `loadGroupDetail` in `StudentGroupingDetailViewModel` to query by verb and activity only, removing direct lookup by statement ID. - Fix a bug in `XapiStatementEntityDao` and `XapiStatementEntityJsonDao` where `statementVerbId` was incorrectly used instead of `statementVerbUid`. - Clean up indentation and code formatting in `StudentGroupingEditViewModel`. - In `StudentGroupingEditViewModel`, remove manual statement ID generation and rely on the model-generated ID for navigation. - Remove unused `Uuid` import in `StudentGroupingDetailViewModel`. (commit: cdd5bc0)
- Remove unnecessary empty line in `StudentGroupingDetailScreen.kt`. - Simplify the comment explaining the xAPI statement sorting logic in `ClazzDetailViewModel.kt`. (commit: aca36a8)
Refactor `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel` to streamline account data handling and improve xAPI statement creation.
- Remove `selectedAccount` and helper properties from `StudentGroupingDetailUiState` and `StudentGroupingEditUiState`. - Fetch the person data directly from `respectAccountManager.selectedAccountAndPersonFlow` when needed for xAPI statements. - Replace `viewModelScope.launch` with `launchWithLoadingIndicator` in `onConfirmDeleteGroup` and `onSaveGroup`. - Clean up the `StudentGroupingEditViewModel` initialization by removing the manual collection of the account flow. - Format navigation logic in `StudentGroupingEditViewModel` for better readability. (commit: 0f831ad)
Passing only groupId to the Student grouping detail . Throwing exception if the school Url is null/inappropriate Removed the Verb string (commit: 04cc63c)
Refactor `ClazzDetailScreen.kt` and `ClazzDetailViewModel.kt` to improve group ID validation and filter out groups with null account names. (commit: 8d45259)
Update `ClazzDetailViewModel` to include groups with null account names and update Maestro flow assertions to use "Example Web App" and "Examples" labels. (commit: 7ed7616)
Update group filtering logic in `ClazzDetailViewModel.kt` to handle null timestamps and ensure distinct groups are correctly mapped from xAPI statements. (commit: e686bec)
Remove `XapiStatementExt.kt` and inline xAPI agent and statement creation logic within `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel`. Use `xapiAgent` directly from the selected account session and manually construct `XapiStatement` and `XapiAgent` objects for group management and voiding operations. (commit: ebd422f)
Improve error handling and data robustness in student grouping view models and screens.
- Add `Napier` logging and replace potential crashes with safe checks and early returns in `StudentGroupingDetailViewModel`, `ClazzDetailViewModel`, and `StudentGroupingEditViewModel`. - Refactor `StudentGroupingEditState` to calculate `selectedStudentIds` dynamically from the student list. - Enhance group filtering and mapping logic in `ClazzDetailViewModel` to handle missing group/member data gracefully. - Update UI components in `StudentGroupingEditScreen` and `ClazzDetailScreen` to safely handle null items and improve key mapping. - Delete unused `XapiActorDataSource.kt`. (commit: 129ac91)
Replaced showAddStudent, showAddTeacher, and showStudentGrouping with a single isAdminOrTeacher because all three were always set to the exact same value. (commit: 2685c5b)
Update `004_001_add_groups_to_a_class_test.yaml` to pass a class name environment variable to the `admin_add_class_with_members` subflow. (commit: c7398bc)
Update Maestro flow `003_admin_user_assigns_assignment_to_a_class_test.yaml` to include navigation to classes, remove redundant wait timers, and add assertions for student assignment results. (commit: 4039a31)