Skip to content

Add optional user profile fields#173

Merged
jakebromberg merged 2 commits intomainfrom
feat/user-profile-fields
Apr 21, 2026
Merged

Add optional user profile fields#173
jakebromberg merged 2 commits intomainfrom
feat/user-profile-fields

Conversation

@jakebromberg
Copy link
Copy Markdown
Member

@jakebromberg jakebromberg commented Feb 8, 2026

Closes #235

Summary

Adds 7 new optional profile fields for DJ accounts:

  • pronouns - User's pronouns (e.g., "they/them")
  • namePronunciation - Phonetic pronunciation guide
  • showTimes - When the DJ has their show
  • title - Role/title at the station
  • semesterHired - When they joined (e.g., "Fall 2024")
  • bio - Short biography (multi-line)
  • location - Where they're based

UI Changes

  • Redesigned SettingsPopup with 2-column grid layout
  • Organized fields into sections: Identity, Station Info, About
  • Created new SettingsTextarea component for bio field

Files Changed

  • lib/features/authentication/types.ts - Added fields to User type
  • lib/features/authentication/utilities.ts - Added fields to BetterAuthSession, updated conversion functions
  • lib/features/authentication/frontend.ts - Added modification tracking
  • src/hooks/djHooks.ts - Updated save handler
  • src/components/experiences/modern/settings/SettingsPopup.tsx - Redesigned UI
  • src/components/experiences/modern/settings/SettingsTextarea.tsx - New component

Prerequisites

The Better Auth server at api.wxyc.org needs matching additionalFields configuration:

user: {
  additionalFields: {
    pronouns: { type: "string", required: false },
    namePronunciation: { type: "string", required: false },
    showTimes: { type: "string", required: false },
    title: { type: "string", required: false },
    semesterHired: { type: "string", required: false },
    bio: { type: "string", required: false },
    location: { type: "string", required: false },
  }
}

Test plan

  • Verify TypeScript compilation passes
  • Test settings popup opens and displays all fields
  • Test editing fields enables Save button
  • Test saving changes (requires server configuration)
  • Verify saved data persists after page refresh

Note: E2E tests depend on #271 and WXYC/Backend-Service#223. E2E will pass once those merge.

@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Feb 8, 2026

Deploying wxyc-dj with  Cloudflare Pages  Cloudflare Pages

Latest commit: 4342195
Status: ✅  Deploy successful!
Preview URL: https://3405c06b.dj-site.pages.dev
Branch Preview URL: https://feat-user-profile-fields.dj-site.pages.dev

View logs

@jakebromberg jakebromberg marked this pull request as ready for review February 26, 2026 15:36
@jakebromberg jakebromberg force-pushed the feat/user-profile-fields branch 2 times, most recently from 5d4d3ba to ced83e1 Compare March 9, 2026 01:35
Jake Bromberg added 2 commits April 17, 2026 20:59
Add 7 new optional profile fields for DJ accounts:
- pronouns
- namePronunciation
- showTimes
- title
- semesterHired
- bio
- location

Update SettingsPopup with 2-column layout and section groupings
(Identity, Station Info, About). Create SettingsTextarea component
for multi-line bio field.

Note: Better Auth server needs matching additionalFields configuration.
Update authentication test to expect new modification tracking fields (pronouns, namePronunciation, showTimes, title, semesterHired, bio, location) in default state. Add missing MUI icon mocks to SettingsPopup test (RecordVoiceOver, VolumeUp, Schedule, Work, School, Notes, LocationOn).
@jakebromberg jakebromberg force-pushed the feat/user-profile-fields branch from ced83e1 to 4342195 Compare April 18, 2026 03:59
@jakebromberg jakebromberg merged commit 957aa97 into main Apr 21, 2026
5 checks passed
@jakebromberg jakebromberg deleted the feat/user-profile-fields branch April 21, 2026 16:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DJ profiles only support basic fields (name, email)

2 participants