Skip to content

Commit 6685948

Browse files
feat:create asana task with voice or transcript
1 parent f2c5450 commit 6685948

File tree

1 file changed

+37
-31
lines changed

1 file changed

+37
-31
lines changed

src/pages/sidepanel/JarvisScreen.tsx

+37-31
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
import { useEffect, useRef, useState } from "react";
33
import { Message } from "../../../utils/recorderUtils";
44
import { SpeakerType } from "../../../utils/speakerType";
5-
import { addAndGetMeetingInfo } from "../../../utils/supabase";
5+
import {
6+
addAndGetMeetingInfo,
7+
addTranscription,
8+
} from "../../../utils/supabase";
69
import axios from "axios";
710
import { Toaster, toast } from "sonner";
811

@@ -22,28 +25,24 @@ const JarvisScreen = () => {
2225
chrome.runtime.onMessage.addListener((request) => {
2326
console.log("request------------------------------------->", request);
2427
console.log("12c2 request.message.data: ", request.message);
25-
2628
switch (request.message.type) {
2729
case "REP_TRANSCRIPT":
2830
{
29-
if (!apiCallingStart) {
30-
const { message_text } = request.message.data;
31-
setRepText((m) => m + message_text);
32-
const message: Message = {
33-
speaker_type: SpeakerType.REP,
34-
message_text,
35-
meeting_id: meetingIdRef.current,
36-
};
37-
// addTranscription(message);
38-
}
31+
const { message_text } = request.message.data;
32+
setRepText((m) => m + message_text);
33+
const message: Message = {
34+
speaker_type: SpeakerType.REP,
35+
message_text,
36+
meeting_id: meetingIdRef.current,
37+
};
38+
addTranscription(message);
3939
}
4040
break;
4141
}
4242
});
4343
}, []);
4444

4545
useEffect(() => {
46-
console.log("rep Text changing-------------------------------->", repText);
4746
// Start or reset the timer when repText changes
4847
if (repText.length) {
4948
if (timerRef.current) clearTimeout(timerRef.current); // Reset the timer if already set
@@ -56,12 +55,19 @@ const JarvisScreen = () => {
5655
}, [repText]);
5756

5857
useEffect(() => {
59-
if (apiCallingStart) {
58+
if (apiCallingStart && !endMeetingResponseType) {
6059
handleRecordingStart().then(() => {
6160
sendTranscriptToBackend(meetingIdRef.current);
6261
});
62+
} else if (
63+
apiCallingStart &&
64+
endMeetingResponseType === "create_asana_tasks"
65+
) {
66+
handleCreateAsanaTask().then(() => {
67+
console.log("asana task created successfully");
68+
});
6369
}
64-
}, [apiCallingStart]);
70+
}, [apiCallingStart, endMeetingResponseType]);
6571

6672
async function handleRecordingStart() {
6773
const { id } = await addAndGetMeetingInfo();
@@ -99,10 +105,11 @@ const JarvisScreen = () => {
99105
setEndMeetingResponseType(type);
100106
setSummarySlack(data);
101107
}
102-
103108
} catch (error) {
104109
toast.error(error.message);
105110
console.error("Error Failed Sending Transcript:", error);
111+
} finally {
112+
setRepText("");
106113
}
107114
}
108115

@@ -116,16 +123,15 @@ const JarvisScreen = () => {
116123

117124
const handleCreateAsanaTask = async () => {
118125
try {
119-
setLoading(true);
120126
if (!meetingIdRef.current) throw new Error("meetingId required");
121-
if (!selectedTasks || selectedTasks.length === 0) {
122-
toast.error("Task and MeetingId are required");
123-
throw new Error("task required");
127+
if (!asanaTask || asanaTask.length === 0) {
128+
toast.error("Tasks and MeetingId are required");
129+
throw new Error("task required and meetingId required");
124130
}
125131

126132
const postData = {
127133
meetingId: meetingIdRef.current,
128-
tasks: selectedTasks,
134+
tasks: asanaTask,
129135
};
130136

131137
// Make the POST request using Axios
@@ -139,24 +145,23 @@ const JarvisScreen = () => {
139145
},
140146
}
141147
);
148+
142149
if (response.data.error) {
143150
throw new Error(response.data.error);
144151
}
145152
toast.success("Successfully Created Task");
146153
} catch (error) {
147154
toast.error("Failed");
148155
console.error("Error Failed Create Asana API", error);
149-
} finally {
150-
setLoading(false);
151-
}
156+
}
152157
};
153158

154159
const handleSendSlackSummary = async () => {
155160
try {
156161
setLoading(true);
157-
if (!meetingIdRef.current){
162+
if (!meetingIdRef.current) {
158163
throw new Error("meetingId required");
159-
}
164+
}
160165
if (!slackSummary) {
161166
throw new Error("slack summary required");
162167
}
@@ -199,32 +204,33 @@ const JarvisScreen = () => {
199204
What would you like <br />
200205
me to do?
201206
</h2>
202-
{!!repText.length && !endMeetingResponseType && <span>{repText}</span>}
207+
{!!repText.length && <span>{repText}</span>}
203208
<div className="flex flex-col gap-1 ml-2 mt-2">
204209
{endMeetingResponseType === "create_asana_tasks" &&
205210
asanaTask &&
206211
asanaTask.map((task, index) => (
207212
<div className="flex gap-2 p-1" key={index}>
208-
<input
213+
{/* <input
209214
type="checkbox"
210215
value={task}
211216
checked={selectedTasks.includes(task)}
212217
onChange={() => handleCheckboxChange(task)}
213218
className="text-black rounded"
214-
/>
219+
/> */}
220+
<span>{index + 1}</span>
215221
<p className="text-sm text-start font-medium text-gray-900">
216222
{task}
217223
</p>
218224
</div>
219225
))}
220-
{endMeetingResponseType === "create_asana_tasks" && (
226+
{/* {endMeetingResponseType === "create_asana_tasks" && (
221227
<button
222228
onClick={handleCreateAsanaTask}
223229
className="m-2 px-2 py-2 flex justify-center bg-blue-600 text-white rounded hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
224230
>
225231
{loading ? <Loader /> : "Create Asana Task"}
226232
</button>
227-
)}
233+
)} */}
228234
</div>
229235
<div className="flex flex-col gap-1 ml-2 mt-2">
230236
{endMeetingResponseType === "send_summary_to_slack" &&

0 commit comments

Comments
 (0)