diff --git a/www/configs/user-settings.json b/www/configs/user-settings.json index 203954ff..740c8a3c 100644 --- a/www/configs/user-settings.json +++ b/www/configs/user-settings.json @@ -73,7 +73,7 @@ "other-options": { "title": "OTHER_OPTIONS", "type": "switch", - "settings": ["limit-change-log", "statistics"] + "settings": ["limit-change-log", "statistics", "intelligent-spacebar"] } }, "settings": { @@ -268,6 +268,10 @@ "title": "AUTO_PLAY", "initialValue": false }, + "intelligent-spacebar":{ + "title": "INTELLIGENT_SPACEBAR", + "initialValue": true + }, "autoplay-delay": { "title": "DELAY", "type": "range", diff --git a/www/locales/en.json b/www/locales/en.json index 8d443945..a716c8ee 100644 --- a/www/locales/en.json +++ b/www/locales/en.json @@ -323,6 +323,7 @@ "LEFT_ALIGN": "Left-Align", "NEXT_LINE": "Next Line", "AUTOPLAY_OPTIONS": "Autoplay Options", + "INTELLIGENT_SPACEBAR": "Intelligent Spacebar", "AUTO_PLAY": "Auto Play", "DELAY": "Delay (Seconds)", "BANI_SETTINGS": "Bani Settings", diff --git a/www/main/navigator/shabad/ShabadContent.jsx b/www/main/navigator/shabad/ShabadContent.jsx index ef7f130c..618daffb 100644 --- a/www/main/navigator/shabad/ShabadContent.jsx +++ b/www/main/navigator/shabad/ShabadContent.jsx @@ -49,7 +49,7 @@ const ShabadContent = () => { } = useStoreActions((state) => state.navigator); // mangalPosition was removed from below settings - const { autoplayToggle, autoplayDelay, baniLength, liveFeed } = useStoreState( + const { autoplayToggle, autoplayDelay, baniLength, liveFeed, intelligentSpacebar } = useStoreState( (state) => state.userSettings, ); @@ -101,21 +101,21 @@ const ShabadContent = () => { const regex = checkPauri.length > 1 ? /]\d*]/ : /]/; return versesNew ? versesNew.map((verse, index) => { - if (verse) { - const verseObj = { - ID: index, - verseId: verse.ID, - verse: verse.Gurmukhi, - english: verse.English ? verse.English : '', - lineNo: currentLine, - crossPlatformId: verse.crossPlatformID ? verse.crossPlatformID : '', - }; - // eslint-disable-next-line no-unused-expressions - regex.test(verse.Gurmukhi) && currentLine++; - return verseObj; - } - return {}; - }) + if (verse) { + const verseObj = { + ID: index, + verseId: verse.ID, + verse: verse.Gurmukhi, + english: verse.English ? verse.English : '', + lineNo: currentLine, + crossPlatformId: verse.crossPlatformID ? verse.crossPlatformID : '', + }; + // eslint-disable-next-line no-unused-expressions + regex.test(verse.Gurmukhi) && currentLine++; + return verseObj; + } + return {}; + }) : []; } }; @@ -265,8 +265,19 @@ const ShabadContent = () => { const currentVerseIndex = mappedShabadArray.findIndex( ({ verseId }) => verseId === activeVerseId, ); - let nextVerseIndex; + let nextVerseIndex = homeVerse; + + if (intelligentSpacebar) { + nextVerseIndex = handleIntelligentSpacebar(nextVerseIndex, mappedShabadArray, currentVerseIndex); + } + + const nextVerseId = mappedShabadArray[nextVerseIndex].verseId; + scrollToVerse(nextVerseId); + updateTraversedVerse(nextVerseId, nextVerseIndex); + } + + function handleIntelligentSpacebar(nextVerseIndex, mappedShabadArray, currentVerseIndex) { if (atHome) { if (previousVerseIndex !== null) { nextVerseIndex = previousVerseIndex + 1; @@ -298,9 +309,7 @@ const ShabadContent = () => { setPreviousIndex(nextVerseIndex); } } - const nextVerseId = mappedShabadArray[nextVerseIndex].verseId; - scrollToVerse(nextVerseId); - updateTraversedVerse(nextVerseId, nextVerseIndex); + return nextVerseIndex; } };