Files
NapCatQQ/.pnpm-store/v3/files/73/f4bad35f129b5d114156de2129cf5aa9ebc425b999f781078c6d25da70071a08989ef4491ee33891ba43b67786e612eaf1c1f13fed1811e223f03b63b9a147
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

58 lines
2.3 KiB
Plaintext

import { __assign, __read } from "tslib";
import { useEffect, useState } from 'react';
import { isObject } from '../utils';
var NetworkEventType;
(function (NetworkEventType) {
NetworkEventType["ONLINE"] = "online";
NetworkEventType["OFFLINE"] = "offline";
NetworkEventType["CHANGE"] = "change";
})(NetworkEventType || (NetworkEventType = {}));
function getConnection() {
var nav = navigator;
if (!isObject(nav)) {
return null;
}
return nav.connection || nav.mozConnection || nav.webkitConnection;
}
function getConnectionProperty() {
var c = getConnection();
if (!c) {
return {};
}
return {
rtt: c.rtt,
type: c.type,
saveData: c.saveData,
downlink: c.downlink,
downlinkMax: c.downlinkMax,
effectiveType: c.effectiveType,
};
}
function useNetwork() {
var _a = __read(useState(function () {
return __assign({ since: undefined, online: navigator === null || navigator === void 0 ? void 0 : navigator.onLine }, getConnectionProperty());
}), 2), state = _a[0], setState = _a[1];
useEffect(function () {
var onOnline = function () {
setState(function (prevState) { return (__assign(__assign({}, prevState), { online: true, since: new Date() })); });
};
var onOffline = function () {
setState(function (prevState) { return (__assign(__assign({}, prevState), { online: false, since: new Date() })); });
};
var onConnectionChange = function () {
setState(function (prevState) { return (__assign(__assign({}, prevState), getConnectionProperty())); });
};
window.addEventListener(NetworkEventType.ONLINE, onOnline);
window.addEventListener(NetworkEventType.OFFLINE, onOffline);
var connection = getConnection();
connection === null || connection === void 0 ? void 0 : connection.addEventListener(NetworkEventType.CHANGE, onConnectionChange);
return function () {
window.removeEventListener(NetworkEventType.ONLINE, onOnline);
window.removeEventListener(NetworkEventType.OFFLINE, onOffline);
connection === null || connection === void 0 ? void 0 : connection.removeEventListener(NetworkEventType.CHANGE, onConnectionChange);
};
}, []);
return state;
}
export default useNetwork;