34 lines
785 B
1
defmodule BlogWeb.FakeTweetsLive do
2
use Phoenix.LiveView
3
import Blog.Social
4
5
@update_interval 90_000
6
7
def render(assigns) do
8
~L"""
9
<h1>Fake Tweets</h1>
10
<div>
11
<div>
12
<%= for tweet <- @tweets do %>
13
<div><%= tweet %></div>
14
<br/>
15
<% end %>
16
</div>
17
</div>
18
"""
19
end
20
21
def mount(_params, _session, socket) do
22
{:ok, schedule_tweet_generation(socket)}
23
end
24
25
def handle_info(:generate, socket) do
26
tweets = Enum.map(1..5, fn _ -> generate_markov_tweet() end)
27
{:noreply, assign(socket, :tweets, tweets)}
28
end
29
30
defp schedule_tweet_generation(socket) do
31
Process.send_after(self(), :generate, @update_interval)
32
assign(socket, :tweets, Enum.map(1..5, fn _ -> generate_markov_tweet() end))
33
end
34
end
35