Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
14e4ae4
Fix editor cache tests and implement logout cleanup
calebbourg Aug 28, 2025
c18a1f1
Fix eslint warning in user auth form
calebbourg Aug 28, 2025
3bed072
Refactor TipTap editor with functional composition and fix ref typing
calebbourg Sep 3, 2025
7cdd310
add session cleanup and logout on all 401 responses from backend
calebbourg Sep 9, 2025
82435ef
Create logout cleanup registry for coordinated component cleanup
calebbourg Sep 9, 2025
02c7cd3
Integrate cleanup registry into logout sequence
calebbourg Sep 9, 2025
38a8eca
Fix TipTap collaboration presence synchronization on logout
calebbourg Sep 9, 2025
107b69f
Add SessionCleanupProvider to application provider hierarchy
calebbourg Sep 9, 2025
ed03458
Improve debugging logs for session cleanup and logout flow
calebbourg Sep 9, 2025
5b0fb11
Fix failing tests after session cleanup provider integration
calebbourg Sep 10, 2025
536295e
Fix memory leak in loading progress animation
calebbourg Sep 11, 2025
a0e13a4
Simplify provider lifecycle management and fix stale closure
calebbourg Sep 11, 2025
a8e1eff
Simplify document.title update by removing unnecessary callback pattern
calebbourg Sep 11, 2025
76693a1
Improve TipTap editor logging and documentation
calebbourg Sep 11, 2025
aab917b
Enhance editor cache provider observability and fix useEffect deps
calebbourg Sep 11, 2025
8578c59
Secure logout process logging and cleanup orchestration
calebbourg Sep 11, 2025
852f174
Refine session management logging and documentation
calebbourg Sep 11, 2025
c5346e9
more docs and logging cleanup
calebbourg Sep 12, 2025
70d39b4
remove unneeded useEditorState function
calebbourg Sep 12, 2025
3e9aedd
move providor to proper location
calebbourg Sep 12, 2025
fd2b6a3
Fix broken tests by adding Next.js app router mocks
calebbourg Sep 12, 2025
57b644a
Merge branch 'main' into destroy_tiptap_session_on_logout
jhodapp Sep 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
368 changes: 90 additions & 278 deletions __tests__/components/ui/coaching-sessions/editor-cache-context.test.tsx

Large diffs are not rendered by default.

6 changes: 1 addition & 5 deletions src/app/coaching-sessions/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use client";

import { Separator } from "@/components/ui/separator";
import { useCallback, useEffect } from "react";
import { useEffect } from "react";

import { useAuthStore } from "@/lib/providers/auth-store-provider";

Expand Down Expand Up @@ -40,9 +40,6 @@ export default function CoachingSessionsPage() {
const { currentCoachingRelationshipId, setCurrentCoachingRelationshipId } =
useCurrentCoachingRelationship();

const handleTitleRender = useCallback((sessionTitle: string) => {
document.title = sessionTitle;
}, []);

// Auto-sync relationship ID when session data loads (if not already set)
useEffect(() => {
Expand Down Expand Up @@ -105,7 +102,6 @@ export default function CoachingSessionsPage() {
<CoachingSessionTitle
locale={siteConfig.locale}
style={siteConfig.titleStyle}
onRender={handleTitleRender}
/>
<div className="ml-auto flex w-full sm:max-w-sm md:max-w-md items-center gap-3 sm:justify-end md:justify-start">
<ShareSessionLink
Expand Down
21 changes: 12 additions & 9 deletions src/components/providers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { ReactNode } from 'react';
import { AuthStoreProvider } from '@/lib/providers/auth-store-provider';
import { OrganizationStateStoreProvider } from '@/lib/providers/organization-state-store-provider';
import { CoachingRelationshipStateStoreProvider } from '@/lib/providers/coaching-relationship-state-store-provider';
import { SessionCleanupProvider } from '@/lib/providers/session-cleanup-provider';
import { SWRConfig } from 'swr';

interface ProvidersProps {
Expand All @@ -15,15 +16,17 @@ export function Providers({ children }: ProvidersProps) {
<AuthStoreProvider>
<OrganizationStateStoreProvider>
<CoachingRelationshipStateStoreProvider>
<SWRConfig
value={{
revalidateIfStale: true,
focusThrottleInterval: 10000,
provider: () => new Map(),
}}
>
{children}
</SWRConfig>
<SessionCleanupProvider>
<SWRConfig
value={{
revalidateIfStale: true,
focusThrottleInterval: 10000,
provider: () => new Map(),
}}
>
{children}
</SWRConfig>
</SessionCleanupProvider>
</CoachingRelationshipStateStoreProvider>
</OrganizationStateStoreProvider>
</AuthStoreProvider>
Expand Down
Loading