mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-11-01 01:21:18 +01:00 
			
		
		
		
	cache the release notes in the browser session (#2673)
# Description Please provide a summary of the changes, including relevant motivation and context. Closes https://github.com/Stirling-Tools/Stirling-PDF/security/code-scanning/164 ## Checklist - [x] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [x] I have performed a self-review of my own code - [ ] I have attached images of the change if it is UI based - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] If my code has heavily changed functionality I have updated relevant docs on [Stirling-PDFs doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) - [x] My changes generate no new warnings - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only)
This commit is contained in:
		
							parent
							
								
									d2d8e2ef42
								
							
						
					
					
						commit
						c17b4e29ff
					
				@ -274,9 +274,31 @@
 | 
			
		||||
function formatText(text) {
 | 
			
		||||
    const container = document.createElement('div');
 | 
			
		||||
 | 
			
		||||
    if (!text || typeof text !== 'string') {
 | 
			
		||||
        console.error('Invalid input to formatText:', text);
 | 
			
		||||
        return container;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let textWithoutComments;
 | 
			
		||||
    try {
 | 
			
		||||
        textWithoutComments = text.replace(
 | 
			
		||||
            /<!-- Release notes generated using configuration in .github\/release\.yml at main -->/,
 | 
			
		||||
            ''
 | 
			
		||||
        );
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error('Error in replace operation:', error);
 | 
			
		||||
        return container;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Split the text into lines
 | 
			
		||||
    const textWithoutComments = text.replace(/<!--[\s\S]*?-->/g, '');
 | 
			
		||||
    const lines = textWithoutComments.split('\n');
 | 
			
		||||
    let lines;
 | 
			
		||||
    try {
 | 
			
		||||
        lines = textWithoutComments.split('\n');
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error('Error in split operation:', error);
 | 
			
		||||
        return container;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let currentList = null;
 | 
			
		||||
 | 
			
		||||
    lines.forEach(line => {
 | 
			
		||||
@ -390,10 +412,26 @@ async function loadReleases() {
 | 
			
		||||
        while (container.firstChild) {
 | 
			
		||||
            container.removeChild(container.firstChild);
 | 
			
		||||
        }
 | 
			
		||||
        const cachedReleases = sessionStorage.getItem('releases');
 | 
			
		||||
 | 
			
		||||
        const response = await fetch(GITHUB_API + '/releases');
 | 
			
		||||
        if (!response.ok) throw new Error('Failed to fetch releases');
 | 
			
		||||
        const releases = await response.json();
 | 
			
		||||
        let releases;
 | 
			
		||||
        if (cachedReleases) {
 | 
			
		||||
            releases = JSON.parse(cachedReleases);
 | 
			
		||||
            console.log("Read from storage");
 | 
			
		||||
        } else {
 | 
			
		||||
            const response = await fetch(GITHUB_API + '/releases');
 | 
			
		||||
            if (!response.ok) {
 | 
			
		||||
                if (response.status === 403) {
 | 
			
		||||
                    throw new Error('API rate limit exceeded');
 | 
			
		||||
                }
 | 
			
		||||
                if (response.status === 404) {
 | 
			
		||||
                    throw new Error('Repository not found');
 | 
			
		||||
                }
 | 
			
		||||
                throw new Error('Failed to fetch releases');
 | 
			
		||||
            }
 | 
			
		||||
            releases = await response.json();
 | 
			
		||||
            sessionStorage.setItem('releases', JSON.stringify(releases));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Sort releases by version number (descending)
 | 
			
		||||
        releases.sort((a, b) => compareVersions(b.tag_name, a.tag_name));
 | 
			
		||||
@ -470,4 +508,4 @@ async function loadReleases() {
 | 
			
		||||
    /*]]>*/
 | 
			
		||||
</script>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
</html>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user