Music streaming on ATProto!
1defmodule CometApp.PostPage do 2 use Hologram.Page 3 4 route "/posts/:id" 5 6 param :id, :integer 7 8 layout CometApp.MainLayout 9 10 def init(params, component, _server) do 11 # In real app, fetch from database 12 post = %{ 13 id: params.id, 14 title: "Example Post", 15 content: "This is the full content...", 16 likes: 0 17 } 18 19 put_state(component, :post, post) 20 end 21 22 def template do 23 ~HOLO""" 24 <article> 25 <h1>{@post.title}</h1> 26 <p>{@post.content}</p> 27 28 <div class="likes"> 29 Likes: {@post.likes} 30 <button $click="like_post">Like</button> 31 </div> 32 </article> 33 """ 34 end 35 36 def action(:like_post, _params, component) do 37 # Update likes locally first for instant feedback 38 component 39 |> put_state([:post, :likes], component.state.post.likes + 1) 40 |> put_command(:save_like, post_id: component.state.post.id) 41 end 42 43 def command(:save_like, params, server) do 44 # In real app, save to database 45 IO.puts("Liked post #{params.post_id}") 46 server 47 end 48end