[+redux] Change how release_time is edited.
- `releaseTime` is now a number instead of a string, matching `release_time`. It was getting confusing what the variable units were. - `releaseTime` will always match `release_time` for an edit. It will be used in the GUI to reset just the date to the original, instead of having to reset the entire form. - `releaseTimeEdited` will be used by `updatePublishForm` in the GUI to represent the desired new release time. Set to `undefined` if we don't want to change the date.
This commit is contained in:
parent
1d0eb9b81a
commit
f1e349b1c0
5 changed files with 41 additions and 16 deletions
|
@ -143,7 +143,7 @@
|
|||
"imagesloaded": "^4.1.4",
|
||||
"json-loader": "^0.5.4",
|
||||
"lbry-format": "https://github.com/lbryio/lbry-format.git",
|
||||
"lbry-redux": "lbryio/lbry-redux#6fc11454eb1b8f9e323c234669880721f12664ee",
|
||||
"lbry-redux": "lbryio/lbry-redux#35dd7650fb235109d4a7ab44d1f6dde63dfdf2f7",
|
||||
"lbryinc": "lbryio/lbryinc#8f9a58bfc8312a65614fd7327661cdcc502c4e59",
|
||||
"lint-staged": "^7.0.2",
|
||||
"localforage": "^1.7.1",
|
||||
|
|
|
@ -3,7 +3,7 @@ import { doUpdatePublishForm, makeSelectPublishFormValue } from 'lbry-redux';
|
|||
import PublishReleaseDate from './view';
|
||||
|
||||
const select = (state) => ({
|
||||
releaseTime: makeSelectPublishFormValue('release_time')(state),
|
||||
releaseTime: makeSelectPublishFormValue('releaseTime')(state),
|
||||
});
|
||||
|
||||
const perform = (dispatch) => ({
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
// @flow
|
||||
import React, { useCallback } from 'react';
|
||||
import React from 'react';
|
||||
import DateTimePicker from 'react-datetime-picker';
|
||||
|
||||
function linuxTimestampToDate(linuxTimestamp: number) {
|
||||
return new Date(linuxTimestamp * 1000);
|
||||
}
|
||||
|
||||
function dateToLinuxTimestamp(date: Date) {
|
||||
return Number(Math.round(date.getTime() / 1000));
|
||||
}
|
||||
|
||||
type Props = {
|
||||
releaseTime: ?number,
|
||||
updatePublishForm: ({}) => void,
|
||||
|
@ -10,14 +18,27 @@ type Props = {
|
|||
const PublishReleaseDate = (props: Props) => {
|
||||
const { releaseTime, updatePublishForm } = props;
|
||||
const maxDate = new Date();
|
||||
const [date, setDate] = React.useState(releaseTime ? linuxTimestampToDate(releaseTime) : new Date());
|
||||
|
||||
const dateOrToday = useCallback((value) => {
|
||||
return value ? new Date(value) : new Date();
|
||||
}, []);
|
||||
|
||||
const onChange = useCallback((value) => {
|
||||
updatePublishForm({ release_time: dateOrToday(value) });
|
||||
}, []);
|
||||
const onChange = (value) => {
|
||||
if (!value) {
|
||||
if (releaseTime) {
|
||||
// Reset to claim's original release time.
|
||||
setDate(linuxTimestampToDate(releaseTime));
|
||||
updatePublishForm({ releaseTimeEdited: undefined });
|
||||
} else {
|
||||
// Reset to "now".
|
||||
const newDate = new Date();
|
||||
setDate(newDate);
|
||||
updatePublishForm({ releaseTimeEdited: dateToLinuxTimestamp(newDate) });
|
||||
}
|
||||
} else {
|
||||
// Set to user-defined.
|
||||
const newDate = value;
|
||||
setDate(newDate);
|
||||
updatePublishForm({ releaseTimeEdited: dateToLinuxTimestamp(newDate) });
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="form-field-date-picker">
|
||||
|
@ -26,7 +47,7 @@ const PublishReleaseDate = (props: Props) => {
|
|||
className="date-picker-input"
|
||||
calendarClassName="form-field-calendar"
|
||||
onChange={onChange}
|
||||
value={dateOrToday(releaseTime)}
|
||||
value={date}
|
||||
maxDate={maxDate}
|
||||
format="y-MM-dd h:mm a"
|
||||
disableClock
|
||||
|
|
|
@ -29,7 +29,7 @@ type Props = {
|
|||
currency: string,
|
||||
},
|
||||
language: string,
|
||||
release_time: ?string,
|
||||
releaseTimeEdited: ?number,
|
||||
licenseType: string,
|
||||
otherLicenseDescription: ?string,
|
||||
licenseUrl: ?string,
|
||||
|
@ -63,7 +63,7 @@ const ModalPublishPreview = (props: Props) => {
|
|||
contentIsFree,
|
||||
fee,
|
||||
language,
|
||||
release_time,
|
||||
releaseTimeEdited,
|
||||
licenseType,
|
||||
otherLicenseDescription,
|
||||
licenseUrl,
|
||||
|
@ -210,6 +210,10 @@ const ModalPublishPreview = (props: Props) => {
|
|||
);
|
||||
};
|
||||
|
||||
const releaseTimeStr = (time) => {
|
||||
return time ? moment(new Date(time * 1000)).format('MMMM Do, YYYY - h:mm a') : '';
|
||||
};
|
||||
|
||||
return (
|
||||
<Modal isOpen contentLabel={modalTitle} type="card" onAborted={closeModal}>
|
||||
<Form onSubmit={onConfirmed}>
|
||||
|
@ -230,7 +234,7 @@ const ModalPublishPreview = (props: Props) => {
|
|||
{createRow(__('Deposit'), depositValue)}
|
||||
{createRow(__('Price'), priceValue)}
|
||||
{createRow(__('Language'), language)}
|
||||
{createRow(__('Release Date'), moment(release_time).format('MMMM Do, YYYY - h:mm a'))}
|
||||
{releaseTimeEdited && createRow(__('Release Date'), releaseTimeStr(releaseTimeEdited))}
|
||||
{createRow(__('License'), licenseValue)}
|
||||
{createRow(__('Tags'), tagsValue)}
|
||||
</tbody>
|
||||
|
|
|
@ -6973,9 +6973,9 @@ lazy-val@^1.0.4:
|
|||
yargs "^13.2.2"
|
||||
zstd-codec "^0.1.1"
|
||||
|
||||
lbry-redux@lbryio/lbry-redux#6fc11454eb1b8f9e323c234669880721f12664ee:
|
||||
lbry-redux@lbryio/lbry-redux#35dd7650fb235109d4a7ab44d1f6dde63dfdf2f7:
|
||||
version "0.0.1"
|
||||
resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/6fc11454eb1b8f9e323c234669880721f12664ee"
|
||||
resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/35dd7650fb235109d4a7ab44d1f6dde63dfdf2f7"
|
||||
dependencies:
|
||||
proxy-polyfill "0.1.6"
|
||||
reselect "^3.0.0"
|
||||
|
|
Loading…
Add table
Reference in a new issue