mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2026-02-17 13:52:14 +01:00
# Description of Changes - Added onboarding slides/upgrade banner conditions for all the following cases - 'licensed' - 'no-login-user-under-limit-no-license' - 'no-login-admin-under-limit-no-license' - 'no-login-user-over-limit-no-license' - 'no-login-admin-over-limit-no-license' - 'login-user-under-limit-no-license' - 'login-admin-under-limit-no-license' - 'login-user-over-limit-no-license' - 'login-admin-over-limit-no-license'; --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details. --------- Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Co-authored-by: Connor Yoh <connor@stirlingpdf.com>
54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
import { useEffect, useState } from 'react';
|
|
import {
|
|
UPGRADE_BANNER_ALERT_EVENT,
|
|
type UpgradeBannerAlertPayload,
|
|
} from '@app/constants/events';
|
|
|
|
export interface LicenseAlertState {
|
|
active: boolean;
|
|
audience: 'admin' | 'user' | null;
|
|
totalUsers: number | null;
|
|
freeTierLimit: number;
|
|
}
|
|
|
|
const defaultState: LicenseAlertState = {
|
|
active: false,
|
|
audience: null,
|
|
totalUsers: null,
|
|
freeTierLimit: 5,
|
|
};
|
|
|
|
export function useLicenseAlert(): LicenseAlertState {
|
|
const [state, setState] = useState<LicenseAlertState>(defaultState);
|
|
|
|
useEffect(() => {
|
|
if (typeof window === 'undefined') {
|
|
return;
|
|
}
|
|
|
|
const handleAlert = (event: Event) => {
|
|
const detail = (event as CustomEvent<UpgradeBannerAlertPayload>).detail;
|
|
if (detail?.active) {
|
|
setState({
|
|
active: true,
|
|
audience: detail.audience ?? 'user',
|
|
totalUsers:
|
|
typeof detail.totalUsers === 'number' ? detail.totalUsers : null,
|
|
freeTierLimit: detail.freeTierLimit ?? 5,
|
|
});
|
|
} else {
|
|
setState(defaultState);
|
|
}
|
|
};
|
|
|
|
window.addEventListener(UPGRADE_BANNER_ALERT_EVENT, handleAlert as EventListener);
|
|
|
|
return () => {
|
|
window.removeEventListener(UPGRADE_BANNER_ALERT_EVENT, handleAlert as EventListener);
|
|
};
|
|
}, []);
|
|
|
|
return state;
|
|
}
|
|
|