removed firebase and added support for rooms without firebase and fix docker setup

This commit is contained in:
Jannik Streek
2024-01-01 18:05:48 +01:00
parent d19b51d4f8
commit ad571b12b8
21 changed files with 585 additions and 80 deletions

View File

@ -83,6 +83,7 @@ import { atom, useAtom } from "jotai";
import { appJotaiStore } from "../app-jotai";
import { Mutable, ValueOf } from "../../packages/excalidraw/utility-types";
import { getVisibleSceneBounds } from "../../packages/excalidraw/element/bounds";
import { getStorageBackend } from "../data/config";
export const collabAPIAtom = atom<CollabAPI | null>(null);
export const collabDialogShownAtom = atom(false);
@ -140,7 +141,12 @@ class Collab extends PureComponent<Props, CollabState> {
throw new AbortError();
}
return loadFilesFromFirebase(`files/rooms/${roomId}`, roomKey, fileIds);
const storageBackend = await getStorageBackend();
return storageBackend.loadFilesFromStorageBackend(
`files/rooms/${roomId}`,
roomKey,
fileIds,
);
},
saveFiles: async ({ addedFiles }) => {
const { roomId, roomKey } = this.portal;
@ -148,7 +154,8 @@ class Collab extends PureComponent<Props, CollabState> {
throw new AbortError();
}
return saveFilesToFirebase({
const storageBackend = await getStorageBackend();
return storageBackend.saveFilesToStorageBackend({
prefix: `${FIREBASE_STORAGE_PREFIXES.collabFiles}/${roomId}`,
files: await encodeFilesForUpload({
files: addedFiles,
@ -267,11 +274,8 @@ class Collab extends PureComponent<Props, CollabState> {
syncableElements: readonly SyncableExcalidrawElement[],
) => {
try {
const savedData = await saveToFirebase(
this.portal,
syncableElements,
this.excalidrawAPI.getAppState(),
);
const storageBackend = await getStorageBackend();
const savedData = await storageBackend.saveToStorageBackend(this.portal, syncableElements, this.excalidrawAPI.getAppState());
if (this.isCollaborating() && savedData && savedData.reconciledElements) {
this.handleRemoteSceneUpdate(
@ -656,11 +660,12 @@ class Collab extends PureComponent<Props, CollabState> {
this.excalidrawAPI.resetScene();
try {
const elements = await loadFromFirebase(
roomLinkData.roomId,
roomLinkData.roomKey,
this.portal.socket,
);
const storageBackend = await getStorageBackend();
const elements = await storageBackend.loadFromStorageBackend(
roomLinkData.roomId,
roomLinkData.roomKey,
this.portal.socket,
);
if (elements) {
this.setLastBroadcastedOrReceivedSceneVersion(
getSceneVersion(elements),

View File

@ -23,7 +23,7 @@ import type { Socket } from "socket.io-client";
class Portal {
collab: TCollabClass;
socket: Socket | null = null;
socket: SocketIOClient.Socket | null = null;
socketInitialized: boolean = false; // we don't want the socket to emit any updates until it is fully initialized
roomId: string | null = null;
roomKey: string | null = null;
@ -33,7 +33,7 @@ class Portal {
this.collab = collab;
}
open(socket: Socket, id: string, key: string) {
open(socket: SocketIOClient.Socket, id: string, key: string) {
this.socket = socket;
this.roomId = id;
this.roomKey = key;