Continuation of "Add release date field #5514" #6049

Merged
infinite-persistence merged 6 commits from ip/release-date into master 2021-05-15 06:10:28 +02:00
5 changed files with 41 additions and 16 deletions
Showing only changes of commit f1e349b1c0 - Show all commits

View file

@ -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",

View file

@ -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) => ({

View file

@ -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

View file

@ -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>

View file

@ -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"