Add a qr-code for source urls

This commit is contained in:
Eike Kettner
2020-08-03 18:27:13 +02:00
parent d9a00c8cb8
commit ed8f16fe73
5 changed files with 63 additions and 13 deletions

View File

@@ -21,15 +21,22 @@
"elm-explorations/markdown": "1.0.0", "elm-explorations/markdown": "1.0.0",
"justinmimbs/date": "3.1.2", "justinmimbs/date": "3.1.2",
"norpan/elm-html5-drag-drop": "3.1.4", "norpan/elm-html5-drag-drop": "3.1.4",
"pablohirafuji/elm-qrcode": "3.3.1",
"ryannhg/date-format": "2.3.0", "ryannhg/date-format": "2.3.0",
"truqu/elm-base64": "2.0.4", "truqu/elm-base64": "2.0.4",
"ursi/elm-throttle": "1.0.1" "ursi/elm-throttle": "1.0.1"
}, },
"indirect": { "indirect": {
"avh4/elm-color": "1.0.0",
"danfishgold/base64-bytes": "1.0.3",
"elm/bytes": "1.0.8", "elm/bytes": "1.0.8",
"elm/parser": "1.1.0", "elm/parser": "1.1.0",
"elm/regex": "1.0.0", "elm/regex": "1.0.0",
"elm/virtual-dom": "1.0.2" "elm/svg": "1.0.1",
"elm/virtual-dom": "1.0.2",
"elm-community/list-extra": "8.2.4",
"folkertdev/elm-flate": "2.0.4",
"justgook/elm-image": "4.0.0"
} }
}, },
"test-dependencies": { "test-dependencies": {

View File

@@ -23,6 +23,7 @@ import Html.Attributes exposing (..)
import Html.Events exposing (onCheck, onInput) import Html.Events exposing (onCheck, onInput)
import Http import Http
import Markdown import Markdown
import QRCode
import Util.Folder exposing (mkFolderOption) import Util.Folder exposing (mkFolderOption)
@@ -97,6 +98,10 @@ type Msg
| FolderDropdownMsg (Comp.Dropdown.Msg IdName) | FolderDropdownMsg (Comp.Dropdown.Msg IdName)
--- Update
update : Flags -> Msg -> Model -> ( Model, Cmd Msg ) update : Flags -> Msg -> Model -> ( Model, Cmd Msg )
update flags msg model = update flags msg model =
case msg of case msg of
@@ -223,6 +228,18 @@ update flags msg model =
( model_, Cmd.map FolderDropdownMsg c2 ) ( model_, Cmd.map FolderDropdownMsg c2 )
--- View
qrCodeView : String -> Html msg
qrCodeView message =
QRCode.encode message
|> Result.map QRCode.toSvg
|> Result.withDefault
(Html.text "Error generating QR-Code")
view : Flags -> UiSettings -> Model -> Html Msg view : Flags -> UiSettings -> Model -> Html Msg
view flags settings model = view flags settings model =
let let
@@ -299,16 +316,23 @@ disappear then.
urlInfoMessage : Flags -> Model -> Html Msg urlInfoMessage : Flags -> Model -> Html Msg
urlInfoMessage flags model = urlInfoMessage flags model =
let
appUrl =
flags.config.baseUrl ++ "/app/upload/" ++ model.source.id
apiUrl =
flags.config.baseUrl ++ "/api/v1/open/upload/item/" ++ model.source.id
in
div div
[ classList [ classList
[ ( "ui info icon message", True ) [ ( "ui info icon message", True )
, ( "hidden", not model.enabled || model.source.id == "" ) , ( "hidden", not model.enabled || model.source.id == "" )
] ]
] ]
[ div [ class "content" ]
[ h3 [ class "ui dividingheader" ]
[ i [ class "info icon" ] [] [ i [ class "info icon" ] []
, div [ class "content" ] , text "Public Uploads"
[ div [ class "header" ]
[ text "Public Uploads"
] ]
, p [] , p []
[ text "This source defines URLs that can be used by anyone to send files to " [ text "This source defines URLs that can be used by anyone to send files to "
@@ -318,15 +342,20 @@ urlInfoMessage flags model =
, dl [ class "ui list" ] , dl [ class "ui list" ]
[ dt [] [ text "Public Upload Page" ] [ dt [] [ text "Public Upload Page" ]
, dd [] , dd []
[ let [ a [ href appUrl, target "_blank" ] [ code [] [ text appUrl ] ]
url =
flags.config.baseUrl ++ "/app/upload/" ++ model.source.id
in
a [ href url, target "_blank" ] [ code [] [ text url ] ]
] ]
, dt [] [ text "Public API Upload URL" ] ]
, dl [ class "ui list" ]
[ dt [] [ text "Public API Upload URL" ]
, dd [] , dd []
[ code [] [ text (flags.config.baseUrl ++ "/api/v1/open/upload/item/" ++ model.source.id) ] [ p []
[ code []
[ text apiUrl
]
]
, p [ class "qr-code" ]
[ qrCodeView apiUrl
]
] ]
] ]
] ]

View File

@@ -68,6 +68,10 @@ type Msg
| RequestDelete | RequestDelete
--- Update
update : Flags -> Msg -> Model -> ( Model, Cmd Msg ) update : Flags -> Msg -> Model -> ( Model, Cmd Msg )
update flags msg model = update flags msg model =
case msg of case msg of
@@ -194,6 +198,10 @@ update flags msg model =
( { model | deleteConfirm = cm }, cmd ) ( { model | deleteConfirm = cm }, cmd )
--- View
view : Flags -> UiSettings -> Model -> Html Msg view : Flags -> UiSettings -> Model -> Html Msg
view flags settings model = view flags settings model =
if model.viewMode == Table then if model.viewMode == Table then

View File

@@ -104,6 +104,12 @@
background: rgba(220, 255, 71, 0.6); background: rgba(220, 255, 71, 0.6);
} }
.default-layout .qr-code svg {
border: 1px solid #ccc;
width: 200px;
height: 200px;
}
.markdown-preview { .markdown-preview {
overflow: auto; overflow: auto;
max-height: 300px; max-height: 300px;