phrase: Option<String>,
) -> Result<u32, String> {
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
let row_result: Result<usize, _> =
fn pair_up_players(&self, conn: Option<&Connection>) -> Result<(), String> {
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
let mut to_pair: Option<u32> = None;
fn create_game(&self, conn: Option<&Connection>, players: &[u32; 2]) -> Result<u32, String> {
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
let mut game_id: u32 = thread_rng().gen();
}
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
let check_player_row = conn.query_row("SELECT games.cyan_player FROM players JOIN games where games.id = players.game_id AND players.id = ?;", [player_id], |row| row.get::<usize, u32>(0));
player_id: u32,
) -> Result<bool, String> {
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
let check_player_row: Result<u32, _> =
player_id: u32,
) -> Result<bool, String> {
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
let check_player_game_row: Result<u32, _> = conn.query_row(
player_id: u32,
) -> Result<BoardStateType, String> {
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
// TODO maybe handle "opponent_disconnected" case
fn disconnect_player(&self, conn: Option<&Connection>, player_id: u32) -> Result<(), String> {
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
let stmt_result = conn.execute("DELETE FROM players WHERE id = ?;", [player_id]);
fn clear_empty_games(&self, conn: Option<&Connection>) -> Result<(), String> {
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
// Only fails if no rows were removed, and that is not an issue
pos: usize,
) -> PlaceResultType {
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
// check if player exists
}
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
let is_cyan = status == 0;
fn cleanup_stale_games(&self, conn: Option<&Connection>) -> Result<(), String> {
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
conn.execute(
fn cleanup_stale_players(&self, conn: Option<&Connection>) -> Result<(), String> {
let mut _conn_result = Err(String::new());
- let conn = if conn.is_none() {
+ let conn = if let Some(c) = conn {
+ c
+ } else {
_conn_result = self.get_conn(DBFirstRun::NotFirstRun);
_conn_result.as_ref().unwrap()
- } else {
- conn.unwrap()
};
conn.execute(
current_turn,
phrase: _,
} => {
- if paired && current_side.is_some() {
- if current_side.as_ref().unwrap() == ¤t_turn {
- // notify Wrapper with picked slot
- if let Some(p) = ctx.link().get_parent() {
- p.clone().downcast::<Wrapper>().send_message(
- WrapperMsg::BackendRequest {
- place: ctx.props().idx,
- },
- );
- return false;
- }
+ if paired
+ && current_side.is_some()
+ && current_side.as_ref().unwrap() == ¤t_turn
+ {
+ // notify Wrapper with picked slot
+ if let Some(p) = ctx.link().get_parent() {
+ p.clone()
+ .downcast::<Wrapper>()
+ .send_message(WrapperMsg::BackendRequest {
+ place: ctx.props().idx,
+ });
+ return false;
}
}
}
let board = board_from_string(board_string.clone());
for (idx, slot) in board.iter().enumerate() {
let was_open =
- element_has_class(&document, &format!("slot{}", idx), "open").unwrap_or(false);
- element_remove_class(&document, &format!("slot{}", idx), "open").ok();
- element_remove_class(&document, &format!("slot{}", idx), "placed").ok();
- element_remove_class(&document, &format!("slot{}", idx), "win").ok();
- element_remove_class(&document, &format!("slot{}", idx), "cyan").ok();
- element_remove_class(&document, &format!("slot{}", idx), "magenta").ok();
+ element_has_class(document, &format!("slot{}", idx), "open").unwrap_or(false);
+ element_remove_class(document, &format!("slot{}", idx), "open").ok();
+ element_remove_class(document, &format!("slot{}", idx), "placed").ok();
+ element_remove_class(document, &format!("slot{}", idx), "win").ok();
+ element_remove_class(document, &format!("slot{}", idx), "cyan").ok();
+ element_remove_class(document, &format!("slot{}", idx), "magenta").ok();
match slot.get() {
BoardState::Empty => {
- element_append_class(&document, &format!("slot{}", idx), "open").ok();
+ element_append_class(document, &format!("slot{}", idx), "open").ok();
}
BoardState::Cyan => {
- element_append_class(&document, &format!("slot{}", idx), "cyan").ok();
+ element_append_class(document, &format!("slot{}", idx), "cyan").ok();
}
BoardState::CyanWin => {
- element_append_class(&document, &format!("slot{}", idx), "cyan").ok();
- element_append_class(&document, &format!("slot{}", idx), "win").ok();
+ element_append_class(document, &format!("slot{}", idx), "cyan").ok();
+ element_append_class(document, &format!("slot{}", idx), "win").ok();
}
BoardState::Magenta => {
- element_append_class(&document, &format!("slot{}", idx), "magenta").ok();
+ element_append_class(document, &format!("slot{}", idx), "magenta").ok();
}
BoardState::MagentaWin => {
- element_append_class(&document, &format!("slot{}", idx), "magenta").ok();
- element_append_class(&document, &format!("slot{}", idx), "win").ok();
+ element_append_class(document, &format!("slot{}", idx), "magenta").ok();
+ element_append_class(document, &format!("slot{}", idx), "win").ok();
}
}
let char_at_idx = board_string
.expect("idx into board_string should be in range");
if char_at_idx == 'f' || char_at_idx == 'h' {
if char_at_idx == 'f' {
- element_append_class(&document, &format!("slot{}", idx), "placed").ok();
+ element_append_class(document, &format!("slot{}", idx), "placed").ok();
}
if was_open {
append_to_info_text(
- &document,
+ document,
"info_text0",
&format!("<b class=\"cyan\">CyanPlayer placed at {}</b>", idx),
INFO_TEXT_MAX_ITEMS,
}
} else if char_at_idx == 'g' || char_at_idx == 'i' {
if char_at_idx == 'g' {
- element_append_class(&document, &format!("slot{}", idx), "placed").ok();
+ element_append_class(document, &format!("slot{}", idx), "placed").ok();
}
if was_open {
append_to_info_text(
- &document,
+ document,
"info_text0",
&format!("<b class=\"magenta\">MagentaPlayer placed at {}</b>", idx),
INFO_TEXT_MAX_ITEMS,
}
impl WrapperMsg {
- fn is_ai_pressed(self) -> bool {
+ fn is_ai_pressed(&self) -> bool {
matches!(self, WrapperMsg::AIPressed(_))
}
}