Let the top level be chosen as the library root
Confirming "/" in the folder picker set an empty root, which the launch model read as no root at all: "Open library" stayed disabled after the question had plainly been answered, and a folder library — whose folder is the whole library — could never be opened without first descending into a subfolder of it. The empty string was carrying two meanings. Record the choice as its own fact on the account (`root_chosen`, defaulted so existing configuration loads unchanged), treat a folder endpoint as chosen by definition, and let the launch screen say so: a folder is shown as a LIBRARY rather than an ACCOUNT, the second question becomes an optional "scan only a subfolder", and the library header names the folder instead of calling it "· whole account".
This commit is contained in:
@@ -127,6 +127,19 @@ pub struct Account {
|
||||
#[serde(default)]
|
||||
pub root: String,
|
||||
|
||||
/// Whether [`root`](Self::root) has been chosen at all.
|
||||
///
|
||||
/// An empty `root` is two different things: nothing picked yet, and the
|
||||
/// endpoint itself picked on purpose — a user who keeps everything at
|
||||
/// the top level, or a folder library, which is its own root. The string
|
||||
/// cannot tell them apart, and reading empty as "not chosen" meant the
|
||||
/// top level could be confirmed in the picker and still not open. So the
|
||||
/// fact is recorded separately. Defaulted, so an account written before
|
||||
/// it existed loads as it always did: a non-empty root is chosen by
|
||||
/// virtue of being there, and an empty one asks again.
|
||||
#[serde(default)]
|
||||
pub root_chosen: bool,
|
||||
|
||||
/// Which formats the scan looks for (the tick-boxes).
|
||||
#[serde(default)]
|
||||
pub formats: Vec<String>,
|
||||
@@ -149,6 +162,7 @@ impl Account {
|
||||
login: String::new(),
|
||||
user_id: String::new(),
|
||||
root: String::new(),
|
||||
root_chosen: false,
|
||||
formats: Vec::new(),
|
||||
last_scan: None,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user