diff --git a/src/rovo-dev/ui/feedback-form/FeedbackConfirmationForm.tsx b/src/rovo-dev/ui/feedback-form/FeedbackConfirmationForm.tsx new file mode 100644 index 000000000..af96cacca --- /dev/null +++ b/src/rovo-dev/ui/feedback-form/FeedbackConfirmationForm.tsx @@ -0,0 +1,33 @@ +import CrossIcon from '@atlaskit/icon/core/cross'; +import React from 'react'; + +export interface FeedbackConfirmationFormProps { + onClose: () => void; +} + +export const FeedbackConfirmationForm: React.FC = ({ onClose: onClose }) => { + return ( +
+ + Thanks +
+

Your valuable feedback helps us continually improve our apps.

+
+ ); +}; diff --git a/src/rovo-dev/ui/messaging/ChatStream.tsx b/src/rovo-dev/ui/messaging/ChatStream.tsx index 3f8eeaf1a..f491a50ed 100644 --- a/src/rovo-dev/ui/messaging/ChatStream.tsx +++ b/src/rovo-dev/ui/messaging/ChatStream.tsx @@ -7,6 +7,7 @@ import { DetailedSiteInfo } from '../../api/extensionApiTypes'; import { CheckFileExistsFunc, FollowUpActionFooter, OpenFileFunc, OpenJiraFunc } from '../common/common'; import { DialogMessageItem } from '../common/DialogMessage'; import { PullRequestForm } from '../create-pr/PullRequestForm'; +import { FeedbackConfirmationForm } from '../feedback-form/FeedbackConfirmationForm'; import { FeedbackForm, FeedbackType } from '../feedback-form/FeedbackForm'; import { RovoDevLanding } from '../landing-page/RovoDevLanding'; import { useMessagingApi } from '../messagingApi'; @@ -41,6 +42,8 @@ interface ChatStreamProps { onCollapsiblePanelExpanded: () => void; feedbackVisible: boolean; setFeedbackVisible: (visible: boolean) => void; + feedbackConfirmationVisible: boolean; + setFeedbackConfirmationVisible: (visible: boolean) => void; sendFeedback: (feedbackType: FeedbackType, feedack: string, canContact: boolean, lastTenMessages: boolean) => void; onLoginClick: (openApiTokenLogin: boolean) => void; onOpenFolder: () => void; @@ -64,7 +67,9 @@ export const ChatStream: React.FC = ({ onChangesGitPushed, onCollapsiblePanelExpanded, feedbackVisible = false, + feedbackConfirmationVisible = false, setFeedbackVisible, + setFeedbackConfirmationVisible, sendFeedback, onLoginClick, onOpenFolder, @@ -185,6 +190,12 @@ export const ChatStream: React.FC = ({ }; }, [autoScrollEnabled, chatHistory]); + const confirmFeedback = () => { + setFeedbackConfirmationVisible(true); + setTimeout(() => { + setFeedbackConfirmationVisible(false); + }, 2000); + }; // Auto-scroll when content changes or when re-enabled React.useEffect(performAutoScroll, [ chatHistory, @@ -337,6 +348,7 @@ export const ChatStream: React.FC = ({ onSubmit={(feedbackType, feedback, canContact, includeTenMessages) => { setFeedbackType(undefined); sendFeedback(feedbackType, feedback, canContact, includeTenMessages); + confirmFeedback(); }} onCancel={() => { setFeedbackType(undefined); @@ -344,6 +356,9 @@ export const ChatStream: React.FC = ({ }} /> )} + {feedbackConfirmationVisible && ( + setFeedbackConfirmationVisible(false)} /> + )} )}
diff --git a/src/rovo-dev/ui/rovoDevView.tsx b/src/rovo-dev/ui/rovoDevView.tsx index 34c735fd3..c4756db54 100644 --- a/src/rovo-dev/ui/rovoDevView.tsx +++ b/src/rovo-dev/ui/rovoDevView.tsx @@ -60,6 +60,7 @@ const RovoDevView: React.FC = () => { const [history, setHistory] = useState([]); const [modalDialogs, setModalDialogs] = useState([]); const [isFeedbackFormVisible, setIsFeedbackFormVisible] = React.useState(false); + const [isFeedbackConfirmationFormVisible, setIsFeedbackConfirmationFormVisible] = React.useState(false); const [outgoingMessage, dispatch] = useState(undefined); const [promptContextCollection, setPromptContextCollection] = useState([]); const [debugPanelEnabled, setDebugPanelEnabled] = useState(false); @@ -890,7 +891,9 @@ const RovoDevView: React.FC = () => { onChangesGitPushed={onChangesGitPushed} onCollapsiblePanelExpanded={onCollapsiblePanelExpanded} feedbackVisible={isFeedbackFormVisible} + feedbackConfirmationVisible={isFeedbackConfirmationFormVisible} setFeedbackVisible={setIsFeedbackFormVisible} + setFeedbackConfirmationVisible={setIsFeedbackConfirmationFormVisible} sendFeedback={executeSendFeedback} onLoginClick={onLoginClick} onOpenFolder={onOpenFolder}