add loading spinner during creation udpate api call
This commit is contained in:
parent
e37d08fbae
commit
3c4a0f7b6a
|
@ -13,8 +13,21 @@ const isSameDay = (first, second) =>
|
||||||
first.getMonth() === second.getMonth() &&
|
first.getMonth() === second.getMonth() &&
|
||||||
first.getDate() === second.getDate();
|
first.getDate() === second.getDate();
|
||||||
|
|
||||||
const EnteDateTimePicker = ({ isInEditMode, pickedTime, handleChange }) => (
|
interface Props {
|
||||||
|
loading?: boolean;
|
||||||
|
isInEditMode: boolean;
|
||||||
|
pickedTime: Date;
|
||||||
|
handleChange: (date: Date) => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
const EnteDateTimePicker = ({
|
||||||
|
loading,
|
||||||
|
isInEditMode,
|
||||||
|
pickedTime,
|
||||||
|
handleChange,
|
||||||
|
}: Props) => (
|
||||||
<DatePicker
|
<DatePicker
|
||||||
|
disabled={loading}
|
||||||
open={isInEditMode}
|
open={isInEditMode}
|
||||||
selected={pickedTime}
|
selected={pickedTime}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
|
|
|
@ -90,6 +90,7 @@ function RenderCreationTime({
|
||||||
file: File;
|
file: File;
|
||||||
scheduleUpdate: () => void;
|
scheduleUpdate: () => void;
|
||||||
}) {
|
}) {
|
||||||
|
const [loading, setLoading] = useState(false);
|
||||||
const originalCreationTime = new Date(file?.metadata.creationTime / 1000);
|
const originalCreationTime = new Date(file?.metadata.creationTime / 1000);
|
||||||
const [isInEditMode, setIsInEditMode] = useState(false);
|
const [isInEditMode, setIsInEditMode] = useState(false);
|
||||||
|
|
||||||
|
@ -100,6 +101,7 @@ function RenderCreationTime({
|
||||||
|
|
||||||
const saveEdits = async () => {
|
const saveEdits = async () => {
|
||||||
try {
|
try {
|
||||||
|
setLoading(true);
|
||||||
if (isInEditMode && file) {
|
if (isInEditMode && file) {
|
||||||
const unixTimeInMicroSec = pickedTime.getTime() * 1000;
|
const unixTimeInMicroSec = pickedTime.getTime() * 1000;
|
||||||
if (unixTimeInMicroSec === file?.metadata.creationTime) {
|
if (unixTimeInMicroSec === file?.metadata.creationTime) {
|
||||||
|
@ -118,14 +120,16 @@ function RenderCreationTime({
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logError(e, 'failed to update creationTime');
|
logError(e, 'failed to update creationTime');
|
||||||
|
} finally {
|
||||||
|
closeEditMode();
|
||||||
|
setLoading(false);
|
||||||
}
|
}
|
||||||
closeEditMode();
|
|
||||||
};
|
};
|
||||||
const discardEdits = () => {
|
const discardEdits = () => {
|
||||||
setPickedTime(originalCreationTime);
|
setPickedTime(originalCreationTime);
|
||||||
closeEditMode();
|
closeEditMode();
|
||||||
};
|
};
|
||||||
const handleChange = (newDate) => {
|
const handleChange = (newDate: Date) => {
|
||||||
if (newDate instanceof Date) {
|
if (newDate instanceof Date) {
|
||||||
setPickedTime(newDate);
|
setPickedTime(newDate);
|
||||||
}
|
}
|
||||||
|
@ -137,6 +141,7 @@ function RenderCreationTime({
|
||||||
<Value width={isInEditMode ? '50%' : '60%'}>
|
<Value width={isInEditMode ? '50%' : '60%'}>
|
||||||
{isInEditMode ? (
|
{isInEditMode ? (
|
||||||
<EnteDateTimePicker
|
<EnteDateTimePicker
|
||||||
|
loading={loading}
|
||||||
isInEditMode={isInEditMode}
|
isInEditMode={isInEditMode}
|
||||||
pickedTime={pickedTime}
|
pickedTime={pickedTime}
|
||||||
handleChange={handleChange}
|
handleChange={handleChange}
|
||||||
|
@ -155,7 +160,16 @@ function RenderCreationTime({
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<IconButton onClick={saveEdits}>
|
<IconButton onClick={saveEdits}>
|
||||||
<TickIcon />
|
{loading ? (
|
||||||
|
<EnteSpinner
|
||||||
|
style={{
|
||||||
|
width: '20px',
|
||||||
|
height: '20px',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<TickIcon />
|
||||||
|
)}
|
||||||
</IconButton>
|
</IconButton>
|
||||||
<IconButton onClick={discardEdits}>
|
<IconButton onClick={discardEdits}>
|
||||||
<CloseIcon />
|
<CloseIcon />
|
||||||
|
|
Loading…
Reference in a new issue