Skip to content

Add session persistence and refresh handling #21

@Lakes41

Description

@Lakes41

Summary

Persist authenticated wallet session state safely so users do not need to reconnect or re-authenticate on every page refresh.

Current Behaviour

Session data is fetched from the API based on the connected wallet state, but the frontend does not clearly model session expiry, refresh, or invalidation behaviour.

Expected Behaviour

The app should preserve valid sessions across reloads, detect expired sessions, and provide a clean path to refresh or clear stale authentication state.

Suggested Implementation

Add a session utility layer that stores only safe metadata client-side and relies on the backend for authoritative session validation. Integrate it with React Query cache invalidation, wallet disconnect events, and admin guard checks.

Files or Areas Likely Affected

  • lib/api/types.ts
  • lib/api/live.ts
  • lib/api/mock.ts
  • components/admin-guard.tsx
  • components/wallet/connect-button.tsx
  • lib/wallet/providers.tsx

Acceptance Criteria

  • Valid sessions survive page refreshes where backend auth permits it
  • Expired sessions are detected and cleared safely
  • Disconnecting a wallet clears session-dependent cached data
  • Admin pages do not remain accessible after session invalidation
  • Mock mode can simulate valid, expired, and cleared sessions

Additional Notes

Assumption: live mode will rely on backend cookies or tokens rather than trusting client-only session data.

Metadata

Metadata

Assignees

No one assigned

    Labels

    GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardOfficial CampaignCampaign: Official Campaign

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions