feat(setup): better onboarding flow for Frappe Cloud (#36644)

* chore(setup): disable first session recording

* feat(setup): better onboarding flow for Frappe Cloud
This commit is contained in:
Nikhil Kothari 2026-03-26 14:16:52 +05:30 committed by GitHub
parent 11cc7740f0
commit 9bf22368f2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 41 additions and 34 deletions

View file

@ -41,18 +41,30 @@ frappe.pages["setup-wizard"].on_page_load = function (wrapper) {
freeze: true,
callback: function (r) {
frappe.setup.data.lang = r.message;
frappe.call({
method: "frappe.desk.page.setup_wizard.setup_wizard.load_user_details",
freeze: true,
callback: function (r) {
frappe.setup.data.full_name = r.message.full_name;
frappe.setup.data.email = r.message.email;
frappe.setup.run_event("before_load");
var wizard_settings = {
parent: wrapper,
slides: frappe.setup.slides,
slide_class: frappe.setup.SetupWizardSlide,
unidirectional: 1,
done_state: 1,
};
frappe.wizard = new frappe.setup.SetupWizard(wizard_settings);
frappe.setup.run_event("after_load");
frappe.wizard.show_slide(cint(frappe.get_route()[1]));
if (r.message.full_name) {
frappe.setup.data.first_name = r.message.full_name.split(" ")[0];
}
frappe.setup.run_event("before_load");
var wizard_settings = {
parent: wrapper,
slides: frappe.setup.slides,
slide_class: frappe.setup.SetupWizardSlide,
unidirectional: 1,
done_state: 1,
};
frappe.wizard = new frappe.setup.SetupWizard(wizard_settings);
frappe.setup.run_event("after_load");
frappe.wizard.show_slide(cint(frappe.get_route()[1]));
},
});
},
});
});
@ -388,7 +400,7 @@ frappe.setup.slides_settings = [
{
// Welcome (language) slide
name: "welcome",
title: __("Welcome"),
title: () => __("Welcome") + " " + (frappe.setup.data.first_name || ""),
fields: [
{
@ -427,13 +439,6 @@ frappe.setup.slides_settings = [
default: cint(frappe.telemetry.can_enable()),
depends_on: "eval:frappe.telemetry.can_enable()",
},
{
fieldname: "allow_recording_first_session",
label: __("Allow recording my first session to improve user experience"),
fieldtype: "Check",
default: 0,
depends_on: "eval:frappe.telemetry.can_enable()",
},
],
onload: function (slide) {
@ -518,22 +523,19 @@ frappe.setup.slides_settings = [
slide.form.fields_dict.email.df.read_only = 1;
slide.form.fields_dict.email.refresh();
} else {
slide.form.fields_dict.email.df.reqd = 1;
slide.form.fields_dict.email.refresh();
if (!frappe.boot.is_fc_site) slide.form.fields_dict.password.df.reqd = 1;
slide.form.fields_dict.password.refresh();
frappe.setup.utils.load_user_details(slide, this.setup_fields);
}
},
setup_fields: function (slide) {
if (frappe.setup.data.full_name) {
slide.form.fields_dict.full_name.set_input(frappe.setup.data.full_name);
}
if (frappe.setup.data.email) {
let email = frappe.setup.data.email;
slide.form.fields_dict.email.set_input(email);
if (frappe.setup.data.full_name) {
slide.form.fields_dict.full_name.set_input(frappe.setup.data.full_name);
slide.form.fields_dict.full_name.df.read_only = 1;
slide.form.fields_dict.full_name.refresh();
}
if (frappe.setup.data.email) {
slide.form.fields_dict.email.set_input(frappe.setup.data.email);
slide.form.fields_dict.email.df.read_only = 1;
}
slide.form.fields_dict.email.df.reqd = 1;
slide.form.fields_dict.email.refresh();
}
},
},

View file

@ -21,9 +21,14 @@ frappe.ui.Slide = class Slide {
this.attach_toggle_theme_btn();
let title = this.title;
if (typeof title === "function") {
title = title();
}
this.$body = $(`<div class="slide-body">
<div class="content text-center">
<h1 class="title slide-title">${__(this.title)}</h1>
<h1 class="title slide-title">${__(title)}</h1>
</div>
<div class="form-wrapper">
<div class="form"></div>