fix: immediately remove debounced save
This commit is contained in:
@@ -103,6 +103,7 @@ const Ask = () => {
|
||||
);
|
||||
|
||||
const removeDraft = () => {
|
||||
saveDraft.save.cancel();
|
||||
saveDraft.remove();
|
||||
setHasDraft(false);
|
||||
};
|
||||
@@ -149,20 +150,18 @@ const Ask = () => {
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// save draft
|
||||
saveDraft.save({
|
||||
params: {
|
||||
title: title.value,
|
||||
tags: tags.value,
|
||||
content: content.value,
|
||||
answer: answer.value,
|
||||
},
|
||||
callback: () => setHasDraft(true),
|
||||
});
|
||||
|
||||
// write
|
||||
if (title.value || tags.value.length > 0 || content.value || answer.value) {
|
||||
// save draft
|
||||
saveDraft.save({
|
||||
params: {
|
||||
title: title.value,
|
||||
tags: tags.value,
|
||||
content: content.value,
|
||||
answer: answer.value,
|
||||
},
|
||||
callback: () => setHasDraft(true),
|
||||
});
|
||||
setContentChanged(true);
|
||||
} else {
|
||||
removeDraft();
|
||||
|
||||
@@ -45,6 +45,8 @@ const Index: FC<Props> = ({ visible = false, data, callback }) => {
|
||||
});
|
||||
|
||||
const removeDraft = () => {
|
||||
// immediately remove debounced save
|
||||
saveDraft.save.cancel();
|
||||
saveDraft.remove();
|
||||
setHasDraft(false);
|
||||
};
|
||||
@@ -67,13 +69,13 @@ const Index: FC<Props> = ({ visible = false, data, callback }) => {
|
||||
useEffect(() => {
|
||||
const { content } = formData;
|
||||
|
||||
// save Draft
|
||||
saveDraft.save({
|
||||
questionId: data?.qid,
|
||||
content: content.value,
|
||||
});
|
||||
|
||||
if (content.value) {
|
||||
// save Draft
|
||||
saveDraft.save({
|
||||
questionId: data?.qid,
|
||||
content: content.value,
|
||||
});
|
||||
|
||||
setHasDraft(true);
|
||||
} else {
|
||||
removeDraft();
|
||||
|
||||
@@ -45,29 +45,16 @@ class SaveDraft {
|
||||
}
|
||||
if (this.type === 'question') {
|
||||
const { params, callback } = data as QuestionDraft;
|
||||
if (
|
||||
!params.title &&
|
||||
!params.content &&
|
||||
!params.tags.length &&
|
||||
!params.answer
|
||||
) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
|
||||
this.storeDraft(params, callback);
|
||||
}
|
||||
|
||||
if (this.type === 'answer') {
|
||||
const { content, questionId, callback } = data as AnswerDraft;
|
||||
if (!questionId) {
|
||||
if (!questionId || !content) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!content) {
|
||||
this.remove();
|
||||
return;
|
||||
}
|
||||
this.storeDraft({ content, questionId }, callback);
|
||||
}
|
||||
}, 3000);
|
||||
|
||||
Reference in New Issue
Block a user