Skip to content

Commit f6825a2

Browse files
server: Auto create a default collection
if it doesn't exist yet.
1 parent 48a4a52 commit f6825a2

1 file changed

Lines changed: 22 additions & 1 deletion

File tree

server/src/service.rs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -683,13 +683,34 @@ impl Service {
683683
async fn initialize(
684684
&self,
685685
connection: zbus::Connection,
686-
discovered_keyrings: Vec<(String, String, Keyring)>, // (name, alias, keyring)
686+
mut discovered_keyrings: Vec<(String, String, Keyring)>, // (name, alias, keyring)
687687
) -> Result<(), Error> {
688688
self.connection.set(connection.clone()).unwrap();
689689

690690
let object_server = connection.object_server();
691691
let mut collections = self.collections.lock().await;
692692

693+
// Check if we have a default collection
694+
let has_default = discovered_keyrings
695+
.iter()
696+
.any(|(_, alias, _)| alias == oo7::dbus::Service::DEFAULT_COLLECTION);
697+
698+
if !has_default {
699+
tracing::info!("No default collection found, creating 'Login' keyring");
700+
701+
let locked_keyring = LockedKeyring::open("login").await.inspect_err(|e| {
702+
tracing::error!("Failed to create default Login keyring: {}", e);
703+
})?;
704+
705+
discovered_keyrings.push((
706+
"Login".to_owned(),
707+
oo7::dbus::Service::DEFAULT_COLLECTION.to_owned(),
708+
Keyring::Locked(locked_keyring),
709+
));
710+
711+
tracing::info!("Created default 'Login' collection (locked)");
712+
}
713+
693714
// Set up discovered collections
694715
for (label, alias, keyring) in discovered_keyrings {
695716
let collection = Collection::new(&label, &alias, self.clone(), keyring);

0 commit comments

Comments
 (0)