UNPKG

@suprsend/react-core

Version:

The react headless library for using SuprSend features like inbox, preferences etc

1 lines 20.7 kB
{"version":3,"file":"index.cjs","sources":["../../src/core/context/SuprSendProvider.tsx","../../src/core/hooks/useSuprSendClient.ts","../../src/core/hooks/useAuthenticateUser.ts","../../src/feed/context/SuprSendFeedProvider.tsx","../../src/feed/hooks/useFeedClient.ts","../../src/feed/hooks/useFeedData.ts","../../src/feed/hooks/useFeed.ts","../../src/i18n/context/SuprSendI18nProvider.tsx","../../src/i18n/languages/fr.ts","../../src/i18n/languages/en.ts","../../src/i18n/languages/es.ts","../../src/i18n/languages/de.ts","../../src/i18n/languages/ar.ts","../../src/i18n/languages/index.ts","../../src/i18n/hooks/useTranslations.ts"],"sourcesContent":["import { createContext, useState, useEffect, useRef } from 'react';\nimport { SuprSend } from '@suprsend/web-sdk';\nimport {\n IAuthenticateUserOptions,\n SuprSendContextProps,\n SuprSendProviderProps,\n} from '../../interface';\nimport {\n authenticateUser,\n handleUserAuthentication,\n} from '../hooks/useAuthenticateUser';\n\nexport const SuprSendContext = createContext<SuprSendContextProps>({\n suprsendClient: undefined,\n authenticatedUser: undefined,\n setAuthenticatedUser: undefined,\n});\n\nfunction SuprSendProvider({\n publicApiKey,\n distinctId,\n userToken,\n host,\n vapidKey,\n swFileName,\n refreshUserToken,\n children,\n userAuthenticationHandler,\n}: SuprSendProviderProps) {\n const createSSClient = () => {\n return new SuprSend(publicApiKey, {\n host,\n vapidKey,\n swFileName,\n });\n };\n\n const suprsendClientRef = useRef<SuprSend>(createSSClient());\n const [authenticatedUser, setAuthenticatedUser] = useState<unknown>(null);\n\n const handleInternalUserAuthentication = async () => {\n const suprsendClient = suprsendClientRef.current;\n const existingUser = suprsendClient.distinctId;\n\n const response = await authenticateUser({\n distinctId,\n userToken,\n refreshUserToken,\n suprsendClient: suprsendClient,\n });\n\n setAuthenticatedUser(suprsendClient.isIdentified() ? distinctId : null);\n if (distinctId || (existingUser && !distinctId)) {\n userAuthenticationHandler?.({\n response,\n authenticateUser: (data: IAuthenticateUserOptions) =>\n handleUserAuthentication({\n ...data,\n suprsendClient,\n setAuthenticatedUser,\n }),\n });\n }\n };\n\n useEffect(() => {\n setTimeout(() => {\n suprsendClientRef.current = createSSClient();\n handleInternalUserAuthentication();\n }, 0);\n\n return () => {\n const suprsendClient = suprsendClientRef.current;\n if (suprsendClient?.isIdentified()) {\n suprsendClient?.reset();\n }\n };\n }, [distinctId]);\n\n useEffect(() => {\n if (userToken) {\n suprsendClientRef.current.userToken = userToken;\n }\n }, [userToken]);\n\n return (\n <SuprSendContext.Provider\n value={{\n suprsendClient: suprsendClientRef.current,\n authenticatedUser,\n setAuthenticatedUser,\n }}\n >\n {children}\n </SuprSendContext.Provider>\n );\n}\n\nexport default SuprSendProvider;\n","import { useContext } from 'react';\nimport { SuprSendContext } from '../context/SuprSendProvider';\n\nfunction useSuprSendClient() {\n const context = useContext(SuprSendContext);\n\n if (context.suprsendClient === undefined) {\n throw new Error('useSuprSendClient must be used within a SuprSendProvider');\n }\n\n return context.suprsendClient;\n}\n\nexport default useSuprSendClient;\n","import { useContext } from 'react';\nimport { ApiResponse } from '@suprsend/web-sdk';\nimport {\n IHandleUserAuthenticationOptions,\n IAuthenticateUserOptions,\n} from '../../interface';\nimport useSuprSendClient from './useSuprSendClient';\nimport { SuprSendContext } from '../context/SuprSendProvider';\n\nexport async function authenticateUser({\n distinctId,\n userToken,\n refreshUserToken,\n suprsendClient,\n}: IHandleUserAuthenticationOptions) {\n let response: ApiResponse;\n\n if (\n suprsendClient.isIdentified() &&\n suprsendClient?.distinctId != distinctId\n ) {\n response = await suprsendClient?.reset();\n if (distinctId) {\n response = await suprsendClient.identify(distinctId, userToken, {\n refreshUserToken,\n });\n }\n } else {\n response = await suprsendClient.identify(distinctId, userToken, {\n refreshUserToken,\n });\n }\n\n return response;\n}\n\nexport const handleUserAuthentication = async ({\n distinctId,\n userToken,\n refreshUserToken,\n suprsendClient,\n setAuthenticatedUser,\n}: IHandleUserAuthenticationOptions) => {\n const response = await authenticateUser({\n distinctId,\n userToken,\n refreshUserToken,\n suprsendClient,\n });\n\n if (setAuthenticatedUser) {\n setAuthenticatedUser(suprsendClient.isIdentified() ? distinctId : null);\n }\n return response;\n};\n\nfunction useAuthenticateUser() {\n const suprsendClient = useSuprSendClient();\n const ssContext = useContext(SuprSendContext);\n\n return {\n authenticatedUser: ssContext.authenticatedUser,\n authenticateUser: (data: IAuthenticateUserOptions) =>\n handleUserAuthentication({\n ...data,\n suprsendClient: suprsendClient,\n setAuthenticatedUser: ssContext.setAuthenticatedUser,\n }),\n };\n}\n\nexport default useAuthenticateUser;\n","import { createContext, useContext, useEffect, useRef, useState } from 'react';\nimport { Feed, IFeedData } from '@suprsend/web-sdk';\nimport { SuprSendContext } from '../../core/context/SuprSendProvider';\nimport { useSuprSendClient } from '../../core';\nimport {\n SuprSendFeedContextProps,\n SuprSendFeedProviderProps,\n} from '../../interface';\n\nexport const SuprSendFeedContext =\n createContext<SuprSendFeedContextProps | null>(null);\n\nfunction SuprSendFeedProvider({\n tenantId,\n stores,\n host,\n pageSize,\n children,\n}: SuprSendFeedProviderProps) {\n const suprsendClient = useSuprSendClient();\n const ssContext = useContext(SuprSendContext);\n\n const feedClientRef = useRef<Feed>();\n const [feedData, setFeedData] = useState<IFeedData>();\n\n useEffect(() => {\n const existingFeedClient = feedClientRef.current;\n if (existingFeedClient) {\n existingFeedClient.remove();\n }\n\n if (!ssContext.authenticatedUser) return;\n\n feedClientRef.current = suprsendClient.feeds.initialize({\n tenantId,\n stores,\n host,\n pageSize,\n });\n\n const feedClient = feedClientRef.current;\n const initialFeedData = feedClient?.data;\n setFeedData(initialFeedData);\n\n feedClient?.emitter.on('feed.store_update', (updatedStoreData) => {\n setFeedData(updatedStoreData);\n });\n\n feedClient.initializeSocketConnection();\n feedClient.fetch();\n\n return () => feedClient.remove();\n }, [ssContext.authenticatedUser]);\n\n return (\n <SuprSendFeedContext.Provider\n value={{ feedClient: feedClientRef.current, feedData, stores }}\n >\n {children}\n </SuprSendFeedContext.Provider>\n );\n}\n\nexport default SuprSendFeedProvider;\n","import { useContext } from 'react';\nimport { SuprSendFeedContext } from '../context/SuprSendFeedProvider';\n\nfunction useFeedClient() {\n const context = useContext(SuprSendFeedContext);\n\n if (context === undefined) {\n throw new Error(\n 'useFeedClient must be used within a SuprSendProvider and SuprSendFeedProvider'\n );\n }\n\n return context?.feedClient;\n}\n\nexport default useFeedClient;\n","import { useContext } from 'react';\nimport { SuprSendFeedContext } from '../context/SuprSendFeedProvider';\n\nfunction useFeedData() {\n const context = useContext(SuprSendFeedContext);\n\n return context?.feedData;\n}\n\nexport default useFeedData;\n","import { useContext } from 'react';\nimport { SuprSendFeedContext } from '../context/SuprSendFeedProvider';\n\nfunction useFeed() {\n const context = useContext(SuprSendFeedContext);\n\n if (context === undefined) {\n throw new Error(\n 'useFeed must be used within a SuprSendProvider and SuprSendFeedProvider'\n );\n }\n\n return context;\n}\n\nexport default useFeed;\n","import { createContext } from 'react';\nimport { I18nContextProps, SuprSendI18nProviderProps } from '../../interface';\n\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport const I18nContext = createContext<I18nContextProps>({\n locale: DEFAULT_LANGUAGE,\n translations: {},\n});\n\nconst SuprSendI18nProvider = ({\n children,\n locale = DEFAULT_LANGUAGE,\n translations = {},\n}: SuprSendI18nProviderProps) => {\n return (\n <I18nContext.Provider value={{ locale, translations }}>\n {children}\n </I18nContext.Provider>\n );\n};\n\nexport default SuprSendI18nProvider;\n","import { ILanguage } from '../../interface';\n\nconst fr: ILanguage = {\n locale: 'fr',\n translations: {\n notifications: 'Notifications',\n markAllAsRead: 'Tout marquer comme lu',\n noNotificationsTitle: 'Pas encore de notifications',\n noNotificationsDescription:\n 'Nous vous informerons lorsque nous aurons quelque chose de nouveau pour vous.',\n pinned: 'Épinglé',\n markAsUnread: 'Marquer comme non lu',\n markAsRead: 'Marquer comme lu',\n archive: 'Archiver',\n expiresIn: 'Expire dans',\n minute: 'minute',\n minutes: 'minutes',\n hour: 'heure',\n hours: 'heures',\n day: 'jour',\n days: 'jours',\n week: 'semaine',\n weeks: 'semaines',\n month: 'mois',\n months: 'mois',\n year: 'an',\n years: 'ans',\n },\n};\n\nexport default fr;\n","import { ILanguage } from '../../interface';\n\nconst en: ILanguage = {\n locale: 'en',\n translations: {\n notifications: 'Notifications',\n markAllAsRead: 'Mark all as read',\n noNotificationsTitle: 'No notifications yet',\n noNotificationsDescription:\n \"We'll let you know when we've got something new for you.\",\n pinned: 'Pinned',\n markAsUnread: 'Mark as unread',\n markAsRead: 'Mark as read',\n archive: 'Archive',\n expiresIn: 'Expires in',\n minute: 'minute',\n minutes: 'minutes',\n hour: 'hour',\n hours: 'hours',\n day: 'day',\n days: 'days',\n week: 'week',\n weeks: 'weeks',\n month: 'month',\n months: 'months',\n year: 'year',\n years: 'years',\n },\n};\n\nexport default en;\n","import { ILanguage } from '../../interface';\n\nconst es: ILanguage = {\n locale: 'es',\n translations: {\n notifications: 'Notificaciones',\n markAllAsRead: 'Marcar todo como leído',\n noNotificationsTitle: 'Aún no hay notificaciones',\n noNotificationsDescription:\n 'Te avisaremos cuando tengamos algo nuevo para ti.',\n pinned: 'Fijado',\n markAsUnread: 'Marcar como no leído',\n markAsRead: 'Marcar como leído',\n archive: 'Archivo',\n expiresIn: 'Vence en',\n minute: 'minuto',\n minutes: 'minutos',\n hour: 'hora',\n hours: 'horas',\n day: 'día',\n days: 'días',\n week: 'semana',\n weeks: 'semanas',\n month: 'mes',\n months: 'meses',\n year: 'año',\n years: 'años',\n },\n};\n\nexport default es;\n","import { ILanguage } from '../../interface';\n\nconst de: ILanguage = {\n locale: 'de',\n translations: {\n notifications: 'Benachrichtigungen',\n markAllAsRead: 'Alle als gelesen markieren',\n noNotificationsTitle: 'Noch keine Benachrichtigungen',\n noNotificationsDescription:\n 'Wir informieren Sie, wenn wir etwas Neues für Sie haben.',\n pinned: 'Angepinnt',\n markAsUnread: 'Als ungelesen markieren',\n markAsRead: 'Als gelesen markieren',\n archive: 'Archiv',\n expiresIn: 'Läuft ab in',\n minute: 'Minute',\n minutes: 'Minuten',\n hour: 'Stunde',\n hours: 'Stunden',\n day: 'Tag',\n days: 'Tage',\n week: 'Woche',\n weeks: 'Wochen',\n month: 'Monat',\n months: 'Monate',\n year: 'Jahr',\n years: 'Jahre',\n },\n};\n\nexport default de;\n","import { ILanguage } from '../../interface';\n\nconst ar: ILanguage = {\n locale: 'ar',\n translations: {\n notifications: 'إشعارات',\n markAllAsRead: 'وضع علامة على الكل كمقروءة',\n noNotificationsTitle: 'لا توجد إخطارات حتى الآن',\n noNotificationsDescription: 'سنخبرك عندما نحصل على شيء جديد لك.',\n pinned: 'مثبت',\n markAsUnread: 'وضع علامة كغير مقروءة',\n markAsRead: 'وضع علامة كمقروءة',\n archive: 'أرشيف',\n expiresIn: 'تنتهي في',\n minute: 'دقيقة',\n minutes: 'دقائق',\n hour: 'ساعة',\n hours: 'ساعات',\n day: 'يوم',\n days: 'أيام',\n week: 'أسبوع',\n weeks: 'أسابيع',\n month: 'شهر',\n months: 'أشهر',\n year: 'سنة',\n years: 'سنوات',\n },\n};\n\nexport default ar;\n","import fr from './fr';\nimport en from './en';\nimport es from './es';\nimport de from './de';\nimport ar from './ar';\nimport { ILanguages } from '../../interface';\n\nexport default { fr, en, es, de, ar } as ILanguages;\n","import { useContext, useCallback } from 'react';\nimport languages from '../languages';\nimport { I18nContext, DEFAULT_LANGUAGE } from '../context/SuprSendI18nProvider';\nimport { ITranslations, ILanguages } from '../../interface';\n\nconst useTranslation = () => {\n const { locale, translations } = useContext(I18nContext);\n\n const t = useCallback(\n (key: keyof ITranslations) => {\n const finalLanguage =\n locale && locale in languages\n ? (locale as keyof ILanguages)\n : DEFAULT_LANGUAGE;\n\n // pick from user provided dictionary > pick from internal dictionary > fallback to key\n return (\n translations?.[key] ||\n languages?.[finalLanguage]?.translations?.[key] ||\n key\n );\n },\n [locale, translations]\n );\n\n return { t, locale };\n};\n\nexport default useTranslation;\n"],"names":["SuprSendContext","createContext","suprsendClient","undefined","authenticatedUser","setAuthenticatedUser","SuprSendProvider","publicApiKey","distinctId","userToken","host","vapidKey","swFileName","refreshUserToken","children","userAuthenticationHandler","createSSClient","SuprSend","suprsendClientRef","useRef","useState","handleInternalUserAuthentication","current","existingUser","response","authenticateUser","isIdentified","data","handleUserAuthentication","useEffect","setTimeout","reset","React","useSuprSendClient","context","useContext","Error","identify","useAuthenticateUser","ssContext","SuprSendFeedContext","SuprSendFeedProvider","tenantId","stores","pageSize","feedClientRef","feedData","setFeedData","existingFeedClient","remove","feeds","initialize","feedClient","initialFeedData","emitter","on","updatedStoreData","initializeSocketConnection","fetch","useFeedClient","useFeedData","useFeed","DEFAULT_LANGUAGE","I18nContext","locale","translations","SuprSendI18nProvider","fr","notifications","markAllAsRead","noNotificationsTitle","noNotificationsDescription","pinned","markAsUnread","markAsRead","archive","expiresIn","minute","minutes","hour","hours","day","days","week","weeks","month","months","year","years","en","es","de","ar","languages","useTranslation","t","useCallback","key","finalLanguage"],"mappings":"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"}