diff --git a/dist/bundle.js b/dist/bundle.js index 15ede0d..87b47f9 100644 --- a/dist/bundle.js +++ b/dist/bundle.js @@ -1 +1,5670 @@ -!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(window,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=42)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.WINDOW_FOCUSED="WINDOW_FOCUSED",t.DAEMON_READY="DAEMON_READY",t.DAEMON_VERSION_MATCH="DAEMON_VERSION_MATCH",t.DAEMON_VERSION_MISMATCH="DAEMON_VERSION_MISMATCH",t.VOLUME_CHANGED="VOLUME_CHANGED",t.CHANGE_AFTER_AUTH_PATH="CHANGE_AFTER_AUTH_PATH",t.WINDOW_SCROLLED="WINDOW_SCROLLED",t.HISTORY_NAVIGATE="HISTORY_NAVIGATE",t.UPGRADE_CANCELLED="UPGRADE_CANCELLED",t.DOWNLOAD_UPGRADE="DOWNLOAD_UPGRADE",t.UPGRADE_DOWNLOAD_STARTED="UPGRADE_DOWNLOAD_STARTED",t.UPGRADE_DOWNLOAD_COMPLETED="UPGRADE_DOWNLOAD_COMPLETED",t.UPGRADE_DOWNLOAD_PROGRESSED="UPGRADE_DOWNLOAD_PROGRESSED",t.CHECK_UPGRADE_AVAILABLE="CHECK_UPGRADE_AVAILABLE",t.CHECK_UPGRADE_START="CHECK_UPGRADE_START",t.CHECK_UPGRADE_SUCCESS="CHECK_UPGRADE_SUCCESS",t.CHECK_UPGRADE_FAIL="CHECK_UPGRADE_FAIL",t.CHECK_UPGRADE_SUBSCRIBE="CHECK_UPGRADE_SUBSCRIBE",t.UPDATE_VERSION="UPDATE_VERSION",t.UPDATE_REMOTE_VERSION="UPDATE_REMOTE_VERSION",t.SKIP_UPGRADE="SKIP_UPGRADE",t.START_UPGRADE="START_UPGRADE",t.AUTO_UPDATE_DECLINED="AUTO_UPDATE_DECLINED",t.AUTO_UPDATE_DOWNLOADED="AUTO_UPDATE_DOWNLOADED",t.GET_NEW_ADDRESS_STARTED="GET_NEW_ADDRESS_STARTED",t.GET_NEW_ADDRESS_COMPLETED="GET_NEW_ADDRESS_COMPLETED",t.FETCH_TRANSACTIONS_STARTED="FETCH_TRANSACTIONS_STARTED",t.FETCH_TRANSACTIONS_COMPLETED="FETCH_TRANSACTIONS_COMPLETED",t.UPDATE_BALANCE="UPDATE_BALANCE",t.CHECK_ADDRESS_IS_MINE_STARTED="CHECK_ADDRESS_IS_MINE_STARTED",t.CHECK_ADDRESS_IS_MINE_COMPLETED="CHECK_ADDRESS_IS_MINE_COMPLETED",t.SEND_TRANSACTION_STARTED="SEND_TRANSACTION_STARTED",t.SEND_TRANSACTION_COMPLETED="SEND_TRANSACTION_COMPLETED",t.SEND_TRANSACTION_FAILED="SEND_TRANSACTION_FAILED",t.FETCH_BLOCK_SUCCESS="FETCH_BLOCK_SUCCESS",t.SUPPORT_TRANSACTION_STARTED="SUPPORT_TRANSACTION_STARTED",t.SUPPORT_TRANSACTION_COMPLETED="SUPPORT_TRANSACTION_COMPLETED",t.SUPPORT_TRANSACTION_FAILED="SUPPORT_TRANSACTION_FAILED",t.FETCH_FEATURED_CONTENT_STARTED="FETCH_FEATURED_CONTENT_STARTED",t.FETCH_FEATURED_CONTENT_COMPLETED="FETCH_FEATURED_CONTENT_COMPLETED",t.RESOLVE_URIS_STARTED="RESOLVE_URIS_STARTED",t.RESOLVE_URIS_COMPLETED="RESOLVE_URIS_COMPLETED",t.FETCH_CHANNEL_CLAIMS_STARTED="FETCH_CHANNEL_CLAIMS_STARTED",t.FETCH_CHANNEL_CLAIMS_COMPLETED="FETCH_CHANNEL_CLAIMS_COMPLETED",t.FETCH_CHANNEL_CLAIM_COUNT_STARTED="FETCH_CHANNEL_CLAIM_COUNT_STARTED",t.FETCH_CHANNEL_CLAIM_COUNT_COMPLETED="FETCH_CHANNEL_CLAIM_COUNT_COMPLETED",t.FETCH_CLAIM_LIST_MINE_STARTED="FETCH_CLAIM_LIST_MINE_STARTED",t.FETCH_CLAIM_LIST_MINE_COMPLETED="FETCH_CLAIM_LIST_MINE_COMPLETED",t.ABANDON_CLAIM_STARTED="ABANDON_CLAIM_STARTED",t.ABANDON_CLAIM_SUCCEEDED="ABANDON_CLAIM_SUCCEEDED",t.FETCH_CHANNEL_LIST_STARTED="FETCH_CHANNEL_LIST_STARTED",t.FETCH_CHANNEL_LIST_COMPLETED="FETCH_CHANNEL_LIST_COMPLETED",t.CREATE_CHANNEL_STARTED="CREATE_CHANNEL_STARTED",t.CREATE_CHANNEL_COMPLETED="CREATE_CHANNEL_COMPLETED",t.PUBLISH_STARTED="PUBLISH_STARTED",t.PUBLISH_COMPLETED="PUBLISH_COMPLETED",t.PUBLISH_FAILED="PUBLISH_FAILED",t.SET_PLAYING_URI="PLAY_URI",t.FETCH_BLACK_LISTED_CONTENT_STARTED="FETCH_BLACK_LISTED_CONTENT_STARTED",t.FETCH_BLACK_LISTED_CONTENT_COMPLETED="FETCH_BLACK_LISTED_CONTENT_COMPLETED",t.FETCH_BLACK_LISTED_CONTENT_FAILED="FETCH_BLACK_LISTED_CONTENT_FAILED",t.BLACK_LISTED_CONTENT_SUBSCRIBE="BLACK_LISTED_CONTENT_SUBSCRIBE",t.FILE_LIST_STARTED="FILE_LIST_STARTED",t.FILE_LIST_SUCCEEDED="FILE_LIST_SUCCEEDED",t.FETCH_FILE_INFO_STARTED="FETCH_FILE_INFO_STARTED",t.FETCH_FILE_INFO_COMPLETED="FETCH_FILE_INFO_COMPLETED",t.FETCH_COST_INFO_STARTED="FETCH_COST_INFO_STARTED",t.FETCH_COST_INFO_COMPLETED="FETCH_COST_INFO_COMPLETED",t.LOADING_VIDEO_STARTED="LOADING_VIDEO_STARTED",t.LOADING_VIDEO_COMPLETED="LOADING_VIDEO_COMPLETED",t.LOADING_VIDEO_FAILED="LOADING_VIDEO_FAILED",t.DOWNLOADING_STARTED="DOWNLOADING_STARTED",t.DOWNLOADING_PROGRESSED="DOWNLOADING_PROGRESSED",t.DOWNLOADING_COMPLETED="DOWNLOADING_COMPLETED",t.DOWNLOADING_CANCELED="DOWNLOADING_CANCELED",t.PLAY_VIDEO_STARTED="PLAY_VIDEO_STARTED",t.FETCH_AVAILABILITY_STARTED="FETCH_AVAILABILITY_STARTED",t.FETCH_AVAILABILITY_COMPLETED="FETCH_AVAILABILITY_COMPLETED",t.FILE_DELETE="FILE_DELETE",t.SEARCH_START="SEARCH_START",t.SEARCH_SUCCESS="SEARCH_SUCCESS",t.SEARCH_FAIL="SEARCH_FAIL",t.UPDATE_SEARCH_QUERY="UPDATE_SEARCH_QUERY",t.UPDATE_SEARCH_SUGGESTIONS="UPDATE_SEARCH_SUGGESTIONS",t.DAEMON_SETTINGS_RECEIVED="DAEMON_SETTINGS_RECEIVED",t.CLIENT_SETTING_CHANGED="CLIENT_SETTING_CHANGED",t.UPDATE_IS_NIGHT="UPDATE_IS_NIGHT",t.AUTHENTICATION_STARTED="AUTHENTICATION_STARTED",t.AUTHENTICATION_SUCCESS="AUTHENTICATION_SUCCESS",t.AUTHENTICATION_FAILURE="AUTHENTICATION_FAILURE",t.USER_EMAIL_DECLINE="USER_EMAIL_DECLINE",t.USER_EMAIL_NEW_STARTED="USER_EMAIL_NEW_STARTED",t.USER_EMAIL_NEW_SUCCESS="USER_EMAIL_NEW_SUCCESS",t.USER_EMAIL_NEW_EXISTS="USER_EMAIL_NEW_EXISTS",t.USER_EMAIL_NEW_FAILURE="USER_EMAIL_NEW_FAILURE",t.USER_EMAIL_VERIFY_STARTED="USER_EMAIL_VERIFY_STARTED",t.USER_EMAIL_VERIFY_SUCCESS="USER_EMAIL_VERIFY_SUCCESS",t.USER_EMAIL_VERIFY_FAILURE="USER_EMAIL_VERIFY_FAILURE",t.USER_PHONE_RESET="USER_PHONE_RESET",t.USER_PHONE_NEW_STARTED="USER_PHONE_NEW_STARTED",t.USER_PHONE_NEW_SUCCESS="USER_PHONE_NEW_SUCCESS",t.USER_PHONE_NEW_FAILURE="USER_PHONE_NEW_FAILURE",t.USER_PHONE_VERIFY_STARTED="USER_PHONE_VERIFY_STARTED",t.USER_PHONE_VERIFY_SUCCESS="USER_PHONE_VERIFY_SUCCESS",t.USER_PHONE_VERIFY_FAILURE="USER_PHONE_VERIFY_FAILURE",t.USER_IDENTITY_VERIFY_STARTED="USER_IDENTITY_VERIFY_STARTED",t.USER_IDENTITY_VERIFY_SUCCESS="USER_IDENTITY_VERIFY_SUCCESS",t.USER_IDENTITY_VERIFY_FAILURE="USER_IDENTITY_VERIFY_FAILURE",t.USER_FETCH_STARTED="USER_FETCH_STARTED",t.USER_FETCH_SUCCESS="USER_FETCH_SUCCESS",t.USER_FETCH_FAILURE="USER_FETCH_FAILURE",t.USER_INVITE_STATUS_FETCH_STARTED="USER_INVITE_STATUS_FETCH_STARTED",t.USER_INVITE_STATUS_FETCH_SUCCESS="USER_INVITE_STATUS_FETCH_SUCCESS",t.USER_INVITE_STATUS_FETCH_FAILURE="USER_INVITE_STATUS_FETCH_FAILURE",t.USER_INVITE_NEW_STARTED="USER_INVITE_NEW_STARTED",t.USER_INVITE_NEW_SUCCESS="USER_INVITE_NEW_SUCCESS",t.USER_INVITE_NEW_FAILURE="USER_INVITE_NEW_FAILURE",t.FETCH_ACCESS_TOKEN_SUCCESS="FETCH_ACCESS_TOKEN_SUCCESS",t.FETCH_REWARDS_STARTED="FETCH_REWARDS_STARTED",t.FETCH_REWARDS_COMPLETED="FETCH_REWARDS_COMPLETED",t.CLAIM_REWARD_STARTED="CLAIM_REWARD_STARTED",t.CLAIM_REWARD_SUCCESS="CLAIM_REWARD_SUCCESS",t.CLAIM_REWARD_FAILURE="CLAIM_REWARD_FAILURE",t.CLAIM_REWARD_CLEAR_ERROR="CLAIM_REWARD_CLEAR_ERROR",t.FETCH_REWARD_CONTENT_COMPLETED="FETCH_REWARD_CONTENT_COMPLETED",t.DOWNLOAD_LANGUAGE_SUCCEEDED="DOWNLOAD_LANGUAGE_SUCCEEDED",t.DOWNLOAD_LANGUAGE_FAILED="DOWNLOAD_LANGUAGE_FAILED",t.GET_SUPPORTED_COINS_START="GET_SUPPORTED_COINS_START",t.GET_SUPPORTED_COINS_SUCCESS="GET_SUPPORTED_COINS_SUCCESS",t.GET_SUPPORTED_COINS_FAIL="GET_SUPPORTED_COINS_FAIL",t.GET_COIN_STATS_START="GET_COIN_STATS_START",t.GET_COIN_STATS_SUCCESS="GET_COIN_STATS_SUCCESS",t.GET_COIN_STATS_FAIL="GET_COIN_STATS_FAIL",t.PREPARE_SHAPE_SHIFT_START="PREPARE_SHAPE_SHIFT_START",t.PREPARE_SHAPE_SHIFT_SUCCESS="PREPARE_SHAPE_SHIFT_SUCCESS",t.PREPARE_SHAPE_SHIFT_FAIL="PREPARE_SHAPE_SHIFT_FAIL",t.GET_ACTIVE_SHIFT_START="GET_ACTIVE_SHIFT_START",t.GET_ACTIVE_SHIFT_SUCCESS="GET_ACTIVE_SHIFT_SUCCESS",t.GET_ACTIVE_SHIFT_FAIL="GET_ACTIVE_SHIFT_FAIL",t.CLEAR_SHAPE_SHIFT="CLEAR_SHAPE_SHIFT",t.CHANNEL_SUBSCRIBE="CHANNEL_SUBSCRIBE",t.CHANNEL_UNSUBSCRIBE="CHANNEL_UNSUBSCRIBE",t.HAS_FETCHED_SUBSCRIPTIONS="HAS_FETCHED_SUBSCRIPTIONS",t.SET_SUBSCRIPTION_LATEST="SET_SUBSCRIPTION_LATEST",t.SET_SUBSCRIPTION_NOTIFICATION="SET_SUBSCRIPTION_NOTIFICATION",t.SET_SUBSCRIPTION_NOTIFICATIONS="SET_SUBSCRIPTION_NOTIFICATIONS",t.CHECK_SUBSCRIPTION_STARTED="CHECK_SUBSCRIPTION_STARTED",t.CHECK_SUBSCRIPTION_COMPLETED="CHECK_SUBSCRIPTION_COMPLETED",t.CHECK_SUBSCRIPTIONS_SUBSCRIBE="CHECK_SUBSCRIPTIONS_SUBSCRIBE",t.SET_VIDEO_PAUSE="SET_VIDEO_PAUSE",t.MEDIA_PLAY="MEDIA_PLAY",t.MEDIA_PAUSE="MEDIA_PAUSE",t.MEDIA_POSITION="MEDIA_POSITION",t.CLEAR_PUBLISH="CLEAR_PUBLISH",t.UPDATE_PUBLISH_FORM="UPDATE_PUBLISH_FORM",t.PUBLISH_START="PUBLISH_START",t.PUBLISH_SUCCESS="PUBLISH_SUCCESS",t.PUBLISH_FAIL="PUBLISH_FAIL",t.CLEAR_PUBLISH_ERROR="CLEAR_PUBLISH_ERROR",t.REMOVE_PENDING_PUBLISH="REMOVE_PENDING_PUBLISH",t.DO_PREPARE_EDIT="DO_PREPARE_EDIT",t.CREATE_NOTIFICATION="CREATE_NOTIFICATION",t.DISMISS_NOTIFICATION="DISMISS_NOTIFICATION"},function(e,t,n){"use strict";function r(e,t){return e===t}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r,n=null,i=null;return function(){return function(e,t,n){if(null===t||null===n||t.length!==n.length)return!1;for(var r=t.length,i=0;i1?t-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:c;if("object"!=typeof e)throw new Error("createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);var n=Object.keys(e);return t(n.map(function(t){return e[t]}),function(){for(var e=arguments.length,t=Array(e),r=0;r1&&void 0!==arguments[1])||arguments[1];return new RegExp("^[a-z0-9-]+$",t?"":"i").test(e)},t.isURIClaimable=function(e){var t=void 0;try{t=l(u(e))}catch(e){return!1}return t&&t.claimName&&!t.claimId&&!t.bidPosition&&!t.claimSequence&&!t.isChannel&&!t.path};var a=1,c=40,o=t.regexInvalidURI=/[^A-Za-z0-9-]/g;t.regexAddress=/^b(?=[^0OIl]{32,33})[0-9A-Za-z]{32,33}$/;function l(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=new RegExp("^((?:lbry://)?)([^:$#/]*)([:$#]?)([^/]*)(/?)(.*)").exec(e).slice(1).map(function(e){return e||null}),l=i(n,6),s=l[0],u=l[1],f=l[2],d=l[3],E=l[4],_=l[5],S=void 0;if(t&&!s)throw new Error(__("LBRY URIs must include a protocol prefix (lbry://)."));if(!u)throw new Error(__("URI does not include name."));var T=u.startsWith("@"),C=T?u.slice(1):u;if(T){if(!C)throw new Error(__("No channel name after @."));if(C.lengthc||!O.match(/^[0-9a-f]+$/))&&!O.match(/^pending/))throw new Error(__("Invalid claim ID %s.",O));if(I&&!I.match(/^-?[1-9][0-9]*$/))throw new Error(__("Claim sequence must be a number."));if(p&&!p.match(/^-?[1-9][0-9]*$/))throw new Error(__("Bid position must be a number."));if(_){if(!T)throw new Error(__("Only channel URIs may have a path."));var m=_.match(o);if(m)throw new Error(__("Invalid character in path: %s",m.join(", ")));S=_}else if(E)throw new Error(__("No path provided after /"));return r({claimName:u,path:_,isChannel:T},S?{contentName:S}:{},C?{channelName:C}:{},I?{claimSequence:parseInt(I,10)}:{},p?{bidPosition:parseInt(p,10)}:{},O?{claimId:O}:{},_?{path:_}:{})}function s(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e.claimId,r=e.claimSequence,i=e.bidPosition,a=e.contentName,c=e.channelName,o=e.claimName,l=e.path;if(c){var s=c.startsWith("@")?c:"@"+c;if(o){if(o!==s)throw new Error(__('Received a channel content URI, but claim name and channelName do not match. "name" represents the value in the name position of the URI (lbry://name...), which for channel content will be the channel name. In most cases, to construct a channel URI you should just pass channelName and contentName.'))}else o=s}if(a&&(o?l||(l=a):o=a,l&&l!==a))throw new Error(__("Path and contentName do not match. Only one is required; most likely you wanted contentName."));return(t?"lbry://":"")+o+(n?"#"+n:"")+(r?":"+r:"")+(i?""+i:"")+(l?"/"+l:"")}function u(e){if(e.match(/pending_claim/))return e;var t=l(e),n=t.claimName,r=t.path,i=t.bidPosition;return s({claimName:n,path:r,claimSequence:t.claimSequence,bidPosition:i,claimId:t.claimId})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectNavLinks=t.selectPageTitle=t.selectActiveHistoryEntry=t.selectHistoryStack=t.selectHistoryIndex=t.selectIsHome=t.selectIsForwardDisabled=t.selectIsBackDisabled=t.selectPathAfterAuth=t.makeSelectCurrentParam=t.selectCurrentParams=t.selectCurrentPage=t.computePageFromPath=t.selectCurrentPath=t.selectState=void 0;var r=n(1),i=n(15),a=t.selectState=function(e){return e.navigation||{}},c=t.selectCurrentPath=(0,r.createSelector)(a,function(e){return e.currentPath}),o=t.computePageFromPath=function(e){return e.replace(/^\//,"").split("?")[0]},l=t.selectCurrentPage=(0,r.createSelector)(c,function(e){return o(e)}),s=t.selectCurrentParams=(0,r.createSelector)(c,function(e){return void 0===e?{}:e.match(/\?/)?(0,i.parseQueryParams)(e.split("?")[1]):{}}),u=(t.makeSelectCurrentParam=function(e){return(0,r.createSelector)(s,function(t){return t?t[e]:void 0})},t.selectPathAfterAuth=(0,r.createSelector)(a,function(e){return e.pathAfterAuth}),t.selectIsBackDisabled=(0,r.createSelector)(a,function(e){return 0===e.index}),t.selectIsForwardDisabled=(0,r.createSelector)(a,function(e){return e.index===e.stack.length-1}),t.selectIsHome=(0,r.createSelector)(l,function(e){return"discover"===e}),t.selectHistoryIndex=(0,r.createSelector)(a,function(e){return e.index}),t.selectHistoryStack=(0,r.createSelector)(a,function(e){return e.stack}));t.selectActiveHistoryEntry=(0,r.createSelector)(a,function(e){return e.stack[e.index]}),t.selectPageTitle=(0,r.createSelector)(l,function(e){return""}),t.selectNavLinks=(0,r.createSelector)(l,u,function(e,t){var n=function(e){return"wallet"===e||"send"===e||"getcredits"===e||"rewards"===e||"history"===e||"invite"===e},r=function(e){return"downloaded"===e||"published"===e||"settings"===e},i=t.slice().reverse(),a=function(e){for(var t=0;t12e5)&&(o.exchangePromise=new Promise(function(e,t){o.call("lbc","exchange_rate",{},"get",!0).then(function(t){var n=t.lbc_usd,r=t.lbc_btc,i=t.btc_usd;e({LBC_USD:n,LBC_BTC:r,BTC_USD:i})}).catch(t)}),o.exchangeLastFetched=Date.now()),o.exchangePromise},o.call=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"get";if(!o.enabled)return Promise.reject(new Error(__("LBRY internal API is disabled")));if("get"!==r&&"post"!==r)return Promise.reject(new Error(__("Invalid method")));function a(e){return e.status>=200&&e.status<300?e.json():e.json().then(function(t){var n=void 0;return(n=t.error?new Error(t.error):new Error("Unknown API error signature")).response=e,Promise.reject(n)})}var s=i({},n),u=c.default.stringify(s),f=""+l+e+"/"+t+"?"+u,d={method:"GET"};return"post"===r&&(d={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:u},f=""+l+e+"/"+t),function(e,t){return fetch(e,t).then(a)}(f,d).then(function(e){return e.data})},t.default=o}).call(this,n(39))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(41);var r=200,i={isConnected:!1,daemonConnectionString:"http://localhost:5279",pendingPublishTimeout:12e5};function a(e){return e.status>=200&&e.status<300?e.json():e.json().then(function(e){var t=void 0;return t=e.error?new Error(e.error):new Error("Protocol error with unknown response signature"),Promise.reject(t)})}function c(e,t,n,r){var c=(new Date).getTime(),o={method:"POST",body:JSON.stringify({jsonrpc:"2.0",method:e,params:t,id:c})};return fetch(i.daemonConnectionString,o).then(a).then(function(e){var t=e.error||e.result&&e.result.error;return t?r(t):n(e.result)}).catch(r)}var o=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(function(n,r){c(e,t,function(e){n(e)},r)})};i.status=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o("status",e)},i.version=function(){return o("version",{})},i.file_delete=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o("file_delete",e)},i.file_set_status=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o("file_set_status",e)},i.wallet_balance=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o("wallet_balance",e)},i.wallet_is_address_mine=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o("wallet_is_address_mine",e)},i.wallet_new_address=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o("wallet_new_address",e)},i.wallet_send=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o("wallet_send",e)},i.wallet_encrypt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o("wallet_encrypt",e)},i.wallet_decrypt=function(){return o("wallet_decrypt",{})},i.wallet_unlock=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o("wallet_unlock",e)},i.transaction_list=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o("transaction_list",e)},i.connectPromise=null,i.connect=function(){return null===i.connectPromise&&(i.connectPromise=new Promise(function(e,t){var n=0;!function a(){n+=1,i.status().then(e).catch(function(){n<=r?setTimeout(a,n<50?400:1e3):t(new Error("Unable to connect to LBRY"))})}()})),i.connectPromise},i.getMediaType=function(e,t){if(e)return/^[^/]+/.exec(e)[0];if(t){var n=[[/^.+\.(mp4|m4v|webm|flv|f4v|ogv)$/i,"video"],[/^.+\.(mp3|m4a|aac|wav|flac|ogg|opus)$/i,"audio"],[/^.+\.(html|htm|xml|pdf|odf|doc|docx|md|markdown|txt|epub|org)$/i,"document"]].reduce(function(e,t){switch(t[0].test(e)){case!0:return t[1];default:return e}},t);return n===t?"unknown":n}return"unknown"},i.file_list=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(t,n){c("file_list",e,function(e){t(e)},n)})},i.claim_list_mine=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(t,n){c("claim_list_mine",e,function(e){t(e)},n)})},i.get=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(t,n){c("get",e,function(e){t(e)},n)})},i.resolve=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(t,n){c("resolve",e,function(n){t("uri"in e?n&&n[e.uri]?n[e.uri]:{}:n||{})},n)})};var l=new Proxy(i,{get:function(e,t){return t in e?e[t]:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(n,r){c(t,e,n,r)})}}});t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.batchActions=function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:t,r=arguments[1],i=e[r.type];if(i){var a=i(n,r);return Object.assign({},n,a)}return n}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.CONFIRM_FILE_REMOVE="confirm_file_remove",t.INCOMPATIBLE_DAEMON="incompatible_daemon",t.FILE_TIMEOUT="file_timeout",t.DOWNLOADING="downloading",t.AUTO_UPDATE_DOWNLOADED="auto_update_downloaded",t.AUTO_UPDATE_CONFIRM="auto_update_confirm",t.ERROR="error",t.INSUFFICIENT_CREDITS="insufficient_credits",t.UPGRADE="upgrade",t.WELCOME="welcome",t.EMAIL_COLLECTION="email_collection",t.PHONE_COLLECTION="phone_collection",t.FIRST_REWARD="first_reward",t.AUTHENTICATION_FAILURE="auth_failure",t.TRANSACTION_FAILED="transaction_failed",t.REWARD_APPROVAL_REQUIRED="reward_approval_required",t.AFFIRM_PURCHASE="affirm_purchase",t.CONFIRM_CLAIM_REVOKE="confirm_claim_revoke",t.FIRST_SUBSCRIPTION="firstSubscription",t.SEND_TIP="send_tip",t.PUBLISH="publish",t.SEARCH="search"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.makeSelectBlockDate=t.selectBlocks=t.selectDraftTransactionError=t.selectDraftTransactionAddress=t.selectDraftTransactionAmount=t.selectDraftTransaction=t.selectGettingNewAddress=t.selectReceiveAddress=t.selectIsSendingSupport=t.selectIsFetchingTransactions=t.selectHasTransactions=t.selectRecentTransactions=t.selectTransactionItems=t.selectTransactionsById=t.selectBalance=t.selectState=void 0;var r=n(1);function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);tt})}),t.selectHasTransactions=(0,r.createSelector)(o,function(e){return e&&e.length>0}),t.selectIsFetchingTransactions=(0,r.createSelector)(a,function(e){return e.fetchingTransactions}),t.selectIsSendingSupport=(0,r.createSelector)(a,function(e){return e.sendingSupport}),t.selectReceiveAddress=(0,r.createSelector)(a,function(e){return e.receiveAddress}),t.selectGettingNewAddress=(0,r.createSelector)(a,function(e){return e.gettingNewAddress}),t.selectDraftTransaction=(0,r.createSelector)(a,function(e){return e.draftTransaction||{}})),s=(t.selectDraftTransactionAmount=(0,r.createSelector)(l,function(e){return e.amount}),t.selectDraftTransactionAddress=(0,r.createSelector)(l,function(e){return e.address}),t.selectDraftTransactionError=(0,r.createSelector)(l,function(e){return e.error}),t.selectBlocks=(0,r.createSelector)(a,function(e){return e.blocks}));t.makeSelectBlockDate=function(e){return(0,r.createSelector)(s,function(t){return t&&t[e]?new Date(1e3*t[e].time):void 0})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectWunderBarAddress=t.makeSelectSearchUris=t.selectSearchUrisByQuery=t.selectIsSearching=t.selectSearchQuery=t.selectSearchValue=t.selectState=void 0;var r=n(4),i=n(1),a=t.selectState=function(e){return e.search||{}},c=(t.selectSearchValue=(0,i.createSelector)(a,function(e){return e.searchQuery}),t.selectSearchQuery=(0,i.createSelector)(r.selectCurrentPage,r.selectCurrentParams,function(e,t){return"search"===e?t&&t.query:null})),o=(t.selectIsSearching=(0,i.createSelector)(a,function(e){return e.searching}),t.selectSearchUrisByQuery=(0,i.createSelector)(a,function(e){return e.urisByQuery}));t.makeSelectSearchUris=function(e){return(0,i.createSelector)(o,function(t){return t[e?e.replace(/^lbry:\/\//i,""):e]})},t.selectWunderBarAddress=(0,i.createSelector)(r.selectCurrentPage,c,r.selectCurrentParams,function(e,t,n){return"show"===e?n.uri:t})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectSearchDownloadUris=t.selectTotalDownloadProgress=t.selectDownloadingFileInfos=t.selectFileInfosDownloaded=t.makeSelectLoadingForUri=t.selectUrisLoading=t.makeSelectDownloadingForUri=t.selectDownloadingByOutpoint=t.makeSelectFileInfoForUri=t.selectIsFetchingFileListDownloadedOrPublished=t.selectIsFetchingFileList=t.selectFileInfosByOutpoint=t.selectState=void 0;var r=n(2),i=n(1),a=n(3),c=t.selectState=function(e){return e.fileInfo||{}},o=t.selectFileInfosByOutpoint=(0,i.createSelector)(c,function(e){return e.byOutpoint||{}}),l=t.selectIsFetchingFileList=(0,i.createSelector)(c,function(e){return e.isFetchingFileList}),s=(t.selectIsFetchingFileListDownloadedOrPublished=(0,i.createSelector)(l,r.selectIsFetchingClaimListMine,function(e,t){return e||t}),t.makeSelectFileInfoForUri=function(e){return(0,i.createSelector)(r.selectClaimsByUri,o,function(t,n){var r=t[e],i=r?r.txid+":"+r.nout:void 0;return i?n[i]:void 0})}),u=t.selectDownloadingByOutpoint=(0,i.createSelector)(c,function(e){return e.downloadingByOutpoint||{}}),f=(t.makeSelectDownloadingForUri=function(e){return(0,i.createSelector)(u,s(e),function(e,t){return!!t&&e[t.outpoint]})},t.selectUrisLoading=(0,i.createSelector)(c,function(e){return e.urisLoading||{}})),d=(t.makeSelectLoadingForUri=function(e){return(0,i.createSelector)(f,function(t){return t&&t[e]})},t.selectFileInfosDownloaded=(0,i.createSelector)(o,r.selectMyClaims,function(e,t){return Object.values(e).filter(function(e){var n=t.map(function(e){return e.claim_id});return e&&-1===n.indexOf(e.claim_id)&&(e.completed||e.written_bytes)})})),E=t.selectDownloadingFileInfos=(0,i.createSelector)(u,o,function(e,t){var n=[];return Object.keys(e).forEach(function(e){var r=t[e];r&&n.push(r)}),n});t.selectTotalDownloadProgress=(0,i.createSelector)(E,function(e){var t=[];e.forEach(function(e){t.push(e.written_bytes/e.total_bytes*100)});var n=t.reduce(function(e,t){return e+t},0);return e.length>0?n/e.length/100:-1}),t.selectSearchDownloadUris=function(e){return(0,i.createSelector)(d,r.selectClaimsById,function(t,n){if(!e||!t.length)return null;var r={};e.toLowerCase().split(" ").forEach(function(e){r[e]=e});var i=function(e){for(var t=0;t0?e.queue[0]:{}}),c=t.selectNotification=(0,r.createSelector)(a,function(e){return e.notification});t.selectNotificationProps=(0,r.createSelector)(a,function(e){return e.notificationProps}),t.selectSnack=(0,r.createSelector)(c,function(e){if(e&&e.displayType)return e.displayType.indexOf("snackbar")>-1?e:void 0})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectBlackListedOutpoints=t.selectState=void 0;var r=n(1),i=t.selectState=function(e){return e.blacklist||{}};t.selectBlackListedOutpoints=(0,r.createSelector)(i,function(e){return e.blackListedOutpoints})},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.blacklistReducer=void 0;var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:a,t=arguments[1],n=i[t.type];return n?n(e,t):e};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0));var i={},a={balance:void 0,blocks:{},transactions:{},fetchingTransactions:!1,gettingNewAddress:!1,draftTransaction:{amount:void 0,address:void 0},sendingSupport:!1};i[r.FETCH_TRANSACTIONS_STARTED]=function(e){return Object.assign({},e,{fetchingTransactions:!0})},i[r.FETCH_TRANSACTIONS_COMPLETED]=function(e,t){var n=Object.assign({},e.transactions);return t.data.transactions.forEach(function(e){n[e.txid]=e}),Object.assign({},e,{transactions:n,fetchingTransactions:!1})},i[r.GET_NEW_ADDRESS_STARTED]=function(e){return Object.assign({},e,{gettingNewAddress:!0})},i[r.GET_NEW_ADDRESS_COMPLETED]=function(e,t){var n=t.data.address;return Object.assign({},e,{gettingNewAddress:!1,receiveAddress:n})},i[r.UPDATE_BALANCE]=function(e,t){return Object.assign({},e,{balance:t.data.balance})},i[r.CHECK_ADDRESS_IS_MINE_STARTED]=function(e){return Object.assign({},e,{checkingAddressOwnership:!0})},i[r.CHECK_ADDRESS_IS_MINE_COMPLETED]=function(e){return Object.assign({},e,{checkingAddressOwnership:!1})},i[r.SET_DRAFT_TRANSACTION_AMOUNT]=function(e,t){var n=e.draftTransaction,r=Object.assign({},n,{amount:parseFloat(t.data.amount)});return Object.assign({},e,{draftTransaction:r})},i[r.SET_DRAFT_TRANSACTION_ADDRESS]=function(e,t){var n=e.draftTransaction,r=Object.assign({},n,{address:t.data.address});return Object.assign({},e,{draftTransaction:r})},i[r.SEND_TRANSACTION_STARTED]=function(e){var t=Object.assign({},e.draftTransaction,{sending:!0});return Object.assign({},e,{draftTransaction:t})},i[r.SEND_TRANSACTION_COMPLETED]=function(e){return Object.assign({},e,{draftTransaction:{amount:void 0,address:void 0}})},i[r.SEND_TRANSACTION_FAILED]=function(e,t){var n=Object.assign({},e.draftTransaction,{sending:!1,error:t.data.error});return Object.assign({},e,{draftTransaction:n})},i[r.SUPPORT_TRANSACTION_STARTED]=function(e){return Object.assign({},e,{sendingSupport:!0})},i[r.SUPPORT_TRANSACTION_COMPLETED]=function(e){return Object.assign({},e,{sendingSupport:!1})},i[r.SUPPORT_TRANSACTION_FAILED]=function(e,t){return Object.assign({},e,{error:t.data.error,sendingSupport:!1})},i[r.FETCH_BLOCK_SUCCESS]=function(e,t){var n=t.data,r=n.block,i=n.block.height,a=Object.assign({},e.blocks);return a[i]=r,Object.assign({},e,{blocks:a})}},function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.searchReducer=void 0;var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:o,t=arguments[1],n=c[t.type];return n?n(e,t):e};var r=a(n(0)),i=a(n(11));function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}var c={},o={queue:[]};c[r.CREATE_NOTIFICATION]=function(e,t){var n=t.data,r=n.notification,i=n.notificationProps,a=r.title,c=r.message,o=r.type,l=r.error,s=r.displayType,u=r.id,f=i.uri,d=i.nout,E=i.txid,_=Object.assign([],e.queue);return _.push({notification:{id:u,title:a,message:c,type:o,error:l,displayType:s},notificationProps:{uri:f,txid:E,nout:d}}),Object.assign({},e,{queue:_})},c[r.DISMISS_NOTIFICATION]=function(e){var t=Object.assign([],e.queue);return t.shift(),Object.assign({},e,{queue:t})},c[r.HISTORY_NAVIGATE]=function(e){var t=Object.assign([],e.queue);return t[0]&&t[0].notification.id===i.SEARCH?(t.shift(),Object.assign({},e,{queue:t})):e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fileInfoReducer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,t=arguments[1],n=i[t.type];return n?n(e,t):e};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0));var i={},a={};i[r.FILE_LIST_STARTED]=function(e){return Object.assign({},e,{isFetchingFileList:!0})},i[r.FILE_LIST_SUCCEEDED]=function(e,t){var n=t.data.fileInfos,r=Object.assign({},e.byOutpoint),i=Object.assign({},e.pendingByOutpoint);return n.forEach(function(e){e.outpoint&&(r[e.outpoint]=e)}),Object.assign({},e,{isFetchingFileList:!1,byOutpoint:r,pendingByOutpoint:i})},i[r.FETCH_FILE_INFO_STARTED]=function(e,t){var n=t.data.outpoint,r=Object.assign({},e.fetching);return r[n]=!0,Object.assign({},e,{fetching:r})},i[r.FETCH_FILE_INFO_COMPLETED]=function(e,t){var n=t.data,r=n.fileInfo,i=n.outpoint,a=Object.assign({},e.byOutpoint),c=Object.assign({},e.fetching);return a[i]=r,delete c[i],Object.assign({},e,{byOutpoint:a,fetching:c})},i[r.DOWNLOADING_STARTED]=function(e,t){var n=t.data,r=n.uri,i=n.outpoint,a=n.fileInfo,c=Object.assign({},e.byOutpoint),o=Object.assign({},e.downloadingByOutpoint),l=Object.assign({},e.urisLoading);return o[i]=!0,c[i]=a,delete l[r],Object.assign({},e,{downloadingByOutpoint:o,urisLoading:l,byOutpoint:c})},i[r.DOWNLOADING_PROGRESSED]=function(e,t){var n=t.data,r=n.outpoint,i=n.fileInfo,a=Object.assign({},e.byOutpoint),c=Object.assign({},e.downloadingByOutpoint);return a[r]=i,c[r]=!0,Object.assign({},e,{byOutpoint:a,downloadingByOutpoint:c})},i[r.DOWNLOADING_COMPLETED]=function(e,t){var n=t.data,r=n.outpoint,i=n.fileInfo,a=Object.assign({},e.byOutpoint),c=Object.assign({},e.downloadingByOutpoint);return a[r]=i,delete c[r],Object.assign({},e,{byOutpoint:a,downloadingByOutpoint:c})},i[r.FILE_DELETE]=function(e,t){var n=t.data.outpoint,r=Object.assign({},e.byOutpoint),i=Object.assign({},e.downloadingByOutpoint);return delete r[n],delete i[n],Object.assign({},e,{byOutpoint:r,downloadingByOutpoint:i})},i[r.LOADING_VIDEO_STARTED]=function(e,t){var n=t.data.uri,r=Object.assign({},e.urisLoading);return r[n]=!0,Object.assign({},e,{urisLoading:r})},i[r.LOADING_VIDEO_FAILED]=function(e,t){var n=t.data.uri,r=Object.assign({},e.urisLoading);return delete r[n],Object.assign({},e,{urisLoading:r})},i[r.FETCH_DATE]=function(e,t){var n=t.data.time;return n?Object.assign({},e,{publishedDate:n}):null}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.costInfoReducer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,t=arguments[1],n=i[t.type];return n?n(e,t):e};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0));var i={},a={};i[r.FETCH_COST_INFO_STARTED]=function(e,t){var n=t.data.uri,r=Object.assign({},e.fetching);return r[n]=!0,Object.assign({},e,{fetching:r})},i[r.FETCH_COST_INFO_COMPLETED]=function(e,t){var n=t.data,r=n.uri,i=n.costInfo,a=Object.assign({},e.byUri),c=Object.assign({},e.fetching);return a[r]=i,delete c[r],Object.assign({},e,{byUri:a,fetching:c})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var c,o=e[Symbol.iterator]();!(r=(c=o.next()).done)&&(n.push(c.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{!r&&o.return&&o.return()}finally{if(i)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();t.claimsReducer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c,t=arguments[1],n=a[t.type];return n?n(e,t):e};var i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0));var a={},c={rewardedContentClaimIds:[],channelClaimCounts:{}};a[i.RESOLVE_URIS_COMPLETED]=function(e,t){var n=t.data.resolveInfo,i=Object.assign({},e.claimsByUri),a=Object.assign({},e.byId),c=Object.assign({},e.channelClaimCounts);return Object.entries(n).forEach(function(e){var t=r(e,2),n=t[0],i=t[1],a=i.certificate,o=i.claimsInChannel;a&&!Number.isNaN(o)&&(c[n]=o)}),Object.entries(n).forEach(function(e){var t=r(e,2),n=t[0],c=t[1],o=c.certificate,l=c.claim;l?(a[l.claim_id]=l,i[n]=l.claim_id):void 0===l&&void 0!==o?(a[o.claim_id]=o,n.split(o.name)[1].match(/\//)?i[n]=null:i[n]=o.claim_id):i[n]=null}),Object.assign({},e,{byId:a,claimsByUri:i,channelClaimCounts:c,resolvingUris:(e.resolvingUris||[]).filter(function(e){return!n[e]})})},a[i.FETCH_CLAIM_LIST_MINE_STARTED]=function(e){return Object.assign({},e,{isFetchingClaimListMine:!0})},a[i.FETCH_CLAIM_LIST_MINE_COMPLETED]=function(e,t){var n=t.data.claims,r=Object.assign({},e.byId),i=Object.assign({},e.pendingById);return n.filter(function(e){return e.category&&e.category.match(/claim/)}).forEach(function(e){r[e.claim_id]=e;var t=Object.values(i).find(function(t){return t.name===e.name&&t.channel_name===e.channel_name});t&&delete i[t.claim_id]}),Object.values(i).filter(function(e){return Date.now()-e.time>=12e5}).forEach(function(e){delete i[e.claim_id]}),Object.assign({},e,{isFetchingClaimListMine:!1,myClaims:n,byId:r,pendingById:i})},a[i.FETCH_CHANNEL_LIST_MINE_STARTED]=function(e){return Object.assign({},e,{fetchingMyChannels:!0})},a[i.FETCH_CHANNEL_LIST_MINE_COMPLETED]=function(e,t){var n=t.data.claims,r=new Set(e.myChannelClaims),i=Object.assign({},e.byId);return n.forEach(function(e){r.add(e.claim_id),i[n.claim_id]=e}),Object.assign({},e,{byId:i,fetchingMyChannels:!1,myChannelClaims:r})},a[i.FETCH_CHANNEL_CLAIMS_STARTED]=function(e,t){var n=t.data,r=n.uri,i=n.page,a=Object.assign({},e.fetchingChannelClaims);return a[r]=i,Object.assign({},e,{fetchingChannelClaims:a})},a[i.FETCH_CHANNEL_CLAIMS_COMPLETED]=function(e,t){var n=t.data,r=n.uri,i=n.claims,a=n.page,c=Object.assign({},e.claimsByChannel),o=Object.assign({},c[r]),l=new Set(o.all),s=[],u=Object.assign({},e.byId),f=Object.assign({},e.fetchingChannelClaims);return void 0!==i&&i.forEach(function(e){l.add(e.claim_id),s.push(e.claim_id),u[e.claim_id]=e}),o.all=l,o[a]=s,c[r]=o,delete f[r],Object.assign({},e,{claimsByChannel:c,byId:u,fetchingChannelClaims:f})},a[i.ABANDON_CLAIM_STARTED]=function(e,t){var n=t.data.claimId,r=Object.assign({},e.abandoningById);return r[n]=!0,Object.assign({},e,{abandoningById:r})},a[i.ABANDON_CLAIM_SUCCEEDED]=function(e,t){var n=t.data.claimId,r=Object.assign({},e.byId),i=Object.assign({},e.claimsByUri);return Object.keys(i).forEach(function(e){i[e]===n&&delete i[e]}),delete r[n],Object.assign({},e,{byId:r,claimsByUri:i})},a[i.CREATE_CHANNEL_COMPLETED]=function(e,t){var n=t.data.channelClaim,r=Object.assign({},e.byId),i=new Set(e.myChannelClaims);return r[n.claim_id]=n,i.add(n.claim_id),Object.assign({},e,{byId:r,myChannelClaims:i})},a[i.FETCH_FEATURED_CONTENT_STARTED]=function(e){return Object.assign({},e,{fetchingFeaturedContent:!0})},a[i.FETCH_FEATURED_CONTENT_COMPLETED]=function(e,t){var n=t.data,r=n.uris,i=n.success;return Object.assign({},e,{fetchingFeaturedContent:!1,fetchingFeaturedContentFailed:!i,featuredUris:r})},a[i.FETCH_REWARD_CONTENT_COMPLETED]=function(e,t){var n=t.data.claimIds;return Object.assign({},e,{rewardedContentClaimIds:n})},a[i.RESOLVE_URIS_STARTED]=function(e,t){var n=t.data.uris,r=e.resolvingUris||[],i=Object.assign([],r);return n.forEach(function(e){i.includes(e)||i.push(e)}),Object.assign({},e,{resolvingUris:i})},a[i.FETCH_CHANNEL_CLAIM_COUNT_COMPLETED]=function(e,t){var n=Object.assign({},e.channelClaimCounts),r=t.data,i=r.uri,a=r.totalClaims;return n[i]=a,Object.assign({},e,{channelClaimCounts:n})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.formatCredits=function(e,t){return e.toFixed(t||1).replace(/\.?0+$/,"")},t.formatFullPrice=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n="",r=e.toString().split("."),i=r[1];if(i){var a=i.split(""),c=a.filter(function(e){return"0"!==e})[0],o=a.indexOf(c);n="."+i.substring(0,o+t)}return parseFloat(r[0]+n)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.doUpdateBalance=s,t.doBalanceSubscribe=function(){return function(e){e(s()),setInterval(function(){return e(s())},5e3)}},t.doFetchTransactions=function(){return function(e){e({type:i.FETCH_TRANSACTIONS_STARTED}),c.default.transaction_list().then(function(t){e({type:i.FETCH_TRANSACTIONS_COMPLETED,data:{transactions:t}})})}},t.doFetchBlock=function(e){return function(t){c.default.block_show({height:e}).then(function(e){t({type:i.FETCH_BLOCK_SUCCESS,data:{block:e}})})}},t.doGetNewAddress=u,t.doCheckAddressIsMine=function(e){return function(t){t({type:i.CHECK_ADDRESS_IS_MINE_STARTED}),c.default.wallet_is_address_mine({address:e}).then(function(e){e||t(u()),t({type:i.CHECK_ADDRESS_IS_MINE_COMPLETED})})}},t.doSendDraftTransaction=function(e,t){return function(n,r){var a=r(),s=(0,l.selectBalance)(a);if(s-t<=0)n((0,o.doNotify)({title:"Insufficient credits",message:"Insufficient credits",type:"error",displayType:["modal","toast"]}));else{n({type:i.SEND_TRANSACTION_STARTED});c.default.wallet_send({amount:t,address:e}).then(function(e){!0===e?(n({type:i.SEND_TRANSACTION_COMPLETED}),n((0,o.doNotify)({title:"Credits sent",message:"You sent "+t+" LBC",type:"error",displayType:["snackbar","toast"],linkText:"History",linkTarget:"/wallet"}))):(n({type:i.SEND_TRANSACTION_FAILED,data:{error:e}}),n((0,o.doNotify)({title:"Transaction failed",message:"Transaction failed",type:"error",displayType:["snackbar","toast"]})))},function(e){n({type:i.SEND_TRANSACTION_FAILED,data:{error:e.message}}),n((0,o.doNotify)({title:"Transaction failed",message:"Transaction failed",type:"error",displayType:["snackbar","toast"]}))})}}},t.doSetDraftTransactionAmount=function(e){return{type:i.SET_DRAFT_TRANSACTION_AMOUNT,data:{amount:e}}},t.doSetDraftTransactionAddress=function(e){return{type:i.SET_DRAFT_TRANSACTION_ADDRESS,data:{address:e}}},t.doSendSupport=function(e,t,n,r,a){return function(n,s){var u=s(),f=(0,l.selectBalance)(u);if(f-e<=0)n((0,o.doNotify)({title:"Insufficient credits",message:"Insufficient credits",type:"error",displayType:["modal","toast"]}));else{n({type:i.SUPPORT_TRANSACTION_STARTED}),c.default.wallet_send({claim_id:t,amount:e}).then(function(){n((0,o.doNotify)({message:__("You sent "+e+" LBC as support, Mahalo!"),linkText:__("History"),linkTarget:__("/wallet"),displayType:["snackbar"]})),r&&r()},a)}}};var r,i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0)),a=n(6),c=(r=a)&&r.__esModule?r:{default:r},o=n(9),l=n(12);function s(){return function(e,t){var n=t().wallet.balance;c.default.wallet_balance().then(function(t){n!==t&&e({type:i.UPDATE_BALANCE,data:{balance:t}})})}}function u(){return function(e){e({type:i.GET_NEW_ADDRESS_STARTED}),c.default.wallet_new_address().then(function(t){e({type:i.GET_NEW_ADDRESS_COMPLETED,data:{address:t}})})}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var c,o=e[Symbol.iterator]();!(r=(c=o.next()).done)&&(n.push(c.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{!r&&o.return&&o.return()}finally{if(i)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();t.doFetchBlackListedOutpoints=s,t.doBlackListedOutpointsSubscribe=function(){return function(e){e(s()),setInterval(function(){return e(s())},l)}};var i,a=n(5),c=(i=a)&&i.__esModule?i:{default:i},o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0));var l=36e5;function s(){return function(e){e({type:o.FETCH_BLACK_LISTED_CONTENT_STARTED});c.default.call("file","list_blocked").then(function(t){var n=[];t.outpoints.forEach(function(e,t){var i=e.split(":"),a=r(i,2),c=a[0],o=a[1];n[t]={txid:c,nout:Number.parseInt(o,10)}}),e({type:o.FETCH_BLACK_LISTED_CONTENT_COMPLETED,data:{outpoints:n,success:!0}})},function(t){var n=t.error;e({type:o.FETCH_BLACK_LISTED_CONTENT_FAILED,data:{error:n,success:!1}})})}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return 200===e.status?Promise.resolve(e.json()):Promise.reject(new Error(e.statusText))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.FILE="file",t.CHANNEL="channel",t.SEARCH="search"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.doUpdateSearchQuery=t.getSearchSuggestions=t.doSearch=void 0;var r,i=d(n(0)),a=d(n(32)),c=n(3),o=n(8),l=n(13),s=n(7),u=n(31),f=(r=u)&&r.__esModule?r:{default:r};function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}t.doSearch=function(e){return function(t,n){var r=n(),a=e.replace(/^lbry:\/\//i,"");if(a){var u=(0,l.makeSelectSearchUris)(a)(r);u&&u.length||(t({type:i.SEARCH_START}),r.search.searchQuery||t({type:i.UPDATE_SEARCH_QUERY,data:{searchQuery:a}}),fetch("https://lighthouse.lbry.io/search?s="+a).then(f.default).then(function(e){var n=[],r=[];e.forEach(function(e){var t=(0,c.buildURI)({claimName:e.name,claimId:e.claimId});r.push((0,o.doResolveUri)(t)),n.push(t)}),r.push({type:i.SEARCH_SUCCESS,data:{query:a,uris:n}}),t(s.batchActions.apply(void 0,r))}).catch(function(){t({type:i.SEARCH_FAIL})}))}else t({type:i.SEARCH_FAIL})}};var E=t.getSearchSuggestions=function(e){return function(t){var n=e.trim();if(n&&"@"!==n&&"lbry:"!==n&&"lbry:/"!==n&&"lbry://"!==n){var r=[];try{var o=n;o.endsWith("#")&&(o=o.slice(0,-1));var l=(0,c.normalizeURI)(o),s=(0,c.parseURI)(l),u=s.claimName,d=s.isChannel;r.push({value:l,shorthand:d?u.slice(1):u,type:d?a.CHANNEL:a.FILE},{value:u,type:a.SEARCH}),t({type:i.UPDATE_SEARCH_SUGGESTIONS,data:{suggestions:r}})}catch(e){r.push({value:n,type:a.SEARCH})}t({type:i.UPDATE_SEARCH_SUGGESTIONS,data:{suggestions:r}});var E=e.replace(/lbry:\/\//g,"").replace(/-/g," ");E.includes("#")&&(E=E.substring(0,E.indexOf("#"))),fetch("https://lighthouse.lbry.io/autocomplete?s="+E).then(f.default).then(function(e){var n=e.slice(0,6).map(function(e){var t=e.startsWith("@");return{value:t?"lbry://"+e:e,shorthand:t?e.slice(1):"",type:t?"channel":"search"}});r=r.concat(n),t({type:i.UPDATE_SEARCH_SUGGESTIONS,data:{suggestions:r}})}).catch(function(){})}else t({type:i.UPDATE_SEARCH_SUGGESTIONS,data:{suggestions:[]}})}};t.doUpdateSearchQuery=function(e,t){return function(n){n({type:i.UPDATE_SEARCH_QUERY,data:{query:e}}),e.endsWith(" ")&&t||n(E(e))}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.doFetchFileInfo=function(e){return function(t,n){var r=n(),a=(0,l.selectClaimsByUri)(r)[e],o=a?a.txid+":"+a.nout:null,u=!!(0,s.selectUrisLoading)(r)[e];u||(t({type:i.FETCH_FILE_INFO_STARTED,data:{outpoint:o}}),c.default.file_list({outpoint:o,full_status:!0}).then(function(e){t({type:i.FETCH_FILE_INFO_COMPLETED,data:{outpoint:o,fileInfo:e&&e.length?e[0]:null}})}))}},t.doFileList=u,t.doFetchFileInfosAndPublishedClaims=function(){return function(e,t){var n=t(),r=(0,l.selectIsFetchingClaimListMine)(n),i=(0,s.selectIsFetchingFileList)(n);r||e((0,o.doFetchClaimListMine)()),i||e(u())}};var r,i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0)),a=n(6),c=(r=a)&&r.__esModule?r:{default:r},o=n(8),l=n(2),s=n(14);function u(){return function(e,t){var n=t();(0,s.selectIsFetchingFileList)(n)||(e({type:i.FILE_LIST_STARTED}),c.default.file_list().then(function(t){e({type:i.FILE_LIST_SUCCEEDED,data:{fileInfos:t}})}))}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.doFetchCostInfoForUri=function(e){return function(t,n){var r=n(),a=(0,o.selectClaimsByUri)(r)[e];if(a){var l=a.value&&a.value.stream&&a.value.stream.metadata?a.value.stream.metadata.fee:void 0;void 0===l?s({cost:0,includesData:!0}):"LBC"===l.currency?s({cost:l.amount,includesData:!0}):c.default.getExchangeRates().then(function(e){var t=e.LBC_USD;s({cost:l.amount/t,includesData:!0})})}function s(n){t({type:i.FETCH_COST_INFO_COMPLETED,data:{uri:e,costInfo:n}})}}};var r,i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0)),a=n(5),c=(r=a)&&r.__esModule?r:{default:r},o=n(2)},function(e,t,n){"use strict";var r=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,o){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?a(c(e),function(c){var o=encodeURIComponent(r(c))+n;return i(e[c])?a(e[c],function(e){return o+encodeURIComponent(r(e))}).join(t):o+encodeURIComponent(r(e[c]))}).join(t):o?encodeURIComponent(r(o))+n+encodeURIComponent(r(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function a(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r0&&s>l&&(s=l);for(var u=0;u=0?(f=S.substr(0,T),d=S.substr(T+1)):(f=S,d=""),E=decodeURIComponent(f),_=decodeURIComponent(d),r(c,E)?i(c[E])?c[E].push(_):c[E]=[c[E],_]:c[E]=_}return c};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";t.decode=t.parse=n(37),t.encode=t.stringify=n(36)},function(e,t){var n,r,i=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function c(){throw new Error("clearTimeout has not been defined")}function o(e){if(n===setTimeout)return setTimeout(e,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(e){n=a}try{r="function"==typeof clearTimeout?clearTimeout:c}catch(e){r=c}}();var l,s=[],u=!1,f=-1;function d(){u&&l&&(u=!1,l.length?s=l.concat(s):f=-1,s.length&&E())}function E(){if(!u){var e=o(d);u=!0;for(var t=s.length;t;){for(l=s,s=[];++f1)for(var n=1;n 1 && arguments[1] !== undefined ? arguments[1] : false; + + // Break into components. Empty sub-matches are converted to null + var componentsRegex = new RegExp('^((?:lbry://)?)' + // protocol + '([^:$#/]*)' + // claim name (stops at the first separator or end) + '([:$#]?)([^/]*)' + // modifier separator, modifier (stops at the first path separator or end) + '(/?)(.*)' // path separator, path + ); + + var _componentsRegex$exec = componentsRegex.exec(URI).slice(1).map(function (match) { + return match || null; + }), + _componentsRegex$exec2 = _slicedToArray(_componentsRegex$exec, 6), + proto = _componentsRegex$exec2[0], + claimName = _componentsRegex$exec2[1], + modSep = _componentsRegex$exec2[2], + modVal = _componentsRegex$exec2[3], + pathSep = _componentsRegex$exec2[4], + path = _componentsRegex$exec2[5]; + + var contentName = void 0; + + // Validate protocol + if (requireProto && !proto) { + throw new Error(__('LBRY URIs must include a protocol prefix (lbry://).')); + } + + // Validate and process name + if (!claimName) { + throw new Error(__('URI does not include name.')); + } + + var isChannel = claimName.startsWith('@'); + var channelName = isChannel ? claimName.slice(1) : claimName; + + if (isChannel) { + if (!channelName) { + throw new Error(__('No channel name after @.')); + } + + if (channelName.length < channelNameMinLength) { + throw new Error(__('Channel names must be at least %s characters.', channelNameMinLength)); + } + + contentName = path; + } + + var nameBadChars = (channelName || claimName).match(regexInvalidURI); + if (nameBadChars) { + throw new Error(__('Invalid character %s in name: %s.', nameBadChars.length === 1 ? '' : 's', nameBadChars.join(', '))); + } + + // Validate and process modifier (claim ID, bid position or claim sequence) + var claimId = void 0; + var claimSequence = void 0; + var bidPosition = void 0; + if (modSep) { + if (!modVal) { + throw new Error(__('No modifier provided after separator %s.', modSep)); + } + + if (modSep === '#') { + claimId = modVal; + } else if (modSep === ':') { + claimSequence = modVal; + } else if (modSep === '$') { + bidPosition = modVal; + } + } + + if (claimId && (claimId.length > claimIdMaxLength || !claimId.match(/^[0-9a-f]+$/)) && !claimId.match(/^pending/) // ought to be dropped when savePendingPublish drops hack + ) { + throw new Error(__('Invalid claim ID %s.', claimId)); + } + + if (claimSequence && !claimSequence.match(/^-?[1-9][0-9]*$/)) { + throw new Error(__('Claim sequence must be a number.')); + } + + if (bidPosition && !bidPosition.match(/^-?[1-9][0-9]*$/)) { + throw new Error(__('Bid position must be a number.')); + } + + // Validate and process path + if (path) { + if (!isChannel) { + throw new Error(__('Only channel URIs may have a path.')); + } + + var pathBadChars = path.match(regexInvalidURI); + if (pathBadChars) { + throw new Error(__('Invalid character in path: %s', pathBadChars.join(', '))); + } + + contentName = path; + } else if (pathSep) { + throw new Error(__('No path provided after /')); + } + + return _extends({ + claimName: claimName, + path: path, + isChannel: isChannel + }, contentName ? { contentName: contentName } : {}, channelName ? { channelName: channelName } : {}, claimSequence ? { claimSequence: parseInt(claimSequence, 10) } : {}, bidPosition ? { bidPosition: parseInt(bidPosition, 10) } : {}, claimId ? { claimId: claimId } : {}, path ? { path: path } : {}); +} + +/** + * Takes an object in the same format returned by parse() and builds a URI. + * + * The channelName key will accept names with or without the @ prefix. + */ +function buildURI(URIObj) { + var includeProto = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var claimId = URIObj.claimId, + claimSequence = URIObj.claimSequence, + bidPosition = URIObj.bidPosition, + contentName = URIObj.contentName, + channelName = URIObj.channelName; + var claimName = URIObj.claimName, + path = URIObj.path; + + + if (channelName) { + var channelNameFormatted = channelName.startsWith('@') ? channelName : '@' + channelName; + if (!claimName) { + claimName = channelNameFormatted; + } else if (claimName !== channelNameFormatted) { + throw new Error(__('Received a channel content URI, but claim name and channelName do not match. "name" represents the value in the name position of the URI (lbry://name...), which for channel content will be the channel name. In most cases, to construct a channel URI you should just pass channelName and contentName.')); + } + } + + if (contentName) { + if (!claimName) { + claimName = contentName; + } else if (!path) { + path = contentName; + } + if (path && path !== contentName) { + throw new Error(__('Path and contentName do not match. Only one is required; most likely you wanted contentName.')); + } + } + + return (includeProto ? 'lbry://' : '') + claimName + (claimId ? '#' + claimId : '') + (claimSequence ? ':' + claimSequence : '') + (bidPosition ? '' + bidPosition : '') + (path ? '/' + path : ''); +} + +/* Takes a parseable LBRY URI and converts it to standard, canonical format */ +function normalizeURI(URI) { + if (URI.match(/pending_claim/)) return URI; + + var _parseURI = parseURI(URI), + claimName = _parseURI.claimName, + path = _parseURI.path, + bidPosition = _parseURI.bidPosition, + claimSequence = _parseURI.claimSequence, + claimId = _parseURI.claimId; + + return buildURI({ claimName: claimName, path: path, claimSequence: claimSequence, bidPosition: bidPosition, claimId: claimId }); +} + +function isURIValid(URI) { + var parts = void 0; + try { + parts = parseURI(normalizeURI(URI)); + } catch (error) { + return false; + } + return parts && parts.claimName; +} + +function isNameValid(claimName) { + var checkCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + var regexp = new RegExp('^[a-z0-9-]+$', checkCase ? '' : 'i'); + return regexp.test(claimName); +} + +function isURIClaimable(URI) { + var parts = void 0; + try { + parts = parseURI(normalizeURI(URI)); + } catch (error) { + return false; + } + return parts && parts.claimName && !parts.claimId && !parts.bidPosition && !parts.claimSequence && !parts.isChannel && !parts.path; +} + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +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; }; // @flow + + +exports.doNotify = doNotify; +exports.doHideNotification = doHideNotification; + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +var _Notification = __webpack_require__(1); + +var _Notification2 = _interopRequireDefault(_Notification); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function doNotify(notification /*: Notification*/, notificationProps /*: NotificationProps*/) { + return { + type: ACTIONS.CREATE_NOTIFICATION, + data: { + notification: notification, + // using this syntax to create an object if notificationProps is undefined + notificationProps: _extends({}, notificationProps) + } + }; +} + +function doHideNotification() { + return { + type: ACTIONS.DISMISS_NOTIFICATION + }; +} + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var WINDOW_FOCUSED = exports.WINDOW_FOCUSED = 'WINDOW_FOCUSED'; +var DAEMON_READY = exports.DAEMON_READY = 'DAEMON_READY'; +var DAEMON_VERSION_MATCH = exports.DAEMON_VERSION_MATCH = 'DAEMON_VERSION_MATCH'; +var DAEMON_VERSION_MISMATCH = exports.DAEMON_VERSION_MISMATCH = 'DAEMON_VERSION_MISMATCH'; +var VOLUME_CHANGED = exports.VOLUME_CHANGED = 'VOLUME_CHANGED'; + +// Navigation +var CHANGE_AFTER_AUTH_PATH = exports.CHANGE_AFTER_AUTH_PATH = 'CHANGE_AFTER_AUTH_PATH'; +var WINDOW_SCROLLED = exports.WINDOW_SCROLLED = 'WINDOW_SCROLLED'; +var HISTORY_NAVIGATE = exports.HISTORY_NAVIGATE = 'HISTORY_NAVIGATE'; + +// Upgrades +var UPGRADE_CANCELLED = exports.UPGRADE_CANCELLED = 'UPGRADE_CANCELLED'; +var DOWNLOAD_UPGRADE = exports.DOWNLOAD_UPGRADE = 'DOWNLOAD_UPGRADE'; +var UPGRADE_DOWNLOAD_STARTED = exports.UPGRADE_DOWNLOAD_STARTED = 'UPGRADE_DOWNLOAD_STARTED'; +var UPGRADE_DOWNLOAD_COMPLETED = exports.UPGRADE_DOWNLOAD_COMPLETED = 'UPGRADE_DOWNLOAD_COMPLETED'; +var UPGRADE_DOWNLOAD_PROGRESSED = exports.UPGRADE_DOWNLOAD_PROGRESSED = 'UPGRADE_DOWNLOAD_PROGRESSED'; +var CHECK_UPGRADE_AVAILABLE = exports.CHECK_UPGRADE_AVAILABLE = 'CHECK_UPGRADE_AVAILABLE'; +var CHECK_UPGRADE_START = exports.CHECK_UPGRADE_START = 'CHECK_UPGRADE_START'; +var CHECK_UPGRADE_SUCCESS = exports.CHECK_UPGRADE_SUCCESS = 'CHECK_UPGRADE_SUCCESS'; +var CHECK_UPGRADE_FAIL = exports.CHECK_UPGRADE_FAIL = 'CHECK_UPGRADE_FAIL'; +var CHECK_UPGRADE_SUBSCRIBE = exports.CHECK_UPGRADE_SUBSCRIBE = 'CHECK_UPGRADE_SUBSCRIBE'; +var UPDATE_VERSION = exports.UPDATE_VERSION = 'UPDATE_VERSION'; +var UPDATE_REMOTE_VERSION = exports.UPDATE_REMOTE_VERSION = 'UPDATE_REMOTE_VERSION'; +var SKIP_UPGRADE = exports.SKIP_UPGRADE = 'SKIP_UPGRADE'; +var START_UPGRADE = exports.START_UPGRADE = 'START_UPGRADE'; +var AUTO_UPDATE_DECLINED = exports.AUTO_UPDATE_DECLINED = 'AUTO_UPDATE_DECLINED'; +var AUTO_UPDATE_DOWNLOADED = exports.AUTO_UPDATE_DOWNLOADED = 'AUTO_UPDATE_DOWNLOADED'; + +// Wallet +var GET_NEW_ADDRESS_STARTED = exports.GET_NEW_ADDRESS_STARTED = 'GET_NEW_ADDRESS_STARTED'; +var GET_NEW_ADDRESS_COMPLETED = exports.GET_NEW_ADDRESS_COMPLETED = 'GET_NEW_ADDRESS_COMPLETED'; +var FETCH_TRANSACTIONS_STARTED = exports.FETCH_TRANSACTIONS_STARTED = 'FETCH_TRANSACTIONS_STARTED'; +var FETCH_TRANSACTIONS_COMPLETED = exports.FETCH_TRANSACTIONS_COMPLETED = 'FETCH_TRANSACTIONS_COMPLETED'; +var UPDATE_BALANCE = exports.UPDATE_BALANCE = 'UPDATE_BALANCE'; +var CHECK_ADDRESS_IS_MINE_STARTED = exports.CHECK_ADDRESS_IS_MINE_STARTED = 'CHECK_ADDRESS_IS_MINE_STARTED'; +var CHECK_ADDRESS_IS_MINE_COMPLETED = exports.CHECK_ADDRESS_IS_MINE_COMPLETED = 'CHECK_ADDRESS_IS_MINE_COMPLETED'; +var SEND_TRANSACTION_STARTED = exports.SEND_TRANSACTION_STARTED = 'SEND_TRANSACTION_STARTED'; +var SEND_TRANSACTION_COMPLETED = exports.SEND_TRANSACTION_COMPLETED = 'SEND_TRANSACTION_COMPLETED'; +var SEND_TRANSACTION_FAILED = exports.SEND_TRANSACTION_FAILED = 'SEND_TRANSACTION_FAILED'; +var FETCH_BLOCK_SUCCESS = exports.FETCH_BLOCK_SUCCESS = 'FETCH_BLOCK_SUCCESS'; +var SUPPORT_TRANSACTION_STARTED = exports.SUPPORT_TRANSACTION_STARTED = 'SUPPORT_TRANSACTION_STARTED'; +var SUPPORT_TRANSACTION_COMPLETED = exports.SUPPORT_TRANSACTION_COMPLETED = 'SUPPORT_TRANSACTION_COMPLETED'; +var SUPPORT_TRANSACTION_FAILED = exports.SUPPORT_TRANSACTION_FAILED = 'SUPPORT_TRANSACTION_FAILED'; + +// Claims +var FETCH_FEATURED_CONTENT_STARTED = exports.FETCH_FEATURED_CONTENT_STARTED = 'FETCH_FEATURED_CONTENT_STARTED'; +var FETCH_FEATURED_CONTENT_COMPLETED = exports.FETCH_FEATURED_CONTENT_COMPLETED = 'FETCH_FEATURED_CONTENT_COMPLETED'; +var RESOLVE_URIS_STARTED = exports.RESOLVE_URIS_STARTED = 'RESOLVE_URIS_STARTED'; +var RESOLVE_URIS_COMPLETED = exports.RESOLVE_URIS_COMPLETED = 'RESOLVE_URIS_COMPLETED'; +var FETCH_CHANNEL_CLAIMS_STARTED = exports.FETCH_CHANNEL_CLAIMS_STARTED = 'FETCH_CHANNEL_CLAIMS_STARTED'; +var FETCH_CHANNEL_CLAIMS_COMPLETED = exports.FETCH_CHANNEL_CLAIMS_COMPLETED = 'FETCH_CHANNEL_CLAIMS_COMPLETED'; +var FETCH_CHANNEL_CLAIM_COUNT_STARTED = exports.FETCH_CHANNEL_CLAIM_COUNT_STARTED = 'FETCH_CHANNEL_CLAIM_COUNT_STARTED'; +var FETCH_CHANNEL_CLAIM_COUNT_COMPLETED = exports.FETCH_CHANNEL_CLAIM_COUNT_COMPLETED = 'FETCH_CHANNEL_CLAIM_COUNT_COMPLETED'; +var FETCH_CLAIM_LIST_MINE_STARTED = exports.FETCH_CLAIM_LIST_MINE_STARTED = 'FETCH_CLAIM_LIST_MINE_STARTED'; +var FETCH_CLAIM_LIST_MINE_COMPLETED = exports.FETCH_CLAIM_LIST_MINE_COMPLETED = 'FETCH_CLAIM_LIST_MINE_COMPLETED'; +var ABANDON_CLAIM_STARTED = exports.ABANDON_CLAIM_STARTED = 'ABANDON_CLAIM_STARTED'; +var ABANDON_CLAIM_SUCCEEDED = exports.ABANDON_CLAIM_SUCCEEDED = 'ABANDON_CLAIM_SUCCEEDED'; +var FETCH_CHANNEL_LIST_STARTED = exports.FETCH_CHANNEL_LIST_STARTED = 'FETCH_CHANNEL_LIST_STARTED'; +var FETCH_CHANNEL_LIST_COMPLETED = exports.FETCH_CHANNEL_LIST_COMPLETED = 'FETCH_CHANNEL_LIST_COMPLETED'; +var CREATE_CHANNEL_STARTED = exports.CREATE_CHANNEL_STARTED = 'CREATE_CHANNEL_STARTED'; +var CREATE_CHANNEL_COMPLETED = exports.CREATE_CHANNEL_COMPLETED = 'CREATE_CHANNEL_COMPLETED'; +var PUBLISH_STARTED = exports.PUBLISH_STARTED = 'PUBLISH_STARTED'; +var PUBLISH_COMPLETED = exports.PUBLISH_COMPLETED = 'PUBLISH_COMPLETED'; +var PUBLISH_FAILED = exports.PUBLISH_FAILED = 'PUBLISH_FAILED'; +var SET_PLAYING_URI = exports.SET_PLAYING_URI = 'PLAY_URI'; +var FETCH_BLACK_LISTED_CONTENT_STARTED = exports.FETCH_BLACK_LISTED_CONTENT_STARTED = 'FETCH_BLACK_LISTED_CONTENT_STARTED'; +var FETCH_BLACK_LISTED_CONTENT_COMPLETED = exports.FETCH_BLACK_LISTED_CONTENT_COMPLETED = 'FETCH_BLACK_LISTED_CONTENT_COMPLETED'; +var FETCH_BLACK_LISTED_CONTENT_FAILED = exports.FETCH_BLACK_LISTED_CONTENT_FAILED = 'FETCH_BLACK_LISTED_CONTENT_FAILED'; +var BLACK_LISTED_CONTENT_SUBSCRIBE = exports.BLACK_LISTED_CONTENT_SUBSCRIBE = 'BLACK_LISTED_CONTENT_SUBSCRIBE'; + +// Files +var FILE_LIST_STARTED = exports.FILE_LIST_STARTED = 'FILE_LIST_STARTED'; +var FILE_LIST_SUCCEEDED = exports.FILE_LIST_SUCCEEDED = 'FILE_LIST_SUCCEEDED'; +var FETCH_FILE_INFO_STARTED = exports.FETCH_FILE_INFO_STARTED = 'FETCH_FILE_INFO_STARTED'; +var FETCH_FILE_INFO_COMPLETED = exports.FETCH_FILE_INFO_COMPLETED = 'FETCH_FILE_INFO_COMPLETED'; +var FETCH_COST_INFO_STARTED = exports.FETCH_COST_INFO_STARTED = 'FETCH_COST_INFO_STARTED'; +var FETCH_COST_INFO_COMPLETED = exports.FETCH_COST_INFO_COMPLETED = 'FETCH_COST_INFO_COMPLETED'; +var LOADING_VIDEO_STARTED = exports.LOADING_VIDEO_STARTED = 'LOADING_VIDEO_STARTED'; +var LOADING_VIDEO_COMPLETED = exports.LOADING_VIDEO_COMPLETED = 'LOADING_VIDEO_COMPLETED'; +var LOADING_VIDEO_FAILED = exports.LOADING_VIDEO_FAILED = 'LOADING_VIDEO_FAILED'; +var DOWNLOADING_STARTED = exports.DOWNLOADING_STARTED = 'DOWNLOADING_STARTED'; +var DOWNLOADING_PROGRESSED = exports.DOWNLOADING_PROGRESSED = 'DOWNLOADING_PROGRESSED'; +var DOWNLOADING_COMPLETED = exports.DOWNLOADING_COMPLETED = 'DOWNLOADING_COMPLETED'; +var DOWNLOADING_CANCELED = exports.DOWNLOADING_CANCELED = 'DOWNLOADING_CANCELED'; +var PLAY_VIDEO_STARTED = exports.PLAY_VIDEO_STARTED = 'PLAY_VIDEO_STARTED'; +var FETCH_AVAILABILITY_STARTED = exports.FETCH_AVAILABILITY_STARTED = 'FETCH_AVAILABILITY_STARTED'; +var FETCH_AVAILABILITY_COMPLETED = exports.FETCH_AVAILABILITY_COMPLETED = 'FETCH_AVAILABILITY_COMPLETED'; +var FILE_DELETE = exports.FILE_DELETE = 'FILE_DELETE'; + +// Search +var SEARCH_START = exports.SEARCH_START = 'SEARCH_START'; +var SEARCH_SUCCESS = exports.SEARCH_SUCCESS = 'SEARCH_SUCCESS'; +var SEARCH_FAIL = exports.SEARCH_FAIL = 'SEARCH_FAIL'; +var UPDATE_SEARCH_QUERY = exports.UPDATE_SEARCH_QUERY = 'UPDATE_SEARCH_QUERY'; +var UPDATE_SEARCH_SUGGESTIONS = exports.UPDATE_SEARCH_SUGGESTIONS = 'UPDATE_SEARCH_SUGGESTIONS'; + +// Settings +var DAEMON_SETTINGS_RECEIVED = exports.DAEMON_SETTINGS_RECEIVED = 'DAEMON_SETTINGS_RECEIVED'; +var CLIENT_SETTING_CHANGED = exports.CLIENT_SETTING_CHANGED = 'CLIENT_SETTING_CHANGED'; +var UPDATE_IS_NIGHT = exports.UPDATE_IS_NIGHT = 'UPDATE_IS_NIGHT'; + +// User +var AUTHENTICATION_STARTED = exports.AUTHENTICATION_STARTED = 'AUTHENTICATION_STARTED'; +var AUTHENTICATION_SUCCESS = exports.AUTHENTICATION_SUCCESS = 'AUTHENTICATION_SUCCESS'; +var AUTHENTICATION_FAILURE = exports.AUTHENTICATION_FAILURE = 'AUTHENTICATION_FAILURE'; +var USER_EMAIL_DECLINE = exports.USER_EMAIL_DECLINE = 'USER_EMAIL_DECLINE'; +var USER_EMAIL_NEW_STARTED = exports.USER_EMAIL_NEW_STARTED = 'USER_EMAIL_NEW_STARTED'; +var USER_EMAIL_NEW_SUCCESS = exports.USER_EMAIL_NEW_SUCCESS = 'USER_EMAIL_NEW_SUCCESS'; +var USER_EMAIL_NEW_EXISTS = exports.USER_EMAIL_NEW_EXISTS = 'USER_EMAIL_NEW_EXISTS'; +var USER_EMAIL_NEW_FAILURE = exports.USER_EMAIL_NEW_FAILURE = 'USER_EMAIL_NEW_FAILURE'; +var USER_EMAIL_VERIFY_STARTED = exports.USER_EMAIL_VERIFY_STARTED = 'USER_EMAIL_VERIFY_STARTED'; +var USER_EMAIL_VERIFY_SUCCESS = exports.USER_EMAIL_VERIFY_SUCCESS = 'USER_EMAIL_VERIFY_SUCCESS'; +var USER_EMAIL_VERIFY_FAILURE = exports.USER_EMAIL_VERIFY_FAILURE = 'USER_EMAIL_VERIFY_FAILURE'; +var USER_PHONE_RESET = exports.USER_PHONE_RESET = 'USER_PHONE_RESET'; +var USER_PHONE_NEW_STARTED = exports.USER_PHONE_NEW_STARTED = 'USER_PHONE_NEW_STARTED'; +var USER_PHONE_NEW_SUCCESS = exports.USER_PHONE_NEW_SUCCESS = 'USER_PHONE_NEW_SUCCESS'; +var USER_PHONE_NEW_FAILURE = exports.USER_PHONE_NEW_FAILURE = 'USER_PHONE_NEW_FAILURE'; +var USER_PHONE_VERIFY_STARTED = exports.USER_PHONE_VERIFY_STARTED = 'USER_PHONE_VERIFY_STARTED'; +var USER_PHONE_VERIFY_SUCCESS = exports.USER_PHONE_VERIFY_SUCCESS = 'USER_PHONE_VERIFY_SUCCESS'; +var USER_PHONE_VERIFY_FAILURE = exports.USER_PHONE_VERIFY_FAILURE = 'USER_PHONE_VERIFY_FAILURE'; +var USER_IDENTITY_VERIFY_STARTED = exports.USER_IDENTITY_VERIFY_STARTED = 'USER_IDENTITY_VERIFY_STARTED'; +var USER_IDENTITY_VERIFY_SUCCESS = exports.USER_IDENTITY_VERIFY_SUCCESS = 'USER_IDENTITY_VERIFY_SUCCESS'; +var USER_IDENTITY_VERIFY_FAILURE = exports.USER_IDENTITY_VERIFY_FAILURE = 'USER_IDENTITY_VERIFY_FAILURE'; +var USER_FETCH_STARTED = exports.USER_FETCH_STARTED = 'USER_FETCH_STARTED'; +var USER_FETCH_SUCCESS = exports.USER_FETCH_SUCCESS = 'USER_FETCH_SUCCESS'; +var USER_FETCH_FAILURE = exports.USER_FETCH_FAILURE = 'USER_FETCH_FAILURE'; +var USER_INVITE_STATUS_FETCH_STARTED = exports.USER_INVITE_STATUS_FETCH_STARTED = 'USER_INVITE_STATUS_FETCH_STARTED'; +var USER_INVITE_STATUS_FETCH_SUCCESS = exports.USER_INVITE_STATUS_FETCH_SUCCESS = 'USER_INVITE_STATUS_FETCH_SUCCESS'; +var USER_INVITE_STATUS_FETCH_FAILURE = exports.USER_INVITE_STATUS_FETCH_FAILURE = 'USER_INVITE_STATUS_FETCH_FAILURE'; +var USER_INVITE_NEW_STARTED = exports.USER_INVITE_NEW_STARTED = 'USER_INVITE_NEW_STARTED'; +var USER_INVITE_NEW_SUCCESS = exports.USER_INVITE_NEW_SUCCESS = 'USER_INVITE_NEW_SUCCESS'; +var USER_INVITE_NEW_FAILURE = exports.USER_INVITE_NEW_FAILURE = 'USER_INVITE_NEW_FAILURE'; +var FETCH_ACCESS_TOKEN_SUCCESS = exports.FETCH_ACCESS_TOKEN_SUCCESS = 'FETCH_ACCESS_TOKEN_SUCCESS'; + +// Rewards +var FETCH_REWARDS_STARTED = exports.FETCH_REWARDS_STARTED = 'FETCH_REWARDS_STARTED'; +var FETCH_REWARDS_COMPLETED = exports.FETCH_REWARDS_COMPLETED = 'FETCH_REWARDS_COMPLETED'; +var CLAIM_REWARD_STARTED = exports.CLAIM_REWARD_STARTED = 'CLAIM_REWARD_STARTED'; +var CLAIM_REWARD_SUCCESS = exports.CLAIM_REWARD_SUCCESS = 'CLAIM_REWARD_SUCCESS'; +var CLAIM_REWARD_FAILURE = exports.CLAIM_REWARD_FAILURE = 'CLAIM_REWARD_FAILURE'; +var CLAIM_REWARD_CLEAR_ERROR = exports.CLAIM_REWARD_CLEAR_ERROR = 'CLAIM_REWARD_CLEAR_ERROR'; +var FETCH_REWARD_CONTENT_COMPLETED = exports.FETCH_REWARD_CONTENT_COMPLETED = 'FETCH_REWARD_CONTENT_COMPLETED'; + +// Language +var DOWNLOAD_LANGUAGE_SUCCEEDED = exports.DOWNLOAD_LANGUAGE_SUCCEEDED = 'DOWNLOAD_LANGUAGE_SUCCEEDED'; +var DOWNLOAD_LANGUAGE_FAILED = exports.DOWNLOAD_LANGUAGE_FAILED = 'DOWNLOAD_LANGUAGE_FAILED'; + +// ShapeShift +var GET_SUPPORTED_COINS_START = exports.GET_SUPPORTED_COINS_START = 'GET_SUPPORTED_COINS_START'; +var GET_SUPPORTED_COINS_SUCCESS = exports.GET_SUPPORTED_COINS_SUCCESS = 'GET_SUPPORTED_COINS_SUCCESS'; +var GET_SUPPORTED_COINS_FAIL = exports.GET_SUPPORTED_COINS_FAIL = 'GET_SUPPORTED_COINS_FAIL'; +var GET_COIN_STATS_START = exports.GET_COIN_STATS_START = 'GET_COIN_STATS_START'; +var GET_COIN_STATS_SUCCESS = exports.GET_COIN_STATS_SUCCESS = 'GET_COIN_STATS_SUCCESS'; +var GET_COIN_STATS_FAIL = exports.GET_COIN_STATS_FAIL = 'GET_COIN_STATS_FAIL'; +var PREPARE_SHAPE_SHIFT_START = exports.PREPARE_SHAPE_SHIFT_START = 'PREPARE_SHAPE_SHIFT_START'; +var PREPARE_SHAPE_SHIFT_SUCCESS = exports.PREPARE_SHAPE_SHIFT_SUCCESS = 'PREPARE_SHAPE_SHIFT_SUCCESS'; +var PREPARE_SHAPE_SHIFT_FAIL = exports.PREPARE_SHAPE_SHIFT_FAIL = 'PREPARE_SHAPE_SHIFT_FAIL'; +var GET_ACTIVE_SHIFT_START = exports.GET_ACTIVE_SHIFT_START = 'GET_ACTIVE_SHIFT_START'; +var GET_ACTIVE_SHIFT_SUCCESS = exports.GET_ACTIVE_SHIFT_SUCCESS = 'GET_ACTIVE_SHIFT_SUCCESS'; +var GET_ACTIVE_SHIFT_FAIL = exports.GET_ACTIVE_SHIFT_FAIL = 'GET_ACTIVE_SHIFT_FAIL'; +var CLEAR_SHAPE_SHIFT = exports.CLEAR_SHAPE_SHIFT = 'CLEAR_SHAPE_SHIFT'; + +// Subscriptions +var CHANNEL_SUBSCRIBE = exports.CHANNEL_SUBSCRIBE = 'CHANNEL_SUBSCRIBE'; +var CHANNEL_UNSUBSCRIBE = exports.CHANNEL_UNSUBSCRIBE = 'CHANNEL_UNSUBSCRIBE'; +var HAS_FETCHED_SUBSCRIPTIONS = exports.HAS_FETCHED_SUBSCRIPTIONS = 'HAS_FETCHED_SUBSCRIPTIONS'; +var SET_SUBSCRIPTION_LATEST = exports.SET_SUBSCRIPTION_LATEST = 'SET_SUBSCRIPTION_LATEST'; +var SET_SUBSCRIPTION_NOTIFICATION = exports.SET_SUBSCRIPTION_NOTIFICATION = 'SET_SUBSCRIPTION_NOTIFICATION'; +var SET_SUBSCRIPTION_NOTIFICATIONS = exports.SET_SUBSCRIPTION_NOTIFICATIONS = 'SET_SUBSCRIPTION_NOTIFICATIONS'; +var CHECK_SUBSCRIPTION_STARTED = exports.CHECK_SUBSCRIPTION_STARTED = 'CHECK_SUBSCRIPTION_STARTED'; +var CHECK_SUBSCRIPTION_COMPLETED = exports.CHECK_SUBSCRIPTION_COMPLETED = 'CHECK_SUBSCRIPTION_COMPLETED'; +var CHECK_SUBSCRIPTIONS_SUBSCRIBE = exports.CHECK_SUBSCRIPTIONS_SUBSCRIBE = 'CHECK_SUBSCRIPTIONS_SUBSCRIBE'; + +// Video controls +var SET_VIDEO_PAUSE = exports.SET_VIDEO_PAUSE = 'SET_VIDEO_PAUSE'; + +// Media controls +var MEDIA_PLAY = exports.MEDIA_PLAY = 'MEDIA_PLAY'; +var MEDIA_PAUSE = exports.MEDIA_PAUSE = 'MEDIA_PAUSE'; +var MEDIA_POSITION = exports.MEDIA_POSITION = 'MEDIA_POSITION'; + +// Publishing +var CLEAR_PUBLISH = exports.CLEAR_PUBLISH = 'CLEAR_PUBLISH'; +var UPDATE_PUBLISH_FORM = exports.UPDATE_PUBLISH_FORM = 'UPDATE_PUBLISH_FORM'; +var PUBLISH_START = exports.PUBLISH_START = 'PUBLISH_START'; +var PUBLISH_SUCCESS = exports.PUBLISH_SUCCESS = 'PUBLISH_SUCCESS'; +var PUBLISH_FAIL = exports.PUBLISH_FAIL = 'PUBLISH_FAIL'; +var CLEAR_PUBLISH_ERROR = exports.CLEAR_PUBLISH_ERROR = 'CLEAR_PUBLISH_ERROR'; +var REMOVE_PENDING_PUBLISH = exports.REMOVE_PENDING_PUBLISH = 'REMOVE_PENDING_PUBLISH'; +var DO_PREPARE_EDIT = exports.DO_PREPARE_EDIT = 'DO_PREPARE_EDIT'; + +// Notifications +var CREATE_NOTIFICATION = exports.CREATE_NOTIFICATION = 'CREATE_NOTIFICATION'; +var DISMISS_NOTIFICATION = exports.DISMISS_NOTIFICATION = 'DISMISS_NOTIFICATION'; + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +exports.doResolveUris = doResolveUris; +exports.doResolveUri = doResolveUri; +exports.doFetchClaimListMine = doFetchClaimListMine; +exports.doAbandonClaim = doAbandonClaim; +exports.doFetchFeaturedUris = doFetchFeaturedUris; +exports.doFetchRewardedContent = doFetchRewardedContent; + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +var _lbry = __webpack_require__(6); + +var _lbry2 = _interopRequireDefault(_lbry); + +var _lbryapi = __webpack_require__(9); + +var _lbryapi2 = _interopRequireDefault(_lbryapi); + +var _lbryURI = __webpack_require__(2); + +var _notifications = __webpack_require__(3); + +var _claims = __webpack_require__(14); + +var _batchActions = __webpack_require__(18); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +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 doResolveUris(uris) { + return function (dispatch, getState) { + var normalizedUris = uris.map(_lbryURI.normalizeURI); + var state = getState(); + + // Filter out URIs that are already resolving + var resolvingUris = (0, _claims.selectResolvingUris)(state); + var urisToResolve = normalizedUris.filter(function (uri) { + return !resolvingUris.includes(uri); + }); + + if (urisToResolve.length === 0) { + return; + } + + dispatch({ + type: ACTIONS.RESOLVE_URIS_STARTED, + data: { uris: normalizedUris } + }); + + var resolveInfo = {}; + _lbry2.default.resolve({ uris: urisToResolve }).then(function (result) { + Object.entries(result).forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + uri = _ref2[0], + uriResolveInfo = _ref2[1]; + + var fallbackResolveInfo = { + claim: null, + claimsInChannel: null, + certificate: null + }; + + var _ref3 = uriResolveInfo && !uriResolveInfo.error ? uriResolveInfo : fallbackResolveInfo, + claim = _ref3.claim, + certificate = _ref3.certificate, + claimsInChannel = _ref3.claims_in_channel; + + resolveInfo[uri] = { claim: claim, certificate: certificate, claimsInChannel: claimsInChannel }; + }); + + dispatch({ + type: ACTIONS.RESOLVE_URIS_COMPLETED, + data: { resolveInfo: resolveInfo } + }); + }); + }; +} + +function doResolveUri(uri) { + return doResolveUris([uri]); +} + +function doFetchClaimListMine() { + return function (dispatch) { + dispatch({ + type: ACTIONS.FETCH_CLAIM_LIST_MINE_STARTED + }); + + _lbry2.default.claim_list_mine().then(function (claims) { + dispatch({ + type: ACTIONS.FETCH_CLAIM_LIST_MINE_COMPLETED, + data: { + claims: claims + } + }); + }); + }; +} + +function doAbandonClaim(txid, nout) { + return function (dispatch, getState) { + var state = getState(); + var myClaims = (0, _claims.selectMyClaimsRaw)(state); + + var _myClaims$find = myClaims.find(function (claim) { + return claim.txid === txid && claim.nout === nout; + }), + claimId = _myClaims$find.claim_id, + name = _myClaims$find.name; + + dispatch({ + type: ACTIONS.ABANDON_CLAIM_STARTED, + data: { + claimId: claimId + } + }); + + var errorCallback = function errorCallback() { + dispatch((0, _notifications.doNotify)({ + title: 'Transaction failed', + message: 'Transaction failed', + type: 'error', + displayType: ['modal', 'toast'] + })); + }; + + var successCallback = function successCallback(results) { + if (results.txid) { + dispatch({ + type: ACTIONS.ABANDON_CLAIM_SUCCEEDED, + data: { + claimId: claimId + } + }); + dispatch(doResolveUri((0, _lbryURI.buildURI)({ name: name, claimId: claimId }))); + dispatch(doFetchClaimListMine()); + } else { + dispatch((0, _notifications.doNotify)({ + title: 'Transaction failed', + message: 'Transaction failed', + type: 'error', + displayType: ['modal', 'toast'] + })); + } + }; + + _lbry2.default.claim_abandon({ + txid: txid, + nout: nout + }).then(successCallback, errorCallback); + }; +} + +function doFetchFeaturedUris() { + return function (dispatch) { + dispatch({ + type: ACTIONS.FETCH_FEATURED_CONTENT_STARTED + }); + + var success = function success(_ref4) { + var Uris = _ref4.Uris; + + var urisToResolve = []; + Object.keys(Uris).forEach(function (category) { + urisToResolve = [].concat(_toConsumableArray(urisToResolve), _toConsumableArray(Uris[category])); + }); + + var actions = [doResolveUris(urisToResolve), { + type: ACTIONS.FETCH_FEATURED_CONTENT_COMPLETED, + data: { + uris: Uris, + success: true + } + }]; + dispatch(_batchActions.batchActions.apply(undefined, actions)); + }; + + var failure = function failure() { + dispatch({ + type: ACTIONS.FETCH_FEATURED_CONTENT_COMPLETED, + data: { + uris: {} + } + }); + }; + + _lbryapi2.default.call('file', 'list_homepage').then(success, failure); + }; +} + +function doFetchRewardedContent() { + return function (dispatch) { + var success = function success(nameToClaimId) { + dispatch({ + type: ACTIONS.FETCH_REWARD_CONTENT_COMPLETED, + data: { + claimIds: Object.values(nameToClaimId), + success: true + } + }); + }; + + var failure = function failure() { + dispatch({ + type: ACTIONS.FETCH_REWARD_CONTENT_COMPLETED, + data: { + claimIds: [], + success: false + } + }); + }; + + _lbryapi2.default.call('reward', 'list_featured').then(success, failure); + }; +} + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +__webpack_require__(7); + +var CHECK_DAEMON_STARTED_TRY_NUMBER = 200; // @flow + + +var Lbry = { + isConnected: false, + daemonConnectionString: 'http://localhost:5279', + pendingPublishTimeout: 20 * 60 * 1000 +}; + +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); + }); +} + +function apiCall(method /*: string*/, params /*: ?{}*/, resolve /*: Function*/, reject /*: Function*/) { + 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); + } + return resolve(response.result); + }).catch(reject); +} + +var daemonCallWithResult = function daemonCallWithResult(name) { + var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return new Promise(function (resolve, reject) { + apiCall(name, params, function (result) { + resolve(result); + }, reject); + }); +}; + +// core +Lbry.status = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return daemonCallWithResult('status', params); +}; +Lbry.version = function () { + return daemonCallWithResult('version', {}); +}; +Lbry.file_delete = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return daemonCallWithResult('file_delete', params); +}; +Lbry.file_set_status = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return daemonCallWithResult('file_set_status', params); +}; + +// wallet +Lbry.wallet_balance = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return daemonCallWithResult('wallet_balance', params); +}; +Lbry.wallet_is_address_mine = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return daemonCallWithResult('wallet_is_address_mine', params); +}; +Lbry.wallet_new_address = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return daemonCallWithResult('wallet_new_address', params); +}; +Lbry.wallet_send = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return daemonCallWithResult('wallet_send', params); +}; +Lbry.wallet_encrypt = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return daemonCallWithResult('wallet_encrypt', params); +}; +Lbry.wallet_decrypt = function () { + return daemonCallWithResult('wallet_decrypt', {}); +}; +Lbry.wallet_unlock = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return daemonCallWithResult('wallet_unlock', params); +}; + +// transactions +Lbry.transaction_list = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return daemonCallWithResult('transaction_list', params); +}; + +Lbry.connectPromise = null; +Lbry.connect = function () { + if (Lbry.connectPromise === null) { + Lbry.connectPromise = new Promise(function (resolve, reject) { + var tryNum = 0; + // Check every half second to see if the daemon is accepting connections + function checkDaemonStarted() { + tryNum += 1; + Lbry.status().then(resolve).catch(function () { + if (tryNum <= CHECK_DAEMON_STARTED_TRY_NUMBER) { + setTimeout(checkDaemonStarted, tryNum < 50 ? 400 : 1000); + } else { + reject(new Error('Unable to connect to LBRY')); + } + }); + } + + checkDaemonStarted(); + }); + } + + return Lbry.connectPromise; +}; + +Lbry.getMediaType = function (contentType, fileName) { + if (contentType) { + return (/^[^/]+/.exec(contentType)[0] + ); + } else if (fileName) { + var formats = [[/^.+\.(mp4|m4v|webm|flv|f4v|ogv)$/i, 'video'], [/^.+\.(mp3|m4a|aac|wav|flac|ogg|opus)$/i, 'audio'], [/^.+\.(html|htm|xml|pdf|odf|doc|docx|md|markdown|txt|epub|org)$/i, 'document']]; + var res = formats.reduce(function (ret, testpair) { + switch (testpair[0].test(ret)) { + case true: + return testpair[1]; + default: + return ret; + } + }, fileName); + return res === fileName ? 'unknown' : res; + } + return 'unknown'; +}; + +/** + * 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. + */ + +/** + * Returns results from the file_list API method, plus dummy entries for pending publishes. + * (If a real publish with the same name is found, the pending publish will be ignored and removed.) + */ +Lbry.file_list = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return new Promise(function (resolve, reject) { + apiCall('file_list', params, function (fileInfos) { + resolve(fileInfos); + }, reject); + }); +}; + +Lbry.claim_list_mine = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return new Promise(function (resolve, reject) { + apiCall('claim_list_mine', params, function (claims) { + resolve(claims); + }, reject); + }); +}; + +Lbry.get = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return new Promise(function (resolve, reject) { + apiCall('get', params, function (streamInfo) { + resolve(streamInfo); + }, reject); + }); +}; + +Lbry.resolve = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return new Promise(function (resolve, reject) { + apiCall('resolve', params, function (data) { + if ('uri' in params) { + // If only a single URI was requested, don't nest the results in an object + resolve(data && data[params.uri] ? data[params.uri] : {}); + } else { + resolve(data || {}); + } + }, reject); + }); +}; + +var lbryProxy = new Proxy(Lbry, { + get: function get(target, name) { + if (name in target) { + return target[name]; + } + + return function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return new Promise(function (resolve, reject) { + apiCall(name, params, resolve, reject); + }); + }; + } +}); + +exports.default = lbryProxy; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/* + * Copyright 2016 Google Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + + + + +(function(scope) { + if (scope['Proxy']) { + return; + } + let lastRevokeFn = null; + + /** + * @param {*} o + * @return {boolean} whether this is probably a (non-null) Object + */ + function isObject(o) { + return o ? (typeof o == 'object' || typeof o == 'function') : false; + } + + /** + * @constructor + * @param {!Object} target + * @param {{apply, construct, get, set}} handler + */ + scope.Proxy = function(target, handler) { + if (!isObject(target) || !isObject(handler)) { + throw new TypeError('Cannot create proxy with a non-object as target or handler'); + } + + // Construct revoke function, and set lastRevokeFn so that Proxy.revocable can steal it. + // The caller might get the wrong revoke function if a user replaces or wraps scope.Proxy + // to call itself, but that seems unlikely especially when using the polyfill. + let throwRevoked = function() {}; + lastRevokeFn = function() { + throwRevoked = function(trap) { + throw new TypeError(`Cannot perform '${trap}' on a proxy that has been revoked`); + }; + }; + + // Fail on unsupported traps: Chrome doesn't do this, but ensure that users of the polyfill + // are a bit more careful. Copy the internal parts of handler to prevent user changes. + let unsafeHandler = handler; + handler = {'get': null, 'set': null, 'apply': null, 'construct': null}; + for (let k in unsafeHandler) { + if (!(k in handler)) { + throw new TypeError(`Proxy polyfill does not support trap '${k}'`); + } + handler[k] = unsafeHandler[k]; + } + if (typeof unsafeHandler == 'function') { + // Allow handler to be a function (which has an 'apply' method). This matches what is + // probably a bug in native versions. It treats the apply call as a trap to be configured. + handler.apply = unsafeHandler.apply.bind(unsafeHandler); + } + + // Define proxy as this, or a Function (if either it's callable, or apply is set). + // TODO(samthor): Closure compiler doesn't know about 'construct', attempts to rename it. + let proxy = this; + let isMethod = false; + let targetIsFunction = typeof target == 'function'; + if (handler.apply || handler['construct'] || targetIsFunction) { + proxy = function Proxy() { + let usingNew = (this && this.constructor === proxy); + throwRevoked(usingNew ? 'construct' : 'apply'); + + if (usingNew && handler['construct']) { + return handler['construct'].call(this, target, arguments); + } else if (!usingNew && handler.apply) { + return handler.apply(target, this, arguments); + } else if (targetIsFunction) { + // since the target was a function, fallback to calling it directly. + if (usingNew) { + // inspired by answers to https://stackoverflow.com/q/1606797 + let all = Array.prototype.slice.call(arguments); + all.unshift(target); // pass class as first arg to constructor, although irrelevant + // nb. cast to convince Closure compiler that this is a constructor + let f = /** @type {!Function} */ (target.bind.apply(target, all)); + return new f(); + } + return target.apply(this, arguments); + } + throw new TypeError(usingNew ? 'not a constructor' : 'not a function'); + }; + isMethod = true; + } + + // Create default getters/setters. Create different code paths as handler.get/handler.set can't + // change after creation. + let getter = handler.get ? function(prop) { + throwRevoked('get'); + return handler.get(this, prop, proxy); + } : function(prop) { + throwRevoked('get'); + return this[prop]; + }; + let setter = handler.set ? function(prop, value) { + throwRevoked('set'); + let status = handler.set(this, prop, value, proxy); + if (!status) { + // TODO(samthor): If the calling code is in strict mode, throw TypeError. + // It's (sometimes) possible to work this out, if this code isn't strict- try to load the + // callee, and if it's available, that code is non-strict. However, this isn't exhaustive. + } + } : function(prop, value) { + throwRevoked('set'); + this[prop] = value; + }; + + // Clone direct properties (i.e., not part of a prototype). + let propertyNames = Object.getOwnPropertyNames(target); + let propertyMap = {}; + propertyNames.forEach(function(prop) { + if (isMethod && prop in proxy) { + return; // ignore properties already here, e.g. 'bind', 'prototype' etc + } + let real = Object.getOwnPropertyDescriptor(target, prop); + let desc = { + enumerable: !!real.enumerable, + get: getter.bind(target, prop), + set: setter.bind(target, prop), + }; + Object.defineProperty(proxy, prop, desc); + propertyMap[prop] = true; + }); + + // Set the prototype, or clone all prototype methods (always required if a getter is provided). + // TODO(samthor): We don't allow prototype methods to be set. It's (even more) awkward. + // An alternative here would be to _just_ clone methods to keep behavior consistent. + let prototypeOk = true; + if (Object.setPrototypeOf) { + Object.setPrototypeOf(proxy, Object.getPrototypeOf(target)); + } else if (proxy.__proto__) { + proxy.__proto__ = target.__proto__; + } else { + prototypeOk = false; + } + if (handler.get || !prototypeOk) { + for (let k in target) { + if (propertyMap[k]) { + continue; + } + Object.defineProperty(proxy, k, {get: getter.bind(target, k)}); + } + } + + // The Proxy polyfill cannot handle adding new properties. Seal the target and proxy. + Object.seal(target); + Object.seal(proxy); + + return proxy; // nb. if isMethod is true, proxy != this + }; + + scope.Proxy.revocable = function(target, handler) { + let p = new scope.Proxy(target, handler); + return {'proxy': p, 'revoke': lastRevokeFn}; + }; + + scope.Proxy['revocable'] = scope.Proxy.revocable; + scope['Proxy'] = scope.Proxy; +})(typeof module !== 'undefined' && module['exports'] ? global : window); + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(8))) + +/***/ }), +/* 8 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1, eval)("this"); +} catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +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__(11); + +var _querystring2 = _interopRequireDefault(_querystring); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Lbryapi = { + enabled: true, + exchangePromise: null, + exchangeLastFetched: null +}; + +var CONNECTION_STRING = process.env.LBRY_APP_API_URL ? process.env.LBRY_APP_API_URL.replace(/\/*$/, '/') // exactly one slash at the end +: 'https://api.lbry.io/'; + +var EXCHANGE_RATE_TIMEOUT = 20 * 60 * 1000; + +Lbryapi.getExchangeRates = function () { + if (!Lbryapi.exchangeLastFetched || Date.now() - Lbryapi.exchangeLastFetched > EXCHANGE_RATE_TIMEOUT) { + Lbryapi.exchangePromise = new Promise(function (resolve, reject) { + Lbryapi.call('lbc', 'exchange_rate', {}, 'get', true).then(function (_ref) { + var LBC_USD = _ref.lbc_usd, + LBC_BTC = _ref.lbc_btc, + BTC_USD = _ref.btc_usd; + + var rates = { LBC_USD: LBC_USD, LBC_BTC: LBC_BTC, BTC_USD: BTC_USD }; + resolve(rates); + }).catch(reject); + }); + Lbryapi.exchangeLastFetched = Date.now(); + } + return Lbryapi.exchangePromise; +}; + +Lbryapi.call = function (resource, action) { + var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var method = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'get'; + + if (!Lbryapi.enabled) { + return Promise.reject(new Error(__('LBRY internal API is disabled'))); + } + + if (!(method === 'get' || method === 'post')) { + return Promise.reject(new Error(__('Invalid method'))); + } + + 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('Unknown API error signature'); + } + error.response = response; // This is primarily a hack used in actions/user.js + return Promise.reject(error); + }); + } + + function makeRequest(url, options) { + return fetch(url, options).then(checkAndParse); + } + + var fullParams = _extends({}, params); + var qs = _querystring2.default.stringify(fullParams); + var url = '' + CONNECTION_STRING + resource + '/' + action + '?' + qs; + + var options = { + method: 'GET' + }; + + if (method === 'post') { + options = { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: qs + }; + url = '' + CONNECTION_STRING + resource + '/' + action; + } + + return makeRequest(url, options).then(function (response) { + return response.data; + }); +}; + +exports.default = Lbryapi; +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(10))) + +/***/ }), +/* 10 */ +/***/ (function(module, exports) { + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.decode = exports.parse = __webpack_require__(12); +exports.encode = exports.stringify = __webpack_require__(13); + + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +// If obj.hasOwnProperty has been overridden, then calling +// obj.hasOwnProperty(prop) will break. +// See: https://github.com/joyent/node/issues/1707 +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + // maxKeys <= 0 means that we should not limit keys count + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } +}; + +module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return map(objectKeys(obj), function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (isArray(obj[k])) { + return map(obj[k], function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +function map (xs, f) { + if (xs.map) return xs.map(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + res.push(f(xs[i], i)); + } + return res; +} + +var objectKeys = Object.keys || function (obj) { + var res = []; + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); + } + return res; +}; + + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.selectRewardContentClaimIds = exports.makeSelectTotalPagesForChannel = exports.makeSelectTotalItemsForChannel = exports.selectChannelClaimCounts = exports.selectPlayingUri = exports.selectFetchingFeaturedUris = exports.selectFeaturedUris = exports.makeSelectIsUriResolving = exports.selectResolvingUris = exports.selectMyChannelClaims = exports.selectFetchingMyChannels = exports.selectMyClaimsOutpoints = exports.selectAllMyClaimsByOutpoint = exports.selectMyClaimsWithoutChannels = exports.selectMyClaims = exports.selectPendingClaims = exports.selectIsFetchingClaimListMine = exports.makeSelectContentTypeForUri = exports.makeSelectTitleForUri = exports.makeSelectMetadataForUri = exports.makeSelectClaimsInChannelForCurrentPage = exports.makeSelectFetchingChannelClaims = exports.selectAllFetchingChannelClaims = exports.makeSelectClaimIsMine = exports.selectMyActiveClaims = exports.selectAbandoningIds = exports.selectMyClaimsRaw = exports.makeSelectClaimForUri = exports.selectAllClaimsByChannel = exports.selectClaimsByUri = exports.selectClaimsById = undefined; + +var _lbryURI = __webpack_require__(2); + +var _navigation = __webpack_require__(15); + +var _reselect = __webpack_require__(16); + +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); } } + +var selectState = function selectState(state) { + return state.claims || {}; +}; + +var selectClaimsById = exports.selectClaimsById = (0, _reselect.createSelector)(selectState, function (state) { + return state.byId || {}; +}); + +var selectClaimsByUri = exports.selectClaimsByUri = (0, _reselect.createSelector)(selectState, selectClaimsById, function (state, byId) { + var byUri = state.claimsByUri || {}; + var claims = {}; + + Object.keys(byUri).forEach(function (uri) { + var claimId = byUri[uri]; + + // NOTE returning a null claim allows us to differentiate between an + // undefined (never fetched claim) and one which just doesn't exist. Not + // the cleanest solution but couldn't think of anything better right now + if (claimId === null) { + claims[uri] = null; + } else { + claims[uri] = byId[claimId]; + } + }); + + return claims; +}); + +var selectAllClaimsByChannel = exports.selectAllClaimsByChannel = (0, _reselect.createSelector)(selectState, function (state) { + return state.claimsByChannel || {}; +}); + +var makeSelectClaimForUri = exports.makeSelectClaimForUri = function makeSelectClaimForUri(uri) { + return (0, _reselect.createSelector)(selectClaimsByUri, function (claims) { + return claims && claims[(0, _lbryURI.normalizeURI)(uri)]; + }); +}; + +var selectMyClaimsRaw = exports.selectMyClaimsRaw = (0, _reselect.createSelector)(selectState, function (state) { + return state.myClaims; +}); + +var selectAbandoningIds = exports.selectAbandoningIds = (0, _reselect.createSelector)(selectState, function (state) { + return Object.keys(state.abandoningById || {}); +}); + +var selectMyActiveClaims = exports.selectMyActiveClaims = (0, _reselect.createSelector)(selectMyClaimsRaw, selectAbandoningIds, function (claims, abandoningIds) { + return new Set(claims && claims.map(function (claim) { + return claim.claim_id; + }).filter(function (claimId) { + return Object.keys(abandoningIds).indexOf(claimId) === -1; + })); +}); + +var makeSelectClaimIsMine = exports.makeSelectClaimIsMine = function makeSelectClaimIsMine(rawUri) { + var uri = (0, _lbryURI.normalizeURI)(rawUri); + return (0, _reselect.createSelector)(selectClaimsByUri, selectMyActiveClaims, function (claims, myClaims) { + return claims && claims[uri] && claims[uri].claim_id && myClaims.has(claims[uri].claim_id); + }); +}; + +var selectAllFetchingChannelClaims = exports.selectAllFetchingChannelClaims = (0, _reselect.createSelector)(selectState, function (state) { + return state.fetchingChannelClaims || {}; +}); + +var makeSelectFetchingChannelClaims = exports.makeSelectFetchingChannelClaims = function makeSelectFetchingChannelClaims(uri) { + return (0, _reselect.createSelector)(selectAllFetchingChannelClaims, function (fetching) { + return fetching && fetching[uri]; + }); +}; + +var makeSelectClaimsInChannelForCurrentPage = exports.makeSelectClaimsInChannelForCurrentPage = function makeSelectClaimsInChannelForCurrentPage(uri) { + var pageSelector = (0, _navigation.makeSelectCurrentParam)('page'); + + return (0, _reselect.createSelector)(selectClaimsById, selectAllClaimsByChannel, pageSelector, function (byId, allClaims, page) { + var byChannel = allClaims[uri] || {}; + var claimIds = byChannel[page || 1]; + + if (!claimIds) return claimIds; + + return claimIds.map(function (claimId) { + return byId[claimId]; + }); + }); +}; + +var makeSelectMetadataForUri = exports.makeSelectMetadataForUri = function makeSelectMetadataForUri(uri) { + return (0, _reselect.createSelector)(makeSelectClaimForUri(uri), function (claim) { + var metadata = claim && claim.value && claim.value.stream && claim.value.stream.metadata; + + return metadata || (claim === undefined ? undefined : null); + }); +}; + +var makeSelectTitleForUri = exports.makeSelectTitleForUri = function makeSelectTitleForUri(uri) { + return (0, _reselect.createSelector)(makeSelectMetadataForUri(uri), function (metadata) { + return metadata && metadata.title; + }); +}; + +var makeSelectContentTypeForUri = exports.makeSelectContentTypeForUri = function makeSelectContentTypeForUri(uri) { + return (0, _reselect.createSelector)(makeSelectClaimForUri(uri), function (claim) { + var source = claim && claim.value && claim.value.stream && claim.value.stream.source; + return source ? source.contentType : undefined; + }); +}; + +var selectIsFetchingClaimListMine = exports.selectIsFetchingClaimListMine = (0, _reselect.createSelector)(selectState, function (state) { + return state.isFetchingClaimListMine; +}); + +var selectPendingClaims = exports.selectPendingClaims = (0, _reselect.createSelector)(selectState, function (state) { + return Object.values(state.pendingById || {}); +}); + +var selectMyClaims = exports.selectMyClaims = (0, _reselect.createSelector)(selectMyActiveClaims, selectClaimsById, selectAbandoningIds, selectPendingClaims, function (myClaimIds, byId, abandoningIds, pendingClaims) { + var claims = []; + + myClaimIds.forEach(function (id) { + var claim = byId[id]; + + if (claim && abandoningIds.indexOf(id) === -1) claims.push(claim); + }); + + return [].concat(claims, _toConsumableArray(pendingClaims)); +}); + +var selectMyClaimsWithoutChannels = exports.selectMyClaimsWithoutChannels = (0, _reselect.createSelector)(selectMyClaims, function (myClaims) { + return myClaims.filter(function (claim) { + return !claim.name.match(/^@/); + }); +}); + +var selectAllMyClaimsByOutpoint = exports.selectAllMyClaimsByOutpoint = (0, _reselect.createSelector)(selectMyClaimsRaw, function (claims) { + return new Set(claims && claims.length ? claims.map(function (claim) { + return claim.txid + ':' + claim.nout; + }) : null); +}); + +var selectMyClaimsOutpoints = exports.selectMyClaimsOutpoints = (0, _reselect.createSelector)(selectMyClaims, function (myClaims) { + var outpoints = []; + + myClaims.forEach(function (claim) { + return outpoints.push(claim.txid + ':' + claim.nout); + }); + + return outpoints; +}); + +var selectFetchingMyChannels = exports.selectFetchingMyChannels = (0, _reselect.createSelector)(selectState, function (state) { + return state.fetchingMyChannels; +}); + +var selectMyChannelClaims = exports.selectMyChannelClaims = (0, _reselect.createSelector)(selectState, selectClaimsById, function (state, byId) { + var ids = state.myChannelClaims || []; + var claims = []; + + ids.forEach(function (id) { + if (byId[id]) { + // I'm not sure why this check is necessary, but it ought to be a quick fix for https://github.com/lbryio/lbry-app/issues/544 + claims.push(byId[id]); + } + }); + + return claims; +}); + +var selectResolvingUris = exports.selectResolvingUris = (0, _reselect.createSelector)(selectState, function (state) { + return state.resolvingUris || []; +}); + +var makeSelectIsUriResolving = exports.makeSelectIsUriResolving = function makeSelectIsUriResolving(uri) { + return (0, _reselect.createSelector)(selectResolvingUris, function (resolvingUris) { + return resolvingUris && resolvingUris.indexOf(uri) !== -1; + }); +}; + +var selectFeaturedUris = exports.selectFeaturedUris = (0, _reselect.createSelector)(selectState, function (state) { + return state.featuredUris; +}); + +var selectFetchingFeaturedUris = exports.selectFetchingFeaturedUris = (0, _reselect.createSelector)(selectState, function (state) { + return state.fetchingFeaturedContent; +}); + +var selectPlayingUri = exports.selectPlayingUri = (0, _reselect.createSelector)(selectState, function (state) { + return state.playingUri; +}); + +var selectChannelClaimCounts = exports.selectChannelClaimCounts = (0, _reselect.createSelector)(selectState, function (state) { + return state.channelClaimCounts || {}; +}); + +var makeSelectTotalItemsForChannel = exports.makeSelectTotalItemsForChannel = function makeSelectTotalItemsForChannel(uri) { + return (0, _reselect.createSelector)(selectChannelClaimCounts, function (byUri) { + return byUri && byUri[uri]; + }); +}; + +var makeSelectTotalPagesForChannel = exports.makeSelectTotalPagesForChannel = function makeSelectTotalPagesForChannel(uri) { + return (0, _reselect.createSelector)(selectChannelClaimCounts, function (byUri) { + return byUri && byUri[uri] && Math.ceil(byUri[uri] / 10); + }); +}; + +var selectRewardContentClaimIds = exports.selectRewardContentClaimIds = (0, _reselect.createSelector)(selectState, function (state) { + return state.rewardedContentClaimIds; +}); + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.selectNavLinks = exports.selectPageTitle = exports.selectActiveHistoryEntry = exports.selectHistoryStack = exports.selectHistoryIndex = exports.selectIsHome = exports.selectIsForwardDisabled = exports.selectIsBackDisabled = exports.selectPathAfterAuth = exports.makeSelectCurrentParam = exports.selectCurrentParams = exports.selectCurrentPage = exports.computePageFromPath = exports.selectCurrentPath = exports.selectState = undefined; + +var _reselect = __webpack_require__(16); + +var _query_params = __webpack_require__(17); + +var selectState = exports.selectState = function selectState(state) { + return state.navigation || {}; +}; + +var selectCurrentPath = exports.selectCurrentPath = (0, _reselect.createSelector)(selectState, function (state) { + return state.currentPath; +}); + +var computePageFromPath = exports.computePageFromPath = function computePageFromPath(path) { + return path.replace(/^\//, '').split('?')[0]; +}; + +var selectCurrentPage = exports.selectCurrentPage = (0, _reselect.createSelector)(selectCurrentPath, function (path) { + return computePageFromPath(path); +}); + +var selectCurrentParams = exports.selectCurrentParams = (0, _reselect.createSelector)(selectCurrentPath, function (path) { + if (path === undefined) return {}; + if (!path.match(/\?/)) return {}; + + return (0, _query_params.parseQueryParams)(path.split('?')[1]); +}); + +var makeSelectCurrentParam = exports.makeSelectCurrentParam = function makeSelectCurrentParam(param) { + return (0, _reselect.createSelector)(selectCurrentParams, function (params) { + return params ? params[param] : undefined; + }); +}; + +var selectPathAfterAuth = exports.selectPathAfterAuth = (0, _reselect.createSelector)(selectState, function (state) { + return state.pathAfterAuth; +}); + +var selectIsBackDisabled = exports.selectIsBackDisabled = (0, _reselect.createSelector)(selectState, function (state) { + return state.index === 0; +}); + +var selectIsForwardDisabled = exports.selectIsForwardDisabled = (0, _reselect.createSelector)(selectState, function (state) { + return state.index === state.stack.length - 1; +}); + +var selectIsHome = exports.selectIsHome = (0, _reselect.createSelector)(selectCurrentPage, function (page) { + return page === 'discover'; +}); + +var selectHistoryIndex = exports.selectHistoryIndex = (0, _reselect.createSelector)(selectState, function (state) { + return state.index; +}); + +var selectHistoryStack = exports.selectHistoryStack = (0, _reselect.createSelector)(selectState, function (state) { + return state.stack; +}); + +// returns current page attributes (scrollY, path) +var selectActiveHistoryEntry = exports.selectActiveHistoryEntry = (0, _reselect.createSelector)(selectState, function (state) { + return state.stack[state.index]; +}); + +var selectPageTitle = exports.selectPageTitle = (0, _reselect.createSelector)(selectCurrentPage, function (page) { + switch (page) { + default: + return ''; + } +}); + +var selectNavLinks = exports.selectNavLinks = (0, _reselect.createSelector)(selectCurrentPage, selectHistoryStack, function (currentPage, historyStack) { + var isWalletPage = function isWalletPage(page) { + return page === 'wallet' || page === 'send' || page === 'getcredits' || page === 'rewards' || page === 'history' || page === 'invite'; + }; + + var isMyLbryPage = function isMyLbryPage(page) { + return page === 'downloaded' || page === 'published' || page === 'settings'; + }; + + var previousStack = historyStack.slice().reverse(); + + var getPreviousSubLinkPath = function getPreviousSubLinkPath(checkIfValidPage) { + for (var i = 0; i < previousStack.length; i += 1) { + var currentStackItem = previousStack[i]; + + // Trim off the "/" from the path + var pageInStack = currentStackItem.path.slice(1); + if (checkIfValidPage(pageInStack)) { + return currentStackItem.path; + } + } + + return undefined; + }; + + // Gets the last active sublink in a section + var getActiveSublink = function getActiveSublink(category) { + if (category === 'wallet') { + var previousPath = getPreviousSubLinkPath(isWalletPage); + return previousPath || '/wallet'; + } else if (category === 'myLbry') { + var _previousPath = getPreviousSubLinkPath(isMyLbryPage); + return _previousPath || '/downloaded'; + } + + return undefined; + }; + + var isCurrentlyWalletPage = isWalletPage(currentPage); + var isCurrentlyMyLbryPage = isMyLbryPage(currentPage); + + var walletSubLinks = [{ + label: 'Overview', + path: '/wallet', + active: currentPage === 'wallet' + }, { + label: 'Send & Recieve', + path: '/send', + active: currentPage === 'send' + }, { + label: 'Get Credits', + path: '/getcredits', + active: currentPage === 'getcredits' + }, { + label: 'Rewards', + path: '/rewards', + active: currentPage === 'rewards' + }, { + label: 'Invites', + path: '/invite', + active: currentPage === 'invite' + }, { + label: 'Transactions', + path: '/history', + active: currentPage === 'history' + }]; + + var myLbrySubLinks = [{ + label: 'Downloads', + path: '/downloaded', + active: currentPage === 'downloaded' + }, { + label: 'Publishes', + path: '/published', + active: currentPage === 'published' + }, { + label: 'Settings', + path: '/settings', + active: currentPage === 'settings' + }, { + label: 'Backup', + path: '/backup', + active: currentPage === 'backup' + }]; + + var navLinks = { + primary: [{ + label: 'Explore', + path: '/discover', + active: currentPage === 'discover', + icon: 'Compass' + }, { + label: 'Subscriptions', + path: '/subscriptions', + active: currentPage === 'subscriptions', + icon: 'AtSign' + }], + secondary: [{ + label: 'Wallet', + icon: 'CreditCard', + subLinks: walletSubLinks, + path: isCurrentlyWalletPage ? '/wallet' : getActiveSublink('wallet'), + active: isWalletPage(currentPage) + }, { + label: 'My LBRY', + icon: 'Settings', + subLinks: myLbrySubLinks, + path: isCurrentlyMyLbryPage ? '/downloaded' : getActiveSublink('myLbry'), + active: isMyLbryPage(currentPage) + }, { + label: 'Publish', + icon: 'UploadCloud', + path: '/publish', + active: currentPage === 'publish' + }, { + label: 'Help', + path: '/help', + active: currentPage === 'help', + icon: 'HelpCircle' + }] + }; + + return navLinks; +}); + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.defaultMemoize = defaultMemoize; +exports.createSelectorCreator = createSelectorCreator; +exports.createStructuredSelector = createStructuredSelector; +function defaultEqualityCheck(a, b) { + return a === b; +} + +function areArgumentsShallowlyEqual(equalityCheck, prev, next) { + if (prev === null || next === null || prev.length !== next.length) { + return false; + } + + // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible. + var length = prev.length; + for (var i = 0; i < length; i++) { + if (!equalityCheck(prev[i], next[i])) { + return false; + } + } + + return true; +} + +function defaultMemoize(func) { + var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck; + + var lastArgs = null; + var lastResult = null; + // we reference arguments instead of spreading them for performance reasons + return function () { + if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) { + // apply arguments instead of spreading for performance. + lastResult = func.apply(null, arguments); + } + + lastArgs = arguments; + return lastResult; + }; +} + +function getDependencies(funcs) { + var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs; + + if (!dependencies.every(function (dep) { + return typeof dep === 'function'; + })) { + var dependencyTypes = dependencies.map(function (dep) { + return typeof dep; + }).join(', '); + throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']')); + } + + return dependencies; +} + +function createSelectorCreator(memoize) { + for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + memoizeOptions[_key - 1] = arguments[_key]; + } + + return function () { + for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + funcs[_key2] = arguments[_key2]; + } + + var recomputations = 0; + var resultFunc = funcs.pop(); + var dependencies = getDependencies(funcs); + + var memoizedResultFunc = memoize.apply(undefined, [function () { + recomputations++; + // apply arguments instead of spreading for performance. + return resultFunc.apply(null, arguments); + }].concat(memoizeOptions)); + + // If a selector is called with the exact same arguments we don't need to traverse our dependencies again. + var selector = defaultMemoize(function () { + var params = []; + var length = dependencies.length; + + for (var i = 0; i < length; i++) { + // apply arguments instead of spreading and mutate a local list of params for performance. + params.push(dependencies[i].apply(null, arguments)); + } + + // apply arguments instead of spreading for performance. + return memoizedResultFunc.apply(null, params); + }); + + selector.resultFunc = resultFunc; + selector.recomputations = function () { + return recomputations; + }; + selector.resetRecomputations = function () { + return recomputations = 0; + }; + return selector; + }; +} + +var createSelector = exports.createSelector = createSelectorCreator(defaultMemoize); + +function createStructuredSelector(selectors) { + var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector; + + if (typeof selectors !== 'object') { + throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors)); + } + var objectKeys = Object.keys(selectors); + return selectorCreator(objectKeys.map(function (key) { + return selectors[key]; + }), function () { + for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + values[_key3] = arguments[_key3]; + } + + return values.reduce(function (composition, value, index) { + composition[objectKeys[index]] = value; + return composition; + }, {}); + }); +} + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +exports.parseQueryParams = parseQueryParams; +exports.toQueryString = toQueryString; +function parseQueryParams(queryString) { + if (queryString === '') return {}; + var parts = queryString.split('?').pop().split('&').map(function (p) { + return p.split('='); + }); + + var params = {}; + parts.forEach(function (array) { + var _array = _slicedToArray(array, 2), + first = _array[0], + second = _array[1]; + + params[first] = second; + }); + return params; +} + +function toQueryString(params) { + if (!params) return ''; + + var parts = []; + Object.keys(params).forEach(function (key) { + if (Object.prototype.hasOwnProperty.call(params, key) && params[key]) { + parts.push(key + '=' + params[key]); + } + }); + + return parts.join('&'); +} + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.batchActions = batchActions; +// https://github.com/reactjs/redux/issues/911 +function batchActions() { + for (var _len = arguments.length, actions = Array(_len), _key = 0; _key < _len; _key++) { + actions[_key] = arguments[_key]; + } + + return { + type: 'BATCH_ACTIONS', + actions: actions + }; +} + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.doFetchCostInfoForUri = doFetchCostInfoForUri; + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +var _lbryapi = __webpack_require__(9); + +var _lbryapi2 = _interopRequireDefault(_lbryapi); + +var _claims = __webpack_require__(14); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +// eslint-disable-next-line import/prefer-default-export +function doFetchCostInfoForUri(uri) { + return function (dispatch, getState) { + var state = getState(); + var claim = (0, _claims.selectClaimsByUri)(state)[uri]; + + if (!claim) return; + + function resolve(costInfo) { + dispatch({ + type: ACTIONS.FETCH_COST_INFO_COMPLETED, + data: { + uri: uri, + costInfo: costInfo + } + }); + } + + var fee = claim.value && claim.value.stream && claim.value.stream.metadata ? claim.value.stream.metadata.fee : undefined; + + if (fee === undefined) { + resolve({ cost: 0, includesData: true }); + } else if (fee.currency === 'LBC') { + resolve({ cost: fee.amount, includesData: true }); + } else { + _lbryapi2.default.getExchangeRates().then(function (_ref) { + var LBC_USD = _ref.LBC_USD; + + resolve({ cost: fee.amount / LBC_USD, includesData: true }); + }); + } + }; +} + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.doFetchFileInfo = doFetchFileInfo; +exports.doFileList = doFileList; +exports.doFetchFileInfosAndPublishedClaims = doFetchFileInfosAndPublishedClaims; + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +var _lbry = __webpack_require__(6); + +var _lbry2 = _interopRequireDefault(_lbry); + +var _claims = __webpack_require__(5); + +var _claims2 = __webpack_require__(14); + +var _file_info = __webpack_require__(21); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function doFetchFileInfo(uri) { + return function (dispatch, getState) { + var state = getState(); + var claim = (0, _claims2.selectClaimsByUri)(state)[uri]; + var outpoint = claim ? claim.txid + ':' + claim.nout : null; + var alreadyFetching = !!(0, _file_info.selectUrisLoading)(state)[uri]; + + if (!alreadyFetching) { + dispatch({ + type: ACTIONS.FETCH_FILE_INFO_STARTED, + data: { + outpoint: outpoint + } + }); + + _lbry2.default.file_list({ outpoint: outpoint, full_status: true }).then(function (fileInfos) { + dispatch({ + type: ACTIONS.FETCH_FILE_INFO_COMPLETED, + data: { + outpoint: outpoint, + fileInfo: fileInfos && fileInfos.length ? fileInfos[0] : null + } + }); + }); + } + }; +} + +function doFileList() { + return function (dispatch, getState) { + var state = getState(); + var isFetching = (0, _file_info.selectIsFetchingFileList)(state); + + if (!isFetching) { + dispatch({ + type: ACTIONS.FILE_LIST_STARTED + }); + + _lbry2.default.file_list().then(function (fileInfos) { + dispatch({ + type: ACTIONS.FILE_LIST_SUCCEEDED, + data: { + fileInfos: fileInfos + } + }); + }); + } + }; +} + +function doFetchFileInfosAndPublishedClaims() { + return function (dispatch, getState) { + var state = getState(); + var isFetchingClaimListMine = (0, _claims2.selectIsFetchingClaimListMine)(state); + var isFetchingFileInfo = (0, _file_info.selectIsFetchingFileList)(state); + + if (!isFetchingClaimListMine) dispatch((0, _claims.doFetchClaimListMine)()); + if (!isFetchingFileInfo) dispatch(doFileList()); + }; +} + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.selectSearchDownloadUris = exports.selectTotalDownloadProgress = exports.selectDownloadingFileInfos = exports.selectFileInfosDownloaded = exports.makeSelectLoadingForUri = exports.selectUrisLoading = exports.makeSelectDownloadingForUri = exports.selectDownloadingByOutpoint = exports.makeSelectFileInfoForUri = exports.selectIsFetchingFileListDownloadedOrPublished = exports.selectIsFetchingFileList = exports.selectFileInfosByOutpoint = exports.selectState = undefined; + +var _claims = __webpack_require__(14); + +var _reselect = __webpack_require__(16); + +var _lbryURI = __webpack_require__(2); + +var selectState = exports.selectState = function selectState(state) { + return state.fileInfo || {}; +}; + +var selectFileInfosByOutpoint = exports.selectFileInfosByOutpoint = (0, _reselect.createSelector)(selectState, function (state) { + return state.byOutpoint || {}; +}); + +var selectIsFetchingFileList = exports.selectIsFetchingFileList = (0, _reselect.createSelector)(selectState, function (state) { + return state.isFetchingFileList; +}); + +var selectIsFetchingFileListDownloadedOrPublished = exports.selectIsFetchingFileListDownloadedOrPublished = (0, _reselect.createSelector)(selectIsFetchingFileList, _claims.selectIsFetchingClaimListMine, function (isFetchingFileList, isFetchingClaimListMine) { + return isFetchingFileList || isFetchingClaimListMine; +}); + +var makeSelectFileInfoForUri = exports.makeSelectFileInfoForUri = function makeSelectFileInfoForUri(uri) { + return (0, _reselect.createSelector)(_claims.selectClaimsByUri, selectFileInfosByOutpoint, function (claims, byOutpoint) { + var claim = claims[uri]; + var outpoint = claim ? claim.txid + ':' + claim.nout : undefined; + return outpoint ? byOutpoint[outpoint] : undefined; + }); +}; + +var selectDownloadingByOutpoint = exports.selectDownloadingByOutpoint = (0, _reselect.createSelector)(selectState, function (state) { + return state.downloadingByOutpoint || {}; +}); + +var makeSelectDownloadingForUri = exports.makeSelectDownloadingForUri = function makeSelectDownloadingForUri(uri) { + return (0, _reselect.createSelector)(selectDownloadingByOutpoint, makeSelectFileInfoForUri(uri), function (byOutpoint, fileInfo) { + if (!fileInfo) return false; + return byOutpoint[fileInfo.outpoint]; + }); +}; + +var selectUrisLoading = exports.selectUrisLoading = (0, _reselect.createSelector)(selectState, function (state) { + return state.urisLoading || {}; +}); + +var makeSelectLoadingForUri = exports.makeSelectLoadingForUri = function makeSelectLoadingForUri(uri) { + return (0, _reselect.createSelector)(selectUrisLoading, function (byUri) { + return byUri && byUri[uri]; + }); +}; + +var selectFileInfosDownloaded = exports.selectFileInfosDownloaded = (0, _reselect.createSelector)(selectFileInfosByOutpoint, _claims.selectMyClaims, function (byOutpoint, myClaims) { + return Object.values(byOutpoint).filter(function (fileInfo) { + var myClaimIds = myClaims.map(function (claim) { + return claim.claim_id; + }); + + return fileInfo && myClaimIds.indexOf(fileInfo.claim_id) === -1 && (fileInfo.completed || fileInfo.written_bytes); + }); +}); + +// export const selectFileInfoForUri = (state, props) => { +// const claims = selectClaimsByUri(state), +// claim = claims[props.uri], +// fileInfos = selectAllFileInfos(state), +// outpoint = claim ? `${claim.txid}:${claim.nout}` : undefined; + +// return outpoint && fileInfos ? fileInfos[outpoint] : undefined; +// }; + +var selectDownloadingFileInfos = exports.selectDownloadingFileInfos = (0, _reselect.createSelector)(selectDownloadingByOutpoint, selectFileInfosByOutpoint, function (downloadingByOutpoint, fileInfosByOutpoint) { + var outpoints = Object.keys(downloadingByOutpoint); + var fileInfos = []; + + outpoints.forEach(function (outpoint) { + var fileInfo = fileInfosByOutpoint[outpoint]; + + if (fileInfo) fileInfos.push(fileInfo); + }); + + return fileInfos; +}); + +var selectTotalDownloadProgress = exports.selectTotalDownloadProgress = (0, _reselect.createSelector)(selectDownloadingFileInfos, function (fileInfos) { + var progress = []; + + fileInfos.forEach(function (fileInfo) { + progress.push(fileInfo.written_bytes / fileInfo.total_bytes * 100); + }); + + var totalProgress = progress.reduce(function (a, b) { + return a + b; + }, 0); + + if (fileInfos.length > 0) return totalProgress / fileInfos.length / 100.0; + return -1; +}); + +var selectSearchDownloadUris = exports.selectSearchDownloadUris = function selectSearchDownloadUris(query) { + return (0, _reselect.createSelector)(selectFileInfosDownloaded, _claims.selectClaimsById, function (fileInfos, claimsById) { + if (!query || !fileInfos.length) { + return null; + } + + var queryParts = query.toLowerCase().split(' '); + var searchQueryDictionary = {}; + queryParts.forEach(function (subQuery) { + searchQueryDictionary[subQuery] = subQuery; + }); + + var arrayContainsQueryPart = function arrayContainsQueryPart(array) { + for (var i = 0; i < array.length; i += 1) { + var subQuery = array[i]; + if (searchQueryDictionary[subQuery]) { + return true; + } + } + return false; + }; + + var downloadResultsFromQuery = []; + fileInfos.forEach(function (fileInfo) { + var channelName = fileInfo.channel_name, + claimName = fileInfo.claim_name, + metadata = fileInfo.metadata; + var author = metadata.author, + description = metadata.description, + title = metadata.title; + + + if (channelName) { + var lowerCaseChannel = channelName.toLowerCase(); + var strippedOutChannelName = lowerCaseChannel.slice(1); // trim off the @ + if (searchQueryDictionary[channelName] || searchQueryDictionary[strippedOutChannelName]) { + downloadResultsFromQuery.push(fileInfo); + return; + } + } + + var nameParts = claimName.toLowerCase().split('-'); + if (arrayContainsQueryPart(nameParts)) { + downloadResultsFromQuery.push(fileInfo); + return; + } + + var titleParts = title.toLowerCase().split(' '); + if (arrayContainsQueryPart(titleParts)) { + downloadResultsFromQuery.push(fileInfo); + return; + } + + if (author) { + var authorParts = author.toLowerCase().split(' '); + if (arrayContainsQueryPart(authorParts)) { + downloadResultsFromQuery.push(fileInfo); + return; + } + } + + if (description) { + var descriptionParts = description.toLowerCase().split(' '); + if (arrayContainsQueryPart(descriptionParts)) { + downloadResultsFromQuery.push(fileInfo); + } + } + }); + + return downloadResultsFromQuery.length ? downloadResultsFromQuery.map(function (fileInfo) { + var channelName = fileInfo.channel_name, + claimId = fileInfo.claim_id, + claimName = fileInfo.claim_name; + + + var uriParams = {}; + + if (channelName) { + var claim = claimsById[claimId]; + if (claim && claim.value) { + uriParams.claimId = claim.value.publisherSignature.certificateId; + } else { + uriParams.claimId = claimId; + } + uriParams.channelName = channelName; + uriParams.contentName = claimName; + } else { + uriParams.claimId = claimId; + uriParams.claimName = claimName; + } + + var uri = (0, _lbryURI.buildURI)(uriParams); + return uri; + }) : null; + }); +}; + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.doUpdateSearchQuery = exports.getSearchSuggestions = exports.doSearch = undefined; + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +var _search = __webpack_require__(23); + +var SEARCH_TYPES = _interopRequireWildcard(_search); + +var _lbryURI = __webpack_require__(2); + +var _claims = __webpack_require__(5); + +var _search2 = __webpack_require__(24); + +var _batchActions = __webpack_require__(18); + +var _handleFetch = __webpack_require__(25); + +var _handleFetch2 = _interopRequireDefault(_handleFetch); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var doSearch = exports.doSearch = function doSearch(rawQuery) { + return function (dispatch, getState) { + var state = getState(); + var query = rawQuery.replace(/^lbry:\/\//i, ''); + + if (!query) { + dispatch({ + type: ACTIONS.SEARCH_FAIL + }); + return; + } + + // If we have already searched for something, we don't need to do anything + var urisForQuery = (0, _search2.makeSelectSearchUris)(query)(state); + if (urisForQuery && !!urisForQuery.length) { + return; + } + + dispatch({ + type: ACTIONS.SEARCH_START + }); + + // If the user is on the file page with a pre-populated uri and they select + // the search option without typing anything, searchQuery will be empty + // We need to populate it so the input is filled on the search page + if (!state.search.searchQuery) { + dispatch({ + type: ACTIONS.UPDATE_SEARCH_QUERY, + data: { searchQuery: query } + }); + } + + fetch('https://lighthouse.lbry.io/search?s=' + query).then(_handleFetch2.default).then(function (data) { + var uris = []; + var actions = []; + + data.forEach(function (result) { + var uri = (0, _lbryURI.buildURI)({ + claimName: result.name, + claimId: result.claimId + }); + actions.push((0, _claims.doResolveUri)(uri)); + uris.push(uri); + }); + + actions.push({ + type: ACTIONS.SEARCH_SUCCESS, + data: { + query: query, + uris: uris + } + }); + dispatch(_batchActions.batchActions.apply(undefined, actions)); + }).catch(function () { + dispatch({ + type: ACTIONS.SEARCH_FAIL + }); + }); + }; +}; // @flow +var getSearchSuggestions = exports.getSearchSuggestions = function getSearchSuggestions(value /*: string*/) { + return function (dispatch) { + var query = value.trim(); + + var isPrefix = function isPrefix() { + return query === '@' || query === 'lbry:' || query === 'lbry:/' || query === 'lbry://'; + }; + + if (!query || isPrefix()) { + dispatch({ + type: ACTIONS.UPDATE_SEARCH_SUGGESTIONS, + data: { suggestions: [] } + }); + return; + } + + var suggestions = []; + try { + // If the user is about to manually add the claim id ignore it until they + // actually add one. This would hardly ever happen, but then the search + // suggestions won't change just from adding a '#' after a uri + var uriQuery = query; + if (uriQuery.endsWith('#')) { + uriQuery = uriQuery.slice(0, -1); + } + + var uri = (0, _lbryURI.normalizeURI)(uriQuery); + + var _parseURI = (0, _lbryURI.parseURI)(uri), + claimName = _parseURI.claimName, + isChannel = _parseURI.isChannel; + + suggestions.push({ + value: uri, + shorthand: isChannel ? claimName.slice(1) : claimName, + type: isChannel ? SEARCH_TYPES.CHANNEL : SEARCH_TYPES.FILE + }, { + value: claimName, + type: SEARCH_TYPES.SEARCH + }); + + // If it's a valid url, don't fetch any extra search results + dispatch({ + type: ACTIONS.UPDATE_SEARCH_SUGGESTIONS, + data: { suggestions: suggestions } + }); + } catch (e) { + suggestions.push({ + value: query, + type: SEARCH_TYPES.SEARCH + }); + } + + // Populate the current search query suggestion before fetching results + dispatch({ + type: ACTIONS.UPDATE_SEARCH_SUGGESTIONS, + data: { suggestions: suggestions } + }); + + // strip out any basic stuff for more accurate search results + var searchValue = value.replace(/lbry:\/\//g, '').replace(/-/g, ' '); + if (searchValue.includes('#')) { + // This should probably be more robust, but I think it's fine for now + // Remove everything after # to get rid of the claim id + searchValue = searchValue.substring(0, searchValue.indexOf('#')); + } + + fetch('https://lighthouse.lbry.io/autocomplete?s=' + searchValue).then(_handleFetch2.default).then(function (apiSuggestions) { + var formattedSuggestions = apiSuggestions.slice(0, 6).map(function (suggestion) { + // This will need to be more robust when the api starts returning lbry uris + var isChannel = suggestion.startsWith('@'); + var suggestionObj = { + value: isChannel ? 'lbry://' + suggestion : suggestion, + shorthand: isChannel ? suggestion.slice(1) : '', + type: isChannel ? 'channel' : 'search' + }; + + return suggestionObj; + }); + + suggestions = suggestions.concat(formattedSuggestions); + dispatch({ + type: ACTIONS.UPDATE_SEARCH_SUGGESTIONS, + data: { suggestions: suggestions } + }); + }).catch(function () { + // If the fetch fails, do nothing + // Basic search suggestions are already populated at this point + }); + }; +}; + +var doUpdateSearchQuery = exports.doUpdateSearchQuery = function doUpdateSearchQuery(query /*: string*/, shouldSkipSuggestions /*: ?boolean*/) { + return function (dispatch) { + dispatch({ + type: ACTIONS.UPDATE_SEARCH_QUERY, + data: { query: query } + }); + + // Don't fetch new suggestions if the user just added a space + if (!query.endsWith(' ') || !shouldSkipSuggestions) { + dispatch(getSearchSuggestions(query)); + } + }; +}; + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var FILE = exports.FILE = 'file'; +var CHANNEL = exports.CHANNEL = 'channel'; +var SEARCH = exports.SEARCH = 'search'; + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.selectWunderBarAddress = exports.makeSelectSearchUris = exports.selectSearchUrisByQuery = exports.selectIsSearching = exports.selectSearchQuery = exports.selectSearchValue = exports.selectState = undefined; + +var _navigation = __webpack_require__(15); + +var _reselect = __webpack_require__(16); + +var selectState = exports.selectState = function selectState(state) { + return state.search || {}; +}; + +var selectSearchValue = exports.selectSearchValue = (0, _reselect.createSelector)(selectState, function (state) { + return state.searchQuery; +}); + +var selectSearchQuery = exports.selectSearchQuery = (0, _reselect.createSelector)(_navigation.selectCurrentPage, _navigation.selectCurrentParams, function (page, params) { + return page === 'search' ? params && params.query : null; +}); + +var selectIsSearching = exports.selectIsSearching = (0, _reselect.createSelector)(selectState, function (state) { + return state.searching; +}); + +var selectSearchUrisByQuery = exports.selectSearchUrisByQuery = (0, _reselect.createSelector)(selectState, function (state) { + return state.urisByQuery; +}); + +var makeSelectSearchUris = exports.makeSelectSearchUris = function makeSelectSearchUris(query) { + return ( + // replace statement below is kind of ugly, and repeated in doSearch action + (0, _reselect.createSelector)(selectSearchUrisByQuery, function (byQuery) { + return byQuery[query ? query.replace(/^lbry:\/\//i, '') : query]; + }) + ); +}; + +var selectWunderBarAddress = exports.selectWunderBarAddress = (0, _reselect.createSelector)(_navigation.selectCurrentPage, selectSearchQuery, _navigation.selectCurrentParams, function (page, query, params) { + // only populate the wunderbar address if we are on the file/channel pages + // or show the search query + if (page === 'show') { + return params.uri; + } + return query; +}); + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = handleFetchResponse; +function handleFetchResponse(response) { + return response.status === 200 ? Promise.resolve(response.json()) : Promise.reject(new Error(response.statusText)); +} + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +exports.doFetchBlackListedOutpoints = doFetchBlackListedOutpoints; +exports.doBlackListedOutpointsSubscribe = doBlackListedOutpointsSubscribe; + +var _lbryapi = __webpack_require__(9); + +var _lbryapi2 = _interopRequireDefault(_lbryapi); + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var CHECK_BLACK_LISTED_CONTENT_INTERVAL = 60 * 60 * 1000; + +function doFetchBlackListedOutpoints() { + return function (dispatch) { + dispatch({ + type: ACTIONS.FETCH_BLACK_LISTED_CONTENT_STARTED + }); + + var success = function success(_ref) { + var outpoints = _ref.outpoints; + + var splitedOutpoints = []; + + outpoints.forEach(function (outpoint, index) { + var _outpoint$split = outpoint.split(':'), + _outpoint$split2 = _slicedToArray(_outpoint$split, 2), + txid = _outpoint$split2[0], + nout = _outpoint$split2[1]; + + splitedOutpoints[index] = { txid: txid, nout: Number.parseInt(nout, 10) }; + }); + dispatch({ + type: ACTIONS.FETCH_BLACK_LISTED_CONTENT_COMPLETED, + data: { + outpoints: splitedOutpoints, + success: true + } + }); + }; + + var failure = function failure(_ref2) { + var error = _ref2.error; + + dispatch({ + type: ACTIONS.FETCH_BLACK_LISTED_CONTENT_FAILED, + data: { + error: error, + success: false + } + }); + }; + + _lbryapi2.default.call('file', 'list_blocked').then(success, failure); + }; +} + +function doBlackListedOutpointsSubscribe() { + return function (dispatch) { + dispatch(doFetchBlackListedOutpoints()); + setInterval(function () { + return dispatch(doFetchBlackListedOutpoints()); + }, CHECK_BLACK_LISTED_CONTENT_INTERVAL); + }; +} + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.doUpdateBalance = doUpdateBalance; +exports.doBalanceSubscribe = doBalanceSubscribe; +exports.doFetchTransactions = doFetchTransactions; +exports.doFetchBlock = doFetchBlock; +exports.doGetNewAddress = doGetNewAddress; +exports.doCheckAddressIsMine = doCheckAddressIsMine; +exports.doSendDraftTransaction = doSendDraftTransaction; +exports.doSetDraftTransactionAmount = doSetDraftTransactionAmount; +exports.doSetDraftTransactionAddress = doSetDraftTransactionAddress; +exports.doSendSupport = doSendSupport; + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +var _lbry = __webpack_require__(6); + +var _lbry2 = _interopRequireDefault(_lbry); + +var _notifications = __webpack_require__(3); + +var _wallet = __webpack_require__(28); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function doUpdateBalance() { + return function (dispatch, getState) { + var _getState = getState(), + balanceInStore = _getState.wallet.balance; + + _lbry2.default.wallet_balance().then(function (balance) { + if (balanceInStore !== balance) { + dispatch({ + type: ACTIONS.UPDATE_BALANCE, + data: { + balance: balance + } + }); + } + }); + }; +} + +function doBalanceSubscribe() { + return function (dispatch) { + dispatch(doUpdateBalance()); + setInterval(function () { + return dispatch(doUpdateBalance()); + }, 5000); + }; +} + +function doFetchTransactions() { + return function (dispatch) { + dispatch({ + type: ACTIONS.FETCH_TRANSACTIONS_STARTED + }); + + _lbry2.default.transaction_list().then(function (results) { + dispatch({ + type: ACTIONS.FETCH_TRANSACTIONS_COMPLETED, + data: { + transactions: results + } + }); + }); + }; +} + +function doFetchBlock(height) { + return function (dispatch) { + _lbry2.default.block_show({ height: height }).then(function (block) { + dispatch({ + type: ACTIONS.FETCH_BLOCK_SUCCESS, + data: { block: block } + }); + }); + }; +} + +function doGetNewAddress() { + return function (dispatch) { + dispatch({ + type: ACTIONS.GET_NEW_ADDRESS_STARTED + }); + + // Removed localStorage use, since address is expected to be stored in redux store + _lbry2.default.wallet_new_address().then(function (address) { + dispatch({ + type: ACTIONS.GET_NEW_ADDRESS_COMPLETED, + data: { address: address } + }); + }); + }; +} + +function doCheckAddressIsMine(address) { + return function (dispatch) { + dispatch({ + type: ACTIONS.CHECK_ADDRESS_IS_MINE_STARTED + }); + + _lbry2.default.wallet_is_address_mine({ address: address }).then(function (isMine) { + if (!isMine) dispatch(doGetNewAddress()); + + dispatch({ + type: ACTIONS.CHECK_ADDRESS_IS_MINE_COMPLETED + }); + }); + }; +} + +function doSendDraftTransaction(address, amount) { + return function (dispatch, getState) { + var state = getState(); + var balance = (0, _wallet.selectBalance)(state); + + if (balance - amount <= 0) { + dispatch((0, _notifications.doNotify)({ + title: 'Insufficient credits', + message: 'Insufficient credits', + type: 'error', + displayType: ['modal', 'toast'] + })); + return; + } + + dispatch({ + type: ACTIONS.SEND_TRANSACTION_STARTED + }); + + var successCallback = function successCallback(results) { + if (results === true) { + dispatch({ + type: ACTIONS.SEND_TRANSACTION_COMPLETED + }); + dispatch((0, _notifications.doNotify)({ + title: 'Credits sent', + message: 'You sent ' + amount + ' LBC', + type: 'error', + displayType: ['snackbar', 'toast'], + linkText: 'History', + linkTarget: '/wallet' + })); + } else { + dispatch({ + type: ACTIONS.SEND_TRANSACTION_FAILED, + data: { error: results } + }); + dispatch((0, _notifications.doNotify)({ + title: 'Transaction failed', + message: 'Transaction failed', + type: 'error', + displayType: ['snackbar', 'toast'] + })); + } + }; + + var errorCallback = function errorCallback(error) { + dispatch({ + type: ACTIONS.SEND_TRANSACTION_FAILED, + data: { error: error.message } + }); + dispatch((0, _notifications.doNotify)({ + title: 'Transaction failed', + message: 'Transaction failed', + type: 'error', + displayType: ['snackbar', 'toast'] + })); + }; + + _lbry2.default.wallet_send({ + amount: amount, + address: address + }).then(successCallback, errorCallback); + }; +} + +function doSetDraftTransactionAmount(amount) { + return { + type: ACTIONS.SET_DRAFT_TRANSACTION_AMOUNT, + data: { amount: amount } + }; +} + +function doSetDraftTransactionAddress(address) { + return { + type: ACTIONS.SET_DRAFT_TRANSACTION_ADDRESS, + data: { address: address } + }; +} + +function doSendSupport(amount, claimId, uri, successCallback, errorCallback) { + return function (dispatch, getState) { + var state = getState(); + var balance = (0, _wallet.selectBalance)(state); + + if (balance - amount <= 0) { + dispatch((0, _notifications.doNotify)({ + title: 'Insufficient credits', + message: 'Insufficient credits', + type: 'error', + displayType: ['modal', 'toast'] + })); + return; + } + + var success = function success() { + dispatch((0, _notifications.doNotify)({ + message: __('You sent ' + amount + ' LBC as support, Mahalo!'), + linkText: __('History'), + linkTarget: __('/wallet'), + displayType: ['snackbar'] + })); + + if (successCallback) { + successCallback(); + } + }; + + dispatch({ + type: ACTIONS.SUPPORT_TRANSACTION_STARTED + }); + + _lbry2.default.wallet_send({ + claim_id: claimId, + amount: amount + }).then(success, errorCallback); + }; +} + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.makeSelectBlockDate = exports.selectBlocks = exports.selectDraftTransactionError = exports.selectDraftTransactionAddress = exports.selectDraftTransactionAmount = exports.selectDraftTransaction = exports.selectGettingNewAddress = exports.selectReceiveAddress = exports.selectIsSendingSupport = exports.selectIsFetchingTransactions = exports.selectHasTransactions = exports.selectRecentTransactions = exports.selectTransactionItems = exports.selectTransactionsById = exports.selectBalance = exports.selectState = undefined; + +var _reselect = __webpack_require__(16); + +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); } } + +var selectState = exports.selectState = function selectState(state) { + return state.wallet || {}; +}; + +var selectBalance = exports.selectBalance = (0, _reselect.createSelector)(selectState, function (state) { + return state.balance; +}); + +var selectTransactionsById = exports.selectTransactionsById = (0, _reselect.createSelector)(selectState, function (state) { + return state.transactions; +}); + +var selectTransactionItems = exports.selectTransactionItems = (0, _reselect.createSelector)(selectTransactionsById, function (byId) { + var items = []; + + Object.keys(byId).forEach(function (txid) { + var tx = byId[txid]; + + // ignore dust/fees + // it is fee only txn if all infos are also empty + if (Math.abs(tx.value) === Math.abs(tx.fee) && tx.claim_info.length === 0 && tx.support_info.length === 0 && tx.update_info.length === 0) { + return; + } + + var append = []; + + append.push.apply(append, _toConsumableArray(tx.claim_info.map(function (item) { + return Object.assign({}, tx, item, { + type: item.claim_name[0] === '@' ? 'channel' : 'publish' + }); + }))); + append.push.apply(append, _toConsumableArray(tx.support_info.map(function (item) { + return Object.assign({}, tx, item, { + type: !item.is_tip ? 'support' : 'tip' + }); + }))); + append.push.apply(append, _toConsumableArray(tx.update_info.map(function (item) { + return Object.assign({}, tx, item, { type: 'update' }); + }))); + + if (!append.length) { + append.push(Object.assign({}, tx, { + type: tx.value < 0 ? 'spend' : 'receive' + })); + } + + items.push.apply(items, _toConsumableArray(append.map(function (item) { + // value on transaction, amount on outpoint + // amount is always positive, but should match sign of value + var amount = parseFloat(item.balance_delta ? item.balance_delta : item.value); + + return { + txid: txid, + date: tx.timestamp ? new Date(Number(tx.timestamp) * 1000) : null, + amount: amount, + fee: amount < 0 ? -1 * tx.fee / append.length : 0, + claim_id: item.claim_id, + claim_name: item.claim_name, + type: item.type || 'send', + nout: item.nout + }; + }))); + }); + return items.reverse(); +}); + +var selectRecentTransactions = exports.selectRecentTransactions = (0, _reselect.createSelector)(selectTransactionItems, function (transactions) { + var threshold = new Date(); + threshold.setDate(threshold.getDate() - 7); + return transactions.filter(function (transaction) { + return transaction.date > threshold; + }); +}); + +var selectHasTransactions = exports.selectHasTransactions = (0, _reselect.createSelector)(selectTransactionItems, function (transactions) { + return transactions && transactions.length > 0; +}); + +var selectIsFetchingTransactions = exports.selectIsFetchingTransactions = (0, _reselect.createSelector)(selectState, function (state) { + return state.fetchingTransactions; +}); + +var selectIsSendingSupport = exports.selectIsSendingSupport = (0, _reselect.createSelector)(selectState, function (state) { + return state.sendingSupport; +}); + +var selectReceiveAddress = exports.selectReceiveAddress = (0, _reselect.createSelector)(selectState, function (state) { + return state.receiveAddress; +}); + +var selectGettingNewAddress = exports.selectGettingNewAddress = (0, _reselect.createSelector)(selectState, function (state) { + return state.gettingNewAddress; +}); + +var selectDraftTransaction = exports.selectDraftTransaction = (0, _reselect.createSelector)(selectState, function (state) { + return state.draftTransaction || {}; +}); + +var selectDraftTransactionAmount = exports.selectDraftTransactionAmount = (0, _reselect.createSelector)(selectDraftTransaction, function (draft) { + return draft.amount; +}); + +var selectDraftTransactionAddress = exports.selectDraftTransactionAddress = (0, _reselect.createSelector)(selectDraftTransaction, function (draft) { + return draft.address; +}); + +var selectDraftTransactionError = exports.selectDraftTransactionError = (0, _reselect.createSelector)(selectDraftTransaction, function (draft) { + return draft.error; +}); + +var selectBlocks = exports.selectBlocks = (0, _reselect.createSelector)(selectState, function (state) { + return state.blocks; +}); + +var makeSelectBlockDate = exports.makeSelectBlockDate = function makeSelectBlockDate(block) { + return (0, _reselect.createSelector)(selectBlocks, function (blocks) { + return blocks && blocks[block] ? new Date(blocks[block].time * 1000) : undefined; + }); +}; + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.formatCredits = formatCredits; +exports.formatFullPrice = formatFullPrice; +function formatCredits(amount, precision) { + return amount.toFixed(precision || 1).replace(/\.?0+$/, ''); +} + +function formatFullPrice(amount) { + var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + + var formated = ''; + + var quantity = amount.toString().split('.'); + var fraction = quantity[1]; + + if (fraction) { + var decimals = fraction.split(''); + var first = decimals.filter(function (number) { + return number !== '0'; + })[0]; + var index = decimals.indexOf(first); + + // Set format fraction + formated = '.' + fraction.substring(0, index + precision); + } + + return parseFloat(quantity[0] + formated); +} + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +exports.claimsReducer = claimsReducer; + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var reducers = {}; + +var defaultState = { + rewardedContentClaimIds: [], + channelClaimCounts: {} +}; + +reducers[ACTIONS.RESOLVE_URIS_COMPLETED] = function (state, action) { + var resolveInfo = action.data.resolveInfo; + + var byUri = Object.assign({}, state.claimsByUri); + var byId = Object.assign({}, state.byId); + var channelClaimCounts = Object.assign({}, state.channelClaimCounts); + + Object.entries(resolveInfo).forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + uri = _ref2[0], + _ref2$ = _ref2[1], + certificate = _ref2$.certificate, + claimsInChannel = _ref2$.claimsInChannel; + + if (certificate && !Number.isNaN(claimsInChannel)) { + channelClaimCounts[uri] = claimsInChannel; + } + }); + + Object.entries(resolveInfo).forEach(function (_ref3) { + var _ref4 = _slicedToArray(_ref3, 2), + uri = _ref4[0], + _ref4$ = _ref4[1], + certificate = _ref4$.certificate, + claim = _ref4$.claim; + + if (claim) { + byId[claim.claim_id] = claim; + byUri[uri] = claim.claim_id; + } else if (claim === undefined && certificate !== undefined) { + byId[certificate.claim_id] = certificate; + // Don't point URI at the channel certificate unless it actually is + // a channel URI. This is brittle. + if (!uri.split(certificate.name)[1].match(/\//)) { + byUri[uri] = certificate.claim_id; + } else { + byUri[uri] = null; + } + } else { + byUri[uri] = null; + } + }); + + return Object.assign({}, state, { + byId: byId, + claimsByUri: byUri, + channelClaimCounts: channelClaimCounts, + resolvingUris: (state.resolvingUris || []).filter(function (uri) { + return !resolveInfo[uri]; + }) + }); +}; + +reducers[ACTIONS.FETCH_CLAIM_LIST_MINE_STARTED] = function (state) { + return Object.assign({}, state, { + isFetchingClaimListMine: true + }); +}; + +reducers[ACTIONS.FETCH_CLAIM_LIST_MINE_COMPLETED] = function (state, action) { + var claims = action.data.claims; + + var byId = Object.assign({}, state.byId); + var pendingById = Object.assign({}, state.pendingById); + + claims.filter(function (claim) { + return claim.category && claim.category.match(/claim/); + }).forEach(function (claim) { + byId[claim.claim_id] = claim; + + var pending = Object.values(pendingById).find(function (pendingClaim) { + return pendingClaim.name === claim.name && pendingClaim.channel_name === claim.channel_name; + }); + + if (pending) { + delete pendingById[pending.claim_id]; + } + }); + + // Remove old timed out pending publishes + Object.values(pendingById).filter(function (pendingClaim) { + return Date.now() - pendingClaim.time >= 20 * 60 * 1000; + }).forEach(function (pendingClaim) { + delete pendingById[pendingClaim.claim_id]; + }); + + return Object.assign({}, state, { + isFetchingClaimListMine: false, + myClaims: claims, + byId: byId, + pendingById: pendingById + }); +}; + +reducers[ACTIONS.FETCH_CHANNEL_LIST_MINE_STARTED] = function (state) { + return Object.assign({}, state, { fetchingMyChannels: true }); +}; + +reducers[ACTIONS.FETCH_CHANNEL_LIST_MINE_COMPLETED] = function (state, action) { + var claims = action.data.claims; + + var myChannelClaims = new Set(state.myChannelClaims); + var byId = Object.assign({}, state.byId); + + claims.forEach(function (claim) { + myChannelClaims.add(claim.claim_id); + byId[claims.claim_id] = claim; + }); + + return Object.assign({}, state, { + byId: byId, + fetchingMyChannels: false, + myChannelClaims: myChannelClaims + }); +}; + +reducers[ACTIONS.FETCH_CHANNEL_CLAIMS_STARTED] = function (state, action) { + var _action$data = action.data, + uri = _action$data.uri, + page = _action$data.page; + + var fetchingChannelClaims = Object.assign({}, state.fetchingChannelClaims); + + fetchingChannelClaims[uri] = page; + + return Object.assign({}, state, { + fetchingChannelClaims: fetchingChannelClaims + }); +}; + +reducers[ACTIONS.FETCH_CHANNEL_CLAIMS_COMPLETED] = function (state, action) { + var _action$data2 = action.data, + uri = _action$data2.uri, + claims = _action$data2.claims, + page = _action$data2.page; + + + var claimsByChannel = Object.assign({}, state.claimsByChannel); + var byChannel = Object.assign({}, claimsByChannel[uri]); + var allClaimIds = new Set(byChannel.all); + var currentPageClaimIds = []; + var byId = Object.assign({}, state.byId); + var fetchingChannelClaims = Object.assign({}, state.fetchingChannelClaims); + + if (claims !== undefined) { + claims.forEach(function (claim) { + allClaimIds.add(claim.claim_id); + currentPageClaimIds.push(claim.claim_id); + byId[claim.claim_id] = claim; + }); + } + + byChannel.all = allClaimIds; + byChannel[page] = currentPageClaimIds; + claimsByChannel[uri] = byChannel; + delete fetchingChannelClaims[uri]; + + return Object.assign({}, state, { + claimsByChannel: claimsByChannel, + byId: byId, + fetchingChannelClaims: fetchingChannelClaims + }); +}; + +reducers[ACTIONS.ABANDON_CLAIM_STARTED] = function (state, action) { + var claimId = action.data.claimId; + + var abandoningById = Object.assign({}, state.abandoningById); + + abandoningById[claimId] = true; + + return Object.assign({}, state, { + abandoningById: abandoningById + }); +}; + +reducers[ACTIONS.ABANDON_CLAIM_SUCCEEDED] = function (state, action) { + var claimId = action.data.claimId; + + var byId = Object.assign({}, state.byId); + var claimsByUri = Object.assign({}, state.claimsByUri); + + Object.keys(claimsByUri).forEach(function (uri) { + if (claimsByUri[uri] === claimId) { + delete claimsByUri[uri]; + } + }); + + delete byId[claimId]; + + return Object.assign({}, state, { + byId: byId, + claimsByUri: claimsByUri + }); +}; + +reducers[ACTIONS.CREATE_CHANNEL_COMPLETED] = function (state, action) { + var channelClaim = action.data.channelClaim; + + var byId = Object.assign({}, state.byId); + var myChannelClaims = new Set(state.myChannelClaims); + + byId[channelClaim.claim_id] = channelClaim; + myChannelClaims.add(channelClaim.claim_id); + + return Object.assign({}, state, { + byId: byId, + myChannelClaims: myChannelClaims + }); +}; + +reducers[ACTIONS.FETCH_FEATURED_CONTENT_STARTED] = function (state) { + return Object.assign({}, state, { + fetchingFeaturedContent: true + }); +}; + +reducers[ACTIONS.FETCH_FEATURED_CONTENT_COMPLETED] = function (state, action) { + var _action$data3 = action.data, + uris = _action$data3.uris, + success = _action$data3.success; + + + return Object.assign({}, state, { + fetchingFeaturedContent: false, + fetchingFeaturedContentFailed: !success, + featuredUris: uris + }); +}; + +reducers[ACTIONS.FETCH_REWARD_CONTENT_COMPLETED] = function (state, action) { + var claimIds = action.data.claimIds; + + + return Object.assign({}, state, { + rewardedContentClaimIds: claimIds + }); +}; + +reducers[ACTIONS.RESOLVE_URIS_STARTED] = function (state, action) { + var uris = action.data.uris; + + + var oldResolving = state.resolvingUris || []; + var newResolving = Object.assign([], oldResolving); + + uris.forEach(function (uri) { + if (!newResolving.includes(uri)) { + newResolving.push(uri); + } + }); + + return Object.assign({}, state, { + resolvingUris: newResolving + }); +}; + +reducers[ACTIONS.FETCH_CHANNEL_CLAIM_COUNT_COMPLETED] = function (state, action) { + var channelClaimCounts = Object.assign({}, state.channelClaimCounts); + var _action$data4 = action.data, + uri = _action$data4.uri, + totalClaims = _action$data4.totalClaims; + + + channelClaimCounts[uri] = totalClaims; + + return Object.assign({}, state, { + channelClaimCounts: channelClaimCounts + }); +}; + +function claimsReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; + var action = arguments[1]; + + var handler = reducers[action.type]; + if (handler) return handler(state, action); + return state; +} + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.costInfoReducer = costInfoReducer; + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var reducers = {}; +var defaultState = {}; + +reducers[ACTIONS.FETCH_COST_INFO_STARTED] = function (state, action) { + var uri = action.data.uri; + + var newFetching = Object.assign({}, state.fetching); + newFetching[uri] = true; + + return Object.assign({}, state, { + fetching: newFetching + }); +}; + +reducers[ACTIONS.FETCH_COST_INFO_COMPLETED] = function (state, action) { + var _action$data = action.data, + uri = _action$data.uri, + costInfo = _action$data.costInfo; + + var newByUri = Object.assign({}, state.byUri); + var newFetching = Object.assign({}, state.fetching); + + newByUri[uri] = costInfo; + delete newFetching[uri]; + + return Object.assign({}, state, { + byUri: newByUri, + fetching: newFetching + }); +}; + +function costInfoReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; + var action = arguments[1]; + + var handler = reducers[action.type]; + if (handler) return handler(state, action); + return state; +} + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fileInfoReducer = fileInfoReducer; + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var reducers = {}; +var defaultState = {}; + +reducers[ACTIONS.FILE_LIST_STARTED] = function (state) { + return Object.assign({}, state, { + isFetchingFileList: true + }); +}; + +reducers[ACTIONS.FILE_LIST_SUCCEEDED] = function (state, action) { + var fileInfos = action.data.fileInfos; + + var newByOutpoint = Object.assign({}, state.byOutpoint); + var pendingByOutpoint = Object.assign({}, state.pendingByOutpoint); + + fileInfos.forEach(function (fileInfo) { + var outpoint = fileInfo.outpoint; + + + if (outpoint) newByOutpoint[fileInfo.outpoint] = fileInfo; + }); + + return Object.assign({}, state, { + isFetchingFileList: false, + byOutpoint: newByOutpoint, + pendingByOutpoint: pendingByOutpoint + }); +}; + +reducers[ACTIONS.FETCH_FILE_INFO_STARTED] = function (state, action) { + var outpoint = action.data.outpoint; + + var newFetching = Object.assign({}, state.fetching); + + newFetching[outpoint] = true; + + return Object.assign({}, state, { + fetching: newFetching + }); +}; + +reducers[ACTIONS.FETCH_FILE_INFO_COMPLETED] = function (state, action) { + var _action$data = action.data, + fileInfo = _action$data.fileInfo, + outpoint = _action$data.outpoint; + + + var newByOutpoint = Object.assign({}, state.byOutpoint); + var newFetching = Object.assign({}, state.fetching); + + newByOutpoint[outpoint] = fileInfo; + delete newFetching[outpoint]; + + return Object.assign({}, state, { + byOutpoint: newByOutpoint, + fetching: newFetching + }); +}; + +reducers[ACTIONS.DOWNLOADING_STARTED] = function (state, action) { + var _action$data2 = action.data, + uri = _action$data2.uri, + outpoint = _action$data2.outpoint, + fileInfo = _action$data2.fileInfo; + + + var newByOutpoint = Object.assign({}, state.byOutpoint); + var newDownloading = Object.assign({}, state.downloadingByOutpoint); + var newLoading = Object.assign({}, state.urisLoading); + + newDownloading[outpoint] = true; + newByOutpoint[outpoint] = fileInfo; + delete newLoading[uri]; + + return Object.assign({}, state, { + downloadingByOutpoint: newDownloading, + urisLoading: newLoading, + byOutpoint: newByOutpoint + }); +}; + +reducers[ACTIONS.DOWNLOADING_PROGRESSED] = function (state, action) { + var _action$data3 = action.data, + outpoint = _action$data3.outpoint, + fileInfo = _action$data3.fileInfo; + + + var newByOutpoint = Object.assign({}, state.byOutpoint); + var newDownloading = Object.assign({}, state.downloadingByOutpoint); + + newByOutpoint[outpoint] = fileInfo; + newDownloading[outpoint] = true; + + return Object.assign({}, state, { + byOutpoint: newByOutpoint, + downloadingByOutpoint: newDownloading + }); +}; + +reducers[ACTIONS.DOWNLOADING_COMPLETED] = function (state, action) { + var _action$data4 = action.data, + outpoint = _action$data4.outpoint, + fileInfo = _action$data4.fileInfo; + + + var newByOutpoint = Object.assign({}, state.byOutpoint); + var newDownloading = Object.assign({}, state.downloadingByOutpoint); + + newByOutpoint[outpoint] = fileInfo; + delete newDownloading[outpoint]; + + return Object.assign({}, state, { + byOutpoint: newByOutpoint, + downloadingByOutpoint: newDownloading + }); +}; + +reducers[ACTIONS.FILE_DELETE] = function (state, action) { + var outpoint = action.data.outpoint; + + + var newByOutpoint = Object.assign({}, state.byOutpoint); + var downloadingByOutpoint = Object.assign({}, state.downloadingByOutpoint); + + delete newByOutpoint[outpoint]; + delete downloadingByOutpoint[outpoint]; + + return Object.assign({}, state, { + byOutpoint: newByOutpoint, + downloadingByOutpoint: downloadingByOutpoint + }); +}; + +reducers[ACTIONS.LOADING_VIDEO_STARTED] = function (state, action) { + var uri = action.data.uri; + + + var newLoading = Object.assign({}, state.urisLoading); + + newLoading[uri] = true; + + return Object.assign({}, state, { + urisLoading: newLoading + }); +}; + +reducers[ACTIONS.LOADING_VIDEO_FAILED] = function (state, action) { + var uri = action.data.uri; + + + var newLoading = Object.assign({}, state.urisLoading); + + delete newLoading[uri]; + + return Object.assign({}, state, { + urisLoading: newLoading + }); +}; + +reducers[ACTIONS.FETCH_DATE] = function (state, action) { + var time = action.data.time; + + if (time) { + return Object.assign({}, state, { + publishedDate: time + }); + } + return null; +}; + +function fileInfoReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; + var action = arguments[1]; + + var handler = reducers[action.type]; + if (handler) return handler(state, action); + return state; +} + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.notificationsReducer = notificationsReducer; + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +var _modal_types = __webpack_require__(34); + +var MODALS = _interopRequireWildcard(_modal_types); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var reducers = {}; + +var defaultState = { + // First-in, first-out + queue: [] +}; + +reducers[ACTIONS.CREATE_NOTIFICATION] = function (state, action) { + var _action$data = action.data, + notification = _action$data.notification, + notificationProps = _action$data.notificationProps; + var title = notification.title, + message = notification.message, + type = notification.type, + error = notification.error, + displayType = notification.displayType, + id = notification.id; + var uri = notificationProps.uri, + nout = notificationProps.nout, + txid = notificationProps.txid; + + + var queue = Object.assign([], state.queue); + queue.push({ + notification: { + id: id, + title: title, + message: message, + type: type, + error: error, + displayType: displayType + }, + notificationProps: { + uri: uri, + txid: txid, + nout: nout + } + }); + + return Object.assign({}, state, { + queue: queue + }); +}; + +reducers[ACTIONS.DISMISS_NOTIFICATION] = function (state) { + var queue = Object.assign([], state.queue); + queue.shift(); + + return Object.assign({}, state, { + queue: queue + }); +}; + +reducers[ACTIONS.HISTORY_NAVIGATE] = function (state) { + var queue = Object.assign([], state.queue); + if (queue[0] && queue[0].notification.id === MODALS.SEARCH) { + queue.shift(); + return Object.assign({}, state, { queue: queue }); + } + return state; +}; + +function notificationsReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; + var action = arguments[1]; + + var handler = reducers[action.type]; + if (handler) return handler(state, action); + return state; +} + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var CONFIRM_FILE_REMOVE = exports.CONFIRM_FILE_REMOVE = 'confirm_file_remove'; +var INCOMPATIBLE_DAEMON = exports.INCOMPATIBLE_DAEMON = 'incompatible_daemon'; +var FILE_TIMEOUT = exports.FILE_TIMEOUT = 'file_timeout'; +var DOWNLOADING = exports.DOWNLOADING = 'downloading'; +var AUTO_UPDATE_DOWNLOADED = exports.AUTO_UPDATE_DOWNLOADED = 'auto_update_downloaded'; +var AUTO_UPDATE_CONFIRM = exports.AUTO_UPDATE_CONFIRM = 'auto_update_confirm'; +var ERROR = exports.ERROR = 'error'; +var INSUFFICIENT_CREDITS = exports.INSUFFICIENT_CREDITS = 'insufficient_credits'; +var UPGRADE = exports.UPGRADE = 'upgrade'; +var WELCOME = exports.WELCOME = 'welcome'; +var EMAIL_COLLECTION = exports.EMAIL_COLLECTION = 'email_collection'; +var PHONE_COLLECTION = exports.PHONE_COLLECTION = 'phone_collection'; +var FIRST_REWARD = exports.FIRST_REWARD = 'first_reward'; +var AUTHENTICATION_FAILURE = exports.AUTHENTICATION_FAILURE = 'auth_failure'; +var TRANSACTION_FAILED = exports.TRANSACTION_FAILED = 'transaction_failed'; +var REWARD_APPROVAL_REQUIRED = exports.REWARD_APPROVAL_REQUIRED = 'reward_approval_required'; +var AFFIRM_PURCHASE = exports.AFFIRM_PURCHASE = 'affirm_purchase'; +var CONFIRM_CLAIM_REVOKE = exports.CONFIRM_CLAIM_REVOKE = 'confirm_claim_revoke'; +var FIRST_SUBSCRIPTION = exports.FIRST_SUBSCRIPTION = 'firstSubscription'; +var SEND_TIP = exports.SEND_TIP = 'send_tip'; +var PUBLISH = exports.PUBLISH = 'publish'; +var SEARCH = exports.SEARCH = 'search'; + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.searchReducer = undefined; + +var _handleActions; + +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; }; // @flow + + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +var _reduxUtils = __webpack_require__(36); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +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; } + +/*:: type SearchSuccess = { + type: ACTIONS.SEARCH_SUCCESS, + data: { + query: string, + uris: Array, + }, +};*/ +/*:: type UpdateSearchQuery = { + type: ACTIONS.UPDATE_SEARCH_QUERY, + data: { + query: string, + }, +};*/ +/*:: type SearchSuggestion = { + value: string, + shorthand: string, + type: string, +};*/ +/*:: type UpdateSearchSuggestions = { + type: ACTIONS.UPDATE_SEARCH_SUGGESTIONS, + data: { + suggestions: Array, + }, +};*/ +/*:: type SearchState = { + isActive: boolean, + searchQuery: string, + suggestions: Array, + urisByQuery: {}, +};*/ + + +var defaultState = { + isActive: false, + searchQuery: '', // needs to be an empty string for input focusing + suggestions: [], + urisByQuery: {} +}; + +var searchReducer = exports.searchReducer = (0, _reduxUtils.handleActions)((_handleActions = {}, _defineProperty(_handleActions, ACTIONS.SEARCH_START, function (state /*: SearchState*/) /*: SearchState*/ { + return _extends({}, state, { + searching: true + }); +}), _defineProperty(_handleActions, ACTIONS.SEARCH_SUCCESS, function (state /*: SearchState*/, action /*: SearchSuccess*/) /*: SearchState*/ { + var _action$data = action.data, + query = _action$data.query, + uris = _action$data.uris; + + + return _extends({}, state, { + searching: false, + urisByQuery: Object.assign({}, state.urisByQuery, _defineProperty({}, query, uris)) + }); +}), _defineProperty(_handleActions, ACTIONS.SEARCH_FAIL, function (state /*: SearchState*/) /*: SearchState*/ { + return _extends({}, state, { + searching: false + }); +}), _defineProperty(_handleActions, ACTIONS.UPDATE_SEARCH_QUERY, function (state /*: SearchState*/, action /*: UpdateSearchQuery*/) /*: SearchState*/ { + return _extends({}, state, { + searchQuery: action.data.query, + isActive: true + }); +}), _defineProperty(_handleActions, ACTIONS.UPDATE_SEARCH_SUGGESTIONS, function (state /*: SearchState*/, action /*: UpdateSearchSuggestions*/) /*: SearchState*/ { + return _extends({}, state, { + suggestions: action.data.suggestions + }); +}), _defineProperty(_handleActions, ACTIONS.HISTORY_NAVIGATE, function (state /*: SearchState*/) /*: SearchState*/ { + return _extends({}, state, { + searchQuery: '', + suggestions: [], + isActive: false + }); +}), _defineProperty(_handleActions, ACTIONS.DISMISS_NOTIFICATION, function (state /*: SearchState*/) /*: SearchState*/ { + return _extends({}, state, { + isActive: false + }); +}), _handleActions), defaultState); + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +// util for creating reducers +// based off of redux-actions +// https://redux-actions.js.org/docs/api/handleAction.html#handleactions + +// eslint-disable-next-line import/prefer-default-export +var handleActions = exports.handleActions = function handleActions(actionMap, defaultState) { + return function () { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; + var action = arguments[1]; + + var handler = actionMap[action.type]; + + if (handler) { + var newState = handler(state, action); + return Object.assign({}, state, newState); + } + + // just return the original state if no handler + // returning a copy here breaks redux-persist + return state; + }; +}; + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.walletReducer = walletReducer; + +var _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var reducers = {}; +var buildDraftTransaction = function buildDraftTransaction() { + return { + amount: undefined, + address: undefined + }; +}; + +var defaultState = { + balance: undefined, + blocks: {}, + transactions: {}, + fetchingTransactions: false, + gettingNewAddress: false, + draftTransaction: buildDraftTransaction(), + sendingSupport: false +}; + +reducers[ACTIONS.FETCH_TRANSACTIONS_STARTED] = function (state) { + return Object.assign({}, state, { + fetchingTransactions: true + }); +}; + +reducers[ACTIONS.FETCH_TRANSACTIONS_COMPLETED] = function (state, action) { + var byId = Object.assign({}, state.transactions); + + var transactions = action.data.transactions; + + + transactions.forEach(function (transaction) { + byId[transaction.txid] = transaction; + }); + + return Object.assign({}, state, { + transactions: byId, + fetchingTransactions: false + }); +}; + +reducers[ACTIONS.GET_NEW_ADDRESS_STARTED] = function (state) { + return Object.assign({}, state, { + gettingNewAddress: true + }); +}; + +reducers[ACTIONS.GET_NEW_ADDRESS_COMPLETED] = function (state, action) { + var address = action.data.address; + + // Say no to localStorage! + + return Object.assign({}, state, { + gettingNewAddress: false, + receiveAddress: address + }); +}; + +reducers[ACTIONS.UPDATE_BALANCE] = function (state, action) { + return Object.assign({}, state, { + balance: action.data.balance + }); +}; + +reducers[ACTIONS.CHECK_ADDRESS_IS_MINE_STARTED] = function (state) { + return Object.assign({}, state, { + checkingAddressOwnership: true + }); +}; + +reducers[ACTIONS.CHECK_ADDRESS_IS_MINE_COMPLETED] = function (state) { + return Object.assign({}, state, { + checkingAddressOwnership: false + }); +}; + +reducers[ACTIONS.SET_DRAFT_TRANSACTION_AMOUNT] = function (state, action) { + var oldDraft = state.draftTransaction; + var newDraft = Object.assign({}, oldDraft, { + amount: parseFloat(action.data.amount) + }); + + return Object.assign({}, state, { + draftTransaction: newDraft + }); +}; + +reducers[ACTIONS.SET_DRAFT_TRANSACTION_ADDRESS] = function (state, action) { + var oldDraft = state.draftTransaction; + var newDraft = Object.assign({}, oldDraft, { + address: action.data.address + }); + + return Object.assign({}, state, { + draftTransaction: newDraft + }); +}; + +reducers[ACTIONS.SEND_TRANSACTION_STARTED] = function (state) { + var newDraftTransaction = Object.assign({}, state.draftTransaction, { + sending: true + }); + + return Object.assign({}, state, { + draftTransaction: newDraftTransaction + }); +}; + +reducers[ACTIONS.SEND_TRANSACTION_COMPLETED] = function (state) { + return Object.assign({}, state, { + draftTransaction: buildDraftTransaction() + }); +}; + +reducers[ACTIONS.SEND_TRANSACTION_FAILED] = function (state, action) { + var newDraftTransaction = Object.assign({}, state.draftTransaction, { + sending: false, + error: action.data.error + }); + + return Object.assign({}, state, { + draftTransaction: newDraftTransaction + }); +}; + +reducers[ACTIONS.SUPPORT_TRANSACTION_STARTED] = function (state) { + return Object.assign({}, state, { + sendingSupport: true + }); +}; + +reducers[ACTIONS.SUPPORT_TRANSACTION_COMPLETED] = function (state) { + return Object.assign({}, state, { + sendingSupport: false + }); +}; + +reducers[ACTIONS.SUPPORT_TRANSACTION_FAILED] = function (state, action) { + return Object.assign({}, state, { + error: action.data.error, + sendingSupport: false + }); +}; + +reducers[ACTIONS.FETCH_BLOCK_SUCCESS] = function (state, action) { + var _action$data = action.data, + block = _action$data.block, + height = _action$data.block.height; + + var blocks = Object.assign({}, state.blocks); + + blocks[height] = block; + + return Object.assign({}, state, { blocks: blocks }); +}; + +function walletReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; + var action = arguments[1]; + + var handler = reducers[action.type]; + if (handler) return handler(state, action); + return state; +} + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.blacklistReducer = undefined; + +var _handleActions; + +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 _action_types = __webpack_require__(4); + +var ACTIONS = _interopRequireWildcard(_action_types); + +var _reduxUtils = __webpack_require__(36); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +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; } + +var defaultState = { + fetchingBlackListedOutpoints: false, + fetchingBlackListedOutpointsSucceed: undefined, + blackListedOutpoints: undefined +}; + +var blacklistReducer = exports.blacklistReducer = (0, _reduxUtils.handleActions)((_handleActions = {}, _defineProperty(_handleActions, ACTIONS.FETCH_BLACK_LISTED_CONTENT_STARTED, function (state) { + return _extends({}, state, { + fetchingBlackListedOutpoints: true + }); +}), _defineProperty(_handleActions, ACTIONS.FETCH_BLACK_LISTED_CONTENT_COMPLETED, function (state, action) { + var _action$data = action.data, + outpoints = _action$data.outpoints, + success = _action$data.success; + + return _extends({}, state, { + fetchingBlackListedOutpoints: false, + fetchingBlackListedOutpointsSucceed: success, + blackListedOutpoints: outpoints + }); +}), _defineProperty(_handleActions, ACTIONS.FETCH_BLACK_LISTED_CONTENT_FAILED, function (state, action) { + var _action$data2 = action.data, + error = _action$data2.error, + success = _action$data2.success; + + + return _extends({}, state, { + fetchingBlackListedOutpoints: false, + fetchingBlackListedOutpointsSucceed: success, + fetchingBlackListedOutpointsError: error + }); +}), _handleActions), defaultState); + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.selectBlackListedOutpoints = exports.selectState = undefined; + +var _reselect = __webpack_require__(16); + +var selectState = exports.selectState = function selectState(state) { + return state.blacklist || {}; +}; + +var selectBlackListedOutpoints = exports.selectBlackListedOutpoints = (0, _reselect.createSelector)(selectState, function (state) { + return state.blackListedOutpoints; +}); + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.selectSnack = exports.selectNotificationProps = exports.selectNotification = exports.selectNotificationData = exports.selectState = undefined; + +var _reselect = __webpack_require__(16); + +var selectState = exports.selectState = function selectState(state) { + return state.notifications || {}; +}; + +var selectNotificationData = exports.selectNotificationData = (0, _reselect.createSelector)(selectState, function (state) { + return state.queue.length > 0 ? state.queue[0] : {}; +}); + +var selectNotification = exports.selectNotification = (0, _reselect.createSelector)(selectNotificationData, function (notificationData) { + return notificationData.notification; +}); + +var selectNotificationProps = exports.selectNotificationProps = (0, _reselect.createSelector)(selectNotificationData, function (notificationData) { + return notificationData.notificationProps; +}); + +var selectSnack = exports.selectSnack = (0, _reselect.createSelector)( +// No props for snackbar +selectNotification, function (notification) { + if (notification && notification.displayType) { + return notification.displayType.indexOf('snackbar') > -1 ? notification : undefined; + } + + return undefined; +}); + +/***/ }), +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.makeSelectFetchingCostInfoForUri = exports.selectFetchingCostInfo = exports.selectCostForCurrentPageUri = exports.makeSelectCostInfoForUri = exports.selectAllCostInfoByUri = exports.selectState = undefined; + +var _reselect = __webpack_require__(16); + +var _navigation = __webpack_require__(15); + +var selectState = exports.selectState = function selectState(state) { + return state.costInfo || {}; +}; + +var selectAllCostInfoByUri = exports.selectAllCostInfoByUri = (0, _reselect.createSelector)(selectState, function (state) { + return state.byUri || {}; +}); + +var makeSelectCostInfoForUri = exports.makeSelectCostInfoForUri = function makeSelectCostInfoForUri(uri) { + return (0, _reselect.createSelector)(selectAllCostInfoByUri, function (costInfos) { + return costInfos && costInfos[uri]; + }); +}; + +var selectCostForCurrentPageUri = exports.selectCostForCurrentPageUri = (0, _reselect.createSelector)(selectAllCostInfoByUri, _navigation.selectCurrentParams, function (costInfo, params) { + return params.uri && costInfo[params.uri] ? costInfo[params.uri].cost : undefined; +}); + +var selectFetchingCostInfo = exports.selectFetchingCostInfo = (0, _reselect.createSelector)(selectState, function (state) { + return state.fetching || {}; +}); + +var makeSelectFetchingCostInfoForUri = exports.makeSelectFetchingCostInfoForUri = function makeSelectFetchingCostInfoForUri(uri) { + return (0, _reselect.createSelector)(selectFetchingCostInfo, function (fetchingByUri) { + return fetchingByUri && fetchingByUri[uri]; + }); +}; + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +/* hardcoded names still exist for these in reducers/settings.js - only discovered when debugging */ +/* Many SETTINGS are stored in the localStorage by their name - + be careful about changing the value of a SETTINGS constant, as doing so can invalidate existing SETTINGS */ +var CREDIT_REQUIRED_ACKNOWLEDGED = exports.CREDIT_REQUIRED_ACKNOWLEDGED = 'credit_required_acknowledged'; +var NEW_USER_ACKNOWLEDGED = exports.NEW_USER_ACKNOWLEDGED = 'welcome_acknowledged'; +var EMAIL_COLLECTION_ACKNOWLEDGED = exports.EMAIL_COLLECTION_ACKNOWLEDGED = 'email_collection_acknowledged'; +var LANGUAGE = exports.LANGUAGE = 'language'; +var SHOW_NSFW = exports.SHOW_NSFW = 'showNsfw'; +var SHOW_UNAVAILABLE = exports.SHOW_UNAVAILABLE = 'showUnavailable'; +var INSTANT_PURCHASE_ENABLED = exports.INSTANT_PURCHASE_ENABLED = 'instantPurchaseEnabled'; +var INSTANT_PURCHASE_MAX = exports.INSTANT_PURCHASE_MAX = 'instantPurchaseMax'; +var THEME = exports.THEME = 'theme'; +var THEMES = exports.THEMES = 'themes'; +var AUTOMATIC_DARK_MODE_ENABLED = exports.AUTOMATIC_DARK_MODE_ENABLED = 'automaticDarkModeEnabled'; + +// mobile settings +var BACKGROUND_PLAY_ENABLED = exports.BACKGROUND_PLAY_ENABLED = 'backgroundPlayEnabled'; +var FOREGROUND_NOTIFICATION_ENABLED = exports.FOREGROUND_NOTIFICATION_ENABLED = 'foregroundNotificationEnabled'; +var KEEP_DAEMON_RUNNING = exports.KEEP_DAEMON_RUNNING = 'keepDaemonRunning'; + +/***/ }) +/******/ ]); +}); \ No newline at end of file