diff --git a/.github/workflows/CI_CD.yml b/.github/workflows/CI_CD.yml index 0d938247..e8d60bc9 100644 --- a/.github/workflows/CI_CD.yml +++ b/.github/workflows/CI_CD.yml @@ -75,6 +75,7 @@ jobs: - uses: dtolnay/rust-toolchain@stable with: targets: aarch64-linux-android, armv7-linux-androideabi, x86_64-linux-android, i686-linux-android + - run: cargo install cargo-expand - uses: Swatinem/rust-cache@v2 - uses: baptiste0928/cargo-install@v2 with: diff --git a/app/pubspec.lock b/app/pubspec.lock index 3a4a7af5..eab7c353 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -165,10 +165,10 @@ packages: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.17.2" colorize: dependency: transitive description: @@ -391,18 +391,18 @@ packages: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: "direct main" description: @@ -548,10 +548,10 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: @@ -596,10 +596,10 @@ packages: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.6.0" timing: dependency: transitive description: @@ -648,6 +648,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" web_socket_channel: dependency: transitive description: @@ -673,5 +681,5 @@ packages: source: hosted version: "2.1.1" sdks: - dart: ">=3.0.3 <4.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=3.7.0" diff --git a/bot/src/bot/dialogue/commands.rs b/bot/src/bot/dialogue/commands.rs index 99bdf999..f3214b53 100644 --- a/bot/src/bot/dialogue/commands.rs +++ b/bot/src/bot/dialogue/commands.rs @@ -7,7 +7,6 @@ use crate::REDIS_USERS_SET_KEY; use anyhow::{Context, Error}; use first_aid_bot_core::prelude::*; use redis::{aio::MultiplexedConnection, AsyncCommands}; -use std::collections::VecDeque; use teloxide::dispatching::DpHandlerDescription; use teloxide::prelude::*; use teloxide::types::ParseMode::Html; @@ -73,11 +72,14 @@ pub async fn easter_egg(bot: &FABot, msg: &Message) -> Result<(), Error> { } async fn recursive_test(fs: &Fs, ctx: FAContext, bot: &FABot, msg: &Message) -> anyhow::Result<()> { - let mut q: VecDeque<_> = [(fs, ctx)].into(); - while let Some((fs, ctx)) = q.pop_front() { - send_state(bot, msg, &ctx, fs) - .await - .with_context(|| format!("Error while processing state {ctx}"))?; + let mut q = vec![(fs, ctx)]; + while let Some((fs, ctx)) = q.pop() { + send_state(bot, msg, &ctx, fs).await.with_context(|| { + format!( + "Error while processing state {ctx}. Message is {}", + fs.message + ) + })?; q.extend(fs.next_states.iter().map(|(s, fs)| { let mut ctx = ctx.clone(); ctx.transition(s.to_string()); diff --git a/core/tests/test_data.rs b/core/tests/test_data.rs index 851552cf..43559cc0 100644 --- a/core/tests/test_data.rs +++ b/core/tests/test_data.rs @@ -26,6 +26,12 @@ fn test_md(s: &str) -> Result<()> { } fn test_fs(fs: Fs) -> Result<()> { + if fs.message.chars().all(char::is_whitespace) { + bail!("Empty message"); + } + if fs.link.as_ref().is_some_and(|s| s.chars().all(char::is_whitespace)) { + bail!("Empty link"); + } test_md(&fs.message)?; for (s, fs) in fs.next_states { test_fs(fs).context(s)?;