module Pages.Cucklist exposing (Model, Msg, page)

import Config.Colour as T exposing (..)
import Config.Format as O exposing (..)
import Config.Identity as I exposing (..)
import Config.Response exposing (..)
import Config.Viewport exposing (..)
import Debate.Cuckery.Helpers exposing (..)
import Effect exposing (Effect)
import Element exposing (..)
import Element.Border as D
import Element.Font as F
import Headers.Helpers exposing (headerMaker)
import Headers.Pages.CuckList exposing (cuckListHeader)
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared
import View exposing (View)


page : Shared.Model -> Route () -> Page Model Msg
page shared route =
    Page.new
        { init = init
        , update = update
        , subscriptions = subscriptions
        , view = view shared
        }
        |> Page.withLayout toLayout


toLayout : Model -> Layouts.Layout Msg
toLayout model =
    Layouts.Navbar {}



-- INIT


type alias Model =
    {}


init : () -> ( Model, Effect Msg )
init () =
    ( {}
    , Effect.map
        (\_ -> NoOp)
        (Effect.sendCmd resetViewport)
    )



-- UPDATE


type Msg
    = NoOp


update : Msg -> Model -> ( Model, Effect Msg )
update msg model =
    case msg of
        NoOp ->
            ( model
            , Effect.none
            )



-- SUBSCRIPTIONS


subscriptions : Model -> Sub Msg
subscriptions model =
    Sub.none



-- VIEW


view : Shared.Model -> Model -> View Msg
view shared model =
    { title = "debate (" ++ pageNames.pageCucks ++ ")"
    , attributes = []
    , element = dodgersContainer shared.device
    }


dodgersContainer : Device -> Element msg
dodgersContainer device =
    topLevelContainer (dodgersList device)


dodgersList : Device -> Element msg
dodgersList device =
    column
        (case ( device.class, device.orientation ) of
            _ ->
                pageListDesktop
        )
    <|
        List.concat
            [ List.map headerMaker
                [ cuckListHeader ]
            , (case ( device.class, device.orientation ) of
                ( Phone, Portrait ) ->
                    List.map cuckMakerMobile

                ( Tablet, Portrait ) ->
                    List.map cuckMakerMobile

                _ ->
                    List.map cuckMaker
              )
                cuckList
            ]
