From 3d27b4f2d9d07b231e764f6ca5bfae5c0c84fd49 Mon Sep 17 00:00:00 2001 From: Thomas Zarebczan Date: Thu, 9 May 2019 19:26:03 -0400 Subject: [PATCH 1/8] moar release Fixes claim editing while keeping any existing tags + setting/clearing fee. Fixes not being able to abandon claims if file was deleted Beware of lint errors..some old and new. Everything works and we should clean them up later once tags are properly integrated. --- flow-typed/publish.js | 15 ++++---- package.json | 2 +- src/ui/component/publishForm/view.jsx | 14 ++++--- src/ui/modal/modalRemoveFile/index.js | 8 +++- src/ui/modal/modalRemoveFile/view.jsx | 7 +++- src/ui/redux/actions/file.js | 13 ++----- src/ui/redux/actions/publish.js | 54 ++++++++++++++++++++------- yarn.lock | 30 +++++---------- 8 files changed, 82 insertions(+), 61 deletions(-) diff --git a/flow-typed/publish.js b/flow-typed/publish.js index 1de7a4b43..76266288b 100644 --- a/flow-typed/publish.js +++ b/flow-typed/publish.js @@ -3,8 +3,8 @@ declare type UpdatePublishFormData = { filePath?: string, contentIsFree?: boolean, - price?: { - amount: number, + fee?: { + amount: string, currency: string, }, title?: string, @@ -23,7 +23,7 @@ declare type UpdatePublishFormData = { licenseUrl?: string, licenseType?: string, uri?: string, - replace?: boolean, + nsfw: boolean, }; declare type PublishParams = { @@ -43,12 +43,11 @@ declare type PublishParams = { license: ?string, licenseUrl: ?string, fee?: { + amount: string, currency: string, - amount: number, }, - replace?: boolean, - - // This is bad. - // Will be removed for tags soon + feeCurrency: string, + feeAmount: string, + claim: StreamClaim, nsfw: boolean, }; diff --git a/package.json b/package.json index 00bd237da..4f21abd68 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ "jsmediatags": "^3.8.1", "json-loader": "^0.5.4", "lbry-format": "https://github.com/lbryio/lbry-format.git", - "lbry-redux": "lbryio/lbry-redux#32916b04e4888c06a9bb2b07c57ce6821a4acf1a", + "lbry-redux": "lbryio/lbry-redux#423123f1c19e61cead67c745d0892a2e4481cb6a", "lbryinc": "lbryio/lbryinc#43d382d9b74d396a581a74d87e4c53105e04f845", "lint-staged": "^7.0.2", "localforage": "^1.7.1", diff --git a/src/ui/component/publishForm/view.jsx b/src/ui/component/publishForm/view.jsx index 6c31cad3d..936088d82 100644 --- a/src/ui/component/publishForm/view.jsx +++ b/src/ui/component/publishForm/view.jsx @@ -28,7 +28,7 @@ type Props = { language: string, nsfw: boolean, contentIsFree: boolean, - price: { + fee: { amount: number, currency: string, }, @@ -217,10 +217,12 @@ class PublishForm extends React.PureComponent { otherLicenseDescription, name: this.props.name || undefined, contentIsFree: this.props.contentIsFree, - price: this.props.price, + feeAmount: this.props.fee.amount, + feeCurrency: this.props.fee.currency, uri: this.props.uri || undefined, channel: this.props.channel, isStillEditing: this.props.isStillEditing, + claim: this.props.myClaimForUri, }; publish(publishParams); @@ -292,7 +294,7 @@ class PublishForm extends React.PureComponent { language, nsfw, contentIsFree, - price, + fee, channel, name, updatePublishForm, @@ -440,11 +442,11 @@ class PublishForm extends React.PureComponent { updatePublishForm({ price: newPrice })} + price={fee} + onChange={newFee => updatePublishForm({ fee: newFee })} /> )} - {price.currency !== 'LBC' && ( + {fee.currency !== 'LBC' && (

{__( 'All content fees are charged in LBC. For non-LBC payment methods, the number of credits charged will be adjusted based on the value of LBRY credits at the time of purchase.' diff --git a/src/ui/modal/modalRemoveFile/index.js b/src/ui/modal/modalRemoveFile/index.js index 59d0cdb70..874671d21 100644 --- a/src/ui/modal/modalRemoveFile/index.js +++ b/src/ui/modal/modalRemoveFile/index.js @@ -1,6 +1,11 @@ import { connect } from 'react-redux'; import { doDeleteFileAndMaybeGoBack } from 'redux/actions/file'; -import { makeSelectTitleForUri, makeSelectClaimIsMine, makeSelectFileInfoForUri } from 'lbry-redux'; +import { + makeSelectTitleForUri, + makeSelectClaimIsMine, + makeSelectFileInfoForUri, + makeSelectClaimForUri, +} from 'lbry-redux'; import { doHideModal } from 'redux/actions/app'; import ModalRemoveFile from './view'; @@ -8,6 +13,7 @@ const select = (state, props) => ({ claimIsMine: makeSelectClaimIsMine(props.uri)(state), title: makeSelectTitleForUri(props.uri)(state), fileInfo: makeSelectFileInfoForUri(props.uri)(state), + claim: makeSelectClaimForUri(props.uri)(state), }); const perform = dispatch => ({ diff --git a/src/ui/modal/modalRemoveFile/view.jsx b/src/ui/modal/modalRemoveFile/view.jsx index 112387f96..e480b417d 100644 --- a/src/ui/modal/modalRemoveFile/view.jsx +++ b/src/ui/modal/modalRemoveFile/view.jsx @@ -4,6 +4,7 @@ import { Modal } from 'modal/modal'; import { FormField } from 'component/common/form'; type Props = { + claim: StreamClaim, claimIsMine: boolean, closeModal: () => void, deleteFile: (string, boolean, boolean) => void, @@ -45,10 +46,12 @@ class ModalRemoveFile extends React.PureComponent { } render() { - const { claimIsMine, closeModal, deleteFile, fileInfo, title } = this.props; + const { claim, claimIsMine, closeModal, deleteFile, fileInfo, title } = this.props; const { deleteChecked, abandonClaimChecked } = this.state; - const outpoint = fileInfo ? fileInfo.outpoint : ''; + const { txid, nout } = claim; + + const outpoint = fileInfo ? fileInfo.outpoint : `${txid}:${nout}`; return ( (dispatch: Dis contentIsFree: !fee.amount, author, description, - fee, + fee: { amount: fee.amount, currency: fee.currency }, languages, thumbnail: thumbnail ? thumbnail.url : null, title, uri, uploadThumbnailStatus: thumbnail ? THUMBNAIL_STATUSES.MANUAL : undefined, licenseUrl, - replace: true, }; + if (claim && isClaimNsfw(claim)) { + publishData.nsfw = true; + } else { + publishData.nsfw = false; + } + // Make sure custom liscence's are mapped properly // If the license isn't one of the standard licenses, map the custom license and description/url if (!CC_LICENSES.some(({ value }) => value === license)) { @@ -200,9 +206,11 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat channel, title, contentIsFree, - fee, + feeAmount, + feeCurrency, uri, nsfw, + claim, } = params; // get the claim id from the channel name, we will use that instead @@ -214,36 +222,56 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat channel_id?: string, bid: number, file_path?: string, - fee?: { amount: string, currency: string }, tags: Array, + locations?: Array, + license_url: string, + thumbnail_url: string, + release_time: number, } = { name, bid: creditsToString(bid), title, license, - license_url: licenseUrl, languages: [language], description, - thumbnail_url: thumbnail, - tags: [], + tags: claim.value.tags, + locations: claim.value.locations, }; // Temporary solution to keep the same publish flow with the new tags api // Eventually we will allow users to enter their own tags on publish // `nsfw` will probably be removed + + if (licenseUrl) { + publishPayload.license_url = licenseUrl; + } + + if (thumbnail) { + publishPayload.thumbnail_url = thumbnail; + } + + if (claim.value.release_time) { + publishPayload.release_time = Number(claim.value.release_time); + } + if (nsfw) { - publishPayload.tags.push('mature'); + if (!publishPayload.tags.includes('mature')) { + publishPayload.tags.push('mature'); + } + } else { + const remove = publishPayload.tags.indexOf('mature'); + if (remove > -1) { + publishPayload.tags.splice(remove, 1); + } } if (channelId) { publishPayload.channel_id = channelId; } - if (fee) { - publishPayload.fee = { - currency: fee.currency, - amount: creditsToString(fee.amount), - }; + if (!contentIsFree && (feeCurrency && Number(feeAmount) > 0)) { + publishPayload.fee_currency = feeCurrency; + publishPayload.fee_amount = creditsToString(feeAmount); } // Only pass file on new uploads, not metadata only edits. diff --git a/yarn.lock b/yarn.lock index 62f19613f..1c88b4d11 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6498,9 +6498,9 @@ lazy-val@^1.0.3, lazy-val@^1.0.4: yargs "^13.2.2" zstd-codec "^0.1.1" -lbry-redux@lbryio/lbry-redux#32916b04e4888c06a9bb2b07c57ce6821a4acf1a: +lbry-redux@lbryio/lbry-redux#423123f1c19e61cead67c745d0892a2e4481cb6a: version "0.0.1" - resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/32916b04e4888c06a9bb2b07c57ce6821a4acf1a" + resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/423123f1c19e61cead67c745d0892a2e4481cb6a" dependencies: proxy-polyfill "0.1.6" reselect "^3.0.0" @@ -6696,7 +6696,7 @@ lodash-es@^4.17.11, lodash-es@^4.17.4, lodash-es@^4.2.1: resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.11.tgz#145ab4a7ac5c5e52a3531fb4f310255a152b4be0" integrity sha512-DHb1ub+rMjjrxqlB3H56/6MXtm1lSksDp2rA2cNWjG8mlDUYFhUj3Di2Zn5IwSU87xLv8tNIQ7sSwE/YOX/D/Q== -lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0: +lodash.assign@^4.0.3, lodash.assign@^4.0.6: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= @@ -6706,11 +6706,6 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= -lodash.clonedeep@^4.3.2: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - lodash.findkey@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.findkey/-/lodash.findkey-4.6.0.tgz#83058e903b51cbb759d09ccf546dea3ea39c4718" @@ -6746,11 +6741,6 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.mergewith@^4.6.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" - integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ== - lodash.pickby@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" @@ -7375,7 +7365,7 @@ nan@2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== -nan@^2.10.0, nan@^2.9.2: +nan@^2.13.2, nan@^2.9.2: version "2.13.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== @@ -7556,9 +7546,9 @@ node-releases@^1.1.13: semver "^5.3.0" node-sass@^4.11.0: - version "4.11.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.11.0.tgz#183faec398e9cbe93ba43362e2768ca988a6369a" - integrity sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA== + version "4.12.0" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" + integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -7567,12 +7557,10 @@ node-sass@^4.11.0: get-stdin "^4.0.1" glob "^7.0.3" in-publish "^2.0.0" - lodash.assign "^4.2.0" - lodash.clonedeep "^4.3.2" - lodash.mergewith "^4.6.0" + lodash "^4.17.11" meow "^3.7.0" mkdirp "^0.5.1" - nan "^2.10.0" + nan "^2.13.2" node-gyp "^3.8.0" npmlog "^4.0.0" request "^2.88.0" From 264dda4a85e135df48f5cf3a3dca52d997eaac87 Mon Sep 17 00:00:00 2001 From: Thomas Zarebczan Date: Thu, 9 May 2019 23:30:13 -0400 Subject: [PATCH 2/8] iconzzzzz --- build/icon.ico | Bin 0 -> 370070 bytes src/platforms/electron/createWindow.js | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 build/icon.ico diff --git a/build/icon.ico b/build/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f8a33ff7c9cec5d5d5b3268a5a587574527d4a60 GIT binary patch literal 370070 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


T-wOEr(M638+YE^*X;bB*|`7P^uMpGwe2Py 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 HG4THb(T5N= literal 0 HcmV?d00001 diff --git a/src/platforms/electron/createWindow.js b/src/platforms/electron/createWindow.js index 1d72869e9..79f7ed769 100644 --- a/src/platforms/electron/createWindow.js +++ b/src/platforms/electron/createWindow.js @@ -1,4 +1,3 @@ -import path from 'path'; import { app, BrowserWindow, dialog, shell, screen } from 'electron'; import isDev from 'electron-is-dev'; import windowStateKeeper from 'electron-window-state'; @@ -28,7 +27,7 @@ export default appState => { // If state is undefined, create window as maximized. width: windowState.width === undefined ? width : windowState.width, height: windowState.height === undefined ? height : windowState.height, - icon: 'static/img/tray/default/tray.png', + icon: 'static/img/tray/windows/tray.png', webPreferences: { // Disable renderer process's webSecurity on development to enable CORS. webSecurity: !isDev, From 65d80f779faa34462aa17801aa3b4d3eb25b2d60 Mon Sep 17 00:00:00 2001 From: Thomas Zarebczan Date: Fri, 10 May 2019 00:13:17 -0400 Subject: [PATCH 3/8] fixes fix refresh on edit page fix publish without tags --- src/ui/component/publishForm/view.jsx | 2 +- src/ui/redux/actions/publish.js | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/ui/component/publishForm/view.jsx b/src/ui/component/publishForm/view.jsx index 936088d82..071ae74c1 100644 --- a/src/ui/component/publishForm/view.jsx +++ b/src/ui/component/publishForm/view.jsx @@ -446,7 +446,7 @@ class PublishForm extends React.PureComponent { onChange={newFee => updatePublishForm({ fee: newFee })} /> )} - {fee.currency !== 'LBC' && ( + {fee && fee.currency !== 'LBC' && (

{__( 'All content fees are charged in LBC. For non-LBC payment methods, the number of credits charged will be adjusted based on the value of LBRY credits at the time of purchase.' diff --git a/src/ui/redux/actions/publish.js b/src/ui/redux/actions/publish.js index d82ef4c40..f02b56745 100644 --- a/src/ui/redux/actions/publish.js +++ b/src/ui/redux/actions/publish.js @@ -222,11 +222,11 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat channel_id?: string, bid: number, file_path?: string, - tags: Array, + tags?: Array, locations?: Array, - license_url: string, - thumbnail_url: string, - release_time: number, + license_url?: string, + thumbnail_url?: string, + release_time?: number, } = { name, bid: creditsToString(bid), @@ -234,8 +234,8 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat license, languages: [language], description, - tags: claim.value.tags, - locations: claim.value.locations, + tags: claim && claim.value.tags, + locations: claim && claim.value.locations, }; // Temporary solution to keep the same publish flow with the new tags api @@ -250,8 +250,8 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat publishPayload.thumbnail_url = thumbnail; } - if (claim.value.release_time) { - publishPayload.release_time = Number(claim.value.release_time); + if (claim && claim.value.release_time) { + publishPayload.release_time = claim && Number(claim.value.release_time); } if (nsfw) { @@ -259,7 +259,7 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat publishPayload.tags.push('mature'); } } else { - const remove = publishPayload.tags.indexOf('mature'); + const remove = publishPayload.tags && publishPayload.tags.indexOf('mature'); if (remove > -1) { publishPayload.tags.splice(remove, 1); } From f286e2180560893f402b316f1531888af879e457 Mon Sep 17 00:00:00 2001 From: Thomas Zarebczan Date: Fri, 10 May 2019 00:41:34 -0400 Subject: [PATCH 4/8] fix undefined --- src/ui/redux/actions/publish.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/redux/actions/publish.js b/src/ui/redux/actions/publish.js index f02b56745..902f2b985 100644 --- a/src/ui/redux/actions/publish.js +++ b/src/ui/redux/actions/publish.js @@ -255,7 +255,7 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat } if (nsfw) { - if (!publishPayload.tags.includes('mature')) { + if (publishPayload.tags && !publishPayload.tags.includes('mature')) { publishPayload.tags.push('mature'); } } else { From aff5dd927b903822ebe865cdcb89eb907ee62ea9 Mon Sep 17 00:00:00 2001 From: Thomas Zarebczan Date: Fri, 10 May 2019 01:26:35 -0400 Subject: [PATCH 5/8] fix: edit resolve + balance check This will re-resolve the url (showing bid required) on edit Also fix balance checking on edits. --- build/256x256.png | Bin 0 -> 18944 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 build/256x256.png diff --git a/build/256x256.png b/build/256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..6599574065ccfcc176cdd5e8726ca783f85f7097 GIT binary patch literal 18944 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

U2Ho%8h$Z1A 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 O6N9I#pUXO@geCykjvm1P literal 0 HcmV?d00001 From 319636df8032bfc870dbdbbb2a13bae8d4eb08f9 Mon Sep 17 00:00:00 2001 From: Thomas Zarebczan Date: Fri, 10 May 2019 01:26:35 -0400 Subject: [PATCH 6/8] Revert "fix: edit resolve + balance check" This reverts commit aff5dd927b903822ebe865cdcb89eb907ee62ea9. --- build/256x256.png | Bin 18944 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 build/256x256.png diff --git a/build/256x256.png b/build/256x256.png deleted file mode 100644 index 6599574065ccfcc176cdd5e8726ca783f85f7097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18944 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

U2Ho%8h$Z1A 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 O6N9I#pUXO@geCykjvm1P From 4f9f62f999a6f87a16cd923f37bedf6d3865682f Mon Sep 17 00:00:00 2001 From: Thomas Zarebczan Date: Fri, 10 May 2019 02:27:51 -0400 Subject: [PATCH 7/8] fix: address comments And resolve on edit + balance check --- src/ui/component/publishForm/view.jsx | 10 ++++++---- src/ui/redux/actions/file.js | 3 +-- src/ui/redux/actions/publish.js | 15 +++++++-------- src/ui/redux/reducers/publish.js | 4 ++-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/ui/component/publishForm/view.jsx b/src/ui/component/publishForm/view.jsx index 071ae74c1..3b2e21f39 100644 --- a/src/ui/component/publishForm/view.jsx +++ b/src/ui/component/publishForm/view.jsx @@ -71,10 +71,13 @@ class PublishForm extends React.PureComponent { } componentDidMount() { - const { thumbnail } = this.props; + const { thumbnail, name, channel, editingURI } = this.props; if (!thumbnail) { this.props.resetThumbnailStatus(); } + if (editingURI) { + this.getNewUri(name, channel); + } } getNewUri(name: string, channel: string) { @@ -156,7 +159,7 @@ class PublishForm extends React.PureComponent { let previousBidAmount = 0; if (myClaimForUri) { - previousBidAmount = myClaimForUri.amount; + previousBidAmount = Number(myClaimForUri.amount); } const totalAvailableBidAmount = previousBidAmount + balance; @@ -217,8 +220,7 @@ class PublishForm extends React.PureComponent { otherLicenseDescription, name: this.props.name || undefined, contentIsFree: this.props.contentIsFree, - feeAmount: this.props.fee.amount, - feeCurrency: this.props.fee.currency, + fee: this.props.fee, uri: this.props.uri || undefined, channel: this.props.channel, isStillEditing: this.props.isStillEditing, diff --git a/src/ui/redux/actions/file.js b/src/ui/redux/actions/file.js index 3061be269..8fb94aa06 100644 --- a/src/ui/redux/actions/file.js +++ b/src/ui/redux/actions/file.js @@ -33,8 +33,7 @@ export function doDeleteFile(outpoint, deleteFromComputer, abandonClaim) { // If the file is for a claim we published then also abandon the claim const myClaimsOutpoints = selectMyClaimsOutpoints(state); if (abandonClaim && myClaimsOutpoints.indexOf(outpoint) !== -1) { - const txid = outpoint.slice(0, -2); - const nout = Number(outpoint.slice(-1)); + const [txid, nout] = outpoint.split(':'); dispatch(doAbandonClaim(txid, nout)); } diff --git a/src/ui/redux/actions/publish.js b/src/ui/redux/actions/publish.js index 902f2b985..b943dbc0d 100644 --- a/src/ui/redux/actions/publish.js +++ b/src/ui/redux/actions/publish.js @@ -206,8 +206,7 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat channel, title, contentIsFree, - feeAmount, - feeCurrency, + fee, uri, nsfw, claim, @@ -234,7 +233,7 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat license, languages: [language], description, - tags: claim && claim.value.tags, + tags: (claim && claim.value.tags) || [], locations: claim && claim.value.locations, }; @@ -255,11 +254,11 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat } if (nsfw) { - if (publishPayload.tags && !publishPayload.tags.includes('mature')) { + if (!publishPayload.tags.includes('mature')) { publishPayload.tags.push('mature'); } } else { - const remove = publishPayload.tags && publishPayload.tags.indexOf('mature'); + const remove = publishPayload.tags.indexOf('mature'); if (remove > -1) { publishPayload.tags.splice(remove, 1); } @@ -269,9 +268,9 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat publishPayload.channel_id = channelId; } - if (!contentIsFree && (feeCurrency && Number(feeAmount) > 0)) { - publishPayload.fee_currency = feeCurrency; - publishPayload.fee_amount = creditsToString(feeAmount); + if (!contentIsFree && (fee.currency && Number(fee.amount) > 0)) { + publishPayload.fee_currency = fee.currency; + publishPayload.fee_amount = creditsToString(fee.amount); } // Only pass file on new uploads, not metadata only edits. diff --git a/src/ui/redux/reducers/publish.js b/src/ui/redux/reducers/publish.js index 43b70d66c..b49049361 100644 --- a/src/ui/redux/reducers/publish.js +++ b/src/ui/redux/reducers/publish.js @@ -9,7 +9,7 @@ type PublishState = { editingURI: ?string, filePath: ?string, contentIsFree: boolean, - price: { + fee: { amount: number, currency: string, }, @@ -33,7 +33,7 @@ const defaultState: PublishState = { editingURI: undefined, filePath: undefined, contentIsFree: true, - price: { + fee: { amount: 1, currency: 'LBC', }, From 22302991c8ad692dbd9dc5edfcef76dcdf2ecc92 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Fri, 10 May 2019 10:50:33 -0400 Subject: [PATCH 8/8] fix flow errors --- .eslintrc.json | 1 + flow-typed/publish.js | 4 +--- package.json | 2 +- src/ui/modal/modalRemoveFile/view.jsx | 3 +-- src/ui/redux/actions/publish.js | 21 +++++++++------------ 5 files changed, 13 insertions(+), 18 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 90984b76b..ca6035fa1 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -24,6 +24,7 @@ "rules": { "comma-dangle": ["error", "always-multiline"], "handle-callback-err": 0, + "indent": 0, "jsx-quotes": ["error", "prefer-double"], "new-cap": 0, "no-multi-spaces": 0, diff --git a/flow-typed/publish.js b/flow-typed/publish.js index 76266288b..27f626c6d 100644 --- a/flow-typed/publish.js +++ b/flow-typed/publish.js @@ -4,7 +4,7 @@ declare type UpdatePublishFormData = { filePath?: string, contentIsFree?: boolean, fee?: { - amount: string, + amount: number, currency: string, }, title?: string, @@ -46,8 +46,6 @@ declare type PublishParams = { amount: string, currency: string, }, - feeCurrency: string, - feeAmount: string, claim: StreamClaim, nsfw: boolean, }; diff --git a/package.json b/package.json index 4f21abd68..af107dd5b 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ "jsmediatags": "^3.8.1", "json-loader": "^0.5.4", "lbry-format": "https://github.com/lbryio/lbry-format.git", - "lbry-redux": "lbryio/lbry-redux#423123f1c19e61cead67c745d0892a2e4481cb6a", + "lbry-redux": "lbryio/lbry-redux#c8126ab21792d7a85e1123a2363af285a0263654", "lbryinc": "lbryio/lbryinc#43d382d9b74d396a581a74d87e4c53105e04f845", "lint-staged": "^7.0.2", "localforage": "^1.7.1", diff --git a/src/ui/modal/modalRemoveFile/view.jsx b/src/ui/modal/modalRemoveFile/view.jsx index e480b417d..368683d1a 100644 --- a/src/ui/modal/modalRemoveFile/view.jsx +++ b/src/ui/modal/modalRemoveFile/view.jsx @@ -48,10 +48,9 @@ class ModalRemoveFile extends React.PureComponent { render() { const { claim, claimIsMine, closeModal, deleteFile, fileInfo, title } = this.props; const { deleteChecked, abandonClaimChecked } = this.state; - const { txid, nout } = claim; - const outpoint = fileInfo ? fileInfo.outpoint : `${txid}:${nout}`; + return ( (dispatch: Dis uri, uploadThumbnailStatus: thumbnail ? THUMBNAIL_STATUSES.MANUAL : undefined, licenseUrl, + nsfw: isClaimNsfw(claim), }; - if (claim && isClaimNsfw(claim)) { - publishData.nsfw = true; - } else { - publishData.nsfw = false; - } - // Make sure custom liscence's are mapped properly // If the license isn't one of the standard licenses, map the custom license and description/url if (!CC_LICENSES.some(({ value }) => value === license)) { @@ -221,11 +216,13 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat channel_id?: string, bid: number, file_path?: string, - tags?: Array, + tags: Array, locations?: Array, license_url?: string, thumbnail_url?: string, release_time?: number, + fee_currency?: string, + fee_amount?: string, } = { name, bid: creditsToString(bid), @@ -250,7 +247,7 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat } if (claim && claim.value.release_time) { - publishPayload.release_time = claim && Number(claim.value.release_time); + publishPayload.release_time = Number(claim.value.release_time); } if (nsfw) { @@ -258,9 +255,9 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat publishPayload.tags.push('mature'); } } else { - const remove = publishPayload.tags.indexOf('mature'); - if (remove > -1) { - publishPayload.tags.splice(remove, 1); + const indexToRemove = publishPayload.tags.indexOf('mature'); + if (indexToRemove > -1) { + publishPayload.tags.splice(indexToRemove, 1); } } @@ -268,7 +265,7 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat publishPayload.channel_id = channelId; } - if (!contentIsFree && (fee.currency && Number(fee.amount) > 0)) { + if (!contentIsFree && fee && (fee.currency && Number(fee.amount) > 0)) { publishPayload.fee_currency = fee.currency; publishPayload.fee_amount = creditsToString(fee.amount); }