Introduce the concept of Accounts
Currently, for libraries that are synced with a WebDAV server, we have the concept of a Synchronizer. A synchronizer implements interfacing with a particular server type (currently, WebDAV/NextCloud/ownCloud). It stores some meta information in the library's folder (as a hidden file).
The issue with the current implementation is, that every time the user adds a library, they has to go through the full setup sequence, i.e.:
- Enter server URL, user name and password.
- Select an existing library or decide to create a new one.
- Select where to store the library locally.
This is confusing and also has other disadvantages, e.g. when login credentials change, the user has to edit all of the synced libraries (instead of just one time).
For this reason, it would be better if the app had a concept of Accounts: An account represents access to a particular service via a user name and password. After an account is added, the app could allow the user to select existing libraries to sync or also allow to create new ones.