mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-04 23:20:07 +00:00
Add hook to expose uid (#5612)
* add hook to expose uid * use whenever for cleaner code
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import { whenever } from '@vueuse/core'
|
||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
|
|
||||||
import { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'
|
import { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'
|
||||||
@@ -6,6 +7,7 @@ import { useDialogService } from '@/services/dialogService'
|
|||||||
import { useApiKeyAuthStore } from '@/stores/apiKeyAuthStore'
|
import { useApiKeyAuthStore } from '@/stores/apiKeyAuthStore'
|
||||||
import { useCommandStore } from '@/stores/commandStore'
|
import { useCommandStore } from '@/stores/commandStore'
|
||||||
import { useFirebaseAuthStore } from '@/stores/firebaseAuthStore'
|
import { useFirebaseAuthStore } from '@/stores/firebaseAuthStore'
|
||||||
|
import type { AuthUserInfo } from '@/types/authTypes'
|
||||||
|
|
||||||
export const useCurrentUser = () => {
|
export const useCurrentUser = () => {
|
||||||
const authStore = useFirebaseAuthStore()
|
const authStore = useFirebaseAuthStore()
|
||||||
@@ -20,6 +22,27 @@ export const useCurrentUser = () => {
|
|||||||
() => !!isApiKeyLogin.value || firebaseUser.value !== null
|
() => !!isApiKeyLogin.value || firebaseUser.value !== null
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const resolvedUserInfo = computed<AuthUserInfo | null>(() => {
|
||||||
|
if (isApiKeyLogin.value && apiKeyStore.currentUser) {
|
||||||
|
return { id: apiKeyStore.currentUser.id }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (firebaseUser.value) {
|
||||||
|
return { id: firebaseUser.value.uid }
|
||||||
|
}
|
||||||
|
|
||||||
|
return null
|
||||||
|
})
|
||||||
|
|
||||||
|
const onUserResolved = (callback: (user: AuthUserInfo) => void) => {
|
||||||
|
if (resolvedUserInfo.value) {
|
||||||
|
callback(resolvedUserInfo.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
const stop = whenever(resolvedUserInfo, callback)
|
||||||
|
return () => stop()
|
||||||
|
}
|
||||||
|
|
||||||
const userDisplayName = computed(() => {
|
const userDisplayName = computed(() => {
|
||||||
if (isApiKeyLogin.value) {
|
if (isApiKeyLogin.value) {
|
||||||
return apiKeyStore.currentUser?.name
|
return apiKeyStore.currentUser?.name
|
||||||
@@ -112,8 +135,10 @@ export const useCurrentUser = () => {
|
|||||||
userPhotoUrl,
|
userPhotoUrl,
|
||||||
providerName,
|
providerName,
|
||||||
providerIcon,
|
providerIcon,
|
||||||
|
resolvedUserInfo,
|
||||||
handleSignOut,
|
handleSignOut,
|
||||||
handleSignIn,
|
handleSignIn,
|
||||||
handleDeleteAccount
|
handleDeleteAccount,
|
||||||
|
onUserResolved
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { useCurrentUser } from '@/composables/auth/useCurrentUser'
|
||||||
import { useErrorHandling } from '@/composables/useErrorHandling'
|
import { useErrorHandling } from '@/composables/useErrorHandling'
|
||||||
import { useSettingStore } from '@/platform/settings/settingStore'
|
import { useSettingStore } from '@/platform/settings/settingStore'
|
||||||
import { api } from '@/scripts/api'
|
import { api } from '@/scripts/api'
|
||||||
@@ -72,6 +73,13 @@ export const useExtensionService = () => {
|
|||||||
}
|
}
|
||||||
})()
|
})()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (extension.onAuthUserResolved) {
|
||||||
|
const { onUserResolved } = useCurrentUser()
|
||||||
|
onUserResolved((user) => {
|
||||||
|
void extension.onAuthUserResolved?.(user, app)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -7,3 +7,7 @@ export type ApiKeyAuthHeader = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export type AuthHeader = LoggedInAuthHeader | ApiKeyAuthHeader
|
export type AuthHeader = LoggedInAuthHeader | ApiKeyAuthHeader
|
||||||
|
|
||||||
|
export interface AuthUserInfo {
|
||||||
|
id: string
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import type { ComfyNodeDef } from '@/schemas/nodeDefSchema'
|
|||||||
import type { ComfyApp } from '@/scripts/app'
|
import type { ComfyApp } from '@/scripts/app'
|
||||||
import type { ComfyWidgetConstructor } from '@/scripts/widgets'
|
import type { ComfyWidgetConstructor } from '@/scripts/widgets'
|
||||||
import type { ComfyCommand } from '@/stores/commandStore'
|
import type { ComfyCommand } from '@/stores/commandStore'
|
||||||
|
import type { AuthUserInfo } from '@/types/authTypes'
|
||||||
import type { BottomPanelExtension } from '@/types/extensionTypes'
|
import type { BottomPanelExtension } from '@/types/extensionTypes'
|
||||||
|
|
||||||
type Widgets = Record<string, ComfyWidgetConstructor>
|
type Widgets = Record<string, ComfyWidgetConstructor>
|
||||||
@@ -166,5 +167,12 @@ export interface ComfyExtension {
|
|||||||
missingNodeTypes: MissingNodeType[]
|
missingNodeTypes: MissingNodeType[]
|
||||||
): Promise<void> | void
|
): Promise<void> | void
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fired whenever authentication resolves, providing the anonymized user id..
|
||||||
|
* Extensions can register at any time and will receive the latest value immediately.
|
||||||
|
* This is an experimental API and may be changed or removed in the future.
|
||||||
|
*/
|
||||||
|
onAuthUserResolved?(user: AuthUserInfo, app: ComfyApp): Promise<void> | void
|
||||||
|
|
||||||
[key: string]: any
|
[key: string]: any
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user