Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/llms-txt-hub / apps/web/lib/profile-utils.ts |
| Date | Not specified in source |
| Repository | Janady13/llms-txt-hub |
| Revision | e0f4bf978d4df168369c7601d9c5f5ea89e84377 |
| Branch | main |
| Path or archive member | apps/web/lib/profile-utils.ts |
| Original SHA-256 | c5164929abbad706fd39505cdc1a5be08d0187158ed9d5cff2448b58d273ea97 |
| Git blob SHA | 8f82058d2de6007387a2dcd0f2eb8face673595c |
| Reading-copy SHA-256 | c5164929abbad706fd39505cdc1a5be08d0187158ed9d5cff2448b58d273ea97 |
Recovered source transcript
Download complete source text ↓67 lines · 1.9 KB
/**
* Generate a URL slug from user data
* @param user - User object with username, metadata, and ID
* @returns URL slug string
*/
export function generateSlugFromUser(user: any): string {
if (!user) return ''
// Handle Clerk user format
const username =
user.username ||
user.publicMetadata?.github_username ||
user.user_metadata?.user_name ||
user.user_metadata?.github_username
// If no username, return the full user ID (not sliced)
if (!username) return user.id
return username
}
/**
* Check if user has shared information for public profile visibility
* @param user - User object to check
* @returns True if user has shared info, false otherwise
*/
export function hasSharedInfo(user: any): boolean {
// Exclude users with "null" string values
if (user.firstName === 'null' || user.lastName === 'null') {
return false
}
// A user should be visible if they have:
// - A first name OR
// - A username (Clerk or GitHub)
const hasName = !!(user.firstName && user.firstName !== '')
const hasUsername = !!(
user.username ||
user.user_metadata?.user_name ||
user.publicMetadata?.github_username ||
user.publicMetadata?.githubUsername
)
return hasName || hasUsername
}
/**
* Generate display name from user data
* @param user - User object to generate display name from
* @returns Display name string
*/
export function generateDisplayName(user: any): string {
return user.firstName && user.lastName
? `${user.firstName} ${user.lastName}`
: user.firstName || user.lastName || user.username || `User ${user.id.slice(-6).toUpperCase()}`
}
/**
* Get username from various user metadata sources
* @param user - User object to extract username from
* @returns Username string or null
*/
export function getUsernameFromMetadata(user: any): string | null {
return (
user.username || user.user_metadata?.user_name || user.publicMetadata?.github_username || null
)
}