feat: last user

This commit is contained in:
Ashley Wulber 2025-06-30 09:36:05 -04:00 committed by Jeremy Soller
parent ab2ae6d31e
commit bbaa1935f4
2 changed files with 25 additions and 5 deletions

View file

@ -17,6 +17,7 @@ pub const CONFIG_VERSION: u64 = 1;
pub struct Config {
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub users: HashMap<NonZeroU32, user::UserState>,
pub last_user: Option<NonZeroU32>,
}
impl Config {

View file

@ -891,11 +891,22 @@ impl cosmic::Application for App {
.collect();
usernames.sort_by(|a, b| a.1.cmp(&b.1));
//TODO: use last selected user
let (username, uid) = flags
let last_user = flags.greeter_config.last_user.as_ref();
let (username, uid) = last_user
.and_then(|last_user| {
flags
.user_datas
.iter()
.find(|d| d.uid == last_user.get())
.map(|x| (x.name.clone(), NonZeroU32::new(x.uid)))
})
.or_else(|| {
flags
.user_datas
.first()
.map(|x| (x.name.clone(), NonZeroU32::new(x.uid)))
})
.unwrap_or_default();
let mut session_names: Vec<_> = flags.sessions.keys().map(|x| x.to_string()).collect();
@ -1158,6 +1169,14 @@ impl cosmic::Application for App {
};
let uid = *user_entry.key();
self.flags.greeter_config.last_user = Some(uid);
if let Err(err) = handler.set("last_user", &self.flags.greeter_config.last_user) {
log::error!(
"Failed to set {:?} as last user: {:?}",
self.flags.greeter_config.last_user,
err
);
}
match user_entry {
hash_map::Entry::Vacant(entry) => {
let last_session = Some(self.selected_session.clone());