1
0
Fork 0
tooty/src/Update/Viewer.elm

51 lines
1.4 KiB
Elm

module Update.Viewer exposing (getPrevNext, update)
import List.Extra exposing (elemIndex, getAt)
import Mastodon.Model exposing (..)
import Types exposing (..)
getPrevNext : Viewer -> ( Maybe Attachment, Maybe Attachment )
getPrevNext { attachments, attachment } =
let
index =
Maybe.withDefault -1 <| elemIndex attachment attachments
in
( getAt (index - 1) attachments, getAt (index + 1) attachments )
update : ViewerMsg -> Maybe Viewer -> ( Maybe Viewer, Cmd Msg )
update viewerMsg viewer =
case viewerMsg of
CloseViewer ->
Nothing ! []
OpenViewer attachments attachment ->
(Just <| Viewer attachments attachment) ! []
PrevAttachment ->
case viewer of
Just viewer ->
case getPrevNext viewer of
( Just prev, _ ) ->
(Just <| Viewer viewer.attachments prev) ! []
_ ->
Just viewer ! []
Nothing ->
viewer ! []
NextAttachment ->
case viewer of
Just viewer ->
case getPrevNext viewer of
( _, Just next ) ->
(Just <| Viewer viewer.attachments next) ! []
_ ->
Just viewer ! []
Nothing ->
viewer ! []