From 57f26996b2bb267dee9b394e3bb362dd7446d7dc Mon Sep 17 00:00:00 2001 From: Edward Loveall Date: Sat, 15 May 2021 17:06:42 -0400 Subject: [PATCH] Break up views into components --- src/components/iframe.cr | 16 +++++++++++++++ src/components/post.cr | 29 +++++++++++++++++++++++++++ src/pages/articles/show_page.cr | 35 ++------------------------------- 3 files changed, 47 insertions(+), 33 deletions(-) create mode 100644 src/components/iframe.cr create mode 100644 src/components/post.cr diff --git a/src/components/iframe.cr b/src/components/iframe.cr new file mode 100644 index 0000000..772d092 --- /dev/null +++ b/src/components/iframe.cr @@ -0,0 +1,16 @@ +class Post::IFrame < BaseComponent + needs paragraph : PostResponse::Paragraph + + def render + embed = paragraph.iframe + if embed + embed_data = MediumClient.media_data(embed.mediaResource.id) + embed_value = embed_data.payload.value + if embed_value.iframeSrc.blank? + iframe src: embed_data.payload.value.href + else + iframe src: embed_data.payload.value.iframeSrc + end + end + end +end diff --git a/src/components/post.cr b/src/components/post.cr new file mode 100644 index 0000000..587d463 --- /dev/null +++ b/src/components/post.cr @@ -0,0 +1,29 @@ +class Post::Post < BaseComponent + needs response : PostResponse::Root + + def render + data = response.data.post.content.bodyModel.paragraphs + data.each do |paragraph| + case paragraph.type + when PostResponse::ParagraphType::H3 + h3 paragraph.text + when PostResponse::ParagraphType::H4 + h4 paragraph.text + when PostResponse::ParagraphType::P + para paragraph.text + when PostResponse::ParagraphType::PRE + pre paragraph.text + when PostResponse::ParagraphType::BQ + blockquote paragraph.text + when PostResponse::ParagraphType::OLI + li paragraph.text + when PostResponse::ParagraphType::ULI + li paragraph.text + when PostResponse::ParagraphType::IFRAME + mount IFrame, paragraph: paragraph + else + para "#{paragraph.type} not yet implimented" + end + end + end +end diff --git a/src/pages/articles/show_page.cr b/src/pages/articles/show_page.cr index ef59992..d6e78bb 100644 --- a/src/pages/articles/show_page.cr +++ b/src/pages/articles/show_page.cr @@ -1,38 +1,7 @@ class Articles::ShowPage < MainLayout - needs medium_response_body : PostResponse::Root + needs post_response : PostResponse::Root def content - paragraphs = medium_response_body.data.post.content.bodyModel.paragraphs - paragraphs.each do |paragraph| - case paragraph.type - when PostResponse::ParagraphType::H3 - h3 paragraph.text - when PostResponse::ParagraphType::H4 - h4 paragraph.text - when PostResponse::ParagraphType::P - para paragraph.text - when PostResponse::ParagraphType::PRE - pre paragraph.text - when PostResponse::ParagraphType::BQ - blockquote paragraph.text - when PostResponse::ParagraphType::OLI - li paragraph.text - when PostResponse::ParagraphType::ULI - li paragraph.text - when PostResponse::ParagraphType::IFRAME - embed = paragraph.iframe - if embed - embed_data = LocalClient.embed_data(embed.mediaResource.id) - embed_value = embed_data.payload.value - if embed_value.iframeSrc.blank? - iframe src: embed_data.payload.value.href - else - iframe src: embed_data.payload.value.iframeSrc - end - end - else - para "#{paragraph.type} not yet implimented" - end - end + mount Post::Post, response: post_response end end