Ensure files are saved on close
Describe the bug Sometimes closing the editor won't save the file. The sync request goes out but since the version has not increased it does not save anything.
To Reproduce Steps to reproduce the behavior:
- Open file in text
- Type something and click
xto close viewer directly after - Download the file
- Sometimes observe last edits missing
Expected behavior Closing the viewer should always save the file
Will provide logs once i recorded them.
Background
When typing the changes are send out via the push endpoint. However the version counter will only increment once a sync request happened. In the meantime save requests will still have the same version and be ignored.
Possible solutions
Increment version on push
We could increase the version whenever we push - but this would require including all intermediate changes by others in the answer to the push request. The version counter is mainly used to not fetch steps over and over again - so we cannot just increase it as that would lead to ignoring relevant steps.
Sync before saving
We could also use two requests for saving - one to ensure the current version is up to date and then one to actually save the file.
Sync before saving is what we did in the past and i think it's the least intrusive and easiest change - even though it will require another roundtrip.
still a thing.
@blizzz I'm also still noticing this behavior. It's especially troublesome because re-opening the file and clicking the save icon has no effect. The user must first make some other change to the file before clicking the save button, in order for it to actually write anything to disk.
Apologies if the fix is still in progress, I don't mean to create a rush! 😅
@DavidMikeSimon actually i cannot reproduce this behaviour anymore. Do you have some reliable reproduction steps perhaps?
@blizzz Here is how I'm able to reproduce it:
- Outside of NextCloud, create a file
foo.txtwith contentsABC, in a location that NextCloud can see via an external storage mount. - Open file in NextCloud Text. Edit contents to
XYZ. Immediately close the file using the X icon, without clicking the checkmark icon. - ❗ File on disk has the out-of-date contents
ABC. - Refresh NextCloud. Open the file in NextCloud Text, where the file appears to contain
XYZ. However the file on disk still containsABC. - Click the checkmark icon for the file in NextCloud Text. The file on disk still just contains
ABC.
Nextcloud version: 27.0.2 Text app version: 3.8.0
Thanks @DavidMikeSimon. I was able to reproduce this. I think there are two issues at play here:
- Closing the viewer should remove the editor view and save the content - need to investigate what's happening there.
- We don't save anything if there have not been any changes by the current user - but we should probably only do that when it comes to autosaving - but still save on click.
@blizzz Will unassign you as it looks more like a frontend issue ;)