Skip to content
This repository was archived by the owner on Jul 19, 2022. It is now read-only.

Commit 131ae30

Browse files
authored
Merge pull request #309 from unisonweb/user-page
Add foundations for the User page
2 parents 32beb16 + 6d04b8a commit 131ae30

File tree

19 files changed

+450
-72
lines changed

19 files changed

+450
-72
lines changed

src/Api.elm

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,18 @@ namespace perspective fqn =
6161
Endpoint [ "namespaces", FQN.toString fqn ] queryParams
6262

6363

64-
projects : Endpoint
65-
projects =
66-
Endpoint [ "projects" ] []
64+
projects : Maybe String -> Endpoint
65+
projects owner =
66+
let
67+
queryParams =
68+
case owner of
69+
Just owner_ ->
70+
[ string "owner" owner_ ]
71+
72+
Nothing ->
73+
[]
74+
in
75+
Endpoint [ "projects" ] queryParams
6776

6877

6978
getDefinition : Perspective -> List String -> Endpoint

src/Definition/Readme.elm

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ module Definition.Readme exposing (..)
22

33
import Definition.Doc as Doc exposing (Doc, DocFoldToggles, FoldId)
44
import Definition.Reference exposing (Reference)
5-
import Html exposing (Html, div, header, text)
5+
import Html exposing (Html, div)
66
import Html.Attributes exposing (class)
77
import Json.Decode as Decode
8-
import UI.Icon as Icon
98

109

1110
{-| Represent the Readme Doc definition of a namespace. This is typically
@@ -28,9 +27,7 @@ view :
2827
-> Html msg
2928
view refToMsg toggleFoldMsg docFoldToggles (Readme doc) =
3029
div [ class "readme" ]
31-
[ header [] [ Icon.view Icon.doc, text "README" ]
32-
, Doc.view refToMsg toggleFoldMsg docFoldToggles doc
33-
]
30+
[ Doc.view refToMsg toggleFoldMsg docFoldToggles doc ]
3431

3532

3633

src/PerspectiveLanding.elm

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,12 @@ view env model =
170170
Success (Namespace _ _ { readme }) ->
171171
case readme of
172172
Just r ->
173-
container [ Readme.view OpenReference ToggleDocFold model r ]
173+
container
174+
[ div [ class "perspective-landing-readme" ]
175+
[ header [] [ Icon.view Icon.doc, text "README" ]
176+
, Readme.view OpenReference ToggleDocFold model r
177+
]
178+
]
174179

175180
Nothing ->
176181
viewEmptyStateNamespace fqn

src/UI/Card.elm

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,36 @@ import Html exposing (Html, div, h3, text)
44
import Html.Attributes exposing (class)
55

66

7+
type CardType
8+
= Contained
9+
| Uncontained
10+
11+
712
type alias Card msg =
8-
{ title : Maybe String, items : List (Html msg) }
13+
{ type_ : CardType
14+
, title : Maybe String
15+
, items : List (Html msg)
16+
}
917

1018

1119
card : List (Html msg) -> Card msg
1220
card items =
13-
{ title = Nothing, items = items }
21+
{ type_ = Uncontained, title = Nothing, items = items }
1422

1523

1624
titled : String -> List (Html msg) -> Card msg
1725
titled title items =
18-
{ title = Just title, items = items }
26+
{ type_ = Uncontained, title = Just title, items = items }
27+
28+
29+
withType : CardType -> Card msg -> Card msg
30+
withType type_ card_ =
31+
{ card_ | type_ = type_ }
32+
33+
34+
asContained : Card msg -> Card msg
35+
asContained card_ =
36+
{ card_ | type_ = Contained }
1937

2038

2139
withTitle : String -> Card msg -> Card msg
@@ -43,5 +61,13 @@ view card_ =
4361

4462
Nothing ->
4563
card_.items
64+
65+
typeClass =
66+
case card_.type_ of
67+
Contained ->
68+
"contained"
69+
70+
Uncontained ->
71+
"uncontained"
4672
in
47-
div [ class "card" ] items
73+
div [ class "card", class typeClass ] items

src/UnisonShare/App.elm

Lines changed: 58 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import KeyboardShortcut.KeyboardEvent as KeyboardEvent exposing (KeyboardEvent)
1818
import Namespace exposing (NamespaceDetails)
1919
import Perspective exposing (Perspective(..))
2020
import PerspectiveLanding
21-
import RemoteData
21+
import RemoteData exposing (RemoteData(..))
2222
import UI
2323
import UI.AppHeader as AppHeader
2424
import UI.Banner as Banner
@@ -30,6 +30,7 @@ import UI.Sidebar as Sidebar
3030
import UI.Tooltip as Tooltip
3131
import UnisonShare.AppModal as AppModal
3232
import UnisonShare.Page.Catalog as Catalog
33+
import UnisonShare.Page.UserPage as UserPage
3334
import UnisonShare.Route as Route exposing (Route)
3435
import Url exposing (Url)
3536
import Workspace
@@ -46,6 +47,7 @@ type alias Model =
4647
, workspace : Workspace.Model
4748
, perspectiveLanding : PerspectiveLanding.Model
4849
, catalog : Catalog.Model
50+
, userPage : UserPage.Model
4951
, appModal : AppModal.Model
5052
, keyboardShortcut : KeyboardShortcut.Model
5153
, env : Env
@@ -78,7 +80,20 @@ init env route =
7880
|> Maybe.withDefault Cmd.none
7981

8082
( catalog, catalogCmd ) =
81-
Catalog.init env
83+
case route of
84+
Route.Catalog ->
85+
Catalog.init env
86+
87+
_ ->
88+
( NotAsked, Cmd.none )
89+
90+
( userPage, userPageCmd ) =
91+
case route of
92+
Route.User username ->
93+
UserPage.init env username
94+
95+
_ ->
96+
( NotAsked, Cmd.none )
8297

8398
model =
8499
{ route = route
@@ -90,13 +105,15 @@ init env route =
90105
, env = env
91106
, sidebarToggled = False
92107
, catalog = catalog
108+
, userPage = userPage
93109
}
94110
in
95111
( model
96112
, Cmd.batch
97113
[ Cmd.map CodebaseTreeMsg codebaseTreeCmd
98114
, Cmd.map WorkspaceMsg workspaceCmd
99115
, Cmd.map CatalogMsg catalogCmd
116+
, Cmd.map UserPageMsg userPageCmd
100117
, fetchNamespaceDetailsCmd
101118
]
102119
)
@@ -118,6 +135,7 @@ type Msg
118135
-- sub msgs
119136
| AppModalMsg AppModal.Msg
120137
| CatalogMsg Catalog.Msg
138+
| UserPageMsg UserPage.Msg
121139
| WorkspaceMsg Workspace.Msg
122140
| PerspectiveLandingMsg PerspectiveLanding.Msg
123141
| CodebaseTreeMsg CodebaseTree.Msg
@@ -156,6 +174,13 @@ update msg ({ env } as model) =
156174
in
157175
( { model2 | catalog = catalog }, Cmd.map CatalogMsg cmd )
158176

177+
Route.User username ->
178+
let
179+
( userPage, cmd ) =
180+
UserPage.init model.env username
181+
in
182+
( { model2 | userPage = userPage }, Cmd.map UserPageMsg cmd )
183+
159184
Route.Project params (Route.ProjectDefinition ref) ->
160185
let
161186
( workspace, cmd ) =
@@ -233,6 +258,13 @@ update msg ({ env } as model) =
233258
in
234259
( { model | catalog = catalog }, Cmd.map CatalogMsg cmd )
235260

261+
( Route.User _, UserPageMsg uMsg ) ->
262+
let
263+
( userPage, cmd ) =
264+
UserPage.update env uMsg model.userPage
265+
in
266+
( { model | userPage = userPage }, Cmd.map UserPageMsg cmd )
267+
236268
( Route.Project _ _, WorkspaceMsg wMsg ) ->
237269
let
238270
( workspace, wCmd, outMsg ) =
@@ -683,28 +715,39 @@ view model =
683715
, content = PageLayout.PageContent [ pageContent ]
684716
}
685717

686-
page =
718+
( pageId, page ) =
687719
case model.route of
688720
Route.Catalog ->
689-
Html.map CatalogMsg (Catalog.view model.catalog)
721+
( "catalog-page", Html.map CatalogMsg (Catalog.view model.catalog) )
722+
723+
Route.User _ ->
724+
( "user-page", Html.map UserPageMsg (UserPage.view model.userPage) )
690725

691726
Route.Project _ Route.ProjectRoot ->
692-
Html.map PerspectiveLandingMsg
693-
(PerspectiveLanding.view
694-
model.env
695-
model.perspectiveLanding
696-
)
697-
|> withSidebar
698-
|> PageLayout.view
727+
let
728+
page_ =
729+
Html.map PerspectiveLandingMsg
730+
(PerspectiveLanding.view
731+
model.env
732+
model.perspectiveLanding
733+
)
734+
|> withSidebar
735+
|> PageLayout.view
736+
in
737+
( "project-page", page_ )
699738

700739
Route.Project _ (Route.ProjectDefinition _) ->
701-
Html.map WorkspaceMsg (Workspace.view model.workspace)
702-
|> withSidebar
703-
|> PageLayout.view
740+
let
741+
page_ =
742+
Html.map WorkspaceMsg (Workspace.view model.workspace)
743+
|> withSidebar
744+
|> PageLayout.view
745+
in
746+
( "project-page", page_ )
704747
in
705748
{ title = "Unison Share"
706749
, body =
707-
[ div [ id "app" ]
750+
[ div [ id "app", class pageId ]
708751
[ appHeader
709752
, page
710753
, Html.map AppModalMsg (AppModal.view model.env model.appModal)

src/UnisonShare/Page/Catalog.elm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ fetchCatalog env =
6969
|> Api.toTask env.apiBasePath Catalog.decodeCatalogMask
7070
|> Task.andThen
7171
(\catalog ->
72-
Api.projects
72+
Api.projects Nothing
7373
|> Api.toTask env.apiBasePath Project.decodeListings
7474
|> Task.map (\projects -> ( catalog, projects ))
7575
)

0 commit comments

Comments
 (0)