mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-30 11:11:53 +00:00
feat: pre-fill user info in Zendesk support link (#6586)
Add user email and ID as URL parameters when opening the Contact Support link to improve support experience. Only includes user data when logged in. ## Summary Enhanced the Contact Support command to automatically pre-fill user email and ID in Zendesk support tickets, streamlining the support request process for authenticated users. ## Changes - **What**: - Added `useCurrentUser` composable to access authenticated user data in `useCoreCommands.ts` - Modified `Comfy.ContactSupport` command to append user email (`tf_anonymous_requester_email` and `tf_40029135130388`) and user ID (`tf_42515251051412`) as URL parameters when available - Maintained backward compatibility by only adding user parameters when user is logged in - Preserved existing `tf_42243568391700` parameter for distribution type (oss/ccloud) ## Review Focus - Verify that the URL parameters are correctly appended only when user is authenticated - Confirm that non-authenticated users still get the base support URL with just the distribution type parameter - Check that both Firebase auth and API key auth users have their information properly included Example URLs generated when you press on help locally (it will change automatically to ccloud on Cloud): - **Logged out**: `https://support.comfy.org/hc/en-us/requests/new?tf_42243568391700=oss` - **Logged in**: `https://support.comfy.org/hc/en-us/requests/new?tf_42243568391700=ccloud&tf_anonymous_requester_email=user@example.com&tf_40029135130388=user@example.com&tf_42515251051412=abc123xyz` ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6586-feat-pre-fill-user-info-in-Zendesk-support-link-2a26d73d36508171b428c634b310f68b) by [Unito](https://www.unito.io) --------- Co-authored-by: Alexander Brown <drjkl@comfy.org> Co-authored-by: bymyself <cbyrne@comfy.org>
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import { useCurrentUser } from '@/composables/auth/useCurrentUser'
|
||||||
import { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'
|
import { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'
|
||||||
import { useSelectedLiteGraphItems } from '@/composables/canvas/useSelectedLiteGraphItems'
|
import { useSelectedLiteGraphItems } from '@/composables/canvas/useSelectedLiteGraphItems'
|
||||||
import { useModelSelectorDialog } from '@/composables/useModelSelectorDialog'
|
import { useModelSelectorDialog } from '@/composables/useModelSelectorDialog'
|
||||||
@@ -20,7 +21,7 @@ import { useAssetBrowserDialog } from '@/platform/assets/composables/useAssetBro
|
|||||||
import { createModelNodeFromAsset } from '@/platform/assets/utils/createModelNodeFromAsset'
|
import { createModelNodeFromAsset } from '@/platform/assets/utils/createModelNodeFromAsset'
|
||||||
import { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'
|
import { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'
|
||||||
import { useSettingStore } from '@/platform/settings/settingStore'
|
import { useSettingStore } from '@/platform/settings/settingStore'
|
||||||
import { SUPPORT_URL } from '@/platform/support/config'
|
import { buildSupportUrl } from '@/platform/support/config'
|
||||||
import { useTelemetry } from '@/platform/telemetry'
|
import { useTelemetry } from '@/platform/telemetry'
|
||||||
import type { ExecutionTriggerSource } from '@/platform/telemetry/types'
|
import type { ExecutionTriggerSource } from '@/platform/telemetry/types'
|
||||||
import { useToastStore } from '@/platform/updates/common/toastStore'
|
import { useToastStore } from '@/platform/updates/common/toastStore'
|
||||||
@@ -840,7 +841,12 @@ export function useCoreCommands(): ComfyCommand[] {
|
|||||||
label: 'Contact Support',
|
label: 'Contact Support',
|
||||||
versionAdded: '1.17.8',
|
versionAdded: '1.17.8',
|
||||||
function: () => {
|
function: () => {
|
||||||
window.open(SUPPORT_URL, '_blank')
|
const { userEmail, resolvedUserInfo } = useCurrentUser()
|
||||||
|
const supportUrl = buildSupportUrl({
|
||||||
|
userEmail: userEmail.value,
|
||||||
|
userId: resolvedUserInfo.value?.id
|
||||||
|
})
|
||||||
|
window.open(supportUrl, '_blank')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,17 +1,43 @@
|
|||||||
import { isCloud } from '@/platform/distribution/types'
|
import { isCloud } from '@/platform/distribution/types'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Zendesk ticket form field ID for the distribution tag.
|
* Zendesk ticket form field IDs.
|
||||||
* This field is used to categorize support requests by their source (cloud vs OSS).
|
|
||||||
*/
|
*/
|
||||||
const DISTRIBUTION_FIELD_ID = 'tf_42243568391700'
|
const ZENDESK_FIELDS = {
|
||||||
|
/** Distribution tag (cloud vs OSS) */
|
||||||
|
DISTRIBUTION: 'tf_42243568391700',
|
||||||
|
/** User email (anonymous requester) */
|
||||||
|
ANONYMOUS_EMAIL: 'tf_anonymous_requester_email',
|
||||||
|
/** User email (authenticated) */
|
||||||
|
EMAIL: 'tf_40029135130388',
|
||||||
|
/** User ID */
|
||||||
|
USER_ID: 'tf_42515251051412'
|
||||||
|
} as const
|
||||||
|
|
||||||
|
const SUPPORT_BASE_URL = 'https://support.comfy.org/hc/en-us/requests/new'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Support URLs for the ComfyUI platform.
|
* Builds the support URL with optional user information for pre-filling.
|
||||||
* The URL varies based on whether the application is running in Cloud or OSS distribution.
|
* Users without login information will still get a valid support URL without pre-fill.
|
||||||
*
|
*
|
||||||
* - Cloud: Includes 'ccloud' tag for identifying cloud-based support requests
|
* @param params - User information to pre-fill in the support form
|
||||||
* - OSS: Includes 'oss' tag for identifying open-source support requests
|
* @returns Complete Zendesk support URL with query parameters
|
||||||
*/
|
*/
|
||||||
const TAG = isCloud ? 'ccloud' : 'oss'
|
export function buildSupportUrl(params?: {
|
||||||
export const SUPPORT_URL = `https://support.comfy.org/hc/en-us/requests/new?${DISTRIBUTION_FIELD_ID}=${TAG}`
|
userEmail?: string | null
|
||||||
|
userId?: string | null
|
||||||
|
}): string {
|
||||||
|
const searchParams = new URLSearchParams({
|
||||||
|
[ZENDESK_FIELDS.DISTRIBUTION]: isCloud ? 'ccloud' : 'oss'
|
||||||
|
})
|
||||||
|
|
||||||
|
if (params?.userEmail) {
|
||||||
|
searchParams.append(ZENDESK_FIELDS.ANONYMOUS_EMAIL, params.userEmail)
|
||||||
|
searchParams.append(ZENDESK_FIELDS.EMAIL, params.userEmail)
|
||||||
|
}
|
||||||
|
if (params?.userId) {
|
||||||
|
searchParams.append(ZENDESK_FIELDS.USER_ID, params.userId)
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${SUPPORT_BASE_URL}?${searchParams.toString()}`
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user