From b0c6bc0240c6f5993c95e4d2e50d2c843a9bc57b Mon Sep 17 00:00:00 2001 From: Nicolas Perriault Date: Tue, 25 Apr 2017 17:07:48 +0200 Subject: [PATCH] Fix #30: Unique CW and NSFW content togglers. (#54) --- src/View.elm | 60 ++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/View.elm b/src/View.elm index 3b50d3b..2fb0471 100644 --- a/src/View.elm +++ b/src/View.elm @@ -68,8 +68,8 @@ accountAvatarLink account = [ img [ class "avatar", src account.avatar ] [] ] -attachmentPreview : Maybe Bool -> List Mastodon.Attachment -> Mastodon.Attachment -> Html Msg -attachmentPreview sensitive attachments ({ url, preview_url } as attachment) = +attachmentPreview : String -> Maybe Bool -> List Mastodon.Attachment -> Mastodon.Attachment -> Html Msg +attachmentPreview context sensitive attachments ({ url, preview_url } as attachment) = let nsfw = case sensitive of @@ -80,7 +80,7 @@ attachmentPreview sensitive attachments ({ url, preview_url } as attachment) = False attId = - "att" ++ (toString attachment.id) + "att" ++ (toString attachment.id) ++ context media = a @@ -111,31 +111,31 @@ attachmentPreview sensitive attachments ({ url, preview_url } as attachment) = [ media ] -attachmentListView : Mastodon.Status -> Html Msg -attachmentListView { media_attachments, sensitive } = +attachmentListView : String -> Mastodon.Status -> Html Msg +attachmentListView context { media_attachments, sensitive } = case media_attachments of [] -> text "" attachments -> ul [ class "attachments" ] <| - List.map (attachmentPreview sensitive attachments) attachments + List.map (attachmentPreview context sensitive attachments) attachments -statusContentView : Mastodon.Status -> Html Msg -statusContentView status = +statusContentView : String -> Mastodon.Status -> Html Msg +statusContentView context status = case status.spoiler_text of "" -> div [ class "status-text" ] [ div [] <| ViewHelper.formatContent status.content status.mentions - , attachmentListView status + , attachmentListView context status ] spoiler -> -- Note: Spoilers are dealt with using pure CSS. let statusId = - "spoiler" ++ (toString status.id) + "spoiler" ++ (toString status.id) ++ context in div [ class "status-text spoiled" ] [ div [ class "spoiler" ] [ text status.spoiler_text ] @@ -143,13 +143,13 @@ statusContentView status = , label [ for statusId ] [ text "Reveal content" ] , div [ class "spoiled-content" ] [ div [] <| ViewHelper.formatContent status.content status.mentions - , attachmentListView status + , attachmentListView context status ] ] -statusView : Mastodon.Status -> Html Msg -statusView ({ account, content, media_attachments, reblog, mentions } as status) = +statusView : String -> Mastodon.Status -> Html Msg +statusView context ({ account, content, media_attachments, reblog, mentions } as status) = let accountLinkAttributes = [ href account.url @@ -169,7 +169,7 @@ statusView ({ account, content, media_attachments, reblog, mentions } as status) [ text <| " @" ++ account.username ] , text " boosted" ] - , statusView reblog + , statusView context reblog ] Nothing -> @@ -181,7 +181,7 @@ statusView ({ account, content, media_attachments, reblog, mentions } as status) , span [ class "acct" ] [ text <| " @" ++ account.username ] ] ] - , statusContentView status + , statusContentView context status ] @@ -230,7 +230,7 @@ accountTimelineView account statuses label iconName = List.map (\s -> li [ class "list-group-item status" ] - [ statusView s ] + [ statusView "account" s ] ) statuses ] @@ -295,8 +295,8 @@ statusActionsView status = ] -statusEntryView : Mastodon.Status -> Html Msg -statusEntryView status = +statusEntryView : String -> Mastodon.Status -> Html Msg +statusEntryView context status = let nsfwClass = case status.sensitive of @@ -307,13 +307,13 @@ statusEntryView status = "" in li [ class <| "list-group-item " ++ nsfwClass ] - [ statusView status + [ statusView context status , statusActionsView status ] -timelineView : List Mastodon.Status -> String -> String -> Html Msg -timelineView statuses label iconName = +timelineView : String -> String -> String -> List Mastodon.Status -> Html Msg +timelineView label iconName context statuses = div [ class "col-md-3" ] [ div [ class "panel panel-default" ] [ div [ class "panel-heading" ] @@ -321,7 +321,7 @@ timelineView statuses label iconName = , text label ] , ul [ class "list-group" ] <| - List.map statusEntryView statuses + List.map (statusEntryView context) statuses ] ] @@ -339,8 +339,8 @@ notificationHeading accounts str iconType = ] -notificationStatusView : Mastodon.Status -> Mastodon.NotificationAggregate -> Html Msg -notificationStatusView status { type_, accounts } = +notificationStatusView : String -> Mastodon.Status -> Mastodon.NotificationAggregate -> Html Msg +notificationStatusView context status { type_, accounts } = div [ class <| "notification " ++ type_ ] [ case type_ of "reblog" -> @@ -351,7 +351,7 @@ notificationStatusView status { type_, accounts } = _ -> text "" - , statusView status + , statusView context status , statusActionsView status ] @@ -377,7 +377,7 @@ notificationEntryView notification = li [ class "list-group-item" ] [ case notification.status of Just status -> - notificationStatusView status notification + notificationStatusView "notification" status notification Nothing -> notificationFollowView notification @@ -414,7 +414,7 @@ draftReplyToView draft = , text ")" ] ] - , div [ class "well" ] [ statusView status ] + , div [ class "well" ] [ statusView "draft" status ] ] Nothing -> @@ -566,7 +566,7 @@ homepageView : Model -> Html Msg homepageView model = div [ class "row" ] [ sidebarView model - , timelineView model.userTimeline "Home timeline" "home" + , timelineView "Home timeline" "home" "home" model.userTimeline , notificationListView model.notifications , case model.account of Just account -> @@ -575,9 +575,9 @@ homepageView model = Nothing -> if model.useGlobalTimeline then - timelineView model.publicTimeline "Global timeline" "globe" + timelineView "Global timeline" "globe" "global" model.publicTimeline else - timelineView model.localTimeline "Local timeline" "th-large" + timelineView "Local timeline" "th-large" "local" model.localTimeline ]