Removing r test_mode from redux-persist, use localStorage directly and URL vars to switch
This commit is contained in:
@ -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
10
mopidy_iris/static/app.min.js
vendored
10
mopidy_iris/static/app.min.js
vendored
File diff suppressed because one or more lines are too long
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -55,21 +55,19 @@ class Debug extends React.Component {
|
||||
debug(JSON.parse(snapcast_data));
|
||||
}
|
||||
|
||||
toggleTestMode = (e) => {
|
||||
toggleTestMode = () => {
|
||||
const { uiActions: { set }, test_mode } = this.props;
|
||||
this.setState({ toggling_test_mode: true });
|
||||
set({ test_mode: !test_mode });
|
||||
|
||||
// Wait a second to allow state to update, and then refresh
|
||||
setTimeout(location.reload(), 1000);
|
||||
setTimeout(location.reload(), 2500);
|
||||
}
|
||||
|
||||
render = () => {
|
||||
const {
|
||||
uiActions,
|
||||
spotifyActions,
|
||||
history,
|
||||
test_mode,
|
||||
debug_response,
|
||||
debug_info,
|
||||
log_actions,
|
||||
@ -79,12 +77,12 @@ class Debug extends React.Component {
|
||||
access_token,
|
||||
} = this.props;
|
||||
const {
|
||||
toggling_test_mode,
|
||||
mopidy_call,
|
||||
mopidy_data,
|
||||
pusher_data,
|
||||
snapcast_data,
|
||||
} = this.state;
|
||||
const { test_mode } = window;
|
||||
|
||||
const options = (
|
||||
<Button
|
||||
@ -113,8 +111,7 @@ class Debug extends React.Component {
|
||||
<div className="input">
|
||||
<Button
|
||||
type={test_mode ? 'destructive' : null}
|
||||
working={toggling_test_mode}
|
||||
onClick={this.toggleTestMode}
|
||||
href={`?test_mode=${test_mode ? '0' : '1'}`}
|
||||
tracking={{ category: 'Debug', action: 'TestMode', label: test_mode ? 'Disable' : 'Enable' }}
|
||||
>
|
||||
<I18n path={`actions.${test_mode ? 'disable' : 'enable'}`} />
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"manifest_version": "3.44",
|
||||
"manifest_version": "3.53",
|
||||
"short_name": "Iris",
|
||||
"name": "Iris",
|
||||
"icons": [
|
||||
|
||||
Reference in New Issue
Block a user