Add demo feed seeding utility
cgen-21ba02a62b214d1eb117d2660a770543
This commit is contained in:
parent
98ff196d8c
commit
08da68486a
1 changed files with 107 additions and 0 deletions
107
client/lib/demo-feed.ts
Normal file
107
client/lib/demo-feed.ts
Normal file
|
|
@ -0,0 +1,107 @@
|
||||||
|
export function ensureDemoSeed() {
|
||||||
|
try {
|
||||||
|
const seeded = localStorage.getItem("demo_seed_v1");
|
||||||
|
if (seeded) return;
|
||||||
|
|
||||||
|
const profiles = [
|
||||||
|
{
|
||||||
|
id: "demo_aethex",
|
||||||
|
username: "AeThex",
|
||||||
|
full_name: "AeThex",
|
||||||
|
email: "aethex@demo.local",
|
||||||
|
avatar_url:
|
||||||
|
"https://cdn.builder.io/api/v1/image/assets%2Ffc53d607e21d497595ac97e0637001a1%2F3979ec9a8a28471d900a80e94e2c45fe?format=png&width=256",
|
||||||
|
bio: "Official AeThex account — updates, releases, and announcements.",
|
||||||
|
managed_by: "mrpiglr@gmail.com",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "demo_testsubject",
|
||||||
|
username: "TestSubject",
|
||||||
|
full_name: "Test Subject",
|
||||||
|
email: "testsubject@demo.local",
|
||||||
|
avatar_url:
|
||||||
|
"https://i.pravatar.cc/150?img=1",
|
||||||
|
bio: "Trying features, sharing experiments, and stress-testing the feed.",
|
||||||
|
managed_by: "mrpiglr@gmail.com",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const posts = [
|
||||||
|
{
|
||||||
|
id: "demo_post_1",
|
||||||
|
author_id: "demo_aethex",
|
||||||
|
title: "Welcome to AeThex",
|
||||||
|
content: JSON.stringify({
|
||||||
|
text: "We just shipped the new AeThex feed. Share updates, images, and videos!",
|
||||||
|
mediaUrl:
|
||||||
|
"https://cdn.builder.io/api/v1/image/assets%2Ffc53d607e21d497595ac97e0637001a1%2F3979ec9a8a28471d900a80e94e2c45fe?format=png&width=1200",
|
||||||
|
mediaType: "image",
|
||||||
|
}),
|
||||||
|
category: "image",
|
||||||
|
tags: ["announcement", "aethex"],
|
||||||
|
likes_count: 23,
|
||||||
|
comments_count: 4,
|
||||||
|
is_published: true,
|
||||||
|
created_at: new Date(Date.now() - 86400000).toISOString(),
|
||||||
|
updated_at: new Date(Date.now() - 86400000).toISOString(),
|
||||||
|
user_profiles: profiles[0],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "demo_post_2",
|
||||||
|
author_id: "demo_testsubject",
|
||||||
|
title: "Quick update",
|
||||||
|
content: JSON.stringify({
|
||||||
|
text: "Posting a test video clip — looks smooth!",
|
||||||
|
mediaUrl: "https://www.w3schools.com/html/mov_bbb.mp4",
|
||||||
|
mediaType: "video",
|
||||||
|
}),
|
||||||
|
category: "video",
|
||||||
|
tags: ["test", "video"],
|
||||||
|
likes_count: 5,
|
||||||
|
comments_count: 1,
|
||||||
|
is_published: true,
|
||||||
|
created_at: new Date(Date.now() - 43200000).toISOString(),
|
||||||
|
updated_at: new Date(Date.now() - 43200000).toISOString(),
|
||||||
|
user_profiles: profiles[1],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "demo_post_3",
|
||||||
|
author_id: "demo_testsubject",
|
||||||
|
title: "Text-only thoughts",
|
||||||
|
content: JSON.stringify({
|
||||||
|
text: "Text-only updates work too. Loving the vibe here.",
|
||||||
|
mediaUrl: null,
|
||||||
|
mediaType: "none",
|
||||||
|
}),
|
||||||
|
category: "text",
|
||||||
|
tags: ["update"],
|
||||||
|
likes_count: 2,
|
||||||
|
comments_count: 0,
|
||||||
|
is_published: true,
|
||||||
|
created_at: new Date(Date.now() - 21600000).toISOString(),
|
||||||
|
updated_at: new Date(Date.now() - 21600000).toISOString(),
|
||||||
|
user_profiles: profiles[1],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
localStorage.setItem("demo_profiles", JSON.stringify(profiles));
|
||||||
|
localStorage.setItem("demo_posts", JSON.stringify(posts));
|
||||||
|
localStorage.setItem("demo_seed_v1", "true");
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDemoProfiles() {
|
||||||
|
try {
|
||||||
|
return JSON.parse(localStorage.getItem("demo_profiles") || "[]");
|
||||||
|
} catch {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDemoPosts() {
|
||||||
|
try {
|
||||||
|
return JSON.parse(localStorage.getItem("demo_posts") || "[]");
|
||||||
|
} catch {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue