KeePassDX icon indicating copy to clipboard operation
KeePassDX copied to clipboard

Automatically opening Updated Nextcloud database

Open alexknop opened this issue 2 years ago • 1 comments

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:

  1. Select a Nextcloud-stored Keepass database file and Log in to the database so it is remembered
  2. Add/edit an entry and save database. Nextcloud client will sync the file
  3. Close KeepassDX and re-open.
  4. 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 Screenshot_2023-11-12-11-42-10-719 Just a snippet showing the URI Screenshot_2023-11-12-11-42-39-917 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. Screenshot_2023-11-12-12-12-48-980 However from here I can go back and reselect the Database and then the next page works normally Screenshot_2023-11-12-12-32-30-695 Screenshot_2023-11-12-12-32-36-571

alexknop avatar Nov 12 '23 17:11 alexknop

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.

J-Jamet avatar Nov 13 '23 11:11 J-Jamet