@@ -548,21 +548,29 @@ Sefaria = extend(Sefaria, {
548
548
const versions = requiredVersions . map ( obj =>
549
549
Sefaria . makeParamsStringForAPIV3 ( obj . languageFamilyName , obj . versionTitle )
550
550
) ;
551
+ versions . sort ( ) ;
552
+
551
553
const mergeTextInt = mergeText ? 1 : 0 ;
552
554
const return_format_string = ( return_format ) ? `&return_format=${ return_format } ` : '' ;
553
555
const encodedRef = Sefaria . normRef ( ref ) ;
554
556
const url = `${ host } ${ endPoint } ${ encodedRef } ?version=${ versions . join ( '&version=' ) } &fill_in_missing_segments=${ mergeTextInt } ${ return_format_string } ` ;
555
557
return url ;
556
558
} ,
557
559
_textsStore : { } ,
560
+ _textsStoreSet : function ( key , value ) {
561
+ this . _textsStore [ key ] = value ;
562
+ } ,
558
563
getTextsFromAPIV3 : async function ( ref , requiredVersions , mergeText , return_format ) {
559
564
// ref is segment ref or bottom level section ref
560
- // requiredVersions is array of objects that can have languageFamilyName and versionTitle
565
+ // requiredVersions is an array of objects that can have languageFamilyName and versionTitle
561
566
const url = Sefaria . makeUrlForAPIV3Text ( ref , requiredVersions , mergeText , return_format ) ;
562
567
const apiObject = await Sefaria . _cachedApiPromise ( { url : url , key : url , store : Sefaria . _textsStore } ) ;
563
- this . _textsStore [ ref ] = apiObject ;
564
568
return apiObject ;
565
569
} ,
570
+ _makeV3VersionsUrlCacheKey : function ( ref , versions ) {
571
+ versions . map ( version => version . isPrimary ? { languageFamilyName : 'primary' } : version ) ;
572
+ return Sefaria . makeUrlForAPIV3Text ( ref , versions , true , 'wrap_all_entities' )
573
+ } ,
566
574
getAllTranslationsWithText : async function ( ref ) {
567
575
let returnObj = await Sefaria . getTextsFromAPIV3 ( ref , [ { languageFamilyName : 'translation' , versionTitle : 'all' } ] , false ) ;
568
576
return Sefaria . _sortVersionsIntoBuckets ( returnObj . versions ) ;
@@ -3352,10 +3360,13 @@ Sefaria.unpackDataFromProps = function(props) {
3352
3360
for ( let i = 0 ; i < initialPanels . length ; i ++ ) {
3353
3361
let panel = initialPanels [ i ] ;
3354
3362
if ( panel . text ) {
3363
+ const urlKey = Sefaria . _makeV3VersionsUrlCacheKey ( panel . text . ref , panel . text . versions )
3364
+ Sefaria . _textsStoreSet ( urlKey , panel . text ) ;
3365
+
3355
3366
let settings = { context : 1 , enVersion : panel . enVersion , heVersion : panel . heVersion } ;
3356
3367
//save versions first, so their new format is also saved on text cache
3357
3368
if ( panel . text ?. versions ?. length ) {
3358
- let versions = Sefaria . _saveVersions ( panel . text . sectionRef , panel . text . available_versions ) ;
3369
+ let versions = Sefaria . _saveVersions ( panel . text . sectionRef , panel . text . versions ) ;
3359
3370
panel . text . versions = Sefaria . _makeVersions ( versions , false ) ;
3360
3371
}
3361
3372
0 commit comments