KeePassDX
KeePassDX copied to clipboard
Automatically opening Updated Nextcloud database
Describe the bug When using a Nextcloud-stored Keepass database as the primary database, after it is updated (either in KeepassDX itself or on another device and then Nextcloud syncs the updated file), KeepassDX will try to automatically reopen this file, but its references are outdated and there are file errors. Going back to the database list and reselecting this same database goes to a normal, error-free Login screen which works.
To Reproduce
Steps to reproduce the behavior:
- Select a Nextcloud-stored Keepass database file and Log in to the database so it is remembered
- Add/edit an entry and save database. Nextcloud client will sync the file
- Close KeepassDX and re-open.
- KeepassDX will try to reopen the database but will have errors and you cannot Login
Expected behavior No errors
KeePass Database
- Version: 2
- Location: File saved in Nextcloud
- File provider (
content://URI): content://org.nextcloud.documents/document/1b3c8a4383b4f5c1e7c29a592e23e4dd/29 - Size: 54Kb
- Contains attachment: No
KeePassDX:
- Version: 4.0.5
- Build: Free
- Language: English
Android:
- Device: TCL Tablet
- Version: 13
Additional context
This is how I select a database
Just a snippet showing the URI
This is the error I get and I cannot login. Top row doesn't look normal either. Usually it shows the name of the database.
However from here I can go back and reselect the Database and then the next page works normally
This happens because the file provider contract simply returns an error when calling the URI, as the file is not correctly initialized by the file manager at this moment. After a next call to the URI, this time the file provider has succeeded in retrieving the file.
But it's not up to KeePassDX to check that the URI points to a file that's still available constantly, as DocumentsFile's methods are synchronous.
The only improvement I can suggest is to add a button to force the URI to be reloaded, which would have the same effect as doing the back and reselecting the base.