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}