Skip to content

feat(app): implement account and public profile in settings - #218

Open
Carter907 wants to merge 45 commits into
bluelearn-org:mainfrom
Carter907:feat/settings-page-2
Open

feat(app): implement account and public profile in settings#218
Carter907 wants to merge 45 commits into
bluelearn-org:mainfrom
Carter907:feat/settings-page-2

Conversation

@Carter907

@Carter907 Carter907 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR is based on PR 212.

  • Updated UI: Make email and password changes expand inline for a more clean, condensed UI layout
  • Auth Sync: Used existing auth session with effect hook to populate email field with current email
  • Update Email: Added functionality for updating email using updateEmail from @/lib/auth
  • Update/Change Password: Added supabase API integration for changing your password from @/lib/auth
  • Permanent Account Deletion Dialog: On account deletion, users are told to type "delete account" in a popup dialog to confirm this destructive action.
  • Profile Page Updates: Added data fetching and notification via a toast when you save changes.

closes #50

Type of change

  • Bug fix
  • Feature
  • Refactor (no behavior change)
  • Documentation
  • Build / tooling / CI
  • Other: _________

Verification

  • pnpm -r typecheck passes
  • pnpm -r build passes
  • Manually verified in a browser (for UI / behavior changes)
  • Followed the app layout conventions
  • No new dependencies, or new dependencies are justified and AGPL-compatible
  • Change does not violate any non-negotiable principle
  • Documentation only, no changes to the codebase, so no tests required

squeaky-duck-duck and others added 30 commits July 20, 2026 11:45
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: Tonycs <lam.tony540@gmail.com>
Signed-off-by: Tonycs <lam.tony540@gmail.com>
Signed-off-by: Tonycs <lam.tony540@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: Tonycs <lam.tony540@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
andyrodrigues30 and others added 7 commits July 29, 2026 19:57
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: Tonycs <lam.tony540@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: andyrodrigues30 <andrea.melissa.rodrigues@gmail.com>
Signed-off-by: Carter <speers.carter@gmail.com>
Signed-off-by: Carter <speers.carter@gmail.com>
Signed-off-by: Carter <speers.carter@gmail.com>
@Carter907
Carter907 force-pushed the feat/settings-page-2 branch from 6603976 to 6916283 Compare July 30, 2026 18:20
@Carter907
Carter907 marked this pull request as draft July 30, 2026 18:27

@andyrodrigues30 andyrodrigues30 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like it's still in the process of the functionality being added, but see comments made on the UI stuff.
Have a look at the error in the ThemeProvider please and see if you can fix it/ensure changing stuff does break anything else.

{!isEmailEditing && (
<Button
variant="outline"
onClick={() => setIsEmailEditing(true)}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add the following to the button:
className="btn-sec"

)}
<Button
variant="ghost"
onClick={() => {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add the following to the button:
className="btn-sec"

Comment thread app/src/routes/settings.account.tsx Outdated
>
Cancel
</Button>
<Button onClick={handleSave} disabled={saving}>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add the following to the button:
className="btn-pri"

</div>
{!isPasswordEditing && (
<Button
variant="outline"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add the following to the button:
className="btn-sec"

<p className="mono-micro text-destructive">{updateError}</p>
)}
<Button
variant="ghost"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add the following to the button:
className="btn-sec"

Comment thread app/src/routes/settings.account.tsx Outdated
>
Cancel
</Button>
<Button onClick={handleUpdate} disabled={updating}>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add the following to the button:
className="btn-pri"

const ThemeContext = createContext<ThemeContextType | null>(null);

export function ThemeProvider({ children }: { children: ReactNode }) {
const [theme, setThemeState] = useState<Theme>("light");

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change theme to themeState
check if this causes any other issues when changing it.

Comment thread app/src/routes/settings.account.tsx Outdated
</div>

{isEmailEditing && (
<div className="space-y-4 rounded-md border p-4">

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove the border and rounded corners

Comment thread app/src/routes/settings.account.tsx Outdated
</div>

{isPasswordEditing && (
<div className="space-y-4 rounded-md border p-4">

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove border and rounded corners

Comment thread app/src/routes/settings.account.tsx Outdated
</p>
<Button
variant="destructive"
className="font-mono tracking-[0.08em] uppercase"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add functionality to delete account

@Carter907
Carter907 force-pushed the feat/settings-page-2 branch from 5eb1ea7 to d09e3fd Compare July 30, 2026 19:41
Adds client-side validation and old password verification using Supabase before updating to the new password.

Signed-off-by: Carter <speers.carter@gmail.com>
Signed-off-by: Carter <speers.carter@gmail.com>
Signed-off-by: Carter <speers.carter@gmail.com>
@Carter907
Carter907 marked this pull request as ready for review July 31, 2026 01:14
opted for TanStack Router loader pattern settings.account.tsx
with getMyIdentity, replacing the client-side useAuth hook for fetching
initial data.

Signed-off-by: Carter <speers.carter@gmail.com>
@Carter907
Carter907 force-pushed the feat/settings-page-2 branch from fd00b76 to 7661e04 Compare July 31, 2026 01:30
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.

[Feature] Settings Page

4 participants