Files
igny8/master-docs/30-frontend/accounts/ACCOUNT-PAGE.md
IGNY8 VPS (Salman) 3cbed65601 revamps docs complete
2025-12-07 14:14:29 +00:00

3.2 KiB
Raw Blame History

Account Page (Account Settings)

Purpose

Provide a full account-level settings form for name, slug (read-only), billing contact email, billing address, and tax ID. Acts as the frontend surface for getAccountSettings/updateAccountSettings and reflects saved tenant metadata.

Code Locations (exact paths)

  • Page component: frontend/src/pages/account/AccountSettingsPage.tsx
  • API client: frontend/src/services/billing.api (getAccountSettings, updateAccountSettings, AccountSettings type)
  • UI primitives: frontend/src/components/ui/card

High-Level Responsibilities

  • Fetch current account settings on load and bind them into a local form.
  • Allow updating account display name, billing contact email, billing address fields, and tax/VAT ID.
  • Keep account slug immutable/read-only while exposing it for reference.
  • Surface success/error feedback inline.

Detailed Behavior

  • On mount: calls getAccountSettings(); populates settings and formData with server values.
  • Form fields: name, billing_email, billing_address_line1/2, billing_city, billing_state, billing_postal_code, billing_country, tax_id; slug shown read-only from settings.slug.
  • Submit: handleSubmit -> updateAccountSettings(formData); on success shows success banner then reloads settings; on failure shows error banner.
  • Loading states: full-page spinner before data load; button shows saving state.
  • Errors surfaced from caught exceptions (err.message) with console logging.

Data Structures / Models Involved (no code)

  • Account settings DTO returned by getAccountSettings with fields listed above plus slug.

Execution Flow

  • useEffectloadSettingsgetAccountSettings → set local state.
  • User edits controlled inputs → handleSubmitupdateAccountSettings → reload via loadSettings.
  • All network ops are direct REST calls via billing.api.

Cross-Module Interactions

  • Shares account identity with billing pages (same billing.api source). Updated billing email/address is used by invoicing flows.

State Transitions (if applicable)

  • View state: loading → loaded; saving toggles during submit. Success/error banners reflect last operation outcome.

Error Handling

  • Catches fetch/update errors; shows inline red banner; logs to console. No retries.

Tenancy Rules

  • Relies on backend to scope getAccountSettings/updateAccountSettings to the authenticated users account; no client-side tenancy logic beyond using the current auth token.

Billing Rules (if applicable)

  • Billing contact and address collected here feed invoice generation; no pricing logic on this page.

Background Tasks / Schedulers (if applicable)

  • None.

Key Design Considerations

  • Slug is immutable to prevent accidental tenant identifier changes.
  • Form is fully controlled; reload after save ensures UI mirrors server truth.

How Developers Should Work With This Module

  • Add new account-level fields by extending AccountSettings in billing.api, wiring controlled inputs, and persisting via updateAccountSettings.
  • Keep slug read-only; any slug mutation must be handled server-side with explicit UX.