UNPKG

@aws-amplify/core

Version:
1 lines 3.11 kB
{"version":3,"file":"SessionListener.mjs","sources":["../../../../src/utils/sessionListener/SessionListener.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isBrowser } from '../isBrowser';\nconst stateChangeListeners = new Set();\nexport class SessionListener {\n constructor() {\n this.listenerActive = false;\n this.handleVisibilityChange = this.handleVisibilityChange.bind(this);\n // Setup state listeners\n if (isBrowser()) {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false);\n this.listenerActive = true;\n }\n }\n addStateChangeListener(listener, notifyOnAdd = false) {\n // No-op if document listener is not active\n if (!this.listenerActive) {\n return;\n }\n stateChangeListeners.add(listener);\n // Notify new handlers of the current status on add\n if (notifyOnAdd) {\n listener(this.getSessionState());\n }\n }\n removeStateChangeListener(handler) {\n // No-op if document listener is not active\n if (!this.listenerActive) {\n return;\n }\n stateChangeListeners.delete(handler);\n }\n handleVisibilityChange() {\n this.notifyHandlers();\n }\n notifyHandlers() {\n const sessionState = this.getSessionState();\n stateChangeListeners.forEach(listener => {\n listener(sessionState);\n });\n }\n getSessionState() {\n if (isBrowser() && document.visibilityState !== 'hidden') {\n return 'started';\n }\n // If, for any reason, document is undefined the session will never start\n return 'ended';\n }\n}\n"],"names":[],"mappings":";;AAAA;AACA;AAEA,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;AAChC,MAAM,eAAe,CAAC;AAC7B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E;AACA,QAAQ,IAAI,SAAS,EAAE,EAAE;AACzB,YAAY,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;AAC9F,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACvC,SAAS;AACT,KAAK;AACL,IAAI,sBAAsB,CAAC,QAAQ,EAAE,WAAW,GAAG,KAAK,EAAE;AAC1D;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC3C;AACA,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAC7C,SAAS;AACT,KAAK;AACL,IAAI,yBAAyB,CAAC,OAAO,EAAE;AACvC;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACpD,QAAQ,oBAAoB,CAAC,OAAO,CAAC,QAAQ,IAAI;AACjD,YAAY,QAAQ,CAAC,YAAY,CAAC,CAAC;AACnC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,SAAS,EAAE,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE;AAClE,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS;AACT;AACA,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL;;;;"}