commit a5e1fbf3280e85b235e893e3d8eb06373c69447f
parent 349e3baa995199afe9211d28cbebae27bc4e911a
Author: kernelkind <kernelkind@gmail.com>
Date:   Wed, 17 Apr 2024 13:36:26 -0400
Add preview for RelayView
Signed-off-by: kernelkind <kernelkind@gmail.com>
Signed-off-by: William Casarin <jb55@jb55.com>
Diffstat:
2 files changed, 46 insertions(+), 1 deletion(-)
diff --git a/src/ui_preview/main.rs b/src/ui_preview/main.rs
@@ -1,11 +1,15 @@
 mod account_login_preview;
 mod egui_preview_setup;
+mod relay_view_preview;
 use account_login_preview::{DesktopAccountLoginPreview, MobileAccountLoginPreview};
 use egui_preview_setup::{EguiPreviewCase, EguiPreviewSetup};
 use notedeck::app_creation::{generate_mobile_emulator_native_options, generate_native_options};
+use relay_view_preview::RelayViewPreview;
 use std::env;
 
-fn run_test_app<F, T, O>(create_supr: F, create_child: O, is_mobile: bool)
+#[cfg(not(target_arch = "wasm32"))]
+#[tokio::main]
+async fn run_test_app<F, T, O>(create_supr: F, create_child: O, is_mobile: bool)
 where
     F: 'static + FnOnce(&eframe::CreationContext<'_>) -> EguiPreviewSetup,
     T: 'static + EguiPreviewCase,
@@ -39,6 +43,12 @@ fn main() {
             "MobileAccountLoginPreview" => {
                 run_test_app(EguiPreviewSetup::new, MobileAccountLoginPreview::new, true)
             }
+            "DesktopRelayViewPreview" => {
+                run_test_app(EguiPreviewSetup::new, RelayViewPreview::new, false)
+            }
+            "MobileRelayViewPreview" => {
+                run_test_app(EguiPreviewSetup::new, RelayViewPreview::new, true)
+            }
             _ => println!("Component not found."),
         }
     } else {
diff --git a/src/ui_preview/relay_view_preview.rs b/src/ui_preview/relay_view_preview.rs
@@ -0,0 +1,35 @@
+use enostr::RelayPool;
+use notedeck::{relay_pool_manager::RelayPoolManager, relay_view::RelayView};
+
+use crate::egui_preview_setup::{EguiPreviewCase, EguiPreviewSetup};
+
+pub struct RelayViewPreview {
+    pool: RelayPool,
+}
+
+#[allow(unused_must_use)]
+impl EguiPreviewCase for RelayViewPreview {
+    fn new(_supr: EguiPreviewSetup) -> Self {
+        let mut pool = RelayPool::new();
+        let wakeup = move || {};
+
+        pool.add_url("wss://relay.damus.io".to_string(), wakeup);
+        pool.add_url("wss://eden.nostr.land".to_string(), wakeup);
+        pool.add_url("wss://nostr.wine".to_string(), wakeup);
+        pool.add_url("wss://nos.lol".to_string(), wakeup);
+        pool.add_url("wss://test_relay_url_long_00000000000000000000000000000000000000000000000000000000000000000000000000000000000".to_string(), wakeup);
+
+        for _ in 0..20 {
+            pool.add_url("tmp".to_string(), wakeup);
+        }
+
+        RelayViewPreview { pool }
+    }
+}
+
+impl eframe::App for RelayViewPreview {
+    fn update(&mut self, ctx: &egui::Context, _: &mut eframe::Frame) {
+        self.pool.try_recv();
+        RelayView::new(ctx, RelayPoolManager::new(&mut self.pool)).panel();
+    }
+}