{"version":3,"file":"longTermTracking.jsx","sourceRoot":"","sources":["../../../components/longTermTracking.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useRef } from \"react\";\r\n\r\nimport { sendTrackingPopupHiddenEvent } from \"../events/trackingPopupHidden\";\r\nimport { sendTrackingPopupShownEvent } from \"../events/trackingPopupShown\";\r\nimport { LongTermTrackingState, isTrackingEnabled } from \"../settings\";\r\n\r\nimport { LongTermTrackingOptIn } from \"./longTermTrackingOptIn\";\r\nimport { LongTermTrackingPopup, LongTermTrackingPopupState } from \"./longTermTrackingPopup\";\r\n\r\ntype State = {\r\n  show: boolean;\r\n  hideFast: boolean;\r\n};\r\n\r\ntype LongTermTrackingRenderFunction = (\r\n  state: LongTermTrackingPopupState,\r\n  trackingState: LongTermTrackingState,\r\n  setEnabled: (enabled: boolean) => void,\r\n  hide: () => void\r\n) => React.ReactNode;\r\n\r\nconst TrackingEvents: React.FC<{ show: boolean }> = props => {\r\n  const ref = useRef(false);\r\n\r\n  useEffect(() => {\r\n    if (props.show && ref.current === false) {\r\n      sendTrackingPopupShownEvent();\r\n    }\r\n    ref.current = props.show;\r\n  }, [props.show]);\r\n\r\n  return null;\r\n};\r\n\r\nexport class LongTermTracking extends React.Component<\r\n  {\r\n    children: LongTermTrackingRenderFunction;\r\n  },\r\n  State\r\n> {\r\n  state: State = {\r\n    show: false,\r\n    hideFast: false\r\n  };\r\n\r\n  showTimeout!: NodeJS.Timer;\r\n\r\n  componentDidMount() {\r\n    let firstVisited = sessionStorage.getItem(\"first-visited\");\r\n    if (firstVisited == null) {\r\n      firstVisited = Date.now().toString();\r\n      sessionStorage.setItem(\"first-visited\", firstVisited);\r\n    }\r\n\r\n    const firstVisitedTime = parseInt(firstVisited, 10);\r\n    this.showTimeout = setTimeout(() => {\r\n      if (isTrackingEnabled()) {\r\n        this.setState({\r\n          show: true,\r\n          hideFast: false\r\n        });\r\n      } else {\r\n        this.setState({\r\n          show: false,\r\n          hideFast: false\r\n        });\r\n      }\r\n    }, Math.max(5000, firstVisitedTime + 30000 - Date.now()));\r\n  }\r\n\r\n  componentWillUnmount() {\r\n    clearTimeout(this.showTimeout);\r\n  }\r\n\r\n  hide = () => {\r\n    this.setState({\r\n      show: false,\r\n      hideFast: true\r\n    });\r\n    sendTrackingPopupHiddenEvent();\r\n  };\r\n\r\n  render() {\r\n    if (!isTrackingEnabled()) {\r\n      return null;\r\n    }\r\n    return (\r\n      <LongTermTrackingOptIn>\r\n        {(trackingState, setEnabled) => (\r\n          <LongTermTrackingPopup\r\n            visible={trackingState === LongTermTrackingState.None && this.state.show}\r\n            hideFast={this.state.hideFast}\r\n          >\r\n            {state => (\r\n              <>\r\n                <TrackingEvents show={state !== LongTermTrackingPopupState.Hidden} />\r\n                {this.props.children(state, trackingState, setEnabled, this.hide)}\r\n              </>\r\n            )}\r\n          </LongTermTrackingPopup>\r\n        )}\r\n      </LongTermTrackingOptIn>\r\n    );\r\n  }\r\n}\r\n"]}