@itwin/presentation-frontend
Version:
Frontend of iModel.js Presentation library
53 lines • 2.35 kB
JavaScript
;
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/** @packageDocumentation
* @module Core
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConnectivityInformationProvider = void 0;
const core_bentley_1 = require("@itwin/core-bentley");
const core_common_1 = require("@itwin/core-common");
const core_frontend_1 = require("@itwin/core-frontend");
/**
* A helper that wraps connectivity-related APIs in NativeApp
* to give a unified information for interested parties in presentation.
*
* @internal
*/
class ConnectivityInformationProvider {
_currentStatus;
_unsubscribeFromInternetConnectivityChangedEvent;
onInternetConnectivityChanged = new core_bentley_1.BeEvent();
constructor() {
if (core_frontend_1.NativeApp.isValid) {
this._unsubscribeFromInternetConnectivityChangedEvent = core_frontend_1.NativeApp.onInternetConnectivityChanged.addListener(this.onNativeAppInternetConnectivityChanged);
// eslint-disable-next-line @typescript-eslint/no-floating-promises
core_frontend_1.NativeApp.checkInternetConnectivity().then((status) => {
if (undefined === this._currentStatus) {
this._currentStatus = status;
}
});
}
else {
this._currentStatus = core_common_1.InternetConnectivityStatus.Online;
}
}
[Symbol.dispose]() {
this._unsubscribeFromInternetConnectivityChangedEvent && this._unsubscribeFromInternetConnectivityChangedEvent();
}
onNativeAppInternetConnectivityChanged = (status) => {
if (this._currentStatus === status) {
return;
}
this._currentStatus = status;
this.onInternetConnectivityChanged.raiseEvent({ status });
};
get status() {
return this._currentStatus ?? core_common_1.InternetConnectivityStatus.Offline;
}
}
exports.ConnectivityInformationProvider = ConnectivityInformationProvider;
//# sourceMappingURL=ConnectivityInformationProvider.js.map