Common components refactor #1
3 changed files with 171 additions and 266 deletions
239
build/index.js
239
build/index.js
|
@ -1025,13 +1025,7 @@ Object.defineProperty(exports, "__esModule", {
|
||||||
value: true
|
value: true
|
||||||
});
|
});
|
||||||
|
|
||||||
var _jsonrpc = __webpack_require__(16);
|
__webpack_require__(16);
|
||||||
|
|
||||||
var _jsonrpc2 = _interopRequireDefault(_jsonrpc);
|
|
||||||
|
|
||||||
__webpack_require__(17);
|
|
||||||
|
|
||||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
||||||
|
|
||||||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
||||||
|
|
||||||
|
@ -1043,8 +1037,43 @@ var Lbry = {
|
||||||
pendingPublishTimeout: 20 * 60 * 1000
|
pendingPublishTimeout: 20 * 60 * 1000
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function checkAndParse(response) {
|
||||||
|
if (response.status >= 200 && response.status < 300) {
|
||||||
|
return response.json();
|
||||||
|
} else {
|
||||||
|
return response.json().then(function (json) {
|
||||||
|
var error = void 0;
|
||||||
|
if (json.error) {
|
||||||
|
error = new Error(json.error);
|
||||||
|
} else {
|
||||||
|
error = new Error("Protocol error with unknown response signature");
|
||||||
|
}
|
||||||
|
return Promise.reject(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function apiCall(method, params, resolve, reject) {
|
function apiCall(method, params, resolve, reject) {
|
||||||
return _jsonrpc2.default.call(Lbry.daemonConnectionString, method, params, resolve, reject, reject);
|
var counter = new Date().getTime();
|
||||||
|
var options = {
|
||||||
|
method: "POST",
|
||||||
|
body: JSON.stringify({
|
||||||
|
jsonrpc: "2.0",
|
||||||
|
method: method,
|
||||||
|
params: params,
|
||||||
|
id: counter
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
return fetch(Lbry.daemonConnectionString, options).then(checkAndParse).then(function (response) {
|
||||||
|
var error = response.error || response.result && response.result.error;
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
return reject(error);
|
||||||
|
} else {
|
||||||
|
return resolve(response.result);
|
||||||
|
}
|
||||||
|
}).catch(reject);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getLocal(key) {
|
function getLocal(key) {
|
||||||
|
@ -1149,27 +1178,32 @@ function pendingPublishToDummyFileInfo(_ref5) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// core
|
// core
|
||||||
|
Lbry.status = function () {
|
||||||
|
return new Promise(function (resolve, reject) {
|
||||||
|
apiCall('status', {}, function (status) {
|
||||||
|
resolve(status);
|
||||||
|
}, reject);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
Lbry.connectPromise = null;
|
Lbry.connectPromise = null;
|
||||||
Lbry.connect = function () {
|
Lbry.connect = function () {
|
||||||
if (Lbry.connectPromise === null) {
|
if (Lbry.connectPromise === null) {
|
||||||
Lbry.connectPromise = new Promise(function (resolve, reject) {
|
Lbry.connectPromise = new Promise(function (resolve, reject) {
|
||||||
var tryNum = 0;
|
var tryNum = 0;
|
||||||
|
|
||||||
var checkDaemonStarted = function checkDaemonStarted(resolve, reject) {
|
|
||||||
tryNum += 1;
|
|
||||||
new Promise(function () {
|
|
||||||
apiCall('status', {}, resolve, reject);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// Check every half second to see if the daemon is accepting connections
|
// Check every half second to see if the daemon is accepting connections
|
||||||
checkDaemonStarted(resolve, function () {
|
function checkDaemonStarted() {
|
||||||
|
tryNum += 1;
|
||||||
|
Lbry.status().then(resolve).catch(function () {
|
||||||
if (tryNum <= CHECK_DAEMON_STARTED_TRY_NUMBER) {
|
if (tryNum <= CHECK_DAEMON_STARTED_TRY_NUMBER) {
|
||||||
setTimeout(checkDaemonStarted, tryNum < 50 ? 400 : 1000);
|
setTimeout(checkDaemonStarted, tryNum < 50 ? 400 : 1000);
|
||||||
} else {
|
} else {
|
||||||
reject(new Error('Unable to connect to LBRY'));
|
reject(new Error('Unable to connect to LBRY'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
checkDaemonStarted();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1235,13 +1269,6 @@ Lbry.getMediaType = function (contentType, fileName) {
|
||||||
* Wrappers for API methods to simulate missing or future behavior. Unlike the old-style stubs,
|
* Wrappers for API methods to simulate missing or future behavior. Unlike the old-style stubs,
|
||||||
* these are designed to be transparent wrappers around the corresponding API methods.
|
* these are designed to be transparent wrappers around the corresponding API methods.
|
||||||
*/
|
*/
|
||||||
Lbry.status = function () {
|
|
||||||
return new Promise(function (resolve, reject) {
|
|
||||||
apiCall('status', {}, function (status) {
|
|
||||||
resolve(status);
|
|
||||||
}, reject);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns results from the file_list API method, plus dummy entries for pending publishes.
|
* Returns results from the file_list API method, plus dummy entries for pending publishes.
|
||||||
|
@ -1571,7 +1598,7 @@ Object.defineProperty(exports, "__esModule", {
|
||||||
|
|
||||||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
||||||
|
|
||||||
var _querystring = __webpack_require__(20);
|
var _querystring = __webpack_require__(19);
|
||||||
|
|
||||||
var _querystring2 = _interopRequireDefault(_querystring);
|
var _querystring2 = _interopRequireDefault(_querystring);
|
||||||
|
|
||||||
|
@ -1662,7 +1689,7 @@ Lbryapi.call = function (resource, action) {
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.default = Lbryapi;
|
exports.default = Lbryapi;
|
||||||
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(19)))
|
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(18)))
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 8 */
|
/* 8 */
|
||||||
|
@ -2165,7 +2192,7 @@ Object.defineProperty(exports, 'doFetchRewardedContent', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _cost_info = __webpack_require__(23);
|
var _cost_info = __webpack_require__(22);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'doFetchCostInfoForUri', {
|
Object.defineProperty(exports, 'doFetchCostInfoForUri', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2174,7 +2201,7 @@ Object.defineProperty(exports, 'doFetchCostInfoForUri', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _file_info = __webpack_require__(24);
|
var _file_info = __webpack_require__(23);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'doFetchFileInfo', {
|
Object.defineProperty(exports, 'doFetchFileInfo', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2195,7 +2222,7 @@ Object.defineProperty(exports, 'doFetchFileInfosAndPublishedClaims', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _search = __webpack_require__(25);
|
var _search = __webpack_require__(24);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'doSearch', {
|
Object.defineProperty(exports, 'doSearch', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2204,7 +2231,7 @@ Object.defineProperty(exports, 'doSearch', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _wallet = __webpack_require__(26);
|
var _wallet = __webpack_require__(25);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'doUpdateBalance', {
|
Object.defineProperty(exports, 'doUpdateBalance', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2291,7 +2318,7 @@ Object.defineProperty(exports, 'toQueryString', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _formatCredits = __webpack_require__(28);
|
var _formatCredits = __webpack_require__(27);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'formatCredits', {
|
Object.defineProperty(exports, 'formatCredits', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2306,7 +2333,7 @@ Object.defineProperty(exports, 'formatFullPrice', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _claims2 = __webpack_require__(29);
|
var _claims2 = __webpack_require__(28);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'claimsReducer', {
|
Object.defineProperty(exports, 'claimsReducer', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2315,7 +2342,7 @@ Object.defineProperty(exports, 'claimsReducer', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _cost_info2 = __webpack_require__(30);
|
var _cost_info2 = __webpack_require__(29);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'costInfoReducer', {
|
Object.defineProperty(exports, 'costInfoReducer', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2324,7 +2351,7 @@ Object.defineProperty(exports, 'costInfoReducer', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _file_info2 = __webpack_require__(31);
|
var _file_info2 = __webpack_require__(30);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'fileInfoReducer', {
|
Object.defineProperty(exports, 'fileInfoReducer', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2333,7 +2360,7 @@ Object.defineProperty(exports, 'fileInfoReducer', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _notifications2 = __webpack_require__(32);
|
var _notifications2 = __webpack_require__(31);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'notificationsReducer', {
|
Object.defineProperty(exports, 'notificationsReducer', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2342,7 +2369,7 @@ Object.defineProperty(exports, 'notificationsReducer', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _search2 = __webpack_require__(33);
|
var _search2 = __webpack_require__(32);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'searchReducer', {
|
Object.defineProperty(exports, 'searchReducer', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2351,7 +2378,7 @@ Object.defineProperty(exports, 'searchReducer', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _wallet2 = __webpack_require__(34);
|
var _wallet2 = __webpack_require__(33);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'walletReducer', {
|
Object.defineProperty(exports, 'walletReducer', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2360,7 +2387,7 @@ Object.defineProperty(exports, 'walletReducer', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _notifications3 = __webpack_require__(35);
|
var _notifications3 = __webpack_require__(34);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'selectNotification', {
|
Object.defineProperty(exports, 'selectNotification', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2558,7 +2585,7 @@ Object.defineProperty(exports, 'selectRewardContentClaimIds', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _cost_info3 = __webpack_require__(36);
|
var _cost_info3 = __webpack_require__(35);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'makeSelectFetchingCostInfoForUri', {
|
Object.defineProperty(exports, 'makeSelectFetchingCostInfoForUri', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2741,7 +2768,7 @@ Object.defineProperty(exports, 'selectActiveHistoryEntry', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var _search3 = __webpack_require__(37);
|
var _search3 = __webpack_require__(36);
|
||||||
|
|
||||||
Object.defineProperty(exports, 'makeSelectSearchUris', {
|
Object.defineProperty(exports, 'makeSelectSearchUris', {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
|
@ -2932,90 +2959,6 @@ function doNotify(data) {
|
||||||
/* 16 */
|
/* 16 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
|
||||||
value: true
|
|
||||||
});
|
|
||||||
var jsonrpc = {};
|
|
||||||
|
|
||||||
jsonrpc.call = function (connectionString, method, params, callback, errorCallback, connectFailedCallback) {
|
|
||||||
function checkAndParse(response) {
|
|
||||||
if (response.status >= 200 && response.status < 300) {
|
|
||||||
return response.json();
|
|
||||||
}
|
|
||||||
return response.json().then(function (json) {
|
|
||||||
var error = void 0;
|
|
||||||
if (json.error) {
|
|
||||||
error = new Error(json.error);
|
|
||||||
} else {
|
|
||||||
error = new Error('Protocol error with unknown response signature');
|
|
||||||
}
|
|
||||||
return Promise.reject(error);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
var url = connectionString;
|
|
||||||
var options = {
|
|
||||||
method: 'POST',
|
|
||||||
body: JSON.stringify({
|
|
||||||
jsonrpc: '2.0',
|
|
||||||
method: method,
|
|
||||||
params: params,
|
|
||||||
id: new Date().getTime()
|
|
||||||
})
|
|
||||||
};
|
|
||||||
|
|
||||||
return fetch(url, options).then(checkAndParse).then(function (response) {
|
|
||||||
var error = response.error || response.result && response.result.error;
|
|
||||||
|
|
||||||
if (!error && typeof callback === 'function') {
|
|
||||||
return callback(response.result);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (error && typeof errorCallback === 'function') {
|
|
||||||
return errorCallback(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
var errorEvent = new CustomEvent('unhandledError', {
|
|
||||||
detail: {
|
|
||||||
connectionString: connectionString,
|
|
||||||
method: method,
|
|
||||||
params: params,
|
|
||||||
code: error.code,
|
|
||||||
message: error.message || error,
|
|
||||||
data: error.data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
document.dispatchEvent(errorEvent);
|
|
||||||
|
|
||||||
return Promise.resolve();
|
|
||||||
}).catch(function (error) {
|
|
||||||
if (connectFailedCallback) {
|
|
||||||
return connectFailedCallback(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
var errorEvent = new CustomEvent('unhandledError', {
|
|
||||||
detail: {
|
|
||||||
connectionString: connectionString,
|
|
||||||
method: method,
|
|
||||||
params: params,
|
|
||||||
code: error.response && error.response.status,
|
|
||||||
message: __('Connection to API server failed')
|
|
||||||
}
|
|
||||||
});
|
|
||||||
document.dispatchEvent(errorEvent);
|
|
||||||
return Promise.resolve();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.default = jsonrpc;
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
/* 17 */
|
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
/* WEBPACK VAR INJECTION */(function(global) {/*
|
/* WEBPACK VAR INJECTION */(function(global) {/*
|
||||||
* Copyright 2016 Google Inc. All rights reserved.
|
* Copyright 2016 Google Inc. All rights reserved.
|
||||||
|
@ -3192,10 +3135,10 @@ exports.default = jsonrpc;
|
||||||
scope['Proxy'] = scope.Proxy;
|
scope['Proxy'] = scope.Proxy;
|
||||||
})(typeof module !== 'undefined' && module['exports'] ? global : window);
|
})(typeof module !== 'undefined' && module['exports'] ? global : window);
|
||||||
|
|
||||||
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(18)))
|
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(17)))
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 18 */
|
/* 17 */
|
||||||
/***/ (function(module, exports) {
|
/***/ (function(module, exports) {
|
||||||
|
|
||||||
var g;
|
var g;
|
||||||
|
@ -3222,7 +3165,7 @@ module.exports = g;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 19 */
|
/* 18 */
|
||||||
/***/ (function(module, exports) {
|
/***/ (function(module, exports) {
|
||||||
|
|
||||||
// shim for using process in browser
|
// shim for using process in browser
|
||||||
|
@ -3412,18 +3355,18 @@ process.umask = function() { return 0; };
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 20 */
|
/* 19 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
|
||||||
exports.decode = exports.parse = __webpack_require__(21);
|
exports.decode = exports.parse = __webpack_require__(20);
|
||||||
exports.encode = exports.stringify = __webpack_require__(22);
|
exports.encode = exports.stringify = __webpack_require__(21);
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 21 */
|
/* 20 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -3514,7 +3457,7 @@ var isArray = Array.isArray || function (xs) {
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 22 */
|
/* 21 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -3606,7 +3549,7 @@ var objectKeys = Object.keys || function (obj) {
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 23 */
|
/* 22 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -3666,7 +3609,7 @@ function doFetchCostInfoForUri(uri) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 24 */
|
/* 23 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -3759,7 +3702,7 @@ function doFetchFileInfosAndPublishedClaims() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 25 */
|
/* 24 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -3842,7 +3785,7 @@ function doSearch(rawQuery, currentPageNotSearchHandler) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 26 */
|
/* 25 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -3866,7 +3809,7 @@ var _action_types = __webpack_require__(0);
|
||||||
|
|
||||||
var ACTIONS = _interopRequireWildcard(_action_types);
|
var ACTIONS = _interopRequireWildcard(_action_types);
|
||||||
|
|
||||||
var _modal_types = __webpack_require__(27);
|
var _modal_types = __webpack_require__(26);
|
||||||
|
|
||||||
var MODALS = _interopRequireWildcard(_modal_types);
|
var MODALS = _interopRequireWildcard(_modal_types);
|
||||||
|
|
||||||
|
@ -4050,7 +3993,7 @@ function doSendSupport(amount, claimId, uri, successCallback, errorCallback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 27 */
|
/* 26 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -4076,7 +4019,7 @@ var AFFIRM_PURCHASE = exports.AFFIRM_PURCHASE = 'affirm_purchase';
|
||||||
var CONFIRM_CLAIM_REVOKE = exports.CONFIRM_CLAIM_REVOKE = 'confirmClaimRevoke';
|
var CONFIRM_CLAIM_REVOKE = exports.CONFIRM_CLAIM_REVOKE = 'confirmClaimRevoke';
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 28 */
|
/* 27 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -4114,7 +4057,7 @@ function formatFullPrice(amount) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 29 */
|
/* 28 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -4422,7 +4365,7 @@ function claimsReducer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 30 */
|
/* 29 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -4480,7 +4423,7 @@ function costInfoReducer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 31 */
|
/* 30 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -4677,7 +4620,7 @@ function fileInfoReducer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 32 */
|
/* 31 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -4742,7 +4685,7 @@ function notificationsReducer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 33 */
|
/* 32 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -4801,7 +4744,7 @@ function searchReducer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 34 */
|
/* 33 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -4985,7 +4928,7 @@ function walletReducer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 35 */
|
/* 34 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -5007,7 +4950,7 @@ var selectNotification = exports.selectNotification = (0, _reselect.createSelect
|
||||||
});
|
});
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 36 */
|
/* 35 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
@ -5051,7 +4994,7 @@ var makeSelectFetchingCostInfoForUri = exports.makeSelectFetchingCostInfoForUri
|
||||||
};
|
};
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
/* 37 */
|
/* 36 */
|
||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
const jsonrpc = {};
|
|
||||||
|
|
||||||
jsonrpc.call = (
|
|
||||||
connectionString,
|
|
||||||
method,
|
|
||||||
params,
|
|
||||||
callback,
|
|
||||||
errorCallback,
|
|
||||||
connectFailedCallback
|
|
||||||
) => {
|
|
||||||
function checkAndParse(response) {
|
|
||||||
if (response.status >= 200 && response.status < 300) {
|
|
||||||
return response.json();
|
|
||||||
}
|
|
||||||
return response.json().then(json => {
|
|
||||||
let error;
|
|
||||||
if (json.error) {
|
|
||||||
error = new Error(json.error);
|
|
||||||
} else {
|
|
||||||
error = new Error('Protocol error with unknown response signature');
|
|
||||||
}
|
|
||||||
return Promise.reject(error);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const url = connectionString;
|
|
||||||
const options = {
|
|
||||||
method: 'POST',
|
|
||||||
body: JSON.stringify({
|
|
||||||
jsonrpc: '2.0',
|
|
||||||
method,
|
|
||||||
params,
|
|
||||||
id: new Date().getTime(),
|
|
||||||
}),
|
|
||||||
};
|
|
||||||
|
|
||||||
return fetch(url, options)
|
|
||||||
.then(checkAndParse)
|
|
||||||
.then(response => {
|
|
||||||
const error = response.error || (response.result && response.result.error);
|
|
||||||
|
|
||||||
if (!error && typeof callback === 'function') {
|
|
||||||
return callback(response.result);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (error && typeof errorCallback === 'function') {
|
|
||||||
return errorCallback(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
const errorEvent = new CustomEvent('unhandledError', {
|
|
||||||
detail: {
|
|
||||||
connectionString,
|
|
||||||
method,
|
|
||||||
params,
|
|
||||||
code: error.code,
|
|
||||||
message: error.message || error,
|
|
||||||
data: error.data,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
document.dispatchEvent(errorEvent);
|
|
||||||
|
|
||||||
return Promise.resolve();
|
|
||||||
})
|
|
||||||
.catch(error => {
|
|
||||||
if (connectFailedCallback) {
|
|
||||||
return connectFailedCallback(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
const errorEvent = new CustomEvent('unhandledError', {
|
|
||||||
detail: {
|
|
||||||
connectionString,
|
|
||||||
method,
|
|
||||||
params,
|
|
||||||
code: error.response && error.response.status,
|
|
||||||
message: __('Connection to API server failed'),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
document.dispatchEvent(errorEvent);
|
|
||||||
return Promise.resolve();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export default jsonrpc;
|
|
91
src/lbry.js
91
src/lbry.js
|
@ -1,4 +1,4 @@
|
||||||
import jsonrpc from 'jsonrpc';
|
// @flow
|
||||||
import 'proxy-polyfill';
|
import 'proxy-polyfill';
|
||||||
|
|
||||||
const CHECK_DAEMON_STARTED_TRY_NUMBER = 200;
|
const CHECK_DAEMON_STARTED_TRY_NUMBER = 200;
|
||||||
|
@ -9,8 +9,52 @@ const Lbry = {
|
||||||
pendingPublishTimeout: 20 * 60 * 1000,
|
pendingPublishTimeout: 20 * 60 * 1000,
|
||||||
};
|
};
|
||||||
|
|
||||||
We still need the We still need the `connect` method which is called on app startup, but I guess this is actually desktop-app specific, so probably needs to be moved to the app repo.
|
|||||||
function apiCall(method, params, resolve, reject) {
|
function checkAndParse(response) {
|
||||||
return jsonrpc.call(Lbry.daemonConnectionString, method, params, resolve, reject, reject);
|
if (response.status >= 200 && response.status < 300) {
|
||||||
|
return response.json();
|
||||||
|
} else {
|
||||||
|
return response.json().then(json => {
|
||||||
|
let error;
|
||||||
|
if (json.error) {
|
||||||
|
error = new Error(json.error);
|
||||||
|
} else {
|
||||||
|
error = new Error("Protocol error with unknown response signature");
|
||||||
|
}
|
||||||
|
return Promise.reject(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function apiCall(
|
||||||
|
method: string,
|
||||||
|
params: ?{},
|
||||||
|
resolve: Function,
|
||||||
|
reject: Function
|
||||||
|
) {
|
||||||
|
const counter = new Date().getTime();
|
||||||
|
const options = {
|
||||||
|
method: "POST",
|
||||||
|
body: JSON.stringify({
|
||||||
|
jsonrpc: "2.0",
|
||||||
|
method: method,
|
||||||
|
params: params,
|
||||||
|
id: counter,
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
|
||||||
|
return fetch(Lbry.daemonConnectionString, options)
|
||||||
|
.then(checkAndParse)
|
||||||
|
.then(response => {
|
||||||
|
const error =
|
||||||
|
response.error || (response.result && response.result.error);
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
return reject(error);
|
||||||
|
} else {
|
||||||
|
return resolve(response.result);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(reject);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getLocal(key, fallback = undefined) {
|
function getLocal(key, fallback = undefined) {
|
||||||
|
@ -96,27 +140,39 @@ function pendingPublishToDummyFileInfo({ name, outpoint, claimId }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// core
|
// core
|
||||||
|
Lbry.status = () =>
|
||||||
|
new Promise((resolve, reject) => {
|
||||||
|
apiCall(
|
||||||
|
'status',
|
||||||
|
{},
|
||||||
|
status => {
|
||||||
|
resolve(status);
|
||||||
|
},
|
||||||
|
reject
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
Lbry.connectPromise = null;
|
Lbry.connectPromise = null;
|
||||||
Lbry.connect = () => {
|
Lbry.connect = () => {
|
||||||
if (Lbry.connectPromise === null) {
|
if (Lbry.connectPromise === null) {
|
||||||
Lbry.connectPromise = new Promise((resolve, reject) => {
|
Lbry.connectPromise = new Promise((resolve, reject) => {
|
||||||
let tryNum = 0;
|
let tryNum = 0;
|
||||||
|
|
||||||
const checkDaemonStarted = (resolve, reject) => {
|
|
||||||
tryNum += 1;
|
|
||||||
new Promise(() => {
|
|
||||||
apiCall('status', {}, resolve, reject);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// Check every half second to see if the daemon is accepting connections
|
// Check every half second to see if the daemon is accepting connections
|
||||||
checkDaemonStarted(resolve, () => {
|
function checkDaemonStarted() {
|
||||||
|
tryNum += 1;
|
||||||
|
Lbry
|
||||||
|
.status()
|
||||||
|
.then(resolve)
|
||||||
|
.catch(() => {
|
||||||
if (tryNum <= CHECK_DAEMON_STARTED_TRY_NUMBER) {
|
if (tryNum <= CHECK_DAEMON_STARTED_TRY_NUMBER) {
|
||||||
setTimeout(checkDaemonStarted, tryNum < 50 ? 400 : 1000);
|
setTimeout(checkDaemonStarted, tryNum < 50 ? 400 : 1000);
|
||||||
} else {
|
} else {
|
||||||
reject(new Error('Unable to connect to LBRY'));
|
reject(new Error('Unable to connect to LBRY'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
checkDaemonStarted();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,17 +242,6 @@ Lbry.getMediaType = (contentType, fileName) => {
|
||||||
* Wrappers for API methods to simulate missing or future behavior. Unlike the old-style stubs,
|
* Wrappers for API methods to simulate missing or future behavior. Unlike the old-style stubs,
|
||||||
* these are designed to be transparent wrappers around the corresponding API methods.
|
* these are designed to be transparent wrappers around the corresponding API methods.
|
||||||
*/
|
*/
|
||||||
Lbry.status = () =>
|
|
||||||
new Promise((resolve, reject) => {
|
|
||||||
apiCall(
|
|
||||||
'status',
|
|
||||||
{},
|
|
||||||
status => {
|
|
||||||
resolve(status);
|
|
||||||
},
|
|
||||||
reject
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns results from the file_list API method, plus dummy entries for pending publishes.
|
* Returns results from the file_list API method, plus dummy entries for pending publishes.
|
||||||
|
|
Loading…
Reference in a new issue
jsonrpc logic can be moved into this file
Also, all of the properties on
Lbry
can be killed andLbry
can just be the API proxy.