aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillermo Ramos2020-02-04 18:11:46 +0100
committerGuillermo Ramos2020-02-04 18:25:50 +0100
commit52b52c7b09a51af60a847d8956824f0dcae8c99b (patch)
treec248a156b2ff04059cede4f50e409c315496490d
parent79e2f74db9f32b73171d24bf0ae971907b9b6271 (diff)
downloadwaev-52b52c7b09a51af60a847d8956824f0dcae8c99b.tar.gz
And closer
-rw-r--r--assets/css/app.css13
-rw-r--r--lib/waev/export.ex53
-rw-r--r--lib/waev_web/templates/exports/show.html.eex25
-rw-r--r--lib/waev_web/templates/layout/app.html.eex9
4 files changed, 77 insertions, 23 deletions
diff --git a/assets/css/app.css b/assets/css/app.css
index fec0b3f..72ef09d 100644
--- a/assets/css/app.css
+++ b/assets/css/app.css
@@ -1,3 +1,16 @@
/* This file is for your main application css. */
@import "./phoenix.css";
+
+.wa-back {
+ background-color: #dddddd;
+}
+
+.wa-message {
+ margin: 15px 0 15px 0;
+ background-color: white;
+}
+
+.wa-message-date {
+ text-align: right;
+}
diff --git a/lib/waev/export.ex b/lib/waev/export.ex
index 5140a89..a69fa33 100644
--- a/lib/waev/export.ex
+++ b/lib/waev/export.ex
@@ -1,6 +1,12 @@
defmodule Waev.Export do
+ require Logger
+
defmodule Party do
defstruct name: nil, photo: nil
+
+ def lookup(name) do
+ %Party{name: name, photo: nil}
+ end
end
defmodule Message do
@@ -12,7 +18,20 @@ defmodule Waev.Export do
defstruct filename: nil
end
- defstruct party: nil, date: nil, text: nil, attachment: nil
+ defstruct side: nil, date: nil, text: nil, attachment: nil
+
+ def parse(side, datetime, text) do
+ {text, attachment} =
+ case Regex.run(~r/^([^ ]+) \(archivo adjunto\)$/u, text) do
+ [^text, filename] ->
+ {nil, %File{filename: filename}}
+
+ nil ->
+ {text, nil}
+ end
+
+ %Message{side: side, date: datetime, text: text, attachment: attachment}
+ end
end
defstruct left: nil, right: nil, messages: []
@@ -36,23 +55,39 @@ defmodule Waev.Export do
true ->
export =
File.stream!("#{path()}/#{e}/chat.txt")
+ |> Enum.take(200)
|> Enum.reduce(%Waev.Export{}, fn line, export ->
line = String.trim(line)
case Regex.run(~r/^(\d+\/\d+\/\d+ \d+:\d+) - ([^:]+): (.*)$/u, line) do
# Match: new message
[^line, datetime, name, text] ->
- party = nil
+ {export, side} =
+ case {export.left, export.right, name} do
+ {nil, _, _} ->
+ {%{export | left: Party.lookup(name)}, :left}
+
+ {%{name: left}, _, left} ->
+ {export, :left}
+
+ {_, nil, _} ->
+ {%{export | right: Party.lookup(name)}, :right}
- message =
- case Regex.run(~r/^([^ ]+) \(archivo adjunto\)$/u, text) do
- [^text, filename] ->
- %Message{party: party, date: datetime, text: nil, attachment: filename}
+ {_, %{name: right}, right} ->
+ {export, :right}
- nil ->
- %Message{party: party, date: datetime, text: text, attachment: nil}
+ {left, right, name} ->
+ Logger.error(
+ "Found a third party!? (left, right, name) = #{
+ inspect({left.name, right.name, name})
+ }"
+ )
+
+ {export, nil}
end
+ message = Message.parse(side, datetime, text)
+
%{export | messages: [message | export.messages]}
# Otherwise: text continuing from the previous one. We need to
@@ -74,7 +109,7 @@ defmodule Waev.Export do
export
end
end
- end)
+ end)
{:ok, export}
diff --git a/lib/waev_web/templates/exports/show.html.eex b/lib/waev_web/templates/exports/show.html.eex
index b8cb69c..2d72e2e 100644
--- a/lib/waev_web/templates/exports/show.html.eex
+++ b/lib/waev_web/templates/exports/show.html.eex
@@ -1,20 +1,33 @@
ID: <%= @id %>
-<div class="container">
+<div class="container wa-back">
<div class="row">
<div class="column column-50">
- <%= @export.left %>
+ <%= @export.left.name %>
</div>
<div class="column column-50">
- <%= @export.right %>
+ <%= @export.right.name %>
</div>
</div>
<%= for message <- @export.messages do %>
<div class="row">
- <div class="column column-75">
+ <%= 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} -> %>
+ <a href="#"><%= filename %></a>
+ <% nil -> %>
+ <% end %>
<%= message.text %>
- <br />
- <%= message.date %>
+ <div class="wa-message-date">
+ <%= message.date %>
+ </div>
</div>
</div>
<% end %>
diff --git a/lib/waev_web/templates/layout/app.html.eex b/lib/waev_web/templates/layout/app.html.eex
index 3eb7e3a..d83e5bc 100644
--- a/lib/waev_web/templates/layout/app.html.eex
+++ b/lib/waev_web/templates/layout/app.html.eex
@@ -11,14 +11,7 @@
<body>
<header>
<section class="container">
- <nav role="navigation">
- <ul>
- <li><a href="https://hexdocs.pm/phoenix/overview.html">Get Started</a></li>
- </ul>
- </nav>
- <a href="https://phoenixframework.org/" class="phx-logo">
- <img src="<%= Routes.static_path(@conn, "/images/phoenix.png") %>" alt="Phoenix Framework Logo"/>
- </a>
+ <h1>WhatsApp Exports Viewer</h1>
</section>
</header>
<main role="main" class="container">