Yōten: A social tracker for your language learning journey built on the atproto.

feat(new-study-session): add query param support for pre-filled data #38

merged opened by brookjeynes.dev targeting master from push-lyzvwszquxnr
Labels

None yet.

Participants 1
AT URI
at://did:plc:4mj54vc4ha3lh32ksxwunnbh/sh.tangled.repo.pull/3mdeekxpddy22
+28 -29
Interdiff #0 β†’ #1
+7 -7
internal/server/handlers/study-session.go
··· 435 435 return resource.Status != db.Deleted 436 436 }) 437 437 438 - prePopulated := views.NewStudySessionQueryParams{ 438 + queryParams := views.NewStudySessionQueryParams{ 439 439 LanguageCode: r.URL.Query().Get("language_code"), 440 440 DurationHours: r.URL.Query().Get("duration_hours"), 441 441 DurationMinutes: r.URL.Query().Get("duration_minutes"), ··· 445 445 } 446 446 447 447 views.NewStudySessionPage(views.NewStudySessionPageParams{ 448 - User: user, 449 - Profile: profile, 450 - Activities: activeActivities, 451 - Resources: activeResources, 452 - SortedLanguages: profile.Languages, 453 - PrePopulatedFormData: prePopulated, 448 + User: user, 449 + Profile: profile, 450 + Activities: activeActivities, 451 + Resources: activeResources, 452 + SortedLanguages: profile.Languages, 453 + QueryParams: queryParams, 454 454 }).Render(r.Context(), w) 455 455 case http.MethodPost: 456 456 newStudySession, err := h.parseStudySessionForm(r)
+15 -16
internal/server/views/new-study-session.templ
··· 17 17 } 18 18 19 19 activityName := "Select an activity" 20 - if params.PrePopulatedFormData.ActivityId != "" { 21 - for _, a := range params.Activities { 22 - activityId, err := strconv.ParseInt(params.PrePopulatedFormData.ActivityId, 10, 64) 23 - if err != nil { 24 - continue 25 - } 26 - if int64(a.ID) == activityId { 27 - activityName = a.Name 28 - } 29 - } 20 + if params.QueryParams.ActivityId != "" { 21 + activityId, err := strconv.ParseInt(params.QueryParams.ActivityId, 10, 64) 22 + if err == nil { 23 + for _, a := range params.Activities { 24 + if int64(a.ID) == activityId { 25 + activityName = a.Name 26 + } 27 + } 28 + } 30 29 } 31 30 }} 32 31 @layouts.Base(layouts.BaseParams{Title: "new study session"}) { ··· 296 295 <div class="flex gap-2"> 297 296 <div class="flex flex-col gap-1 w-full"> 298 297 {{ 299 - hoursStr := params.PrePopulatedFormData.DurationHours 298 + hoursStr := params.QueryParams.DurationHours 300 299 hours := "0" 301 300 if hoursStr != "" { 302 301 hours = hoursStr ··· 319 318 </div> 320 319 <div class="flex flex-col gap-1 w-full"> 321 320 {{ 322 - minutesStr := params.PrePopulatedFormData.DurationMinutes 321 + minutesStr := params.QueryParams.DurationMinutes 323 322 minutes := "0" 324 323 if minutesStr != "" { 325 324 minutes = minutesStr ··· 342 341 </div> 343 342 <div class="flex flex-col gap-1 w-full"> 344 343 {{ 345 - secondsStr := params.PrePopulatedFormData.DurationSeconds 344 + secondsStr := params.QueryParams.DurationSeconds 346 345 seconds := "0" 347 346 if secondsStr != "" { 348 347 seconds = secondsStr ··· 403 402 > 404 403 Description (optional) 405 404 </label> 406 - <div x-data={ fmt.Sprintf("{ text: '%s' }", templ.EscapeString(params.PrePopulatedFormData.Description)) }> 405 + <div x-data={ fmt.Sprintf("{ text: '%s' }", templ.EscapeString(params.QueryParams.Description)) }> 407 406 <textarea 408 407 x-model="text" 409 408 id="description" ··· 451 450 activitiesSearchQuery: '', 452 451 activities: {{ params.Activities }} || [], 453 452 selectedActivityName: {{ activityName }}, 454 - selectedActivityId: {{ params.PrePopulatedFormData.ActivityId }}, 453 + selectedActivityId: {{ params.QueryParams.ActivityId }}, 455 454 activitiesIsOpen: false, 456 455 457 456 resourcesSearchQuery: '', ··· 460 459 selectedResourceId: '', 461 460 resourcesIsOpen: false, 462 461 463 - selectedLanguage: {{ params.PrePopulatedFormData.LanguageCode }} || {{ initialLangCode }} || '', 462 + selectedLanguage: {{ params.QueryParams.LanguageCode }} || {{ initialLangCode }} || '', 464 463 465 464 get filteredActivities() { 466 465 if (this.activitiesSearchQuery === '') {
+6 -6
internal/server/views/views.go
··· 55 55 56 56 type NewStudySessionPageParams struct { 57 57 // The current logged in user. 58 - User *types.User 59 - Profile db.Profile 60 - Activities []db.Activity 61 - Resources []db.Resource 62 - SortedLanguages []db.Language 63 - PrePopulatedFormData NewStudySessionQueryParams 58 + User *types.User 59 + Profile db.Profile 60 + Activities []db.Activity 61 + Resources []db.Resource 62 + SortedLanguages []db.Language 63 + QueryParams NewStudySessionQueryParams 64 64 } 65 65 66 66 type EditStudySessionPageParams struct {

History

2 rounds 0 comments
sign up or login to add to the discussion
1 commit
expand
feat(new-study-session): add query params for prefilled data
expand 0 comments
pull request successfully merged
1 commit
expand
feat(new-study-session): add query params for prefilled data
expand 0 comments