aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillermo Ramos2020-02-06 15:59:50 +0100
committerGuillermo Ramos2020-02-06 15:59:59 +0100
commitf13918559567c27c49069eda68667788005b0f1d (patch)
tree626399a85f7c7bf5d7c0851d7e5729f410dcdcb9
parent7e9586e84f5dba0c40d5181c27e73422259e8161 (diff)
downloadwaev-f13918559567c27c49069eda68667788005b0f1d.tar.gz
Unify Photo and File
-rw-r--r--assets/css/app.css12
-rw-r--r--lib/waev/export.ex33
-rw-r--r--lib/waev_web/templates/exports/show.html.eex68
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>