fix: save on unfocus for inline editable fields
This commit is contained in:
parent
43ebdad303
commit
db54245aa7
1 changed files with 40 additions and 30 deletions
|
|
@ -512,43 +512,51 @@ impl Page {
|
||||||
|
|
||||||
match field {
|
match field {
|
||||||
EditorField::FullName => {
|
EditorField::FullName => {
|
||||||
let full_name = user.full_name.clone();
|
if user.full_name_edit {
|
||||||
return cosmic::Task::future(async move {
|
let full_name = user.full_name.clone();
|
||||||
let Ok(conn) = zbus::Connection::system().await else {
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
|
|
||||||
let Ok(user) = accounts_zbus::UserProxy::from_uid(&conn, uid).await
|
return cosmic::Task::future(async move {
|
||||||
else {
|
let Ok(conn) = zbus::Connection::system().await else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
_ = request_permission_on_denial(&conn, || {
|
let Ok(user) =
|
||||||
user.set_real_name(&full_name)
|
accounts_zbus::UserProxy::from_uid(&conn, uid).await
|
||||||
|
else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
_ = request_permission_on_denial(&conn, || {
|
||||||
|
user.set_real_name(&full_name)
|
||||||
|
})
|
||||||
|
.await;
|
||||||
})
|
})
|
||||||
.await;
|
.discard();
|
||||||
})
|
}
|
||||||
.discard();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EditorField::Username => {
|
EditorField::Username => {
|
||||||
let username = user.username.clone();
|
if user.username_edit {
|
||||||
return cosmic::Task::future(async move {
|
let username = user.username.clone();
|
||||||
let Ok(conn) = zbus::Connection::system().await else {
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
|
|
||||||
let Ok(user) = accounts_zbus::UserProxy::from_uid(&conn, uid).await
|
return cosmic::Task::future(async move {
|
||||||
else {
|
let Ok(conn) = zbus::Connection::system().await else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
_ = request_permission_on_denial(&conn, || {
|
let Ok(user) =
|
||||||
user.set_user_name(&username)
|
accounts_zbus::UserProxy::from_uid(&conn, uid).await
|
||||||
|
else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
_ = request_permission_on_denial(&conn, || {
|
||||||
|
user.set_user_name(&username)
|
||||||
|
})
|
||||||
|
.await;
|
||||||
})
|
})
|
||||||
.await;
|
.discard();
|
||||||
})
|
}
|
||||||
.discard();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -731,7 +739,8 @@ fn user_list() -> Section<crate::pages::Message> {
|
||||||
Message::ToggleEdit(idx, EditorField::Username)
|
Message::ToggleEdit(idx, EditorField::Username)
|
||||||
})
|
})
|
||||||
.on_input(move |name| Message::Edit(idx, EditorField::Username, name))
|
.on_input(move |name| Message::Edit(idx, EditorField::Username, name))
|
||||||
.on_submit(move |_| Message::ApplyEdit(idx, EditorField::Username));
|
.on_submit(move |_| Message::ApplyEdit(idx, EditorField::Username))
|
||||||
|
.on_unfocus(Message::ApplyEdit(idx, EditorField::Username));
|
||||||
|
|
||||||
let password = widget::button::standard(fl!("change-password"))
|
let password = widget::button::standard(fl!("change-password"))
|
||||||
.on_press(Message::Dialog(Some(Dialog::UpdatePassword(user.clone()))))
|
.on_press(Message::Dialog(Some(Dialog::UpdatePassword(user.clone()))))
|
||||||
|
|
@ -744,7 +753,8 @@ fn user_list() -> Section<crate::pages::Message> {
|
||||||
move |_| Message::ToggleEdit(idx, EditorField::FullName),
|
move |_| Message::ToggleEdit(idx, EditorField::FullName),
|
||||||
)
|
)
|
||||||
.on_input(move |name| Message::Edit(idx, EditorField::FullName, name))
|
.on_input(move |name| Message::Edit(idx, EditorField::FullName, name))
|
||||||
.on_submit(move |_| Message::ApplyEdit(idx, EditorField::FullName));
|
.on_submit(move |_| Message::ApplyEdit(idx, EditorField::FullName))
|
||||||
|
.on_unfocus(Message::ApplyEdit(idx, EditorField::FullName));
|
||||||
|
|
||||||
let fullname_text = text::body(if user.full_name != "" {
|
let fullname_text = text::body(if user.full_name != "" {
|
||||||
&user.full_name
|
&user.full_name
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue