Ctrl K
ComunidadGuías…

src/services/supportUsernamesPrompt.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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
}