mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 13:00:39 +03:00
Update local library timestamps on changes
This commit is contained in:
parent
2d63c78866
commit
c5e49bf85a
|
@ -22,6 +22,9 @@ interface ILibraryContext {
|
||||||
createItem: (data: IRSFormCreateData, callback?: DataCallback<ILibraryItem>) => void
|
createItem: (data: IRSFormCreateData, callback?: DataCallback<ILibraryItem>) => void
|
||||||
cloneItem: (target: number, data: IRSFormCreateData, callback: DataCallback<IRSFormData>) => void
|
cloneItem: (target: number, data: IRSFormCreateData, callback: DataCallback<IRSFormData>) => void
|
||||||
destroyItem: (target: number, callback?: () => void) => void
|
destroyItem: (target: number, callback?: () => void) => void
|
||||||
|
|
||||||
|
localUpdateItem: (data: ILibraryItem) => void
|
||||||
|
localUpdateTimestamp: (target: number) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
const LibraryContext = createContext<ILibraryContext | null>(null)
|
const LibraryContext = createContext<ILibraryContext | null>(null)
|
||||||
|
@ -118,6 +121,20 @@ export const LibraryState = ({ children }: LibraryStateProps) => {
|
||||||
reload();
|
reload();
|
||||||
}, [reload, user]);
|
}, [reload, user]);
|
||||||
|
|
||||||
|
const localUpdateItem = useCallback(
|
||||||
|
(data: ILibraryItem) => {
|
||||||
|
const libraryItem = items.find(item => item.id === data.id);
|
||||||
|
if (libraryItem) Object.assign(libraryItem, data);
|
||||||
|
}, [items]);
|
||||||
|
|
||||||
|
const localUpdateTimestamp = useCallback(
|
||||||
|
(target: number) => {
|
||||||
|
const libraryItem = items.find(item => item.id === target);
|
||||||
|
if (libraryItem) {
|
||||||
|
libraryItem.time_update = Date();
|
||||||
|
}
|
||||||
|
}, [items]);
|
||||||
|
|
||||||
const createItem = useCallback(
|
const createItem = useCallback(
|
||||||
(data: IRSFormCreateData, callback?: DataCallback<ILibraryItem>) => {
|
(data: IRSFormCreateData, callback?: DataCallback<ILibraryItem>) => {
|
||||||
setError(undefined);
|
setError(undefined);
|
||||||
|
@ -174,7 +191,8 @@ export const LibraryState = ({ children }: LibraryStateProps) => {
|
||||||
return (
|
return (
|
||||||
<LibraryContext.Provider value={{
|
<LibraryContext.Provider value={{
|
||||||
items, templates, loading, processing, error, setError,
|
items, templates, loading, processing, error, setError,
|
||||||
applyFilter, createItem, cloneItem, destroyItem, retrieveTemplate
|
applyFilter, createItem, cloneItem, destroyItem, retrieveTemplate,
|
||||||
|
localUpdateItem, localUpdateTimestamp
|
||||||
}}>
|
}}>
|
||||||
{ children }
|
{ children }
|
||||||
</LibraryContext.Provider>
|
</LibraryContext.Provider>
|
||||||
|
|
|
@ -118,10 +118,7 @@ export const RSFormState = ({ schemaID, children }: RSFormStateProps) => {
|
||||||
onError: error => setError(error),
|
onError: error => setError(error),
|
||||||
onSuccess: newData => {
|
onSuccess: newData => {
|
||||||
setSchema(Object.assign(schema, newData));
|
setSchema(Object.assign(schema, newData));
|
||||||
const libraryItem = library.items.find(item => item.id === newData.id);
|
library.localUpdateItem(newData);
|
||||||
if (libraryItem) {
|
|
||||||
Object.assign(libraryItem, newData);
|
|
||||||
}
|
|
||||||
if (callback) callback(newData);
|
if (callback) callback(newData);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -140,10 +137,7 @@ export const RSFormState = ({ schemaID, children }: RSFormStateProps) => {
|
||||||
onError: error => setError(error),
|
onError: error => setError(error),
|
||||||
onSuccess: newData => {
|
onSuccess: newData => {
|
||||||
setSchema(newData);
|
setSchema(newData);
|
||||||
const libraryItem = library.items.find(item => item.id === newData.id);
|
library.localUpdateItem(newData);
|
||||||
if (libraryItem) {
|
|
||||||
Object.assign(libraryItem, newData);
|
|
||||||
}
|
|
||||||
if (callback) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -161,12 +155,9 @@ export const RSFormState = ({ schemaID, children }: RSFormStateProps) => {
|
||||||
onError: error => setError(error),
|
onError: error => setError(error),
|
||||||
onSuccess: newData => {
|
onSuccess: newData => {
|
||||||
setSchema(Object.assign(schema, newData));
|
setSchema(Object.assign(schema, newData));
|
||||||
const libraryItem = library.items.find(item => item.id === newData.id);
|
library.localUpdateItem(newData);
|
||||||
if (libraryItem) {
|
if (!user.subscriptions.includes(newData.id)) {
|
||||||
libraryItem.owner = user.id
|
user.subscriptions.push(newData.id);
|
||||||
}
|
|
||||||
if (!user.subscriptions.includes(schema.id)) {
|
|
||||||
user.subscriptions.push(schema.id);
|
|
||||||
}
|
}
|
||||||
if (callback) callback(newData);
|
if (callback) callback(newData);
|
||||||
}
|
}
|
||||||
|
@ -231,10 +222,11 @@ export const RSFormState = ({ schemaID, children }: RSFormStateProps) => {
|
||||||
onError: error => setError(error),
|
onError: error => setError(error),
|
||||||
onSuccess: newData => {
|
onSuccess: newData => {
|
||||||
setSchema(Object.assign(schema, newData));
|
setSchema(Object.assign(schema, newData));
|
||||||
|
library.localUpdateTimestamp(newData.id);
|
||||||
if (callback) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, [schemaID, setError, schema, user, setSchema]);
|
}, [schemaID, setError, schema, library, user, setSchema]);
|
||||||
|
|
||||||
const download = useCallback(
|
const download = useCallback(
|
||||||
(callback: DataCallback<Blob>) => {
|
(callback: DataCallback<Blob>) => {
|
||||||
|
@ -257,10 +249,11 @@ export const RSFormState = ({ schemaID, children }: RSFormStateProps) => {
|
||||||
onError: error => setError(error),
|
onError: error => setError(error),
|
||||||
onSuccess: newData => {
|
onSuccess: newData => {
|
||||||
setSchema(newData.schema);
|
setSchema(newData.schema);
|
||||||
|
library.localUpdateTimestamp(newData.schema.id);
|
||||||
if (callback) callback(newData.new_cst);
|
if (callback) callback(newData.new_cst);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, [schemaID, setError, setSchema]);
|
}, [schemaID, setError, library, setSchema]);
|
||||||
|
|
||||||
const cstDelete = useCallback(
|
const cstDelete = useCallback(
|
||||||
(data: IConstituentaList, callback?: () => void) => {
|
(data: IConstituentaList, callback?: () => void) => {
|
||||||
|
@ -272,10 +265,11 @@ export const RSFormState = ({ schemaID, children }: RSFormStateProps) => {
|
||||||
onError: error => setError(error),
|
onError: error => setError(error),
|
||||||
onSuccess: newData => {
|
onSuccess: newData => {
|
||||||
setSchema(newData);
|
setSchema(newData);
|
||||||
|
library.localUpdateTimestamp(newData.id);
|
||||||
if (callback) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, [schemaID, setError, setSchema]);
|
}, [schemaID, setError, library, setSchema]);
|
||||||
|
|
||||||
const cstUpdate = useCallback(
|
const cstUpdate = useCallback(
|
||||||
(data: ICstUpdateData, callback?: DataCallback<IConstituentaMeta>) => {
|
(data: ICstUpdateData, callback?: DataCallback<IConstituentaMeta>) => {
|
||||||
|
@ -286,10 +280,11 @@ export const RSFormState = ({ schemaID, children }: RSFormStateProps) => {
|
||||||
setLoading: setProcessing,
|
setLoading: setProcessing,
|
||||||
onError: error => setError(error),
|
onError: error => setError(error),
|
||||||
onSuccess: newData => reload(setProcessing, () => {
|
onSuccess: newData => reload(setProcessing, () => {
|
||||||
|
library.localUpdateTimestamp(Number(schemaID));
|
||||||
if (callback) callback(newData);
|
if (callback) callback(newData);
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
}, [setError, reload]);
|
}, [setError, schemaID, library, reload]);
|
||||||
|
|
||||||
const cstRename = useCallback(
|
const cstRename = useCallback(
|
||||||
(data: ICstRenameData, callback?: DataCallback<IConstituentaMeta>) => {
|
(data: ICstRenameData, callback?: DataCallback<IConstituentaMeta>) => {
|
||||||
|
@ -301,10 +296,11 @@ export const RSFormState = ({ schemaID, children }: RSFormStateProps) => {
|
||||||
onError: error => setError(error),
|
onError: error => setError(error),
|
||||||
onSuccess: newData => {
|
onSuccess: newData => {
|
||||||
setSchema(newData.schema);
|
setSchema(newData.schema);
|
||||||
|
library.localUpdateTimestamp(newData.schema.id);
|
||||||
if (callback) callback(newData.new_cst);
|
if (callback) callback(newData.new_cst);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, [setError, setSchema, schemaID]);
|
}, [setError, setSchema, library, schemaID]);
|
||||||
|
|
||||||
const cstMoveTo = useCallback(
|
const cstMoveTo = useCallback(
|
||||||
(data: ICstMovetoData, callback?: () => void) => {
|
(data: ICstMovetoData, callback?: () => void) => {
|
||||||
|
@ -316,10 +312,11 @@ export const RSFormState = ({ schemaID, children }: RSFormStateProps) => {
|
||||||
onError: error => setError(error),
|
onError: error => setError(error),
|
||||||
onSuccess: newData => {
|
onSuccess: newData => {
|
||||||
setSchema(newData);
|
setSchema(newData);
|
||||||
|
library.localUpdateTimestamp(Number(schemaID));
|
||||||
if (callback) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, [schemaID, setError, setSchema]);
|
}, [schemaID, setError, library, setSchema]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<RSFormContext.Provider value={{
|
<RSFormContext.Provider value={{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user