diff options
author | crupest <crupest@outlook.com> | 2020-06-07 15:15:51 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-06-07 15:15:51 +0800 |
commit | 3977a897c45902a6753a6ff2755c8c4b94fdebe5 (patch) | |
tree | 89626fffe084e0012d3e3c489a5e48260b031ec2 /Timeline/ClientApp/src/timeline/TimelinePostEdit.tsx | |
parent | 962360988d90418d40de50a0b993ed0a2232761d (diff) | |
download | timeline-3977a897c45902a6753a6ff2755c8c4b94fdebe5.tar.gz timeline-3977a897c45902a6753a6ff2755c8c4b94fdebe5.tar.bz2 timeline-3977a897c45902a6753a6ff2755c8c4b94fdebe5.zip |
feat(front): Fix #77 .
Diffstat (limited to 'Timeline/ClientApp/src/timeline/TimelinePostEdit.tsx')
-rw-r--r-- | Timeline/ClientApp/src/timeline/TimelinePostEdit.tsx | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/Timeline/ClientApp/src/timeline/TimelinePostEdit.tsx b/Timeline/ClientApp/src/timeline/TimelinePostEdit.tsx index 2b76b03b..16ce445a 100644 --- a/Timeline/ClientApp/src/timeline/TimelinePostEdit.tsx +++ b/Timeline/ClientApp/src/timeline/TimelinePostEdit.tsx @@ -83,6 +83,7 @@ export interface TimelinePostEditProps { className?: string;
onPost: TimelinePostSendCallback;
onHeightChange?: (height: number) => void;
+ timelineName: string;
}
const TimelinePostEdit: React.FC<TimelinePostEditProps> = (props) => {
@@ -95,6 +96,12 @@ const TimelinePostEdit: React.FC<TimelinePostEditProps> = (props) => { const [text, setText] = React.useState<string>('');
const [imageBlob, setImageBlob] = React.useState<Blob | null>(null);
+ const draftLocalStorageKey = `timeline.${props.timelineName}.postDraft`;
+
+ React.useEffect(() => {
+ setText(window.localStorage.getItem(draftLocalStorageKey) ?? '');
+ }, [draftLocalStorageKey]);
+
const canSend = kind === 'text' || (kind === 'image' && imageBlob != null);
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -149,6 +156,7 @@ const TimelinePostEdit: React.FC<TimelinePostEditProps> = (props) => { (_) => {
if (kind === 'text') {
setText('');
+ window.localStorage.removeItem(draftLocalStorageKey);
}
setState('input');
setKind('text');
@@ -161,7 +169,7 @@ const TimelinePostEdit: React.FC<TimelinePostEditProps> = (props) => { setState('input');
}
);
- }, [onPost, kind, text, imageBlob, t]);
+ }, [onPost, kind, text, imageBlob, t, draftLocalStorageKey]);
const onImageSelect = React.useCallback((blob: Blob | null) => {
setImageBlob(blob);
@@ -177,7 +185,9 @@ const TimelinePostEdit: React.FC<TimelinePostEditProps> = (props) => { value={text}
disabled={state === 'process'}
onChange={(event: React.ChangeEvent<HTMLTextAreaElement>) => {
- setText(event.currentTarget.value);
+ const value = event.currentTarget.value;
+ setText(value);
+ window.localStorage.setItem(draftLocalStorageKey, value);
}}
/>
) : (
|