src/services/supportUsernamesPrompt.ts
Rama main · réplica de lectura del repositorio original.
const WEEK_MS = 7 * 24 * 60 * 60 * 1000
function dismissedKey(userId: string) {
return `capgo.supportUsernames.dismissed.${userId}`
}
function lastShownKey(userId: string) {
return `capgo.supportUsernames.lastShown.${userId}`
}
export function hasSupportUsernames(user: { discord_username?: string | null, github_username?: string | null } | null | undefined) {
return Boolean(user?.discord_username && user?.github_username)
}
export function isOnboardingOrganizationSet(organizations: Array<{ app_count: number, all_apps_need_onboarding?: boolean }>) {
return organizations.length === 1
&& (organizations[0].app_count <= 1 || organizations[0].all_apps_need_onboarding === true)
}
export function isSupportUsernamesPromptDismissedForever(userId: string) {
if (typeof localStorage === 'undefined')
return false
return localStorage.getItem(dismissedKey(userId)) === '1'
}
export function dismissSupportUsernamesPromptForever(userId: string) {
if (typeof localStorage === 'undefined')
return
localStorage.setItem(dismissedKey(userId), '1')
}
export function markSupportUsernamesPromptShown(userId: string) {
if (typeof localStorage === 'undefined')
return
localStorage.setItem(lastShownKey(userId), new Date().toISOString())
}
export function shouldShowSupportUsernamesPrompt(user: { id: string, discord_username?: string | null, github_username?: string | null } | null | undefined) {
if (!user?.id || hasSupportUsernames(user))
return false
if (typeof localStorage === 'undefined')
return false
if (isSupportUsernamesPromptDismissedForever(user.id))
return false
const lastShown = localStorage.getItem(lastShownKey(user.id))
if (lastShown) {
const lastShownAt = Date.parse(lastShown)
if (!Number.isNaN(lastShownAt) && Date.now() - lastShownAt < WEEK_MS)
return false
}
return true
}