Instructor editing sessions and deadline extensions: Synchronize feedback session edit between tabs
Steps to reproduce:
- Open a tab as an instructor, and navigate to edit extension page.
- Open up another tab, and navigate to edit sessions page.
- At the edit extension page, add / delete some extensions.
- At the edit sessions page, save the changes.
Saving the changes at the edit sessions page at step 4 will delete the extension changes that were made in step 3. This is because the session loaded for the tab in step 3 does not contain the extension changes. The bug can be repeated in the other order too. (Edit details, then edit extensions).
The problem is that the instructor is unaware of the bug, and may find the extensions of students to mysteriously be deleted. Furthermore, there will be no emails sent to the students of the deletion.
Some suggested solutions:
- One of the contributing factors is that the extension page is on a separate page, and users may open 2 tabs for extension. Hence, refactor the extension page as a toggle on the edit sessions page. Users will do all the editing on one page. #11692 may be useful.
- Make the edit of extensions (and/or edit session details) to be PATCH requests instead.
- Refresh the data for feedback session right before submitting the edit request. - May be costly in the long run. On average, currently there are about ~50 calls/day to update a feedback session.
Any other possible solutions are welcome too
Hi @samuelfangjw @jayasting98 do you have any opinions on the solutions? Hopefully we can work something out before the announcement of the feature
@FergusMok Actually I have been wondering for quite awhile if it would be feasible to remove the deadline maps from feedback session entirely in v9 and use the DeadlineExtension entity only. I believe the "textbook" way to support Maps in sql would be to create a new table for this anyways, which we already have. I plan to bring this up during the planning phase for v9.
If we do this, we can simplify a lot of operations (we always have to refer to the maps in session because it is the single source of truth, have to update both the map in session and deadline extension entities and keep them in sync, have to filter out and hide deadlines in session etc.) and it will also fix this issue because deadlines and sessions are updated independently.