From 654d72b4ccdfe3646b9ba97c735d422ac1e7095c Mon Sep 17 00:00:00 2001 From: bymyself Date: Sun, 19 Jan 2025 18:44:11 -0700 Subject: [PATCH] Add issue report dialog service (#2284) Co-authored-by: huchenlei --- .../dialog/content/FeedbackDialogContent.vue | 27 ---------------- .../content/IssueReportDialogContent.vue | 32 +++++++++++++++++++ .../dialog/content/error/ReportIssuePanel.vue | 14 ++++---- src/hooks/coreCommandHooks.ts | 12 +++++-- src/services/dialogService.ts | 12 +++---- src/types/issueReportTypes.ts | 27 ++++++++++++++++ 6 files changed, 81 insertions(+), 43 deletions(-) delete mode 100644 src/components/dialog/content/FeedbackDialogContent.vue create mode 100644 src/components/dialog/content/IssueReportDialogContent.vue diff --git a/src/components/dialog/content/FeedbackDialogContent.vue b/src/components/dialog/content/FeedbackDialogContent.vue deleted file mode 100644 index c17d291810..0000000000 --- a/src/components/dialog/content/FeedbackDialogContent.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - - diff --git a/src/components/dialog/content/IssueReportDialogContent.vue b/src/components/dialog/content/IssueReportDialogContent.vue new file mode 100644 index 0000000000..3feb306a62 --- /dev/null +++ b/src/components/dialog/content/IssueReportDialogContent.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/dialog/content/error/ReportIssuePanel.vue b/src/components/dialog/content/error/ReportIssuePanel.vue index cc600d1aaa..ba53dbe5ef 100644 --- a/src/components/dialog/content/error/ReportIssuePanel.vue +++ b/src/components/dialog/content/error/ReportIssuePanel.vue @@ -67,19 +67,17 @@ import { useI18n } from 'vue-i18n' import CheckboxGroup from '@/components/common/CheckboxGroup.vue' import { api } from '@/scripts/api' import { app } from '@/scripts/app' -import type { DefaultField, ReportField } from '@/types/issueReportTypes' +import type { + DefaultField, + IssueReportPanelProps +} from '@/types/issueReportTypes' const ISSUE_NAME = 'User reported issue' const DETAILS_MAX_LEN = 5_000 const CONTACT_MAX_LEN = 320 -const props = defineProps<{ - errorType: string - defaultFields?: DefaultField[] - extraFields?: ReportField[] - tags?: Record - title?: string -}>() +const props = defineProps() + const { defaultFields = ['Workflow', 'Logs', 'SystemStats', 'Settings'], tags = {} diff --git a/src/hooks/coreCommandHooks.ts b/src/hooks/coreCommandHooks.ts index 02a4ca8a74..b662ccebd1 100644 --- a/src/hooks/coreCommandHooks.ts +++ b/src/hooks/coreCommandHooks.ts @@ -9,6 +9,7 @@ import { DEFAULT_DARK_COLOR_PALETTE, DEFAULT_LIGHT_COLOR_PALETTE } from '@/constants/coreColorPalettes' +import { t } from '@/i18n' import { api } from '@/scripts/api' import { app } from '@/scripts/app' import { useDialogService } from '@/services/dialogService' @@ -543,9 +544,16 @@ export function useCoreCommands(): ComfyCommand[] { id: 'Comfy.Feedback', icon: 'pi pi-megaphone', label: 'Give Feedback', - versionAdded: '1.7.15', + versionAdded: '1.8.2', function: () => { - dialogService.showFeedbackDialog() + dialogService.showIssueReportDialog({ + title: t('g.feedback'), + panelProps: { + errorType: 'Feedback', + title: t('issueReport.feedbackTitle'), + defaultFields: ['SystemStats', 'Settings'] + } + }) } } ] diff --git a/src/services/dialogService.ts b/src/services/dialogService.ts index ac9ec21dfc..fefdc11653 100644 --- a/src/services/dialogService.ts +++ b/src/services/dialogService.ts @@ -1,6 +1,6 @@ import ConfirmationDialogContent from '@/components/dialog/content/ConfirmationDialogContent.vue' import ExecutionErrorDialogContent from '@/components/dialog/content/ExecutionErrorDialogContent.vue' -import FeedbackDialogContent from '@/components/dialog/content/FeedbackDialogContent.vue' +import IssueReportDialogContent from '@/components/dialog/content/IssueReportDialogContent.vue' import LoadWorkflowWarning from '@/components/dialog/content/LoadWorkflowWarning.vue' import MissingModelsWarning from '@/components/dialog/content/MissingModelsWarning.vue' import PromptDialogContent from '@/components/dialog/content/PromptDialogContent.vue' @@ -84,12 +84,12 @@ export const useDialogService = () => { }) } - function showFeedbackDialog( - props: InstanceType['$props'] = {} + function showIssueReportDialog( + props: InstanceType['$props'] ) { dialogStore.showDialog({ - key: 'global-provide-feedback', - component: FeedbackDialogContent, + key: 'global-issue-report', + component: IssueReportDialogContent, props }) } @@ -171,7 +171,7 @@ export const useDialogService = () => { showAboutDialog, showExecutionErrorDialog, showTemplateWorkflowsDialog, - showFeedbackDialog, + showIssueReportDialog, prompt, confirm } diff --git a/src/types/issueReportTypes.ts b/src/types/issueReportTypes.ts index 3ae4f63e92..de33de20c9 100644 --- a/src/types/issueReportTypes.ts +++ b/src/types/issueReportTypes.ts @@ -22,3 +22,30 @@ export interface ReportField { */ optIn: boolean } + +export interface IssueReportPanelProps { + /** + * The type of error being reported. This is used to categorize the error. + */ + errorType: string + + /** + * Which of the default fields to include in the report. + */ + defaultFields?: DefaultField[] + + /** + * Additional fields to include in the report. + */ + extraFields?: ReportField[] + + /** + * Tags that will be added to the report. Tags are used to further categorize the error. + */ + tags?: Record + + /** + * The title displayed in the dialog. + */ + title?: string +}