fix: Improved handling of delete events from collection and document sockets (#1517)
* handle delete events fron collection and document sockets * handle collection deletes to documents * rework semantics to always reload after a delete Co-authored-by: Tom Moor <tom.moor@gmail.com>
This commit is contained in:
@@ -36,6 +36,7 @@ import Tab from "components/Tab";
|
||||
import Tabs from "components/Tabs";
|
||||
import Tooltip from "components/Tooltip";
|
||||
import CollectionMenu from "menus/CollectionMenu";
|
||||
import { AuthorizationError } from "utils/errors";
|
||||
import { newDocumentUrl, collectionUrl } from "utils/routeHelpers";
|
||||
|
||||
type Props = {
|
||||
@@ -65,6 +66,15 @@ class CollectionScene extends React.Component<Props> {
|
||||
componentDidUpdate(prevProps) {
|
||||
const { id } = this.props.match.params;
|
||||
|
||||
if (this.collection) {
|
||||
const { collection } = this;
|
||||
const policy = this.props.policies.get(collection.id);
|
||||
|
||||
if (!policy) {
|
||||
this.loadContent(collection.id);
|
||||
}
|
||||
}
|
||||
|
||||
if (id && id !== prevProps.match.params.id) {
|
||||
this.loadContent(id);
|
||||
}
|
||||
@@ -75,18 +85,24 @@ class CollectionScene extends React.Component<Props> {
|
||||
}
|
||||
|
||||
loadContent = async (id: string) => {
|
||||
const collection = await this.props.collections.fetch(id);
|
||||
try {
|
||||
const collection = await this.props.collections.fetch(id);
|
||||
|
||||
if (collection) {
|
||||
this.props.ui.setActiveCollection(collection);
|
||||
this.collection = collection;
|
||||
if (collection) {
|
||||
this.props.ui.setActiveCollection(collection);
|
||||
this.collection = collection;
|
||||
|
||||
await this.props.documents.fetchPinned({
|
||||
collectionId: id,
|
||||
});
|
||||
await this.props.documents.fetchPinned({
|
||||
collectionId: id,
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
if (error instanceof AuthorizationError) {
|
||||
this.collection = null;
|
||||
}
|
||||
} finally {
|
||||
this.isFetching = false;
|
||||
}
|
||||
|
||||
this.isFetching = false;
|
||||
};
|
||||
|
||||
onNewDocument = (ev: SyntheticEvent<>) => {
|
||||
|
||||
Reference in New Issue
Block a user