Switch to search by clicking on correspondent/concerned in detail

This commit is contained in:
Eike Kettner
2020-11-14 12:57:38 +01:00
parent cf578a88d3
commit fe8c122968
8 changed files with 364 additions and 308 deletions

View File

@ -1,9 +1,15 @@
module Page.ItemDetail.Data exposing (Model, Msg(..), emptyModel)
module Page.ItemDetail.Data exposing
( Model
, Msg(..)
, UpdateResult
, emptyModel
)
import Api.Model.ItemDetail exposing (ItemDetail)
import Browser.Dom as Dom
import Comp.ItemDetail
import Comp.ItemDetail.Model
import Comp.LinkTarget exposing (LinkTarget)
import Http
@ -24,3 +30,11 @@ type Msg
| ItemResp (Result Http.Error ItemDetail)
| ScrollResult (Result Dom.Error ())
| UiSettingsUpdated
type alias UpdateResult =
{ model : Model
, cmd : Cmd Msg
, sub : Sub Msg
, linkTarget : LinkTarget
}

View File

@ -4,20 +4,22 @@ import Api
import Browser.Navigation as Nav
import Comp.ItemDetail
import Comp.ItemDetail.Model
import Comp.LinkTarget
import Data.Flags exposing (Flags)
import Data.ItemNav exposing (ItemNav)
import Data.UiSettings exposing (UiSettings)
import Page.ItemDetail.Data exposing (Model, Msg(..))
import Page exposing (Page(..))
import Page.ItemDetail.Data exposing (Model, Msg(..), UpdateResult)
import Scroll
import Task
update : Nav.Key -> Flags -> ItemNav -> UiSettings -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update : Nav.Key -> Flags -> ItemNav -> UiSettings -> Msg -> Model -> UpdateResult
update key flags inav settings msg model =
case msg of
Init id ->
let
( lm, lc, ls ) =
result =
Comp.ItemDetail.update key
flags
inav
@ -28,24 +30,35 @@ update key flags inav settings msg model =
task =
Scroll.scroll "main-content" 0 0 0 0
in
( { model | detail = lm }
, Cmd.batch
[ Api.itemDetail flags id ItemResp
, Cmd.map ItemDetailMsg lc
, Task.attempt ScrollResult task
]
, Sub.map ItemDetailMsg ls
)
{ model = { model | detail = result.model }
, cmd =
Cmd.batch
[ Api.itemDetail flags id ItemResp
, Cmd.map ItemDetailMsg result.cmd
, Task.attempt ScrollResult task
]
, sub = Sub.map ItemDetailMsg result.sub
, linkTarget = result.linkTarget
}
ItemDetailMsg lmsg ->
let
( lm, lc, ls ) =
result =
Comp.ItemDetail.update key flags inav settings lmsg model.detail
pageSwitch =
case result.linkTarget of
Comp.LinkTarget.LinkNone ->
Cmd.none
_ ->
Page.set key HomePage
in
( { model | detail = lm }
, Cmd.map ItemDetailMsg lc
, Sub.map ItemDetailMsg ls
)
{ model = { model | detail = result.model }
, cmd = Cmd.batch [ pageSwitch, Cmd.map ItemDetailMsg result.cmd ]
, sub = Sub.map ItemDetailMsg result.sub
, linkTarget = result.linkTarget
}
ItemResp (Ok item) ->
let
@ -55,10 +68,10 @@ update key flags inav settings msg model =
update key flags inav settings (ItemDetailMsg lmsg) model
ItemResp (Err _) ->
( model, Cmd.none, Sub.none )
UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone
ScrollResult _ ->
( model, Cmd.none, Sub.none )
UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone
UiSettingsUpdated ->
let