Browse Source

[Telegram] Prepare separate storage Arcs

Slava Barinov 3 years ago
parent
commit
914cf9590d
1 changed files with 16 additions and 8 deletions
  1. 16 8
      src/telegram.rs

+ 16 - 8
src/telegram.rs

@@ -487,11 +487,17 @@ async fn run() {
 
     let manager = tokio::spawn(async move { user_manager(&mut rx).await });
 
-    let storage = InMemStorage::new();
+    let storage: Arc<InMemStorage<Dialogue>> = InMemStorage::new();
+
+    let storage_msg = storage.clone();
+    let storage_callback = storage.clone();
+
     let bot = Bot::from_env().auto_send();
     // TODO: Add Dispatcher to process UpdateKinds
     {
-        let storage = storage.clone();
+        let storage_msg = storage_msg.clone();
+        let storage_callback = storage_callback.clone();
+
         Dispatcher::new(bot)
             .messages_handler(DialogueDispatcher::with_storage(
                 move |DialogueWithCx { cx, dialogue }: In| {
@@ -503,17 +509,19 @@ async fn run() {
                             .expect("Something wrong with the bot!")
                     }
                 },
-                storage.clone(),
+                storage_msg,
             ))
             .callback_queries_handler({
-                let storage1 = Arc::clone(&storage);
+                let storage_callback = storage_callback.clone();
                 move |rx: DispatcherHandlerRx<AutoSend<Bot>, CallbackQuery>| {
-                    let storage2 = Arc::clone(&storage1);
+                    let storage_callback = storage_callback.clone();
                     UnboundedReceiverStream::new(rx).for_each_concurrent(None, {
-                        let storage3 = Arc::clone(&storage2);
+                        let storage_callback = storage_callback.clone();
                         |cx| async move {
-                            let storage4 = Arc::clone(&storage3);
-                            callback_handler(cx, storage4).await.log_on_error().await;
+                            callback_handler(cx, storage_callback.clone())
+                                .await
+                                .log_on_error()
+                                .await;
                         }
                     })
                 }