SocketProvider -> WebsocketProvider

This commit is contained in:
Tom Moor
2022-08-25 11:14:00 +02:00
parent debadcb711
commit bb12f1fabb
5 changed files with 16 additions and 46 deletions

View File

@@ -17,7 +17,6 @@ import {
PartialWithId,
WebsocketCollectionUpdateIndexEvent,
WebsocketCollectionUserEvent,
WebsocketDocumentDeletedEvent,
WebsocketEntitiesEvent,
WebsocketEntityDeletedEvent,
} from "~/types";
@@ -28,14 +27,14 @@ type SocketWithAuthentication = Socket & {
authenticated?: boolean;
};
export const SocketContext = React.createContext<SocketWithAuthentication | null>(
export const WebsocketContext = React.createContext<SocketWithAuthentication | null>(
null
);
type Props = RootStore;
@observer
class SocketProvider extends React.Component<Props> {
class WebsocketProvider extends React.Component<Props> {
@observable
socket: SocketWithAuthentication | null;
@@ -242,19 +241,14 @@ class SocketProvider extends React.Component<Props> {
this.socket.on(
"documents.delete",
action((event: WebsocketDocumentDeletedEvent) => {
const document = documents.get(event.modelId);
action((event: PartialWithId<Document>) => {
documents.add(event);
policies.remove(event.id);
if (event.collectionId) {
const collection = collections.get(event.collectionId);
collection?.removeDocument(event.modelId);
collection?.removeDocument(event.id);
}
if (document) {
document.deletedAt = new Date().toISOString();
}
policies.remove(event.modelId);
})
);
@@ -428,11 +422,11 @@ class SocketProvider extends React.Component<Props> {
render() {
return (
<SocketContext.Provider value={this.socket}>
<WebsocketContext.Provider value={this.socket}>
{this.props.children}
</SocketContext.Provider>
</WebsocketContext.Provider>
);
}
}
export default withStores(SocketProvider);
export default withStores(WebsocketProvider);

View File

@@ -11,7 +11,7 @@ import Layout from "~/components/AuthenticatedLayout";
import CenteredContent from "~/components/CenteredContent";
import PlaceholderDocument from "~/components/PlaceholderDocument";
import Route from "~/components/ProfiledRoute";
import SocketProvider from "~/components/SocketProvider";
import WebsocketProvider from "~/components/WebsocketProvider";
import useCurrentTeam from "~/hooks/useCurrentTeam";
import usePolicy from "~/hooks/usePolicy";
import { matchDocumentSlug as slug } from "~/utils/routeHelpers";
@@ -67,7 +67,7 @@ function AuthenticatedRoutes() {
const can = usePolicy(team);
return (
<SocketProvider>
<WebsocketProvider>
<Layout>
<React.Suspense
fallback={
@@ -116,7 +116,7 @@ function AuthenticatedRoutes() {
</Switch>
</React.Suspense>
</Layout>
</SocketProvider>
</WebsocketProvider>
);
}

View File

@@ -1,6 +1,6 @@
import * as React from "react";
import { USER_PRESENCE_INTERVAL } from "@shared/constants";
import { SocketContext } from "~/components/SocketProvider";
import { WebsocketContext } from "~/components/WebsocketProvider";
type Props = {
documentId: string;
@@ -8,9 +8,9 @@ type Props = {
};
export default class SocketPresence extends React.Component<Props> {
static contextType = SocketContext;
static contextType = WebsocketContext;
previousContext: typeof SocketContext;
previousContext: typeof WebsocketContext;
editingInterval: ReturnType<typeof setInterval>;

View File

@@ -188,11 +188,6 @@ export type WebsocketEntityDeletedEvent = {
modelId: string;
};
export type WebsocketDocumentDeletedEvent = WebsocketEntityDeletedEvent & {
modelId: string;
collectionId: string;
};
export type WebsocketEntitiesEvent = {
documentIds: { id: string; updatedAt?: string }[];
collectionIds: { id: string; updatedAt?: string }[];

View File

@@ -55,26 +55,6 @@ export default class WebsocketsProcessor {
});
}
case "documents.delete": {
const document = await Document.findByPk(event.documentId, {
paranoid: false,
});
if (!document) {
return;
}
return socketio
.to(
document.publishedAt
? `collection-${document.collectionId}`
: `user-${document.createdById}`
)
.emit(event.name, {
modelId: event.documentId,
collectionId: event.collectionId,
});
}
case "documents.permanent_delete": {
return socketio
.to(`collection-${event.collectionId}`)
@@ -84,6 +64,7 @@ export default class WebsocketsProcessor {
}
case "documents.archive":
case "documents.delete":
case "documents.update": {
const document = await Document.findByPk(event.documentId, {
paranoid: false,