Skip to content

Commit bd79ad3

Browse files
committed
fix(ssr): Add functionality for caching current text in textStore for ssr and sso display
1 parent 4d96885 commit bd79ad3

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

static/js/sefaria/sefaria.js

+14-3
Original file line numberDiff line numberDiff line change
@@ -550,18 +550,25 @@ Sefaria = extend(Sefaria, {
550550
);
551551
const mergeTextInt = mergeText ? 1 : 0;
552552
const return_format_string = (return_format) ? `&return_format=${return_format}` : '';
553+
versions.sort();
553554
const url = `${host}${endPoint}${ref}?version=${versions.join('&version=')}&fill_in_missing_segments=${mergeTextInt}${return_format_string}`;
554555
return url;
555556
},
556557
_textsStore: {},
558+
_textsStoreSet: function(key, value) {
559+
this._textsStore[key] = value;
560+
},
557561
getTextsFromAPIV3: async function(ref, requiredVersions, mergeText, return_format) {
558562
// ref is segment ref or bottom level section ref
559-
// requiredVersions is array of objects that can have languageFamilyName and versionTitle
563+
// requiredVersions is an array of objects that can have languageFamilyName and versionTitle
560564
const url = Sefaria.makeUrlForAPIV3Text(ref, requiredVersions, mergeText, return_format);
561565
const apiObject = await Sefaria._cachedApiPromise({url: url, key: url, store: Sefaria._textsStore});
562-
this._textsStore[ref] = apiObject;
563566
return apiObject;
564567
},
568+
_makeV3VersionsUrlCacheKey: function(ref, versions) {
569+
versions.map(version => version.isPrimary ? { languageFamilyName: 'primary' } : version);
570+
return Sefaria.makeUrlForAPIV3Text(ref, versions, true, 'wrap_all_entities')
571+
},
565572
getAllTranslationsWithText: async function(ref) {
566573
let returnObj = await Sefaria.getTextsFromAPIV3(ref, [{languageFamilyName: 'translation', versionTitle: 'all'}], false);
567574
return Sefaria._sortVersionsIntoBuckets(returnObj.versions);
@@ -652,6 +659,7 @@ Sefaria = extend(Sefaria, {
652659
en = en || {};
653660
let data = await Sefaria._getPrimaryAndTranslationText(ref, he, en, translationLanguagePreference);
654661
const isDataForSegment = data.textDepth === data.sections.length;
662+
debugger;
655663
if (withContext && isDataForSegment) {
656664
const {text, he, alts} = await Sefaria.getTextFromCurrVersions(data.sectionRef, currVersions, translationLanguagePreference);
657665
data = {
@@ -3351,10 +3359,13 @@ Sefaria.unpackDataFromProps = function(props) {
33513359
for (let i = 0; i < initialPanels.length; i++) {
33523360
let panel = initialPanels[i];
33533361
if (panel.text) {
3362+
const urlKey = Sefaria._makeV3VersionsUrlCacheKey(panel.text.ref, panel.text.versions)
3363+
Sefaria._textsStoreSet(urlKey, panel.text);
3364+
33543365
let settings = {context: 1, enVersion: panel.enVersion, heVersion: panel.heVersion};
33553366
//save versions first, so their new format is also saved on text cache
33563367
if(panel.text?.versions?.length){
3357-
let versions = Sefaria._saveVersions(panel.text.sectionRef, panel.text.available_versions);
3368+
let versions = Sefaria._saveVersions(panel.text.sectionRef, panel.text.versions);
33583369
panel.text.versions = Sefaria._makeVersions(versions, false);
33593370
}
33603371

0 commit comments

Comments
 (0)