Skip to content

Commit 254dde0

Browse files
committed
Make questions config optional
1 parent c83592f commit 254dde0

File tree

3 files changed

+22
-23
lines changed

3 files changed

+22
-23
lines changed

rust/agama-manager/src/service.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ impl MessageHandler<message::GetExtendedConfig> for Service {
162162
let storage = self.storage.call(storage::message::GetConfig).await?;
163163
Ok(Config {
164164
l10n: Some(l10n),
165-
questions: Some(questions),
165+
questions,
166166
storage,
167167
})
168168
}

rust/agama-utils/src/question/message.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use crate::{
2727
pub struct GetConfig;
2828

2929
impl Message for GetConfig {
30-
type Reply = Config;
30+
type Reply = Option<Config>;
3131
}
3232

3333
/// Sets questions configuration (policy, pre-defined answers, etc.).

rust/agama-utils/src/question/service.rs

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ pub enum Error {
4444
}
4545

4646
pub struct Service {
47-
config: Config,
47+
config: Option<Config>,
4848
questions: Vec<Question>,
4949
current_id: u32,
5050
events: event::Sender,
@@ -61,25 +61,28 @@ impl Service {
6161
}
6262

6363
pub fn find_answer(&self, spec: &QuestionSpec) -> Option<Answer> {
64-
let answer = self
65-
.config
66-
.answers
67-
.iter()
68-
.find(|a| a.answers_to(&spec))
69-
.map(|r| r.answer.clone());
64+
let answer = self.config.as_ref().and_then(|config| {
65+
config
66+
.answers
67+
.iter()
68+
.find(|a| a.answers_to(&spec))
69+
.map(|r| r.answer.clone())
70+
});
7071

7172
if answer.is_some() {
7273
return answer;
7374
}
7475

75-
if let Some(Policy::Auto) = self.config.policy {
76-
spec.default_action.clone().map(|action| Answer {
77-
action,
78-
value: None,
79-
})
80-
} else {
81-
None
82-
}
76+
self.config.as_ref().and_then(|config| {
77+
if let Some(Policy::Auto) = config.policy {
78+
spec.default_action.clone().map(|action| Answer {
79+
action,
80+
value: None,
81+
})
82+
} else {
83+
None
84+
}
85+
})
8386
}
8487
}
8588

@@ -89,19 +92,15 @@ impl Actor for Service {
8992

9093
#[async_trait]
9194
impl MessageHandler<message::GetConfig> for Service {
92-
async fn handle(&mut self, _message: message::GetConfig) -> Result<Config, Error> {
95+
async fn handle(&mut self, _message: message::GetConfig) -> Result<Option<Config>, Error> {
9396
Ok(self.config.clone())
9497
}
9598
}
9699

97100
#[async_trait]
98101
impl MessageHandler<message::SetConfig> for Service {
99102
async fn handle(&mut self, message: message::SetConfig) -> Result<(), Error> {
100-
if let Some(config) = message.config {
101-
self.config = config;
102-
} else {
103-
self.config = Config::default();
104-
}
103+
self.config = message.config;
105104
Ok(())
106105
}
107106
}

0 commit comments

Comments
 (0)