import { LOCAL_STORAGE_KEYS, useFlag } from 'common'

export type FeaturePreview = {
  key: string
  name: string
  discussionsUrl?: string
  isNew: boolean
  /** If feature flag is only relevant for the hosted platform */
  isPlatformOnly: boolean
  /** If feature flag should be enabled by default for users, if not yet toggled before */
  isDefaultOptIn: boolean
  /** Visibility in the feature preview modal (For feature flagging a feature preview) */
  enabled: boolean
}

export const useFeaturePreviews = (): FeaturePreview[] => {
  const isUnifiedLogsPreviewAvailable = useFlag('unifiedLogs')
  const pgDeltaDiffEnabled = useFlag('pgdeltaDiff')
  const platformWebhooksEnabled = useFlag('platformWebhooks')
  const jitDbAccessEnabled = useFlag('jitDbAccess')

  return [
    {
      key: LOCAL_STORAGE_KEYS.UI_PREVIEW_RLS_TESTER,
      name: 'RLS Tester',
      discussionsUrl: 'https://github.com/orgs/briven/discussions/45233',
      enabled: true,
      isNew: true,
      isPlatformOnly: false,
      isDefaultOptIn: false,
    },
    {
      key: LOCAL_STORAGE_KEYS.UI_PREVIEW_UNIFIED_LOGS,
      name: 'Updated Logs interface',
      discussionsUrl: 'https://github.com/orgs/briven/discussions/37234',
      enabled: isUnifiedLogsPreviewAvailable,
      isNew: true,
      isPlatformOnly: true,
      isDefaultOptIn: false,
    },
    {
      key: LOCAL_STORAGE_KEYS.UI_PREVIEW_ADVISOR_RULES,
      name: 'Disable Advisor rules',
      discussionsUrl: undefined,
      enabled: true,
      isNew: false,
      isPlatformOnly: true,
      isDefaultOptIn: false,
    },

    {
      key: LOCAL_STORAGE_KEYS.UI_PREVIEW_PG_DELTA_DIFF,
      name: 'PG Delta Diff',
      discussionsUrl: undefined,
      isNew: false,
      isPlatformOnly: true,
      isDefaultOptIn: true,
      enabled: pgDeltaDiffEnabled,
    },
    {
      key: LOCAL_STORAGE_KEYS.UI_PREVIEW_PLATFORM_WEBHOOKS,
      name: 'Platform webhooks',
      discussionsUrl: undefined,
      isNew: true,
      isPlatformOnly: true,
      isDefaultOptIn: false,
      enabled: platformWebhooksEnabled,
    },
    {
      key: LOCAL_STORAGE_KEYS.UI_PREVIEW_JIT_DB_ACCESS,
      name: 'Temporary access',
      discussionsUrl: undefined,
      isNew: true,
      isPlatformOnly: true,
      isDefaultOptIn: false,
      enabled: jitDbAccessEnabled,
    },
    {
      key: LOCAL_STORAGE_KEYS.UI_PREVIEW_CLS,
      name: 'Column-level privileges',
      discussionsUrl: 'https://github.com/orgs/briven/discussions/20295',
      enabled: true,
      isNew: false,
      isPlatformOnly: false,
      isDefaultOptIn: false,
    },
    {
      key: LOCAL_STORAGE_KEYS.UI_PREVIEW_MARKETPLACE,
      name: 'Marketplace',
      discussionsUrl: undefined,
      enabled: true,
      isNew: true,
      isPlatformOnly: false,
      isDefaultOptIn: true,
    },
  ].sort((a, b) => Number(b.isNew) - Number(a.isNew))
}
