license-lib/react/LicenseProvider.js

32 lines
914 B
JavaScript

// react/LicenseProvider.js
import React, { createContext, useState, useEffect } from 'react';
import { activateLicense } from '../client/validate';
import { cacheLicenseData, getCachedLicenseData, isLicenseCacheValid } from '../client/offline';
export const LicenseContext = createContext();
export const LicenseProvider = ({ userId, licenseKey, children }) => {
const [isLicensed, setIsLicensed] = useState(false);
useEffect(() => {
const checkLicense = async () => {
if (navigator.onLine) {
const valid = await activateLicense(userId, licenseKey);
setIsLicensed(valid);
if (valid) cacheLicenseData({ userId, licenseKey });
} else {
setIsLicensed(isLicenseCacheValid());
}
};
checkLicense();
}, [userId, licenseKey]);
return (
<LicenseContext.Provider value={{ isLicensed }}>
{children}
</LicenseContext.Provider>
);
};