feat: last user
This commit is contained in:
parent
ab2ae6d31e
commit
bbaa1935f4
2 changed files with 25 additions and 5 deletions
|
|
@ -17,6 +17,7 @@ pub const CONFIG_VERSION: u64 = 1;
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
#[serde(skip_serializing_if = "HashMap::is_empty")]
|
#[serde(skip_serializing_if = "HashMap::is_empty")]
|
||||||
pub users: HashMap<NonZeroU32, user::UserState>,
|
pub users: HashMap<NonZeroU32, user::UserState>,
|
||||||
|
pub last_user: Option<NonZeroU32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Config {
|
impl Config {
|
||||||
|
|
|
||||||
|
|
@ -891,11 +891,22 @@ impl cosmic::Application for App {
|
||||||
.collect();
|
.collect();
|
||||||
usernames.sort_by(|a, b| a.1.cmp(&b.1));
|
usernames.sort_by(|a, b| a.1.cmp(&b.1));
|
||||||
|
|
||||||
//TODO: use last selected user
|
let last_user = flags.greeter_config.last_user.as_ref();
|
||||||
let (username, uid) = flags
|
|
||||||
.user_datas
|
let (username, uid) = last_user
|
||||||
.first()
|
.and_then(|last_user| {
|
||||||
.map(|x| (x.name.clone(), NonZeroU32::new(x.uid)))
|
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();
|
.unwrap_or_default();
|
||||||
|
|
||||||
let mut session_names: Vec<_> = flags.sessions.keys().map(|x| x.to_string()).collect();
|
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();
|
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 {
|
match user_entry {
|
||||||
hash_map::Entry::Vacant(entry) => {
|
hash_map::Entry::Vacant(entry) => {
|
||||||
let last_session = Some(self.selected_session.clone());
|
let last_session = Some(self.selected_session.clone());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue