1
0
mirror of https://github.com/pcvolkmer/arsnova-client.git synced 2025-04-19 19:16:51 +00:00

refactor: expect exactly four counter values for feedback

This commit is contained in:
Paul-Christian Volkmer 2023-12-21 18:14:00 +01:00
parent 2796a6a608
commit 5d7a4ebfa0

View File

@ -110,7 +110,7 @@ struct WsFeedbackBody {
#[derive(Deserialize, Debug)]
struct WsFeedbackPayload {
values: Vec<u16>,
values: [u16; 4],
}
impl WsFeedbackPayload {
@ -146,28 +146,13 @@ pub struct Feedback {
}
impl Feedback {
pub fn from_values(values: Vec<u16>) -> Feedback {
let mut result = Feedback {
very_good: 0,
good: 0,
bad: 0,
very_bad: 0,
};
if !values.is_empty() {
result.very_good = values[0]
pub fn from_values(values: [u16; 4]) -> Feedback {
Feedback {
very_good: values[0],
good: values[1],
bad: values[2],
very_bad: values[3],
}
if values.len() >= 2 {
result.good = values[1]
}
if values.len() >= 3 {
result.bad = values[2]
}
if values.len() >= 4 {
result.very_bad = values[3]
}
result
}
pub fn count_votes(&self) -> u16 {
@ -336,7 +321,7 @@ impl Client<LoggedIn> {
{
Ok(res) => match res.status() {
StatusCode::OK => Ok(Feedback::from_values(
res.json::<Vec<u16>>()
res.json::<[u16; 4]>()
.await
.map_err(|err| ParserError(err.to_string()))?,
)),