bf09b87215
* Part 1: Refactor views. I'm in the middle of nowhere. It's cold, but I distinguish lights. It's dark, but my good ol' Elm keeps barking when something looks wrong or dangerous. I'm not afraid. * Part 2: More views refactoring. The night is deep, but I can see clear. The truth is at the end of this path. Perhaps. * Part 3: The sun is rising. The darkness is gently fading over, dawn is near. I can now see mountains drawing in the horizon. Elm is rather quiet, but keeps scrutating the shadows. * Part 4: Moaar view splitting. I follow some wrong path, but I'm back on track. The sun is shining. * Epilogue That was actually fun.
46 lines
1.2 KiB
Elm
46 lines
1.2 KiB
Elm
module View.Thread exposing (threadView)
|
|
|
|
import View.Common as Common
|
|
import Html exposing (..)
|
|
import Html.Attributes exposing (..)
|
|
import Html.Keyed as Keyed
|
|
import Mastodon.Model exposing (..)
|
|
import Types exposing (..)
|
|
import View.Status exposing (statusEntryView)
|
|
|
|
|
|
type alias CurrentUser =
|
|
Account
|
|
|
|
|
|
threadView : CurrentUser -> Thread -> Html Msg
|
|
threadView currentUser thread =
|
|
let
|
|
statuses =
|
|
List.concat
|
|
[ thread.context.ancestors
|
|
, [ thread.status ]
|
|
, thread.context.descendants
|
|
]
|
|
|
|
threadEntry status =
|
|
statusEntryView "thread"
|
|
(if status == thread.status then
|
|
"thread-target"
|
|
else
|
|
""
|
|
)
|
|
currentUser
|
|
status
|
|
|
|
keyedEntry status =
|
|
( toString status.id, threadEntry status )
|
|
in
|
|
div [ class "col-md-3 column" ]
|
|
[ div [ class "panel panel-default" ]
|
|
[ Common.closeablePanelheading "thread" "list" "Thread" CloseThread
|
|
, Keyed.ul [ id "thread", class "list-group timeline" ] <|
|
|
List.map keyedEntry statuses
|
|
]
|
|
]
|