Delete single attachments

This commit is contained in:
Eike Kettner
2020-04-26 23:04:03 +02:00
parent 916a9dbcc9
commit a939839041
11 changed files with 149 additions and 25 deletions

View File

@ -3,6 +3,7 @@ module Api exposing
, changePassword
, checkCalEvent
, createMailSettings
, deleteAttachment
, deleteEquip
, deleteItem
, deleteMailSettings
@ -183,6 +184,23 @@ checkCalEvent flags input receive =
--- Delete Attachment
deleteAttachment :
Flags
-> String
-> (Result Http.Error BasicResult -> msg)
-> Cmd msg
deleteAttachment flags attachId receive =
Http2.authDelete
{ url = flags.config.baseUrl ++ "/api/v1/sec/attachment/" ++ attachId
, account = getAccount flags
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
}
--- Attachment Metadata

View File

@ -60,7 +60,7 @@ type alias Model =
, nameModel : String
, notesModel : Maybe String
, notesField : NotesField
, deleteConfirm : Comp.YesNoDimmer.Model
, deleteItemConfirm : Comp.YesNoDimmer.Model
, itemDatePicker : DatePicker
, itemDate : Maybe Int
, itemProposals : ItemProposals
@ -75,6 +75,7 @@ type alias Model =
, attachMeta : Dict String Comp.AttachmentMeta.Model
, attachMetaOpen : Bool
, pdfNativeView : Bool
, deleteAttachConfirm : Comp.YesNoDimmer.Model
}
@ -147,7 +148,7 @@ emptyModel =
, nameModel = ""
, notesModel = Nothing
, notesField = ViewNotes
, deleteConfirm = Comp.YesNoDimmer.emptyModel
, deleteItemConfirm = Comp.YesNoDimmer.emptyModel
, itemDatePicker = Comp.DatePicker.emptyModel
, itemDate = Nothing
, itemProposals = Api.Model.ItemProposals.empty
@ -162,6 +163,7 @@ emptyModel =
, attachMeta = Dict.empty
, attachMetaOpen = False
, pdfNativeView = False
, deleteAttachConfirm = Comp.YesNoDimmer.emptyModel
}
@ -198,7 +200,7 @@ type Msg
| SetDueDateSuggestion Int
| ItemDatePickerMsg Comp.DatePicker.Msg
| DueDatePickerMsg Comp.DatePicker.Msg
| YesNoMsg Comp.YesNoDimmer.Msg
| DeleteItemConfirm Comp.YesNoDimmer.Msg
| RequestDelete
| SaveResp (Result Http.Error BasicResult)
| DeleteResp (Result Http.Error BasicResult)
@ -215,6 +217,9 @@ type Msg
| AttachMetaClick String
| AttachMetaMsg String Comp.AttachmentMeta.Msg
| TogglePdfNativeView
| RequestDeleteAttachment String
| DeleteAttachConfirm String Comp.YesNoDimmer.Msg
| DeleteAttachResp (Result Http.Error BasicResult)
@ -676,10 +681,10 @@ update key flags next msg model =
RemoveDueDate ->
( { model | dueDate = Nothing }, setDueDate flags model Nothing )
YesNoMsg m ->
DeleteItemConfirm m ->
let
( cm, confirmed ) =
Comp.YesNoDimmer.update m model.deleteConfirm
Comp.YesNoDimmer.update m model.deleteItemConfirm
cmd =
if confirmed then
@ -688,10 +693,10 @@ update key flags next msg model =
else
Cmd.none
in
( { model | deleteConfirm = cm }, cmd )
( { model | deleteItemConfirm = cm }, cmd )
RequestDelete ->
update key flags next (YesNoMsg Comp.YesNoDimmer.activate) model
update key flags next (DeleteItemConfirm Comp.YesNoDimmer.activate) model
SetCorrOrgSuggestion idname ->
( model, setCorrOrg flags model (Just idname) )
@ -943,6 +948,37 @@ update key flags next msg model =
, Cmd.none
)
DeleteAttachConfirm attachId lmsg ->
let
( cm, confirmed ) =
Comp.YesNoDimmer.update lmsg model.deleteAttachConfirm
cmd =
if confirmed then
Api.deleteAttachment flags attachId DeleteAttachResp
else
Cmd.none
in
( { model | deleteAttachConfirm = cm }, cmd )
DeleteAttachResp (Ok res) ->
if res.success then
update key flags next ReloadItem model
else
( model, Cmd.none )
DeleteAttachResp (Err _) ->
( model, Cmd.none )
RequestDeleteAttachment id ->
update key
flags
next
(DeleteAttachConfirm id Comp.YesNoDimmer.activate)
model
-- view
@ -1017,7 +1053,7 @@ view inav model =
]
, renderMailForm model
, div [ class "ui grid" ]
[ Html.map YesNoMsg (Comp.YesNoDimmer.view model.deleteConfirm)
[ Html.map DeleteItemConfirm (Comp.YesNoDimmer.view model.deleteItemConfirm)
, div
[ classList
[ ( "four wide column", True )
@ -1206,7 +1242,8 @@ renderAttachmentView model pos attach =
, ( "active", attachmentVisible model pos )
]
]
[ div [ class "ui small secondary menu" ]
[ Html.map (DeleteAttachConfirm attach.id) (Comp.YesNoDimmer.view model.deleteAttachConfirm)
, div [ class "ui small secondary menu" ]
[ div [ class "horizontally fitted item" ]
[ i [ class "file outline icon" ] []
, text attachName
@ -1227,6 +1264,16 @@ renderAttachmentView model pos attach =
]
, div [ class "right menu" ]
[ a
[ classList
[ ( "item", True )
]
, title "Delete this file permanently"
, href "#"
, onClick (RequestDeleteAttachment attach.id)
]
[ i [ class "red trash icon" ] []
]
, a
[ classList
[ ( "item", True )
, ( "invisible", not hasArchive )