Jelajahi Sumber

Add links to a feedback sharing site (#2580)

* Add links to a feedback sharing site

* Remove console log

---------

Co-authored-by: sp.wack <83104063+amanape@users.noreply.github.com>
Graham Neubig 1 tahun lalu
induk
melakukan
45d7a53b91

+ 7 - 3
frontend/src/components/modals/feedback/FeedbackModal.tsx

@@ -6,6 +6,8 @@ import { Feedback, sendFeedback } from "#/services/feedbackService";
 import FeedbackForm from "./FeedbackForm";
 import toast from "#/utils/toast";
 
+const VIEWER_PAGE = "https://od-feedback.vercel.app/show";
+
 interface FeedbackModalProps {
   feedback: Feedback;
   handleEmailChange: (key: string) => void;
@@ -26,12 +28,14 @@ function FeedbackModal({
   const handleSendFeedback = () => {
     sendFeedback(feedback)
       .then((response) => {
-        if (response.message === "Feedback submitted successfully") {
-          toast.info(response.message);
+        if (response.statusCode === 200) {
+          const { message, feedback_id: feedbackId, password } = response.body;
+          const toastMessage = `${message}\nFeedback link: ${VIEWER_PAGE}?feedback_id=${feedbackId}\nPassword: ${password}`;
+          toast.info(toastMessage);
         } else {
           toast.error(
             "share-error",
-            `Failed to share, please contact the developers: ${response.message}`,
+            `Failed to share, please contact the developers: ${response.body.message}`,
           );
         }
       })

+ 5 - 2
opendevin/server/data_models/feedback.py

@@ -1,3 +1,4 @@
+import json
 from typing import Any, Literal
 
 import requests
@@ -18,7 +19,7 @@ class FeedbackDataModel(BaseModel):
 FEEDBACK_URL = 'https://share-od-trajectory-3u9bw9tx.uc.gateway.dev/share_od_trajectory'
 
 
-def store_feedback(feedback: FeedbackDataModel):
+def store_feedback(feedback: FeedbackDataModel) -> dict[str, str]:
     # Start logging
     display_feedback = feedback.model_dump()
     if 'trajectory' in display_feedback:
@@ -34,6 +35,8 @@ def store_feedback(feedback: FeedbackDataModel):
         headers={'Content-Type': 'application/json'},
         json=feedback.model_dump(),
     )
-    logger.info(f'Stored feedback: {response.status_code} {response.text}')
     if response.status_code != 200:
         raise ValueError(f'Failed to store feedback: {response.text}')
+    response_data = json.loads(response.text)
+    logger.info(f'Stored feedback: {response.text}')
+    return response_data

+ 2 - 4
opendevin/server/listen.py

@@ -329,10 +329,8 @@ async def submit_feedback(request: Request, feedback: FeedbackDataModel):
     # Assuming the storage service is already configured in the backend
     # and there is a function  to handle the storage.
     try:
-        store_feedback(feedback)
-        return JSONResponse(
-            status_code=200, content={'message': 'Feedback submitted successfully'}
-        )
+        feedback_data = store_feedback(feedback)
+        return JSONResponse(status_code=200, content=feedback_data)
     except Exception as e:
         logger.error(f'Error submitting feedback: {e}')
         return JSONResponse(