Merge branch 'MDL-57682-master-fix' of git://github.com/andrewnicols/moodle
authorJun Pataleta <jun@moodle.com>
Wed, 9 Sep 2020 08:10:00 +0000 (16:10 +0800)
committerJun Pataleta <jun@moodle.com>
Wed, 9 Sep 2020 08:10:00 +0000 (16:10 +0800)
media/player/videojs/amd/build/loader.min.js
media/player/videojs/amd/build/loader.min.js.map
media/player/videojs/amd/src/loader.js
media/player/videojs/db/services.php
media/player/videojs/version.php

index df21832..613704c 100644 (file)
Binary files a/media/player/videojs/amd/build/loader.min.js and b/media/player/videojs/amd/build/loader.min.js differ
index 823691b..5b2c668 100644 (file)
Binary files a/media/player/videojs/amd/build/loader.min.js.map and b/media/player/videojs/amd/build/loader.min.js.map differ
index a8c6f55..17357b2 100644 (file)
@@ -31,16 +31,15 @@ import Ajax from 'core/ajax';
 import LocalStorage from 'core/localstorage';
 import Notification from 'core/notification';
 
-/**
- * Whether this is the first load of videojs module.
- */
+/** @var {bool} Whether this is the first load of videojs module */
 let firstLoad;
 
-/**
- * The language that is used in the player
- */
+/** @var {string} The language that is used in the player */
 let language;
 
+/** @var {object} List of languages and translations for the current page */
+let langStringCache;
+
 /**
  * Set-up.
  *
@@ -108,21 +107,38 @@ const notifyVideoJS = (e, nodes) => {
  * @returns {Promise}
  */
 const getLanguageJson = () => {
-    const cached = JSON.parse(LocalStorage.get('media_videojs') || '{}');
-    if (language in cached) {
-        return Promise.resolve(cached[language]);
+    if (langStringCache) {
+        return Promise.resolve(langStringCache);
+    }
+
+    const cacheKey = `media_videojs/${language}`;
+
+    const rawCacheContent = LocalStorage.get(cacheKey);
+    if (rawCacheContent) {
+        const cacheContent = JSON.parse(rawCacheContent);
+
+        langStringCache = cacheContent;
+
+        return Promise.resolve(langStringCache);
     }
 
     const request = {
         methodname: 'media_videojs_get_language',
         args: {
-            lang: language
+            lang: language,
         },
     };
-    return Ajax.call([request])[0].then(result => {
-        cached[language] = JSON.parse(result);
-        LocalStorage.set('media_videojs', JSON.stringify(cached));
 
-        return cached[language];
-    });
+    return Ajax.call([request])[0]
+        .then(langStringData => {
+            LocalStorage.set(cacheKey, langStringData);
+
+            return langStringData;
+        })
+        .then(result => JSON.parse(result))
+        .then(langStrings => {
+            langStringCache = langStrings;
+
+            return langStrings;
+        });
 };
index 8d25e85..e96d97f 100644 (file)
@@ -33,5 +33,6 @@ $functions = [
         'type'          => 'read',
         'ajax'          => 'true',
         'capabilities'  => '',
+        'loginrequired' => false,
     ]
 ];
index 670a3e7..42b8c00 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2021052501;         // The current plugin version (Date: YYYYMMDDXX)
+$plugin->version   = 2021052502;         // The current plugin version (Date: YYYYMMDDXX)
 $plugin->requires  = 2021052500;         // Requires this Moodle version
 $plugin->component = 'media_videojs'; // Full name of the plugin (used for diagnostics).