@@ -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