Removing r test_mode from redux-persist, use localStorage directly and URL vars to switch

This commit is contained in:
James Barnsley
2020-11-04 21:22:44 +13:00
parent 111efe6130
commit 1395ed7662
7 changed files with 267 additions and 198 deletions

View File

@ -117732,18 +117732,9 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _util_arrays__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/arrays */ "./src/js/util/arrays.js");
/* harmony import */ var _components_URILink__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../components/URILink */ "./src/js/components/URILink.js");
/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/helpers */ "./src/js/util/helpers.js");
/* harmony import */ var _util_format__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/format */ "./src/js/util/format.js");
/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./actions */ "./src/js/services/core/actions.js");
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
/* harmony import */ var _util_library__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../util/library */ "./src/js/util/library.js");
/* harmony import */ var _util_format__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../util/format */ "./src/js/util/format.js");
/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./actions */ "./src/js/services/core/actions.js");
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@ -117756,6 +117747,17 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@ -117775,109 +117777,6 @@ var mopidyActions = __webpack_require__(/*! ../mopidy/actions.js */ "./src/js/se
var googleActions = __webpack_require__(/*! ../google/actions.js */ "./src/js/services/google/actions.js");
var spotifyActions = __webpack_require__(/*! ../spotify/actions.js */ "./src/js/services/spotify/actions.js");
/**
* Ensure we have an item in our index
* If it's not there, attempt to fetch it from our cold storage
* If it's not their either, call the provided fetch()
*
* @param {*} Object { store, action, fetch, dependents}
*/
var ensureLoaded = function ensureLoaded(_ref) {
var store = _ref.store,
_ref$containerName = _ref.containerName,
containerName = _ref$containerName === void 0 ? 'items' : _ref$containerName,
action = _ref.action,
fetch = _ref.fetch,
_ref$dependents = _ref.dependents,
dependents = _ref$dependents === void 0 ? [] : _ref$dependents,
_ref$fullDependents = _ref.fullDependents,
fullDependents = _ref$fullDependents === void 0 ? [] : _ref$fullDependents;
var uri = action.uri,
_action$options = action.options,
forceRefetch = _action$options.forceRefetch,
full = _action$options.full;
var _store$getState = store.getState(),
_store$getState$core = _store$getState.core;
_store$getState$core = _store$getState$core === void 0 ? {} : _store$getState$core;
var _store$getState$core$ = _store$getState$core[containerName];
_store$getState$core$ = _store$getState$core$ === void 0 ? {} : _store$getState$core$;
var item = _store$getState$core$[uri];
var getMissingDependents = function getMissingDependents(parent) {
var allDependents = [].concat(_toConsumableArray(dependents), _toConsumableArray(fullDependents));
if (!parent) return allDependents;
if (full) {
return allDependents.filter(function (dep) {
return parent[dep] === undefined || parent[dep] === null;
});
}
return dependents.filter(function (dep) {
return parent[dep] === undefined || parent[dep] === null;
});
};
var getDependentUris = function getDependentUris(parent) {
if (!parent) return [];
return [].concat(_toConsumableArray(dependents), _toConsumableArray(fullDependents)).reduce(function (acc, dependent) {
return [].concat(_toConsumableArray(acc), _toConsumableArray(dependent.match(new RegExp('(.*)_uri(.*)')) ? parent[dependent] : []));
}, []);
}; // Forced refetch bypasses everything
if (forceRefetch) {
console.info("Force-refetching \"".concat(uri, "\""));
fetch();
return;
} // Item already in our index?
if (item) {
if (getMissingDependents(item).length === 0) {
store.dispatch(uiActions.stopLoading(uri));
console.info("\"".concat(uri, "\" already in index"));
var dependentUris = getDependentUris(item);
if (dependentUris.length) {
console.log("Loading ".concat(dependentUris.length, " dependents"));
store.dispatch(coreActions.loadItems(dependentUris));
}
return;
}
} // What about in the coldstore?
localforage__WEBPACK_IMPORTED_MODULE_2___default.a.getItem(uri).then(function (restoredItem) {
if (!restoredItem || getMissingDependents(restoredItem).length > 0) {
fetch();
return;
}
console.info("Restoring \"".concat(uri, "\" from database"));
store.dispatch(coreActions.restoreItemsFromColdStore([restoredItem])); // We already have the dependents of our restored item, so restore them.
// We assume that because THIS item is in the coldstore, its dependents
// are as well.
var dependentUris = getDependentUris(restoredItem);
if (dependentUris.length > 0) {
console.info("Restoring ".concat(dependentUris.length, " dependents from database"));
var restoreAllDependents = dependentUris.map(function (dependentUri) {
return localforage__WEBPACK_IMPORTED_MODULE_2___default.a.getItem(dependentUri);
});
Promise.all(restoreAllDependents).then(function (dependentItems) {
store.dispatch(coreActions.restoreItemsFromColdStore(Object(lodash__WEBPACK_IMPORTED_MODULE_3__["compact"])(dependentItems) // Squash nulls (ie items not found in coldstore)
));
});
}
});
};
var CoreMiddleware = function () {
return function (store) {
@ -117885,13 +117784,13 @@ var CoreMiddleware = function () {
return function () {
var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _store$getState2 = store.getState(),
core = _store$getState2.core,
_store$getState2$ui = _store$getState2.ui,
allow_reporting = _store$getState2$ui.allow_reporting,
log_actions = _store$getState2$ui.log_actions,
mopidy = _store$getState2.mopidy,
spotify = _store$getState2.spotify;
var _store$getState = store.getState(),
core = _store$getState.core,
_store$getState$ui = _store$getState.ui,
allow_reporting = _store$getState$ui.allow_reporting,
log_actions = _store$getState$ui.log_actions,
mopidy = _store$getState.mopidy,
spotify = _store$getState.spotify;
window.localForage = localforage__WEBPACK_IMPORTED_MODULE_2___default.a; // Attach store to window variable. This enables debug tools to directly call on
// store.getState()
@ -117974,7 +117873,7 @@ var CoreMiddleware = function () {
break;
case 'UNSUPPORTED_ACTION':
store.dispatch(Object(_actions__WEBPACK_IMPORTED_MODULE_8__["handleException"])("Action failed (".concat(action.name, ")"), {
store.dispatch(Object(_actions__WEBPACK_IMPORTED_MODULE_9__["handleException"])("Action failed (".concat(action.name, ")"), {
description: 'Not supported on this type of object'
}));
break;
@ -118067,12 +117966,12 @@ var CoreMiddleware = function () {
{
var query = action.query;
var _store$getState3 = store.getState(),
_store$getState3$ui = _store$getState3.ui,
_allow_reporting = _store$getState3$ui.allow_reporting,
_store$getState3$ui$u = _store$getState3$ui.uri_schemes_search_enabled,
uri_schemes_search_enabled = _store$getState3$ui$u === void 0 ? [] : _store$getState3$ui$u,
search_settings = _store$getState3$ui.search_settings;
var _store$getState2 = store.getState(),
_store$getState2$ui = _store$getState2.ui,
_allow_reporting = _store$getState2$ui.allow_reporting,
_store$getState2$ui$u = _store$getState2$ui.uri_schemes_search_enabled,
uri_schemes_search_enabled = _store$getState2$ui$u === void 0 ? [] : _store$getState2$ui$u,
search_settings = _store$getState2$ui.search_settings;
if (_allow_reporting) {
react_ga__WEBPACK_IMPORTED_MODULE_1__["default"].event({
@ -118107,18 +118006,18 @@ var CoreMiddleware = function () {
resultType = action.resultType,
results = action.results;
var _store$getState4 = store.getState(),
_store$getState4$core = _store$getState4.core;
var _store$getState3 = store.getState(),
_store$getState3$core = _store$getState3.core;
_store$getState4$core = _store$getState4$core === void 0 ? {} : _store$getState4$core;
var _store$getState4$core2 = _store$getState4$core.search_results;
_store$getState4$core2 = _store$getState4$core2 === void 0 ? {} : _store$getState4$core2;
var _store$getState4$core3 = _store$getState4$core2.query;
_store$getState4$core3 = _store$getState4$core3 === void 0 ? {} : _store$getState4$core3;
_store$getState3$core = _store$getState3$core === void 0 ? {} : _store$getState3$core;
var _store$getState3$core2 = _store$getState3$core.search_results;
_store$getState3$core2 = _store$getState3$core2 === void 0 ? {} : _store$getState3$core2;
var _store$getState3$core3 = _store$getState3$core2.query;
_store$getState3$core3 = _store$getState3$core3 === void 0 ? {} : _store$getState3$core3;
var prevTerm = _store$getState4$core3.term,
prevType = _store$getState4$core3.type,
allResults = _objectWithoutProperties(_store$getState4$core2, ["query"]); // Add to our existing results, so long as the search term is the same
var prevTerm = _store$getState3$core3.term,
prevType = _store$getState3$core3.type,
allResults = _objectWithoutProperties(_store$getState3$core2, ["query"]); // Add to our existing results, so long as the search term is the same
var search_results = _objectSpread({
@ -118136,17 +118035,13 @@ var CoreMiddleware = function () {
break;
}
case 'RESTART':
location.reload();
break;
case 'PLAYLIST_TRACKS_ADDED':
{
var key = action.key,
tracks_uris = action.tracks_uris;
var _store$getState5 = store.getState(),
asset = _store$getState5.core.items[key];
var _store$getState4 = store.getState(),
asset = _store$getState4.core.items[key];
store.dispatch(uiActions.createNotification({
content: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
@ -118161,7 +118056,6 @@ var CoreMiddleware = function () {
switch (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__["uriSource"])(key)) {
case 'spotify':
console.log("GETTING", key);
store.dispatch(spotifyActions.getPlaylist(key));
break;
@ -118266,7 +118160,7 @@ var CoreMiddleware = function () {
}
};
ensureLoaded({
Object(_util_library__WEBPACK_IMPORTED_MODULE_7__["ensureLoaded"])({
store: store,
action: action,
fetch: _fetch,
@ -118298,7 +118192,7 @@ var CoreMiddleware = function () {
;
};
ensureLoaded({
Object(_util_library__WEBPACK_IMPORTED_MODULE_7__["ensureLoaded"])({
store: store,
action: action,
fetch: _fetch2,
@ -118328,7 +118222,7 @@ var CoreMiddleware = function () {
}
};
ensureLoaded({
Object(_util_library__WEBPACK_IMPORTED_MODULE_7__["ensureLoaded"])({
store: store,
action: action,
fetch: _fetch3,
@ -118358,7 +118252,7 @@ var CoreMiddleware = function () {
}
};
ensureLoaded({
Object(_util_library__WEBPACK_IMPORTED_MODULE_7__["ensureLoaded"])({
store: store,
action: action,
fetch: _fetch4,
@ -118388,7 +118282,7 @@ var CoreMiddleware = function () {
}
};
ensureLoaded({
Object(_util_library__WEBPACK_IMPORTED_MODULE_7__["ensureLoaded"])({
store: store,
action: action,
fetch: _fetch5,
@ -118411,7 +118305,7 @@ var CoreMiddleware = function () {
}
};
ensureLoaded({
Object(_util_library__WEBPACK_IMPORTED_MODULE_7__["ensureLoaded"])({
store: store,
action: action,
fetch: fetch,
@ -118522,7 +118416,7 @@ var CoreMiddleware = function () {
case 'CURRENT_TRACK_LOADED':
{
var track = Object(_util_format__WEBPACK_IMPORTED_MODULE_7__["formatTrack"])(action.track);
var track = Object(_util_format__WEBPACK_IMPORTED_MODULE_8__["formatTrack"])(action.track);
store.dispatch(coreActions.itemLoaded(track));
next(_objectSpread(_objectSpread({}, action), {}, {
track: track
@ -118532,7 +118426,7 @@ var CoreMiddleware = function () {
case 'QUEUE_LOADED':
store.dispatch(coreActions.tracksLoaded(action.tracks));
action.tracks = Object(_util_format__WEBPACK_IMPORTED_MODULE_7__["formatTracks"])(action.tracks);
action.tracks = Object(_util_format__WEBPACK_IMPORTED_MODULE_8__["formatTracks"])(action.tracks);
next(action);
break;
@ -118584,7 +118478,7 @@ var CoreMiddleware = function () {
if (action.records_type == 'track') {
records = Object(_util_format__WEBPACK_IMPORTED_MODULE_7__["formatTracks"])(records);
records = Object(_util_format__WEBPACK_IMPORTED_MODULE_8__["formatTracks"])(records);
}
var records_type_plural = "".concat(action.records_type, "s");
@ -118632,7 +118526,7 @@ var CoreMiddleware = function () {
break;
case 'ADD_PINNED':
store.dispatch(coreActions.updatePinned([].concat(_toConsumableArray(store.getState().core.pinned), [Object(_util_format__WEBPACK_IMPORTED_MODULE_7__["formatSimpleObject"])(action.item)])));
store.dispatch(coreActions.updatePinned([].concat(_toConsumableArray(store.getState().core.pinned), [Object(_util_format__WEBPACK_IMPORTED_MODULE_8__["formatSimpleObject"])(action.item)])));
next(action);
break;
@ -133127,6 +133021,192 @@ console.warn('WARN: note that setting Flac.onready handler after Flac.isReady()
/***/ }),
/***/ "./src/js/util/library.js":
/*!********************************!*\
!*** ./src/js/util/library.js ***!
\********************************/
/*! exports provided: getMissingDependents, getDependentUris, ensureLoaded, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMissingDependents", function() { return getMissingDependents; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDependentUris", function() { return getDependentUris; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ensureLoaded", function() { return ensureLoaded; });
/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js");
/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var localforage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! localforage */ "./node_modules/localforage/dist/localforage.js");
/* harmony import */ var localforage__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(localforage__WEBPACK_IMPORTED_MODULE_1__);
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
var coreActions = __webpack_require__(/*! ../services/core/actions.js */ "./src/js/services/core/actions.js");
var uiActions = __webpack_require__(/*! ../services/ui/actions.js */ "./src/js/services/ui/actions.js");
/**
* Inspect object to check for missing dependent properties
*
* @param {Object} = item, dependents, fullDependents, full
*/
var getMissingDependents = function getMissingDependents(_ref) {
var item = _ref.item,
_ref$dependents = _ref.dependents,
dependents = _ref$dependents === void 0 ? [] : _ref$dependents,
_ref$fullDependents = _ref.fullDependents,
fullDependents = _ref$fullDependents === void 0 ? [] : _ref$fullDependents,
full = _ref.full;
var allDependents = [].concat(_toConsumableArray(dependents), _toConsumableArray(fullDependents));
if (!item) return allDependents;
if (full) {
return allDependents.filter(function (dep) {
return item[dep] === undefined || item[dep] === null;
});
}
return dependents.filter(function (dep) {
return item[dep] === undefined || item[dep] === null;
});
};
/**
* Pluck all the URIs out of our dependent properties.
*
* @param {Object} = item, dependents, fullDependents
*/
var getDependentUris = function getDependentUris(_ref2) {
var item = _ref2.item,
_ref2$dependents = _ref2.dependents,
dependents = _ref2$dependents === void 0 ? [] : _ref2$dependents,
_ref2$fullDependents = _ref2.fullDependents,
fullDependents = _ref2$fullDependents === void 0 ? [] : _ref2$fullDependents;
if (!item) return [];
return [].concat(_toConsumableArray(dependents), _toConsumableArray(fullDependents)).reduce(function (acc, dep) {
return [].concat(_toConsumableArray(acc), _toConsumableArray(dep.match(new RegExp('(.*)_uri(.*)')) ? item[dep] : []));
}, []);
};
/**
* Ensure we have an item in our index
* If it's not there, attempt to fetch it from our cold storage
* If it's not their either, call the provided fetch()
*
* @param {*} Object { store, action, fetch, dependents}
*/
var ensureLoaded = function ensureLoaded(_ref3) {
var store = _ref3.store,
_ref3$containerName = _ref3.containerName,
containerName = _ref3$containerName === void 0 ? 'items' : _ref3$containerName,
action = _ref3.action,
fetch = _ref3.fetch,
_ref3$dependents = _ref3.dependents,
dependents = _ref3$dependents === void 0 ? [] : _ref3$dependents,
_ref3$fullDependents = _ref3.fullDependents,
fullDependents = _ref3$fullDependents === void 0 ? [] : _ref3$fullDependents;
var uri = action.uri,
_action$options = action.options,
forceRefetch = _action$options.forceRefetch,
full = _action$options.full;
var _store$getState = store.getState(),
_store$getState$core = _store$getState.core;
_store$getState$core = _store$getState$core === void 0 ? {} : _store$getState$core;
var _store$getState$core$ = _store$getState$core[containerName];
_store$getState$core$ = _store$getState$core$ === void 0 ? {} : _store$getState$core$;
var item = _store$getState$core$[uri]; // Forced refetch bypasses everything
if (forceRefetch) {
console.info("Force-refetching \"".concat(uri, "\""));
fetch();
return;
}
var missingDependents = function missingDependents(itemToCheck) {
return getMissingDependents({
item: itemToCheck,
dependents: dependents,
fullDependents: fullDependents,
full: full
});
};
var dependentUris = function dependentUris(itemToCheck) {
return getDependentUris({
item: itemToCheck,
dependents: dependents,
fullDependents: fullDependents
});
}; // Item already in our index?
if (item) {
if (missingDependents(item).length === 0) {
store.dispatch(uiActions.stopLoading(uri));
console.info("\"".concat(uri, "\" already in index"));
var uris = dependentUris(item);
if (uris.length) {
console.log("Loading ".concat(uris.length, " dependents"));
store.dispatch(coreActions.loadItems(uris));
}
return;
}
} // What about in the coldstore?
localforage__WEBPACK_IMPORTED_MODULE_1___default.a.getItem(uri).then(function (restoredItem) {
if (!restoredItem || missingDependents(restoredItem).length > 0) {
fetch();
return;
}
console.info("Restoring \"".concat(uri, "\" from database"));
store.dispatch(coreActions.restoreItemsFromColdStore([restoredItem])); // We already have the dependents of our restored item, so restore them.
// We assume that because THIS item is in the coldstore, its dependents
// are as well.
var uris = dependentUris(restoredItem);
if (uris.length > 0) {
console.info("Restoring ".concat(uris.length, " dependents from database"));
var restoreAllDependents = uris.map(function (dependentUri) {
return localforage__WEBPACK_IMPORTED_MODULE_1___default.a.getItem(dependentUri);
});
Promise.all(restoreAllDependents).then(function (dependentItems) {
store.dispatch(coreActions.restoreItemsFromColdStore(Object(lodash__WEBPACK_IMPORTED_MODULE_0__["compact"])(dependentItems) // Squash nulls (ie items not found in coldstore)
));
});
}
});
};
/* harmony default export */ __webpack_exports__["default"] = ({
getMissingDependents: getMissingDependents,
getDependentUris: getDependentUris,
ensureLoaded: ensureLoaded
});
/***/ }),
/***/ "./src/js/util/selectors.js":
/*!**********************************!*\
!*** ./src/js/util/selectors.js ***!
@ -134767,7 +134847,7 @@ var Debug = /*#__PURE__*/function (_React$Component) {
debug(JSON.parse(snapcast_data));
});
_defineProperty(_assertThisInitialized(_this), "toggleTestMode", function (e) {
_defineProperty(_assertThisInitialized(_this), "toggleTestMode", function () {
var _this$props = _this.props,
set = _this$props.uiActions.set,
test_mode = _this$props.test_mode;
@ -134780,15 +134860,13 @@ var Debug = /*#__PURE__*/function (_React$Component) {
test_mode: !test_mode
}); // Wait a second to allow state to update, and then refresh
setTimeout(location.reload(), 1000);
setTimeout(location.reload(), 2500);
});
_defineProperty(_assertThisInitialized(_this), "render", function () {
var _this$props2 = _this.props,
uiActions = _this$props2.uiActions,
spotifyActions = _this$props2.spotifyActions,
history = _this$props2.history,
test_mode = _this$props2.test_mode,
debug_response = _this$props2.debug_response,
debug_info = _this$props2.debug_info,
log_actions = _this$props2.log_actions,
@ -134797,11 +134875,12 @@ var Debug = /*#__PURE__*/function (_React$Component) {
log_snapcast = _this$props2.log_snapcast,
access_token = _this$props2.access_token;
var _this$state2 = _this.state,
toggling_test_mode = _this$state2.toggling_test_mode,
mopidy_call = _this$state2.mopidy_call,
mopidy_data = _this$state2.mopidy_data,
pusher_data = _this$state2.pusher_data,
snapcast_data = _this$state2.snapcast_data;
var _window = window,
test_mode = _window.test_mode;
var options = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"], {
onClick: _this.onBack,
noHover: true,
@ -134864,8 +134943,7 @@ var Debug = /*#__PURE__*/function (_React$Component) {
"data-qa-file": "Debug"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"], {
type: test_mode ? 'destructive' : null,
working: toggling_test_mode,
onClick: _this.toggleTestMode,
href: "?test_mode=".concat(test_mode ? '0' : '1'),
tracking: {
category: 'Debug',
action: 'TestMode',

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -106,7 +106,7 @@
// Release details
// These are automatically injected to built HTML
var build = "1604338837";
var build = "1604478005";
var version = "3.53.1";
// Construct the script tag
@ -119,17 +119,14 @@
// Check for test mode. This is toggled under Settings > Debug > Test mode or can
// be manually triggered with the URL var "?test_mode=1"
try {
var ui = JSON.parse(localStorage.getItem('ui') );
window.test_mode = (
typeof(ui) !== 'undefined'
&& ui
&& typeof(ui.test_mode) !== 'undefined'
&& ui.test_mode
) || window.location.href.indexOf('test_mode=1') > -1;
} catch(error){
console.error(error);
if (window.location.href.indexOf('test_mode=1') > -1) {
window.test_mode = true;
localStorage.setItem('test_mode', true);
} else if (window.location.href.indexOf('test_mode=0') > -1) {
window.test_mode = false;
localStorage.removeItem('test_mode');
} else {
window.test_mode = localStorage.getItem('test_mode');
}
// Test mode, use un-minified code