defmodule ZoeyscomputerWeb.HomeLive do use ZoeyscomputerWeb, :live_view def mount(_params, _session, socket) do if connected?(socket) do :timer.send_interval(750, self(), :update_stats) end socket = assign(socket, cpu_usage: 0, memory_usage: 0, page_title: "home") {:ok, socket} end def handle_info(:update_stats, socket) do {:noreply, assign(socket, get_stats())} end defp get_stats do cpu_usage = :cpu_sup.util() mem_data = :memsup.get_system_memory_data() total_memory = Keyword.get(mem_data, :system_total_memory, 0) free_memory = Keyword.get(mem_data, :free_memory, 0) buff_memory = Keyword.get(mem_data, :buffered_memory, 0) cached_memory = Keyword.get(mem_data, :cached_memory, 0) memory_usage = if total_memory > 0 do 100 - (free_memory + buff_memory + cached_memory) * 100 / total_memory else 0 end %{ cpu_usage: Float.round(cpu_usage, 2), memory_usage: Float.round(memory_usage, 2) } end def render(assigns) do ~H"""

zoey

Software Engineer 🏳️‍⚧️

Currently cooking this up, stay tuned... in the meantime, you can monitor my server's resources.

CPU: <%= @cpu_usage %>%

MEM: <%= @memory_usage %>%

<%= if @current_user && @current_user.email == "hi@zoeys.computer" do %>

You are already signed in you silly billy

<% else %>

Are you me? <.link class="font-bold text-ctp-pink" navigate={~p"/users/log_in"}>Log in.

<% end %>
""" end end