Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancements to Encounter Discussion/Notes | Fix Translation #10156

Open
wants to merge 60 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
b55e19e
add link to user profile
rajku-dev Jan 21, 2025
c6e17f2
add relative time to message
rajku-dev Jan 21, 2025
1ec3202
fix margin
rajku-dev Jan 21, 2025
a5a9a5e
Merge remote-tracking branch 'upstream/develop' into issue/9842/discu…
rajku-dev Jan 24, 2025
06fb072
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Jan 25, 2025
7cbf0e5
Add counter for n(participants) and n(messages) in a thread
rajku-dev Jan 25, 2025
d8c45f0
add tooltip to show full time
rajku-dev Jan 26, 2025
65d03c7
Participants and Messages tooltip
rajku-dev Jan 26, 2025
b88e5d0
Prevent duplicate threads with the same title
rajku-dev Jan 26, 2025
d32ef25
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Jan 27, 2025
a7f28d8
Merge remote-tracking branch 'upstream/develop' into issue/9842/discu…
rajku-dev Jan 28, 2025
60c9ceb
show only uncreated threads | add translations
rajku-dev Jan 28, 2025
4f2c148
Merge branch 'issue/9842/discussion-ui' of https://github.com/rajku-d…
rajku-dev Jan 28, 2025
c44391b
fix translation
rajku-dev Jan 28, 2025
60a2ce0
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Jan 29, 2025
179b3c8
fix unused threads rendering
rajku-dev Jan 30, 2025
866fd7f
add translation
rajku-dev Jan 30, 2025
c44a3e8
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Jan 30, 2025
1221cf1
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Jan 30, 2025
9032a17
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Jan 31, 2025
2d0f56e
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Jan 31, 2025
8040843
enhance css of message
rajku-dev Jan 31, 2025
e4b0144
Merge branch 'issue/9842/discussion-ui' of https://github.com/rajku-d…
rajku-dev Jan 31, 2025
d6ed7eb
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Jan 31, 2025
089339c
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Feb 1, 2025
87c2706
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Feb 1, 2025
8b9b804
keep ago
rajku-dev Feb 3, 2025
54112e4
Merge branch 'issue/9842/discussion-ui' of https://github.com/rajku-d…
rajku-dev Feb 3, 2025
4bb1aab
handle infinite scroll
rajku-dev Feb 3, 2025
026e6ca
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Feb 3, 2025
0f3c672
refine infinite scroll logic
rajku-dev Feb 4, 2025
36c7f34
refine docs
rajku-dev Feb 4, 2025
174dd68
Merge branch 'issue/9842/discussion-ui' of https://github.com/rajku-d…
rajku-dev Feb 4, 2025
e304e68
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Feb 4, 2025
d85b332
fix duplicate
rajku-dev Feb 4, 2025
bffed11
drop relativeTime | fix css
rajku-dev Feb 4, 2025
7f492dd
fix typo
rajku-dev Feb 4, 2025
f57bc82
fix margin css
rajku-dev Feb 4, 2025
0a6653f
remove mb
rajku-dev Feb 4, 2025
613c228
Update src/pages/Encounters/tabs/EncounterNotesTab.tsx
rajku-dev Feb 4, 2025
219709f
add i18n
rajku-dev Feb 4, 2025
c39998b
add header for lg view too
rajku-dev Feb 6, 2025
889036a
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Feb 6, 2025
dd03a33
handle infinite scroll
rajku-dev Feb 6, 2025
6aa88dd
fix ref
rajku-dev Feb 6, 2025
1fba323
Merge branch 'issue/9842/discussion-ui' of https://github.com/rajku-d…
rajku-dev Feb 6, 2025
43743a4
show total messages
rajku-dev Feb 6, 2025
4f22eae
fix optional pages
rajku-dev Feb 6, 2025
7f50d4e
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Feb 6, 2025
4e7d77d
show total msg tooltip
rajku-dev Feb 6, 2025
8cb6e5d
rm classes from start ref
rajku-dev Feb 6, 2025
39ec0c9
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Feb 6, 2025
5733859
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Feb 6, 2025
976a053
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Feb 6, 2025
9bc19a1
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Feb 7, 2025
b20424d
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Feb 9, 2025
46a29a8
handle infinite scroll better
rajku-dev Feb 9, 2025
cfb6d1b
Merge branch 'issue/9842/discussion-ui' of https://github.com/rajku-d…
rajku-dev Feb 9, 2025
44edd7a
add key
rajku-dev Feb 9, 2025
ccabdb4
Merge branch 'develop' into issue/9842/discussion-ui
rajku-dev Feb 9, 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
75 changes: 57 additions & 18 deletions src/pages/Encounters/tabs/EncounterNotesTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@ import {
Info,
Loader2,
MessageCircle,
MessageSquare,
MessageSquarePlus,
Plus,
Send,
Users,
} from "lucide-react";
import { Link, usePathParams } from "raviger";
import { useEffect, useRef, useState } from "react";
import { useTranslation } from "react-i18next";
import { useInView } from "react-intersection-observer";
Expand Down Expand Up @@ -52,6 +54,7 @@ import routes from "@/Utils/request/api";
import mutate from "@/Utils/request/mutate";
import query from "@/Utils/request/query";
import { PaginatedResponse } from "@/Utils/request/types";
import { relativeTime } from "@/Utils/utils";
import { EncounterTabProps } from "@/pages/Encounters/EncounterShow";
import { Message } from "@/types/notes/messages";
import { Thread } from "@/types/notes/threads";
Expand Down Expand Up @@ -118,6 +121,7 @@ const ThreadItem = ({
// Message item component
const MessageItem = ({ message }: { message: Message }) => {
const authUser = useAuthUser();
const { facilityId } = usePathParams("/facility/:facilityId/*")!;
const isCurrentUser = authUser?.external_id === message.created_by.id;

return (
Expand All @@ -135,15 +139,19 @@ const MessageItem = ({ message }: { message: Message }) => {
>
<TooltipProvider>
<Tooltip>
<TooltipTrigger asChild>
<div className="flex">
<Avatar
name={message.created_by.username}
imageUrl={message.created_by.profile_picture_url}
className="w-8 h-8 rounded-full object-cover"
/>
</div>
</TooltipTrigger>
<Link
href={`/facility/${facilityId}/users/${message.created_by.username}`}
>
<TooltipTrigger asChild>
<div className="flex pr-2">
<Avatar
name={message.created_by.username}
imageUrl={message.created_by.profile_picture_url}
className="w-8 h-8 rounded-full object-cover ring-1 ring-transparent hover:ring-red-200 transition"
/>
</div>
</TooltipTrigger>
</Link>
<TooltipContent>
<p>{message.created_by.username}</p>
</TooltipContent>
Expand All @@ -161,15 +169,25 @@ const MessageItem = ({ message }: { message: Message }) => {
</span>
<div
className={cn(
"p-3 rounded-lg break-words",
"pt-3 px-3 pb-1 rounded-lg break-words",
isCurrentUser
? "bg-primary-100 text-white rounded-br-none"
: "bg-gray-100 rounded-bl-none",
)}
>
{message.message && (
<div className="mt-4">
<Markdown content={message.message} className="text-sm" />
<div className="mt-2">
<Markdown content={message.message} className="text-sm mb-2" />
<span className="text-xs text-gray-500 flex justify-end">
<Tooltip>
<TooltipTrigger>
{relativeTime(message.created_date)}
</TooltipTrigger>
<TooltipContent>
{new Date(message.created_date).toLocaleString()}
</TooltipContent>
</Tooltip>
</span>
</div>
)}
</div>
Expand Down Expand Up @@ -240,7 +258,7 @@ const NewThreadDialog = ({

<DialogFooter>
<Button variant="outline" onClick={onClose} disabled={isCreating}>
{t("Cancel")}
{t("cancel")}
</Button>
<Button
onClick={() => onCreate(title)}
Expand All @@ -251,7 +269,7 @@ const NewThreadDialog = ({
) : (
<MessageSquarePlus className="h-4 w-4 mr-2" />
)}
{t("Create")}
{t("create")}
</Button>
</DialogFooter>
</DialogContent>
Expand Down Expand Up @@ -400,6 +418,12 @@ export const EncounterNotesTab = ({ encounter }: EncounterTabProps) => {

const handleCreateThread = (title: string) => {
if (title.trim()) {
if (
threadsData?.results.some((thread) => thread.title === title.trim())
) {
toast.error("Thread with this title already exists.");
rajku-dev marked this conversation as resolved.
Show resolved Hide resolved
return;
}
rajku-dev marked this conversation as resolved.
Show resolved Hide resolved
createThreadMutation.mutate({
title: title.trim(),
encounter: encounter.id,
Expand Down Expand Up @@ -535,10 +559,25 @@ export const EncounterNotesTab = ({ encounter }: EncounterTabProps) => {
?.title
}
</h2>
<div className="flex items-center gap-2 text-xs text-gray-500">
<Users className="h-4 w-4" />
<span>{messages.length}</span>
</div>
<Tooltip>
<TooltipTrigger asChild>
<div className="flex items-center gap-2 text-xs text-gray-500 cursor-pointer">
<Users className="h-4 w-4" />
<span>
{new Set(messages.map((m) => m.created_by.id)).size}
</span>
<MessageSquare className="h-4 w-4 ml-3" />
<span>{messages.length}</span>
</div>
</TooltipTrigger>
<TooltipContent>
<p>
Participants:{" "}
{new Set(messages.map((m) => m.created_by.id)).size}
</p>
<p>Messages: {messages.length}</p>
rajku-dev marked this conversation as resolved.
Show resolved Hide resolved
</TooltipContent>
</Tooltip>
</div>
) : (
<div className="text-center text-sm font-medium text-gray-500">
Expand Down
1 change: 1 addition & 0 deletions src/types/notes/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ export interface Message {
message: string;
message_history: Record<string, unknown>;
created_by: UserBase;
created_date: Date;
updated_by: UserBase;
}
Loading