Rc fixes (#2085)
* fix: channel button color on dark mode * fix: disabled primary button in dark mode * fix: show pending publishes immediately * update lbry-redux * remove duplicate import * use lbry colors for 'new' badge * fix: don't filter transactions in recent transactions * fix: remove unread subscriptions on un-subscribe * handle edits and new files the same for pending publishes * don't loop over transactions if we don't have to * bump lbry-redux
This commit is contained in:
parent
bbf6696054
commit
121e4b215f
13 changed files with 81 additions and 30 deletions
|
@ -43,6 +43,7 @@
|
||||||
"class-methods-use-this": 0,
|
"class-methods-use-this": 0,
|
||||||
"jsx-a11y/interactive-supports-focus": 0,
|
"jsx-a11y/interactive-supports-focus": 0,
|
||||||
"jsx-a11y/click-events-have-key-events": 0,
|
"jsx-a11y/click-events-have-key-events": 0,
|
||||||
"consistent-return": 0
|
"consistent-return": 0,
|
||||||
|
"flowtype/space-after-type-colon": [ 2, "always", { "allowLineBreak": true } ]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
"formik": "^0.10.4",
|
"formik": "^0.10.4",
|
||||||
"hast-util-sanitize": "^1.1.2",
|
"hast-util-sanitize": "^1.1.2",
|
||||||
"keytar": "^4.2.1",
|
"keytar": "^4.2.1",
|
||||||
"lbry-redux": "lbryio/lbry-redux#f193d38c61ea061679ebc7b4ca139a0e9c95ef8a",
|
"lbry-redux": "lbryio/lbry-redux#dd26422a86a37b5a492dc0702269ad6fc04ecdd7",
|
||||||
"lbryinc": "lbryio/lbryinc#7a458ea13ceceffa0191e73139f94e5c953f22b1",
|
"lbryinc": "lbryio/lbryinc#7a458ea13ceceffa0191e73139f94e5c953f22b1",
|
||||||
"localforage": "^1.7.1",
|
"localforage": "^1.7.1",
|
||||||
"mammoth": "^1.4.6",
|
"mammoth": "^1.4.6",
|
||||||
|
|
|
@ -66,7 +66,10 @@ class TransactionList extends React.PureComponent<Props> {
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { emptyMessage, rewards, transactions, slim, filterSetting } = this.props;
|
const { emptyMessage, rewards, transactions, slim, filterSetting } = this.props;
|
||||||
const transactionList = transactions.filter(this.filterTransaction);
|
|
||||||
|
// The shorter "recent transactions" list shouldn't be filtered
|
||||||
|
const transactionList = slim ? transactions : transactions.filter(this.filterTransaction);
|
||||||
|
|
||||||
// Flow offers little support for Object.values() typing.
|
// Flow offers little support for Object.values() typing.
|
||||||
// https://github.com/facebook/flow/issues/2221
|
// https://github.com/facebook/flow/issues/2221
|
||||||
// $FlowFixMe
|
// $FlowFixMe
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { selectPendingPublishes } from 'redux/selectors/publish';
|
import {
|
||||||
import { selectIsFetchingClaimListMine, selectFileListPublishedSort, selectMyClaimsWithoutChannels } from 'lbry-redux';
|
selectIsFetchingClaimListMine,
|
||||||
|
selectFileListPublishedSort,
|
||||||
|
selectMyClaimsWithoutChannels,
|
||||||
|
} from 'lbry-redux';
|
||||||
import { doNavigate } from 'redux/actions/navigation';
|
import { doNavigate } from 'redux/actions/navigation';
|
||||||
import { doCheckPendingPublishes } from 'redux/actions/publish';
|
import { doCheckPendingPublishes } from 'redux/actions/publish';
|
||||||
import FileListPublished from './view';
|
import FileListPublished from './view';
|
||||||
|
|
|
@ -22,7 +22,6 @@ class FileListPublished extends React.PureComponent<Props> {
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { fetching, claims, navigate, sortBy } = this.props;
|
const { fetching, claims, navigate, sortBy } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Page notContained loading={fetching}>
|
<Page notContained loading={fetching}>
|
||||||
{claims && claims.length ? (
|
{claims && claims.length ? (
|
||||||
|
|
|
@ -16,6 +16,7 @@ import {
|
||||||
batchActions,
|
batchActions,
|
||||||
creditsToString,
|
creditsToString,
|
||||||
selectPendingById,
|
selectPendingById,
|
||||||
|
selectMyClaimsWithoutChannels,
|
||||||
} from 'lbry-redux';
|
} from 'lbry-redux';
|
||||||
import { selectosNotificationsEnabled } from 'redux/selectors/settings';
|
import { selectosNotificationsEnabled } from 'redux/selectors/settings';
|
||||||
import { doNavigate } from 'redux/actions/navigation';
|
import { doNavigate } from 'redux/actions/navigation';
|
||||||
|
@ -199,6 +200,7 @@ export const doPublish = (params: PublishParams) => (
|
||||||
) => {
|
) => {
|
||||||
const state = getState();
|
const state = getState();
|
||||||
const myChannels = selectMyChannelClaims(state);
|
const myChannels = selectMyChannelClaims(state);
|
||||||
|
const myClaims = selectMyClaimsWithoutChannels(state);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
name,
|
name,
|
||||||
|
@ -223,7 +225,7 @@ export const doPublish = (params: PublishParams) => (
|
||||||
const channelId = namedChannelClaim ? namedChannelClaim.claim_id : '';
|
const channelId = namedChannelClaim ? namedChannelClaim.claim_id : '';
|
||||||
const fee = contentIsFree || !price.amount ? undefined : { ...price };
|
const fee = contentIsFree || !price.amount ? undefined : { ...price };
|
||||||
|
|
||||||
const metadata = {
|
const metadata: Metadata = {
|
||||||
title,
|
title,
|
||||||
nsfw,
|
nsfw,
|
||||||
license,
|
license,
|
||||||
|
@ -262,11 +264,32 @@ export const doPublish = (params: PublishParams) => (
|
||||||
|
|
||||||
dispatch({ type: ACTIONS.PUBLISH_START });
|
dispatch({ type: ACTIONS.PUBLISH_START });
|
||||||
|
|
||||||
const success = () => {
|
const success = pendingClaim => {
|
||||||
dispatch({
|
const actions = [];
|
||||||
|
|
||||||
|
actions.push({
|
||||||
type: ACTIONS.PUBLISH_SUCCESS,
|
type: ACTIONS.PUBLISH_SUCCESS,
|
||||||
});
|
});
|
||||||
dispatch(doNotify({ id: MODALS.PUBLISH }, { uri }));
|
|
||||||
|
actions.push(doNotify({ id: MODALS.PUBLISH }, { uri }));
|
||||||
|
|
||||||
|
// We have to fake a temp claim until the new pending one is returned by claim_list_mine
|
||||||
|
// We can't rely on claim_list_mine because there might be some delay before the new claims are returned
|
||||||
|
// Doing this allows us to show the pending claim immediately, it will get overwritten by the real one
|
||||||
|
const isMatch = claim => claim.claim_id === pendingClaim.claim_id;
|
||||||
|
const isEdit = myClaims.some(isMatch);
|
||||||
|
const myNewClaims = isEdit
|
||||||
|
? myClaims.map(claim => (isMatch(claim) ? pendingClaim.output : claim))
|
||||||
|
: myClaims.concat(pendingClaim.output);
|
||||||
|
|
||||||
|
actions.push({
|
||||||
|
type: ACTIONS.FETCH_CLAIM_LIST_MINE_COMPLETED,
|
||||||
|
data: {
|
||||||
|
claims: myNewClaims,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
dispatch(batchActions(...actions));
|
||||||
};
|
};
|
||||||
|
|
||||||
const failure = error => {
|
const failure = error => {
|
||||||
|
@ -281,7 +304,8 @@ export const doPublish = (params: PublishParams) => (
|
||||||
export const doCheckPendingPublishes = () => (dispatch: Dispatch<Action>, getState: GetState) => {
|
export const doCheckPendingPublishes = () => (dispatch: Dispatch<Action>, getState: GetState) => {
|
||||||
const state = getState();
|
const state = getState();
|
||||||
const pendingById = selectPendingById(state);
|
const pendingById = selectPendingById(state);
|
||||||
if (!Object.keys(pendingById)) {
|
|
||||||
|
if (!Object.keys(pendingById).length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -289,8 +313,9 @@ export const doCheckPendingPublishes = () => (dispatch: Dispatch<Action>, getSta
|
||||||
|
|
||||||
const checkFileList = () => {
|
const checkFileList = () => {
|
||||||
Lbry.claim_list_mine().then(claims => {
|
Lbry.claim_list_mine().then(claims => {
|
||||||
|
console.log('check');
|
||||||
claims.forEach(claim => {
|
claims.forEach(claim => {
|
||||||
// If it's confirmed, check that it wasn't pending previously
|
// If it's confirmed, check if it was pending previously
|
||||||
if (claim.confirmations > 0 && pendingById[claim.claim_id]) {
|
if (claim.confirmations > 0 && pendingById[claim.claim_id]) {
|
||||||
delete pendingById[claim.claim_id];
|
delete pendingById[claim.claim_id];
|
||||||
|
|
||||||
|
@ -326,7 +351,6 @@ export const doCheckPendingPublishes = () => (dispatch: Dispatch<Action>, getSta
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
checkFileList();
|
|
||||||
publishCheckInterval = setInterval(() => {
|
publishCheckInterval = setInterval(() => {
|
||||||
checkFileList();
|
checkFileList();
|
||||||
}, 30000);
|
}, 30000);
|
||||||
|
|
|
@ -41,13 +41,18 @@ export default handleActions(
|
||||||
action: DoChannelUnsubscribe
|
action: DoChannelUnsubscribe
|
||||||
): SubscriptionState => {
|
): SubscriptionState => {
|
||||||
const subscriptionToRemove: Subscription = action.data;
|
const subscriptionToRemove: Subscription = action.data;
|
||||||
|
|
||||||
const newSubscriptions = state.subscriptions
|
const newSubscriptions = state.subscriptions
|
||||||
.slice()
|
.slice()
|
||||||
.filter(subscription => subscription.channelName !== subscriptionToRemove.channelName);
|
.filter(subscription => subscription.channelName !== subscriptionToRemove.channelName);
|
||||||
|
|
||||||
|
// Check if we need to remove it from the 'unread' state
|
||||||
|
const { unread } = state.unread;
|
||||||
|
if (unread[subscriptionToRemove.uri]) {
|
||||||
|
delete unread[subscriptionToRemove.uri];
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
|
...unread,
|
||||||
subscriptions: newSubscriptions,
|
subscriptions: newSubscriptions,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
|
@ -5,5 +5,5 @@
|
||||||
'component/snack-bar', 'component/content', 'component/pagination', 'component/markdown-preview',
|
'component/snack-bar', 'component/content', 'component/pagination', 'component/markdown-preview',
|
||||||
'component/markdown-editor', 'component/scrollbar', 'component/spinner', 'component/nav',
|
'component/markdown-editor', 'component/scrollbar', 'component/spinner', 'component/nav',
|
||||||
'component/file-list', 'component/file-render', 'component/search', 'component/toggle',
|
'component/file-list', 'component/file-render', 'component/search', 'component/toggle',
|
||||||
'component/search', 'component/dat-gui', 'component/item-list', 'component/time', 'component/icon',
|
'component/dat-gui', 'component/item-list', 'component/time', 'component/icon',
|
||||||
'component/placeholder', 'component/badge', 'themes/dark';
|
'component/placeholder', 'component/badge', 'themes/dark';
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge--alert {
|
.badge--alert {
|
||||||
background-color: #e45454;
|
background-color: $lbry-red-3;
|
||||||
color: white;
|
color: $lbry-white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge--free {
|
.badge--free {
|
||||||
|
|
|
@ -74,8 +74,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.btn--disabled:disabled {
|
&:disabled {
|
||||||
// wtf?
|
|
||||||
cursor: default;
|
cursor: default;
|
||||||
|
|
||||||
&.btn--primary {
|
&.btn--primary {
|
||||||
|
|
|
@ -82,9 +82,18 @@ html[data-theme='dark'] {
|
||||||
background-color: rgba($lbry-red-1, 0.1);
|
background-color: rgba($lbry-red-1, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn.btn--alt:not(:disabled) {
|
//
|
||||||
background-color: rgba($lbry-white, 0.1);
|
// BUTTON
|
||||||
color: $lbry-gray-1;
|
//
|
||||||
|
.btn {
|
||||||
|
&.btn--alt:not(:disabled) {
|
||||||
|
background-color: rgba($lbry-white, 0.1);
|
||||||
|
color: $lbry-gray-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.btn--primary:disabled {
|
||||||
|
background-color: rgba($lbry-teal-5, 0.15);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.search__top {
|
.search__top {
|
||||||
|
@ -121,10 +130,6 @@ html[data-theme='dark'] {
|
||||||
background-color: rgba($lbry-black, 0.7);
|
background-color: rgba($lbry-black, 0.7);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn {
|
|
||||||
color: $lbry-gray-3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal {
|
.modal {
|
||||||
background-color: rgba($lbry-black, 0.9);
|
background-color: rgba($lbry-black, 0.9);
|
||||||
border: 1px solid rgba($lbry-gray-1, 0.1);
|
border: 1px solid rgba($lbry-gray-1, 0.1);
|
||||||
|
|
|
@ -14,6 +14,18 @@ export type Metadata = {
|
||||||
title: string,
|
title: string,
|
||||||
thumbnail: ?string,
|
thumbnail: ?string,
|
||||||
description: ?string,
|
description: ?string,
|
||||||
|
fee?:
|
||||||
|
| {
|
||||||
|
amount: number, // should be a string https://github.com/lbryio/lbry/issues/1576
|
||||||
|
currency: string,
|
||||||
|
address: string,
|
||||||
|
version: string,
|
||||||
|
}
|
||||||
|
| {
|
||||||
|
// We don't include a version or address in the metadata field when publishing
|
||||||
|
amount: number,
|
||||||
|
currency: string,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Actual claim type has more values than this
|
// Actual claim type has more values than this
|
||||||
|
|
|
@ -5663,16 +5663,16 @@ lazy-val@^1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.3.tgz#bb97b200ef00801d94c317e29dc6ed39e31c5edc"
|
resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.3.tgz#bb97b200ef00801d94c317e29dc6ed39e31c5edc"
|
||||||
|
|
||||||
lbry-redux@lbryio/lbry-redux#2375860d6269d0369418879c2531b1d48c4e47f2:
|
lbry-redux@lbryio/lbry-redux#0e13dd1972e3b40821fee2f9f06e1a0631913aa9:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/2375860d6269d0369418879c2531b1d48c4e47f2"
|
resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/0e13dd1972e3b40821fee2f9f06e1a0631913aa9"
|
||||||
dependencies:
|
dependencies:
|
||||||
proxy-polyfill "0.1.6"
|
proxy-polyfill "0.1.6"
|
||||||
reselect "^3.0.0"
|
reselect "^3.0.0"
|
||||||
|
|
||||||
lbry-redux@lbryio/lbry-redux#f193d38c61ea061679ebc7b4ca139a0e9c95ef8a:
|
lbry-redux@lbryio/lbry-redux#2375860d6269d0369418879c2531b1d48c4e47f2:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/f193d38c61ea061679ebc7b4ca139a0e9c95ef8a"
|
resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/2375860d6269d0369418879c2531b1d48c4e47f2"
|
||||||
dependencies:
|
dependencies:
|
||||||
proxy-polyfill "0.1.6"
|
proxy-polyfill "0.1.6"
|
||||||
reselect "^3.0.0"
|
reselect "^3.0.0"
|
||||||
|
|
Loading…
Reference in a new issue