slack status without the slack status.zzstoatzz.io/
quickslice
1use crate::db::StatusFromDb; 2use chrono::{Duration, Utc}; 3use rand::prelude::*; 4 5/// Generate dummy status data for development testing 6#[allow(dead_code)] 7pub fn generate_dummy_statuses(count: usize) -> Vec<StatusFromDb> { 8 let mut rng = thread_rng(); 9 let mut statuses = Vec::new(); 10 11 // Sample data pools 12 let emojis = vec![ 13 "🚀", "💭", "", "🎨", "📚", "🎵", "🏃", "😴", "🍕", "💻", "🌟", "🔥", "", "🌙", "☀️", 14 "🌈", "", "🎯", "🎮", "📝", 15 ]; 16 17 let texts = [ 18 Some("working on something cool"), 19 Some("deep in flow state"), 20 Some("taking a break"), 21 Some("debugging..."), 22 Some("shipping it"), 23 None, 24 Some("coffee time"), 25 Some("in a meeting"), 26 Some("focused"), 27 None, 28 Some("learning rust"), 29 Some("reading docs"), 30 ]; 31 32 let handles = [ 33 "alice.test", 34 "bob.test", 35 "charlie.test", 36 "dana.test", 37 "eve.test", 38 "frank.test", 39 "grace.test", 40 "henry.test", 41 "iris.test", 42 "jack.test", 43 "karen.test", 44 "leo.test", 45 ]; 46 47 let now = Utc::now(); 48 49 for i in 0..count { 50 // Generate random timestamps going back up to 48 hours 51 let hours_ago = rng.gen_range(0..48); 52 let minutes_ago = rng.gen_range(0..60); 53 let started_at = now - Duration::hours(hours_ago) - Duration::minutes(minutes_ago); 54 55 // Random chance of having an expiration 56 let expires_at = if rng.gen_bool(0.3) { 57 // 30% chance of having expiration 58 let expire_hours = rng.gen_range(1..24); 59 Some(started_at + Duration::hours(expire_hours)) 60 } else { 61 None 62 }; 63 64 let mut status = StatusFromDb::new( 65 format!("at://did:plc:dummy{}/xyz.statusphere.status/dummy{}", i, i), 66 format!("did:plc:dummy{}", i % handles.len()), 67 emojis.choose(&mut rng).unwrap().to_string(), 68 ); 69 70 status.text = texts.choose(&mut rng).unwrap().map(|s| s.to_string()); 71 status.started_at = started_at; 72 status.expires_at = expires_at; 73 status.indexed_at = started_at; 74 status.handle = Some(handles[i % handles.len()].to_string()); 75 76 statuses.push(status); 77 } 78 79 // Sort by started_at desc (newest first) 80 statuses.sort_by(|a, b| b.started_at.cmp(&a.started_at)); 81 82 statuses 83} 84 85/// Check if dev mode is requested via query parameter 86#[allow(dead_code)] 87pub fn is_dev_mode_requested(query: &str) -> bool { 88 query.contains("dev=true") || query.contains("dev=1") 89}