@suprsend/react-core
Version:
The react headless library for using SuprSend features like inbox, preferences etc
3 lines (2 loc) • 6.57 kB
JavaScript
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("@suprsend/web-sdk"),t=require("react"),v=t.createContext({suprsendClient:void 0,authenticatedUser:void 0,setAuthenticatedUser:void 0});function C({publicApiKey:e,distinctId:n,userToken:o,host:r,vapidKey:a,swFileName:u,refreshUserToken:d,children:l,userAuthenticationHandler:m}){const f=()=>new w.SuprSend(e,{host:r,vapidKey:a,swFileName:u}),c=t.useRef(f()),[i,h]=t.useState(null),y=async()=>{const s=c.current,F=s.distinctId,N=await U({distinctId:n,userToken:o,refreshUserToken:d,suprsendClient:s});h(s.isIdentified()?n:null),(n||F&&!n)&&(m==null||m({response:N,authenticateUser:P=>g({...P,suprsendClient:s,setAuthenticatedUser:h})}))};return t.useEffect(()=>(setTimeout(()=>{c.current=f(),y()},0),()=>{const s=c.current;s!=null&&s.isIdentified()&&(s==null||s.reset())}),[n]),t.useEffect(()=>{o&&(c.current.userToken=o)},[o]),t.createElement(v.Provider,{value:{suprsendClient:c.current,authenticatedUser:i,setAuthenticatedUser:h}},l)}function k(){const e=t.useContext(v);if(e.suprsendClient===void 0)throw new Error("useSuprSendClient must be used within a SuprSendProvider");return e.suprsendClient}async function U({distinctId:e,userToken:n,refreshUserToken:o,suprsendClient:r}){let a;return r.isIdentified()&&(r==null?void 0:r.distinctId)!=e?(a=await(r==null?void 0:r.reset()),e&&(a=await r.identify(e,n,{refreshUserToken:o}))):a=await r.identify(e,n,{refreshUserToken:o}),a}const g=async({distinctId:e,userToken:n,refreshUserToken:o,suprsendClient:r,setAuthenticatedUser:a})=>{const u=await U({distinctId:e,userToken:n,refreshUserToken:o,suprsendClient:r});return a&&a(r.isIdentified()?e:null),u};function E(){const e=k(),n=t.useContext(v);return{authenticatedUser:n.authenticatedUser,authenticateUser:o=>g({...o,suprsendClient:e,setAuthenticatedUser:n.setAuthenticatedUser})}}const p=t.createContext(null);function R({tenantId:e,stores:n,host:o,pageSize:r,children:a}){const u=k(),d=t.useContext(v),l=t.useRef(),[m,f]=t.useState();return t.useEffect(()=>{const c=l.current;if(c&&c.remove(),!d.authenticatedUser)return;l.current=u.feeds.initialize({tenantId:e,stores:n,host:o,pageSize:r});const i=l.current,h=i==null?void 0:i.data;return f(h),i==null||i.emitter.on("feed.store_update",y=>{f(y)}),i.initializeSocketConnection(),i.fetch(),()=>i.remove()},[d.authenticatedUser]),t.createElement(p.Provider,{value:{feedClient:l.current,feedData:m,stores:n}},a)}function b(){const e=t.useContext(p);if(e===void 0)throw new Error("useFeedClient must be used within a SuprSendProvider and SuprSendFeedProvider");return e==null?void 0:e.feedClient}function D(){const e=t.useContext(p);return e==null?void 0:e.feedData}function M(){const e=t.useContext(p);if(e===void 0)throw new Error("useFeed must be used within a SuprSendProvider and SuprSendFeedProvider");return e}const A="en",x=t.createContext({locale:A,translations:{}}),T=({children:e,locale:n=A,translations:o={}})=>t.createElement(x.Provider,{value:{locale:n,translations:o}},e),q={locale:"fr",translations:{notifications:"Notifications",markAllAsRead:"Tout marquer comme lu",noNotificationsTitle:"Pas encore de notifications",noNotificationsDescription:"Nous vous informerons lorsque nous aurons quelque chose de nouveau pour vous.",pinned:"Épinglé",markAsUnread:"Marquer comme non lu",markAsRead:"Marquer comme lu",archive:"Archiver",expiresIn:"Expire dans",minute:"minute",minutes:"minutes",hour:"heure",hours:"heures",day:"jour",days:"jours",week:"semaine",weeks:"semaines",month:"mois",months:"mois",year:"an",years:"ans"}},I={locale:"en",translations:{notifications:"Notifications",markAllAsRead:"Mark all as read",noNotificationsTitle:"No notifications yet",noNotificationsDescription:"We'll let you know when we've got something new for you.",pinned:"Pinned",markAsUnread:"Mark as unread",markAsRead:"Mark as read",archive:"Archive",expiresIn:"Expires in",minute:"minute",minutes:"minutes",hour:"hour",hours:"hours",day:"day",days:"days",week:"week",weeks:"weeks",month:"month",months:"months",year:"year",years:"years"}},j={locale:"es",translations:{notifications:"Notificaciones",markAllAsRead:"Marcar todo como leído",noNotificationsTitle:"Aún no hay notificaciones",noNotificationsDescription:"Te avisaremos cuando tengamos algo nuevo para ti.",pinned:"Fijado",markAsUnread:"Marcar como no leído",markAsRead:"Marcar como leído",archive:"Archivo",expiresIn:"Vence en",minute:"minuto",minutes:"minutos",hour:"hora",hours:"horas",day:"día",days:"días",week:"semana",weeks:"semanas",month:"mes",months:"meses",year:"año",years:"años"}},L={locale:"de",translations:{notifications:"Benachrichtigungen",markAllAsRead:"Alle als gelesen markieren",noNotificationsTitle:"Noch keine Benachrichtigungen",noNotificationsDescription:"Wir informieren Sie, wenn wir etwas Neues für Sie haben.",pinned:"Angepinnt",markAsUnread:"Als ungelesen markieren",markAsRead:"Als gelesen markieren",archive:"Archiv",expiresIn:"Läuft ab in",minute:"Minute",minutes:"Minuten",hour:"Stunde",hours:"Stunden",day:"Tag",days:"Tage",week:"Woche",weeks:"Wochen",month:"Monat",months:"Monate",year:"Jahr",years:"Jahre"}},O={locale:"ar",translations:{notifications:"إشعارات",markAllAsRead:"وضع علامة على الكل كمقروءة",noNotificationsTitle:"لا توجد إخطارات حتى الآن",noNotificationsDescription:"سنخبرك عندما نحصل على شيء جديد لك.",pinned:"مثبت",markAsUnread:"وضع علامة كغير مقروءة",markAsRead:"وضع علامة كمقروءة",archive:"أرشيف",expiresIn:"تنتهي في",minute:"دقيقة",minutes:"دقائق",hour:"ساعة",hours:"ساعات",day:"يوم",days:"أيام",week:"أسبوع",weeks:"أسابيع",month:"شهر",months:"أشهر",year:"سنة",years:"سنوات"}},S={fr:q,en:I,es:j,de:L,ar:O},G=()=>{const{locale:e,translations:n}=t.useContext(x);return{t:t.useCallback(r=>{var u,d;const a=e&&e in S?e:A;return(n==null?void 0:n[r])||((d=(u=S==null?void 0:S[a])==null?void 0:u.translations)==null?void 0:d[r])||r},[e,n]),locale:e}};exports.DEFAULT_LANGUAGE=A;exports.I18nContext=x;exports.SuprSendFeedProvider=R;exports.SuprSendI18nProvider=T;exports.SuprSendProvider=C;exports.useAuthenticateUser=E;exports.useFeed=M;exports.useFeedClient=b;exports.useFeedData=D;exports.useSuprSendClient=k;exports.useTranslations=G;Object.keys(w).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>w[e]})});
//# sourceMappingURL=index.cjs.map