diff options
author | Guillermo Ramos | 2020-02-06 15:59:50 +0100 |
---|---|---|
committer | Guillermo Ramos | 2020-02-06 15:59:59 +0100 |
commit | f13918559567c27c49069eda68667788005b0f1d (patch) | |
tree | 626399a85f7c7bf5d7c0851d7e5729f410dcdcb9 | |
parent | 7e9586e84f5dba0c40d5181c27e73422259e8161 (diff) | |
download | waev-f13918559567c27c49069eda68667788005b0f1d.tar.gz |
Unify Photo and File
-rw-r--r-- | assets/css/app.css | 12 | ||||
-rw-r--r-- | lib/waev/export.ex | 33 | ||||
-rw-r--r-- | lib/waev_web/templates/exports/show.html.eex | 68 |
3 files changed, 56 insertions, 57 deletions
diff --git a/assets/css/app.css b/assets/css/app.css index b44049c..31b96d1 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -10,6 +10,18 @@ width: 100%; } +.wa-avatar { + position: fixed; + top: 0; + background-color: #dddddd; +} +.wa-left { + left: 0; +} +.wa-right { + right: 0; +} + /* Chat background */ .wa-back { background-color: #dddddd; diff --git a/lib/waev/export.ex b/lib/waev/export.ex index d59810a..2efebb3 100644 --- a/lib/waev/export.ex +++ b/lib/waev/export.ex @@ -10,23 +10,18 @@ defmodule Waev.Export do end defmodule Message do - defmodule Photo do - defstruct filename: nil, mime: nil, blob: nil + defmodule File do + defstruct filename: nil, available: nil, type: nil - def valid_extension?(filename) do + def exists?(e_id, filename) do + Elixir.File.regular?(Waev.Export.media_path(e_id, filename)) + end + def photo_extension?(filename) do valid_extensions = ["png", "jpeg", "jpg"] extension = filename |> String.split(".") |> Enum.at(-1) |> String.downcase() Enum.member?(valid_extensions, extension) end - end - - defmodule File do - defstruct filename: nil, available: nil - - def exists?(e_id, filename) do - Elixir.File.regular?(Waev.Export.media_path(e_id, filename)) - end def path(e_id, filename) do path = Waev.Export.media_path(e_id, filename) @@ -45,18 +40,10 @@ defmodule Waev.Export do case Regex.run(~r/([[:ascii:]]+) \(archivo adjunto\)$/u, text) do [_, filename] -> available = File.path(e.id, filename) != :error - # IO.puts("filename: #{filename}, av: #{available}, ve: #{}") - if available and Message.Photo.valid_extension?(filename) do - case Elixir.File.read(Waev.Export.media_path(e.id, filename)) do - {:ok, binary} -> - # TODO review mime - {nil, %Photo{filename: filename, mime: "image", blob: Base.encode64(binary)}} - {:error, reason} -> - Logger.error("Error opening photo #{filename}: #{reason}") - {nil, %File{filename: filename, available: false}} - end + if Message.File.photo_extension?(filename) do + {nil, %File{filename: filename, available: available, type: :photo}} else - {nil, %File{filename: filename, available: available}} + {nil, %File{filename: filename, available: available, type: :file}} end nil -> @@ -85,7 +72,7 @@ defmodule Waev.Export do true -> e = File.stream!(chat_path(e_id)) - |> Enum.take(200) + |> Enum.take(600) |> Enum.reduce(%Waev.Export{id: e_id}, fn line, e -> line = String.trim(line) diff --git a/lib/waev_web/templates/exports/show.html.eex b/lib/waev_web/templates/exports/show.html.eex index 6cf6d93..17e245e 100644 --- a/lib/waev_web/templates/exports/show.html.eex +++ b/lib/waev_web/templates/exports/show.html.eex @@ -1,41 +1,41 @@ -ID: <%= @id %> +<div class="wa-avatar wa-left"> + <%= @export.left.name %> +</div> + +<div class="wa-avatar wa-right"> + <%= @export.right.name %> +</div> <div class="container wa-back"> + + <%= for message <- @export.messages do %> <div class="row"> - <div class="column column-50"> - <%= @export.left.name %> - </div> - <div class="column column-50"> - <%= @export.right.name %> + <%= case message.side do %> + <% :left -> %> + <div class="column wa-message column-75"> + <% :right -> %> + <div class="column wa-message column-75 column-offset-25"> + <% nil -> %> + <div class="column wa-message column-50 column-offset-25"> + <% end %> + + <%= case message.attachment do %> + <% %Waev.Export.Message.File{filename: filename, available: false} -> %> + <i><%= filename %></i> (fichero adjunto no disponible) + <% %Waev.Export.Message.File{filename: filename, available: true, type: :file} -> %> + <a href="<%= Routes.exports_path(@conn, :get_attachment, @id, filename) %>"><%= filename %></a> + <% %Waev.Export.Message.File{filename: filename, available: true, type: :photo} -> %> + <div><img class="wa-message-photo" alt="<%= filename %>" src="<%= Routes.exports_path(@conn, :get_attachment, @id, filename) %>" /></div> + <div><a href="<%= Routes.exports_path(@conn, :get_attachment, @id, filename) %>"><%= filename %></a></div> + <% nil -> %> + <% end %> + + <%= message.text %> + <div class="wa-message-date"> + <%= message.date %> </div> - </div> - <%= for message <- @export.messages do %> - <div class="row"> - <%= case message.side do %> - <% :left -> %> - <div class="column wa-message column-75"> - <% :right -> %> - <div class="column wa-message column-75 column-offset-25"> - <% nil -> %> - <div class="column wa-message column-50 column-offset-25"> - <% end %> - <%= case message.attachment do %> - <% %Waev.Export.Message.File{filename: filename} = file -> %> - <%= if file.available do %> - <a href="<%= Routes.exports_path(@conn, :get_attachment, @id, filename) %>"><%= filename %></a> - <% else %> - <i><%= filename %></i> (fichero adjunto no disponible) - <% end %> - <% %Waev.Export.Message.Photo{filename: filename, mime: mime, blob: blob} -> %> - <div><img class="wa-message-photo" alt="<%= filename %>" src="data:<%= mime %>;base64,<%= blob %>" /></div> - <div><a href="<%= Routes.exports_path(@conn, :get_attachment, @id, filename) %>"><%= filename %></a></div> - <% nil -> %> - <% end %> - <%= message.text %> - <div class="wa-message-date"> - <%= message.date %> - </div> </div> - </div> + </div> <% end %> + </div> |