From 7f64d8f9268c520cf2432d263c5de6a67260ebfb Mon Sep 17 00:00:00 2001 From: Saku Laesvuori Date: Thu, 28 Sep 2023 11:00:26 +0300 Subject: [PATCH] Show membership status on profile page --- .../Frontend/Handlers/Profile.hs | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/frontend/src/Datarekisteri/Frontend/Handlers/Profile.hs b/frontend/src/Datarekisteri/Frontend/Handlers/Profile.hs index fd62463..4c09eed 100644 --- a/frontend/src/Datarekisteri/Frontend/Handlers/Profile.hs +++ b/frontend/src/Datarekisteri/Frontend/Handlers/Profile.hs @@ -19,6 +19,7 @@ import Datarekisteri.Frontend.Types import Datarekisteri.Frontend.FormFields import Data.Morpheus.Client import Datarekisteri.Core.Types +import Data.Maybe (fromJust) import Yesod hiding (emailField) import Yesod.Auth @@ -33,6 +34,7 @@ query ProfilePage($id: UserID) { homeplace birthdate phoneNumber + isMember } permissions } @@ -92,14 +94,18 @@ profileForm userID user extraHtml = do |] return (profileUpdateRes, widget) -profile :: UserID -> (Widget, Enctype) -> (Widget, Enctype) -> Widget +profile :: ProfilePageUser -> (Widget, Enctype) -> (Widget, Enctype) -> Widget profile user (profileWidget, profileEnctype) (passwordWidget, passwordEnctype) = do setTitle "Muokkaa profiilia" - passwordRoute <- handlerToWidget $ maybeAuthorized (UpdatePasswordR user) True + let userID = let ProfilePageUser {..} = user in id + passwordRoute <- handlerToWidget $ maybeAuthorized (UpdatePasswordR userID) True [whamlet|

- Omat tiedot -
+ $if isMember user + Jäsentiedot + $else + Jäsenhakemuksen tiedot + ^{profileWidget} $maybe route <- passwordRoute @@ -114,7 +120,7 @@ getProfile userID = do passwordForm <- liftHandler $ generateFormPost passwordForm profileForm <- liftHandler $ generateFormPost $ profileForm ((\x -> let ProfilePageUser {..} = x in id) <$> user) user - defaultLayout $ profile ((\x -> let ProfilePageUser {..} = x in id) $ fromJust user) + defaultLayout $ profile (fromJust user) profileForm passwordForm where fromJust = fromMaybe $ error "Tried to access the profile of an inexistent user" @@ -131,7 +137,9 @@ postProfileR userID = do FormSuccess update -> apiRequest @UpdateProfile True update >> redirect (ProfileR userID) _ -> do passwordForm <- liftHandler $ generateFormPost passwordForm - defaultLayout $ profile userID (widget, enctype) passwordForm + ProfilePage {..} <- apiRequest True (ProfilePageArgs {id = Just userID}) + defaultLayout $ profile (fromJust user) (widget, enctype) passwordForm + --- XXX fromJust explodes if the user no longer exists postUpdatePasswordR :: (YesodAuth DataIdClient, AuthId DataIdClient ~ Text) => UserID -> Handler Html postUpdatePasswordR userID = do @@ -141,4 +149,6 @@ postUpdatePasswordR userID = do apiRequest @UpdatePassword True (UpdatePasswordArgs {password = new, user = Just userID}) >> redirect (ProfileR userID) _ -> do profileForm <- liftHandler $ generateFormPost $ profileForm (Just userID) Nothing - defaultLayout $ profile userID profileForm (widget, enctype) + ProfilePage {..} <- apiRequest True (ProfilePageArgs {id = Just userID}) + defaultLayout $ profile (fromJust user) profileForm (widget, enctype) + --- XXX fromJust explodes if the user no longer exists