Files
marstemedia/src-tauri/src/home.rs
2025-12-28 10:00:15 +01:00

43 lines
1.1 KiB
Rust

use easy_nostr::EasyNostr;
use serde::Serialize;
// Diese Struktur ist für den Transport zum Frontend (JSON)
#[derive(Serialize)]
pub struct LocalPost {
pub content: String,
pub author: String,
pub created_at: u64,
}
#[tauri::command]
pub async fn fetch_nostr_posts() -> Result<Vec<LocalPost>, String> {
// 1. Verbindung aufbauen
let easy = EasyNostr::new("nsec1fkhszd5sv8yp6g966qdh5kuph25g4nn9pa2k5rwpuglt6rde8u8qwr3r87")
.await
.map_err(|e| e.to_string())?;
// 2. Relays hinzufügen
easy.add_relays(vec![
"wss://relay.damus.io",
"wss://nos.lol",
"wss://relay.snort.social",
])
.await
.map_err(|e| e.to_string())?;
// 3. Posts von der Library holen
let raw_posts = easy.get_random_posts().await.map_err(|e| e.to_string())?;
// 4. Mappen: Library-Typ -> Unser serialisierbarer Typ
let mapped_posts = raw_posts
.into_iter()
.map(|p| LocalPost {
content: p.content,
author: p.author.to_string(),
created_at: p.created_at.as_secs(), // Hier geändert von as_u64()
})
.collect();
Ok(mapped_posts)
}