I’m trying to modify the AddRoute.elm file in the elm-pages-start repo to scaffold a pre-rendered page. For reasons I don’t understand, the generated route seems to what you expect for a server-rendered route:
createFile : CliOptions -> { path : String, body : String }
createFile { moduleName, zip, county, genderS, ageS, tobaccoS, fields } =
let
genderExpr = unsafeStringToGender genderS
genderSR = case (String.left 1 (String.toLower genderS)) of
"m" -> "M"
_ -> "F"
ageExpr = unsafeStringToAge ageS
tobaccoExpr = unsafeStringToTobacco tobaccoS
tobaccoSR = case (String.left 1 (String.toLower tobaccoS)) of
"1" -> "True"
"t" -> "True"
_ -> "False"
in
Scaffold.Route.preRender
{ moduleName = moduleName
, pages =
Gen.BackendTask.succeed
(Response.render
(Elm.record [])
)
, data =
( Alias (Type.record [])
, \_ -> Gen.BackendTask.Http.getJson
( "https://speakeasy.ngrok.dev/api/plans?zip="
++ zip
++ "&age="
++ ageS
++ "&county="
++ county
++ "&gender="
++ genderSR
++ "&tobacco="
++ tobaccoSR
++ "&discounts=False&"
++ "date=2024-02-01&"
++ "plan=G&plan=N&"
++ "naic="
++ naicListStr
)
Gen.Utils.planXDecoder
|> Gen.BackendTask.allowFatal
)
, head = \app -> Elm.list []
}
|> Scaffold.Route.buildWithSharedState
...............
yields:
type alias ActionData =
BackendTask.BackendTask FatalError.FatalError (List RouteParams)
data :
RouteParams
-> Server.Request.Request
-> BackendTask.BackendTask FatalError.FatalError Data
data routeParams request =
BackendTask.allowFatal
(BackendTask.Http.getJson
"https://speakeasy.ngrok.dev/api/plans?zip=75201&age=65&county=DALLAS&gender=M&tobacco=False&discounts=False&date=2024-02-01&plan=G&plan=N&naic=79413&naic=20699&naic=72052"
Utils.planXDecoder
)
If i understand this right, for pre-rendered routes, data should only take the first RouteParams arg, not the second Server.Request.Request arg. However, I can’t figure how to fix this in the scaffolding script. Is scaffolding not fully operational for pre-rendered routes?