unmount hack
This commit is contained in:
parent
f899e9b1ca
commit
02d9fb9dc1
|
@ -1,9 +1,9 @@
|
|||
import { useCallback, useEffect, useRef } from 'react';
|
||||
import { useRoute } from '@react-navigation/native';
|
||||
import { useCallback, useEffect, useRef } from 'react';
|
||||
|
||||
import { saveDraftMessage } from '../../../lib/methods/draftMessage';
|
||||
import { useRoomContext } from '../../../views/RoomView/context';
|
||||
import { useFocused } from '../context';
|
||||
import { saveDraftMessage } from '../../../lib/methods/draftMessage';
|
||||
|
||||
export const useAutoSaveDraft = (text = '') => {
|
||||
const route = useRoute();
|
||||
|
@ -12,19 +12,17 @@ export const useAutoSaveDraft = (text = '') => {
|
|||
const oldText = useRef('');
|
||||
const intervalRef = useRef();
|
||||
|
||||
const saveMessageDraft = useCallback(
|
||||
(back?: boolean) => {
|
||||
if (route.name === 'ShareView') return;
|
||||
if (action === 'edit') return;
|
||||
if (back && oldText.current === '') return;
|
||||
const draftMessage = selectedMessages?.length ? JSON.stringify({ quotes: selectedMessages, msg: text }) : text;
|
||||
if (oldText.current !== draftMessage) {
|
||||
oldText.current = draftMessage;
|
||||
saveDraftMessage({ rid, tmid, draftMessage });
|
||||
}
|
||||
},
|
||||
[action, rid, tmid, text, selectedMessages?.length, route.name]
|
||||
);
|
||||
const mounted = useRef(true);
|
||||
|
||||
const saveMessageDraft = useCallback(() => {
|
||||
if (route.name === 'ShareView') return;
|
||||
if (action === 'edit') return;
|
||||
const draftMessage = selectedMessages?.length ? JSON.stringify({ quotes: selectedMessages, msg: text }) : text;
|
||||
if (oldText.current !== draftMessage) {
|
||||
oldText.current = draftMessage;
|
||||
saveDraftMessage({ rid, tmid, draftMessage });
|
||||
}
|
||||
}, [action, rid, tmid, text, selectedMessages?.length, route.name]);
|
||||
|
||||
useEffect(() => {
|
||||
if (focused) {
|
||||
|
@ -35,7 +33,23 @@ export const useAutoSaveDraft = (text = '') => {
|
|||
|
||||
return () => {
|
||||
clearInterval(intervalRef.current);
|
||||
saveMessageDraft(true);
|
||||
};
|
||||
}, [focused, saveMessageDraft]);
|
||||
|
||||
// hack to call saveMessageDraft when component is unmounted
|
||||
useEffect(() => {
|
||||
() => {};
|
||||
return () => {
|
||||
mounted.current = false;
|
||||
};
|
||||
}, []);
|
||||
|
||||
useEffect(
|
||||
() => () => {
|
||||
if (!mounted.current) {
|
||||
saveMessageDraft();
|
||||
}
|
||||
},
|
||||
[saveMessageDraft]
|
||||
);
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue