From f889ae20140040cd1bb77801ff7111ecc8e9ebe8 Mon Sep 17 00:00:00 2001 From: Josef Reidinger Date: Tue, 11 Jul 2023 16:57:21 +0200 Subject: [PATCH] adapt UI and fix service --- service/lib/agama/dbus/clients/questions.rb | 2 +- .../agama/storage/callbacks/activate_luks.rb | 2 +- web/src/client/questions.js | 19 +++++++++---------- .../questions/LuksActivationQuestion.jsx | 2 +- web/src/components/questions/Questions.jsx | 12 ++++++------ 5 files changed, 18 insertions(+), 19 deletions(-) diff --git a/service/lib/agama/dbus/clients/questions.rb b/service/lib/agama/dbus/clients/questions.rb index 1d92f11b1e..81a468e603 100644 --- a/service/lib/agama/dbus/clients/questions.rb +++ b/service/lib/agama/dbus/clients/questions.rb @@ -21,7 +21,7 @@ require "agama/dbus/clients/base" require "agama/dbus/clients/question" -require "agama/luks_activation_question" +require "agama/dbus/clients/question_with_password" module Agama module DBus diff --git a/service/lib/agama/storage/callbacks/activate_luks.rb b/service/lib/agama/storage/callbacks/activate_luks.rb index ac40cda07e..2a18db4530 100644 --- a/service/lib/agama/storage/callbacks/activate_luks.rb +++ b/service/lib/agama/storage/callbacks/activate_luks.rb @@ -19,7 +19,7 @@ # To contact SUSE LLC about this file by physical or electronic mail, you may # find current contact information at www.suse.com. -require "agama/luks_activation_question" +require "agama/question_with_password" require "y2storage/disk_size" module Agama diff --git a/web/src/client/questions.js b/web/src/client/questions.js index 8babc33d3c..db9083c323 100644 --- a/web/src/client/questions.js +++ b/web/src/client/questions.js @@ -35,14 +35,14 @@ const DBUS_CONFIG = { question: { ifaces: { generic: "org.opensuse.Agama.Questions1.Generic", - luksActivation: "org.opensuse.Agama.Questions1.LuksActivation" + withPassword: "org.opensuse.Agama.Questions1.WithPassword" } } }; const QUESTION_TYPES = { generic: "generic", - luksActivation: "luksActivation" + withPassword: "withPassword" }; /** @@ -75,8 +75,6 @@ const fetchValue = (ifaceProperties, key) => { }; /** - * Builds a question from the given D-Bus question - * * @param {Object} dbusQuestion * @return {Object} */ @@ -93,15 +91,16 @@ function buildQuestion(dbusQuestion) { question.options = fetchValue(dbusProperties, "Options"); question.defaultOption = fetchValue(dbusProperties, "DefaultOption"); question.text = fetchValue(dbusProperties, "Text"); + question.class = fetchValue(dbusProperties, "Class"); + question.data = fetchValue(dbusProperties, "Data"); question.answer = fetchValue(dbusProperties, "Answer"); } - if (ifaces.includes(DBUS_CONFIG.question.ifaces.luksActivation)) { - const dbusProperties = ifacesAndProperties[DBUS_CONFIG.question.ifaces.luksActivation]; + if (ifaces.includes(DBUS_CONFIG.question.ifaces.withPassword)) { + const dbusProperties = ifacesAndProperties[DBUS_CONFIG.question.ifaces.withPassword]; - question.type = QUESTION_TYPES.luksActivation; + question.type = QUESTION_TYPES.withPassword; question.password = fetchValue(dbusProperties, "Password"); - question.attempt = fetchValue(dbusProperties, "Attempt"); } return question; @@ -145,8 +144,8 @@ class QuestionsClient { async answer(question) { const path = DBUS_CONFIG.questions.path + "/" + question.id; - if (question.type === QUESTION_TYPES.luksActivation) { - const proxy = await this.client.proxy(DBUS_CONFIG.question.ifaces.luksActivation, path); + if (question.type === QUESTION_TYPES.withPassword) { + const proxy = await this.client.proxy(DBUS_CONFIG.question.ifaces.withPassword, path); proxy.Password = question.password; } diff --git a/web/src/components/questions/LuksActivationQuestion.jsx b/web/src/components/questions/LuksActivationQuestion.jsx index 3e1b32f776..88044dc60c 100644 --- a/web/src/components/questions/LuksActivationQuestion.jsx +++ b/web/src/components/questions/LuksActivationQuestion.jsx @@ -58,7 +58,7 @@ export default function LuksActivationQuestion({ question, answerCallback }) { aria-label="Question" titleIconVariant={() => } > - { renderAlert(question.attempt) } + { renderAlert(question.data.attempt) } { question.text } diff --git a/web/src/components/questions/Questions.jsx b/web/src/components/questions/Questions.jsx index 1b9691ee87..7de0b92ceb 100644 --- a/web/src/components/questions/Questions.jsx +++ b/web/src/components/questions/Questions.jsx @@ -25,11 +25,6 @@ import { useCancellablePromise } from "~/utils"; import { GenericQuestion, LuksActivationQuestion } from "~/components/questions"; -const QUESTION_TYPES = { - generic: GenericQuestion, - luksActivation: LuksActivationQuestion -}; - export default function Questions() { const client = useInstallerClient(); const { cancellablePromise } = useCancellablePromise(); @@ -67,6 +62,11 @@ export default function Questions() { // Renders the first pending question const [currentQuestion] = pendingQuestions; - const QuestionComponent = QUESTION_TYPES[currentQuestion.type]; + let QuestionComponent = GenericQuestion; + // show specialized popup for luks activation question + // more can follow as it will be needed + if (currentQuestion.class === "storage.luks_activation") { + QuestionComponent = LuksActivationQuestion; + } return ; }