2020-06-09 02:49:45 +00:00
|
|
|
defmodule FrenzyWeb.ConfigureStage.ScrapeStageLive do
|
|
|
|
use FrenzyWeb, :live_component
|
|
|
|
|
|
|
|
@extractors [
|
|
|
|
{"Builtin", "builtin"},
|
2021-09-08 00:32:35 +00:00
|
|
|
{"512 Pixels", Frenzy.Pipeline.Extractor.FiveTwelvePixels},
|
2021-11-06 15:04:04 +00:00
|
|
|
{"Ars Technica", Frenzy.Pipeline.Extractor.ArsTechnica},
|
2020-06-09 02:49:45 +00:00
|
|
|
{"beckyhansmeyer.com", Frenzy.Pipeline.Extractor.BeckyHansmeyer},
|
2022-07-17 19:13:08 +00:00
|
|
|
{"birchtree.me", Frenzy.Pipeline.Extractor.Birchtree},
|
2020-06-09 02:49:45 +00:00
|
|
|
{"daringfireball.net", Frenzy.Pipeline.Extractor.DaringFireball},
|
|
|
|
{"ericasadun.com", Frenzy.Pipeline.Extractor.EricaSadun},
|
|
|
|
{"finertech.com", Frenzy.Pipeline.Extractor.FinerTech},
|
|
|
|
{"macstories.net", Frenzy.Pipeline.Extractor.MacStories},
|
|
|
|
{"om.co", Frenzy.Pipeline.Extractor.OmMalik},
|
2021-09-03 20:24:35 +00:00
|
|
|
{"slate.com", Frenzy.Pipeline.Extractor.Slate},
|
2022-09-14 21:47:22 +00:00
|
|
|
{"The Verge", Frenzy.Pipeline.Extractor.TheVerge},
|
2020-06-09 02:49:45 +00:00
|
|
|
{"whatever.scalzi.com", Frenzy.Pipeline.Extractor.WhateverScalzi}
|
|
|
|
]
|
|
|
|
|> Enum.map(fn {pretty_name, module} ->
|
|
|
|
{
|
|
|
|
pretty_name,
|
|
|
|
case module do
|
|
|
|
"builtin" -> "builtin"
|
|
|
|
module -> module |> to_string() |> String.slice(7..-1)
|
|
|
|
end
|
|
|
|
}
|
|
|
|
end)
|
|
|
|
|
|
|
|
@schema %{
|
|
|
|
"convert_to_data_uris" => :boolean,
|
|
|
|
"extractor" => :string
|
|
|
|
}
|
|
|
|
|
|
|
|
@impl true
|
|
|
|
def mount(socket) do
|
|
|
|
{:ok, assign(socket, extractors: @extractors)}
|
|
|
|
end
|
|
|
|
|
2020-06-10 23:05:37 +00:00
|
|
|
@impl true
|
|
|
|
def update(assigns, socket) do
|
|
|
|
assigns = Map.put(assigns, :opts, Frenzy.Keypath.get(assigns.stage, assigns.keypath))
|
|
|
|
{:ok, assign(socket, assigns)}
|
|
|
|
end
|
|
|
|
|
2020-06-09 02:49:45 +00:00
|
|
|
@impl true
|
|
|
|
def handle_event(
|
|
|
|
"update_stage",
|
|
|
|
%{"opts" => %{"convert_to_data_uris" => convert_to_data_uris, "extractor" => extractor}},
|
|
|
|
socket
|
|
|
|
) do
|
|
|
|
convert_to_data_uris = String.downcase(convert_to_data_uris) == "true"
|
|
|
|
|
|
|
|
new_opts =
|
|
|
|
socket.assigns.opts
|
|
|
|
|> Map.put("convert_to_data_uris", convert_to_data_uris)
|
|
|
|
|> Map.put("extractor", extractor)
|
|
|
|
|
2020-06-10 23:05:37 +00:00
|
|
|
new_stage = Frenzy.Keypath.set(socket.assigns.stage, socket.assigns.keypath, new_opts)
|
|
|
|
|
|
|
|
send(self(), {:update_stage, socket.assigns.index, new_stage})
|
2020-06-09 02:49:45 +00:00
|
|
|
{:noreply, socket}
|
|
|
|
end
|
|
|
|
end
|