Skip to content

Commit

Permalink
fix(double texting)
Browse files Browse the repository at this point in the history
  • Loading branch information
justinmihigo committed Jul 24, 2024
1 parent 63f4a4d commit 2c2cd30
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 22 deletions.
63 changes: 48 additions & 15 deletions app/dashboard/messages/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import MessagesMain from "@/components/messages/messagesSection";
import Navbar from "@/components/navbar";
import { createClient } from "@/utils/supabase/client";
import { useRouter } from "next/navigation";
import { useContext, useEffect, useState } from "react";
import { Suspense, useContext, useEffect, useState } from "react";
import { AuthContext } from "../layout";

import { useSearchParams } from "next/navigation";
export interface AppointmentType {
id: string;
patient_id: string;
Expand Down Expand Up @@ -34,12 +34,13 @@ export interface MessageType {
};
}

export default function Messages() {
function Messages() {
const router = useRouter();
const currentUser = useContext(AuthContext);
const [willRefresh, setwillRefresh] = useState<number>(0);
const [messages, setMessages] = useState<MessageType[]>([]);

const searchParams = useSearchParams();
const appointmentId = searchParams.get('id');
const fetchAppointments = async (
userId: string
): Promise<AppointmentType[]> => {
Expand All @@ -52,7 +53,19 @@ export default function Messages() {
if (error) throw error;
return data;
};
const sendInitialMessage = async (appointmentId: string, doctorId: string) => {
const supabase = createClient();
const { error } = await supabase
.from("messages")
.insert({
message: "Hello?",
type: "message",
sender_id: doctorId,
appointment_id: appointmentId
});

if (error) throw error;
};
const fetchMessages = async (
appointmentId: string
): Promise<MessageType[]> => {
Expand All @@ -66,7 +79,7 @@ export default function Messages() {
.order("created_at", { ascending: true });

if (error) throw error;
console.log(data);
// console.log(data);
return data;
};

Expand All @@ -87,7 +100,19 @@ export default function Messages() {
};
fetchAllData();
}, [willRefresh, currentUser]);

useEffect(() => {
const writeInitial=async()=>{
if (appointmentId) {
const currentMessages = await fetchMessages(appointmentId);
if (currentMessages.length === 0) {
await sendInitialMessage(appointmentId, currentUser?.id!);
return;
// setMessages(await fetchMessages(appointmentId));
}
}
}
writeInitial();
}, [])
useEffect(() => {
const supabase = createClient();
const createChannel = supabase
Expand All @@ -106,16 +131,24 @@ export default function Messages() {
return () => {
supabase.removeChannel(createChannel);
};
}, []);
}, [router]);

return (
<main className="bg-[#246BFD] flex">
<div className="my-[30px] w-fit">
<Navbar />
</div>
<div className="w-full h-[100vh]">
<MessagesMain messages={messages} />
</div>
</main>
<main className="bg-[#246BFD] flex">
<div className="my-[30px] w-fit">
<Navbar />
</div>
<div className="w-full h-[100vh]">
<MessagesMain messages={messages} />
</div>
</main>

);
}
export default function FixedMessages(){
return (
<Suspense fallback={<p>Loading...</p>}>
<Messages />
</Suspense>
)
}
8 changes: 3 additions & 5 deletions components/dashboard/appointments/upcomingAppointments.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ import { AuthContext } from "@/app/dashboard/layout";
import Loading from "@/components/Loading";
import { createClient } from "@/utils/supabase/client";
import { UUID } from "crypto";

import { useContext, useEffect, useState } from "react";
import { redirectTo } from "@/utils/supabase/getUser";

export type Patient = {
id: UUID;
Expand Down Expand Up @@ -58,15 +60,12 @@ export default function UpcomingAppointments() {
useState<Appointment | null>(null);
const [updating, setUpdating] = useState(false);
const [loading, setLoading] = useState(true);

const getPatientName = (patient: Patient) =>
patient.full_name + " " + patient.nickname;

const getAppointmentTime = (time: string) => {
const [hours, minutes] = time.split(":");
return `${hours}:${minutes} ${parseInt(hours) >= 12 ? "PM" : "AM"}`;
};

useEffect(() => {
if (!currentUser) return;
const supabase = createClient();
Expand All @@ -79,7 +78,6 @@ export default function UpcomingAppointments() {
)
.eq("doctor_id", currentUser.id)
.eq("status", "Approved")
.gt("appointment_date", new Date().toISOString())
.order("appointment_date", { ascending: true })
.limit(5);

Expand Down Expand Up @@ -250,7 +248,7 @@ export default function UpcomingAppointments() {
<button className="bg-primary-500 border border-primary-500 text-white px-4 py-0.5 rounded-full hover:bg-primary-700 transition-colors">
Reschedule
</button>
<button className="bg-primary-500 border border-primary-500 text-white px-4 py-0.5 rounded-full hover:bg-primary-700 transition-colors">
<button onClick={()=>redirectTo(appointment.id)}className="bg-primary-500 border border-primary-500 text-white px-4 py-0.5 rounded-full hover:bg-primary-700 transition-colors">
Join
</button>
</div>
Expand Down
7 changes: 5 additions & 2 deletions components/messages/messagesSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export default function MessagesMain({ messages }: MessageProps) {
const [appDate, setAppDate] = useState<string>("");
const [appTime, setAppTime] = useState<string>("");
const [isEnded, setIsEnded] = useState<boolean>(false);
const [searchTerm, setSearchTerm] = useState<string>("");
const handleChanges = (
str: string,
appId: string,
Expand Down Expand Up @@ -83,6 +84,7 @@ export default function MessagesMain({ messages }: MessageProps) {
<input
placeholder="Search"
className="border-[1px] w-full p-2 rounded-xl bg-[#E5E5E5]"
onChange={(e) => setSearchTerm(e.target.value.toLowerCase())}
/>
<div className="absolute right-2 top-1/2 transform -translate-y-1/2">
<Image
Expand All @@ -96,7 +98,8 @@ export default function MessagesMain({ messages }: MessageProps) {
</div>
</div>
<div className="flex-1 justify-between overflow-y-auto px-[30px] py-[20px]">
{groupedMessages.map((message) => (
{groupedMessages.filter((message)=>message.appointment.patient.full_name.toLowerCase().includes(searchTerm))
.map((message) => (
<button
key={message.id}
className="w-full"
Expand Down Expand Up @@ -223,7 +226,7 @@ export default function MessagesMain({ messages }: MessageProps) {
{isEnded ? (
<div className="flex justify-center p-[30px]">
<div className="p-2 bg-gray-300 rounded-md w-fit">
<p>Session ended</p>
<p>Currently you don't have access to this session</p>
</div>
</div>
) : (
Expand Down
4 changes: 4 additions & 0 deletions utils/supabase/getUser.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use server'
import { revalidatePath } from "next/cache";
import { createClient } from "./server";
import { redirect } from "next/navigation";
const supabase = createClient();
export async function getCurrentUser(){
const {data, error}= await supabase.auth.getUser();
Expand All @@ -15,6 +16,9 @@ export const pathRevalidation=(path:string)=>{
revalidatePath(`/${path}`);

}
export const redirectTo=(id:string)=>{
redirect(`/dashboard/messages/?id=${id}`);
}
// export async function fetchDoctor(userId:string){
// const {data, error}= await supabase.from('doctor')
// }

0 comments on commit 2c2cd30

Please sign in to comment.