Skip to content

Commit 308add3

Browse files
authored
Merge pull request #39 from Jim-Hodapp-Coaching/manual_notes_refresh
Add ability to manually refresh coaching notes
2 parents fdd6406 + d47d817 commit 308add3

File tree

1 file changed

+64
-40
lines changed

1 file changed

+64
-40
lines changed

src/app/coaching-sessions/[id]/page.tsx

+64-40
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,8 @@ import { Separator } from "@/components/ui/separator";
88
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
99
import { Textarea } from "@/components/ui/textarea";
1010

11-
import { MaxLengthSelector } from "@/components/ui/maxlength-selector";
12-
import { ModelSelector } from "@/components/ui/model-selector";
1311
import { PresetActions } from "@/components/ui/preset-actions";
1412
import { PresetSelector } from "@/components/ui/preset-selector";
15-
import { TemperatureSelector } from "@/components/ui/temperature-selector";
16-
import { TopPSelector } from "@/components/ui/top-p-selector";
17-
import { models, types } from "@/data/models";
1813
import { current, future, past } from "@/data/presets";
1914
import { useAppStateStore } from "@/lib/providers/app-state-store-provider";
2015
import { useEffect, useState } from "react";
@@ -30,6 +25,14 @@ import { siteConfig } from "@/site.config";
3025
import { CoachingSessionTitle } from "@/components/ui/coaching-sessions/coaching-session-title";
3126
import { OverarchingGoalContainer } from "@/components/ui/coaching-sessions/overarching-goal-container";
3227
import { Id } from "@/types/general";
28+
import {
29+
HoverCard,
30+
HoverCardContent,
31+
HoverCardTrigger,
32+
} from "@/components/ui/hover-card";
33+
import { Label } from "@/components/ui/label";
34+
import { Button } from "@/components/ui/button";
35+
import { LockClosedIcon, SymbolIcon } from "@radix-ui/react-icons";
3336

3437
// export const metadata: Metadata = {
3538
// title: "Coaching Session",
@@ -45,32 +48,34 @@ export default function CoachingSessionsPage() {
4548
(state) => state
4649
);
4750

48-
useEffect(() => {
49-
async function fetchNote() {
50-
if (!coachingSession.id) {
51+
async function fetchNote() {
52+
if (!coachingSession.id) {
53+
console.error(
54+
"Failed to fetch Note since coachingSession.id is not set."
55+
);
56+
return;
57+
}
58+
59+
await fetchNotesByCoachingSessionId(coachingSession.id)
60+
.then((notes) => {
61+
const note = notes[0];
62+
if (notes.length > 0) {
63+
console.trace("note: " + noteToString(note));
64+
setNoteId(note.id);
65+
setNote(note.body);
66+
setSyncStatus("Notes refreshed");
67+
} else {
68+
console.trace("No Notes associated with this coachingSession.id");
69+
}
70+
})
71+
.catch((err) => {
5172
console.error(
52-
"Failed to fetch Note since coachingSession.id is not set."
73+
"Failed to fetch Note for current coaching session: " + err
5374
);
54-
return;
55-
}
75+
});
76+
}
5677

57-
await fetchNotesByCoachingSessionId(coachingSession.id)
58-
.then((notes) => {
59-
const note = notes[0];
60-
if (notes.length > 0) {
61-
console.trace("note: " + noteToString(note));
62-
setNoteId(note.id);
63-
setNote(note.body);
64-
} else {
65-
console.trace("No Notes associated with this coachingSession.id");
66-
}
67-
})
68-
.catch((err) => {
69-
console.error(
70-
"Failed to fetch Note for current coaching session: " + err
71-
);
72-
});
73-
}
78+
useEffect(() => {
7479
fetchNote();
7580
}, [coachingSession.id, noteId]);
7681

@@ -140,12 +145,12 @@ export default function CoachingSessionsPage() {
140145
<TabsList className="grid flex w-128 grid-cols-2 justify-start">
141146
<TabsTrigger value="notes">Notes</TabsTrigger>
142147
<TabsTrigger value="console">Console</TabsTrigger>
143-
{/* <TabsTrigger value="coachs_notes">
144-
<div className="flex gap-2 items-start">
145-
<LockClosedIcon className="mt-1" />
146-
Coach&#39;s Notes
147-
</div>
148-
</TabsTrigger> */}
148+
<TabsTrigger value="coachs_notes" className="hidden">
149+
<div className="flex gap-2 items-start">
150+
<LockClosedIcon className="mt-1" />
151+
Coach&#39;s Notes
152+
</div>
153+
</TabsTrigger>
149154
</TabsList>
150155
<TabsContent value="notes">
151156
<div className="flex h-full flex-col space-y-4">
@@ -158,8 +163,8 @@ export default function CoachingSessionsPage() {
158163
</div>
159164
</TabsContent>
160165
<TabsContent value="console">
161-
<div className="p-4 min-h-[400px] md:min-h-[630px] lg:min-h-[630px] bg-blue-500 text-white">
162-
Console
166+
<div className="p-4 min-h-[400px] md:min-h-[630px] lg:min-h-[630px] bg-gray-500 text-white">
167+
Console placeholder
163168
</div>
164169
</TabsContent>
165170
<TabsContent value="coachs_notes">
@@ -173,10 +178,29 @@ export default function CoachingSessionsPage() {
173178
</Tabs>
174179
</div>
175180
<div className="flex-col space-y-4 sm:flex md:order-2">
176-
<ModelSelector types={types} models={models} />
177-
<TemperatureSelector defaultValue={[0.56]} />
178-
<MaxLengthSelector defaultValue={[256]} />
179-
<TopPSelector defaultValue={[0.9]} />
181+
<div className="grid gap-2 pt-2">
182+
<HoverCard openDelay={200}>
183+
<HoverCardTrigger asChild>
184+
<div className="grid gap-4">
185+
<div className="flex items-center justify-between">
186+
<Label htmlFor="refresh">Notes Actions</Label>
187+
</div>
188+
<Button id="refresh" variant="outline" onClick={fetchNote}>
189+
<SymbolIcon className="mr-2 h-4 w-4" /> Refresh Notes
190+
</Button>
191+
</div>
192+
</HoverCardTrigger>
193+
<HoverCardContent
194+
align="start"
195+
className="w-[260px] text-sm"
196+
side="left"
197+
>
198+
Notes refreshing is currently a manual process. To view
199+
changes made by someone else in this session, before making
200+
any new Notes changes yourself, click this button.
201+
</HoverCardContent>
202+
</HoverCard>
203+
</div>
180204
</div>
181205
</div>
182206
</div>

0 commit comments

Comments
 (0)