{"version":3,"sources":["../../src/hooks/use-app-analytics.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { AppState } from 'react-native';\nimport { keys } from '../constants/storage';\nimport { config } from '../setup/index';\nimport { session } from '../setup/session';\nimport { track } from '../track/index';\nimport { usePrevious } from './use-previous';\n\nfunction sendFirstOpen(pathname: string) {\n  if (config.storage.getItem(keys.first_open_time)) return;\n  track('first_open', { screen_name: pathname, screen_class: pathname });\n  config.storage.setItem(keys.first_open_time, new Date().toISOString());\n}\n\nfunction sendUserEngagement() {\n  const engagement_time_msec = session.flush();\n  if (engagement_time_msec <= 0) return;\n  track('user_engagement', { engagement_time_msec, trigger: 'background' });\n}\n\nexport function useAppAnalytics(pathname: string) {\n  const prevPathname = usePrevious(pathname);\n\n  useEffect(() => {\n    sendFirstOpen(pathname);\n    track('session_start', undefined);\n\n    const subscription = AppState.addEventListener('change', (state) => {\n      session.updateAccumulator();\n      // when returning to the foreground from the background\n      if (state === 'active' && !session.isActive()) {\n        session.updateActive(true);\n      }\n      // when entering the background\n      else if (state !== 'active' && session.isActive()) {\n        session.updateActive(false);\n        sendUserEngagement();\n      }\n    });\n\n    return () => subscription.remove();\n  }, []);\n\n  // when the screen is switched, the engagement time of the previous screen is recorded\n  useEffect(() => {\n    track('screen_view', {\n      screen_name: pathname,\n      screen_class: pathname,\n      previous_screen_class: prevPathname ?? undefined,\n      engagement_time_msec: prevPathname ? session.flush() : undefined,\n    });\n  }, [pathname]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0B;AAC1B,0BAAyB;AACzB,qBAAqB;AACrB,mBAAuB;AACvB,qBAAwB;AACxB,mBAAsB;AACtB,0BAA4B;AAE5B,SAAS,cAAc,UAAkB;AACvC,MAAI,oBAAO,QAAQ,QAAQ,oBAAK,eAAe,EAAG;AAClD,0BAAM,cAAc,EAAE,aAAa,UAAU,cAAc,SAAS,CAAC;AACrE,sBAAO,QAAQ,QAAQ,oBAAK,kBAAiB,oBAAI,KAAK,GAAE,YAAY,CAAC;AACvE;AAEA,SAAS,qBAAqB;AAC5B,QAAM,uBAAuB,uBAAQ,MAAM;AAC3C,MAAI,wBAAwB,EAAG;AAC/B,0BAAM,mBAAmB,EAAE,sBAAsB,SAAS,aAAa,CAAC;AAC1E;AAEO,SAAS,gBAAgB,UAAkB;AAChD,QAAM,mBAAe,iCAAY,QAAQ;AAEzC,8BAAU,MAAM;AACd,kBAAc,QAAQ;AACtB,4BAAM,iBAAiB,MAAS;AAEhC,UAAM,eAAe,6BAAS,iBAAiB,UAAU,CAAC,UAAU;AAClE,6BAAQ,kBAAkB;AAE1B,UAAI,UAAU,YAAY,CAAC,uBAAQ,SAAS,GAAG;AAC7C,+BAAQ,aAAa,IAAI;AAAA,MAC3B,WAES,UAAU,YAAY,uBAAQ,SAAS,GAAG;AACjD,+BAAQ,aAAa,KAAK;AAC1B,2BAAmB;AAAA,MACrB;AAAA,IACF,CAAC;AAED,WAAO,MAAM,aAAa,OAAO;AAAA,EACnC,GAAG,CAAC,CAAC;AAGL,8BAAU,MAAM;AACd,4BAAM,eAAe;AAAA,MACnB,aAAa;AAAA,MACb,cAAc;AAAA,MACd,uBAAuB,gBAAgB;AAAA,MACvC,sBAAsB,eAAe,uBAAQ,MAAM,IAAI;AAAA,IACzD,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,CAAC;AACf;","names":[]}