Rename 'firebase' to 'database'
This commit is contained in:
parent
466c9bc796
commit
36a819491a
@ -70,7 +70,7 @@ import { restore, restoreAppState } from "../packages/excalidraw/data/restore";
|
|||||||
import { updateStaleImageStatuses } from "./data/FileManager";
|
import { updateStaleImageStatuses } from "./data/FileManager";
|
||||||
import { newElementWith } from "../packages/excalidraw/element/mutateElement";
|
import { newElementWith } from "../packages/excalidraw/element/mutateElement";
|
||||||
import { isInitializedImageElement } from "../packages/excalidraw/element/typeChecks";
|
import { isInitializedImageElement } from "../packages/excalidraw/element/typeChecks";
|
||||||
import { loadFilesFromFirebase } from "./data/firebase";
|
import { loadFilesFromDatabase } from "./data/database";
|
||||||
import {
|
import {
|
||||||
LibraryIndexedDBAdapter,
|
LibraryIndexedDBAdapter,
|
||||||
LibraryLocalStorageMigrationAdapter,
|
LibraryLocalStorageMigrationAdapter,
|
||||||
@ -394,7 +394,7 @@ const ExcalidrawWrapper = () => {
|
|||||||
if (collabAPI?.isCollaborating()) {
|
if (collabAPI?.isCollaborating()) {
|
||||||
if (data.scene.elements) {
|
if (data.scene.elements) {
|
||||||
collabAPI
|
collabAPI
|
||||||
.fetchImageFilesFromFirebase({
|
.fetchImageFiles({
|
||||||
elements: data.scene.elements,
|
elements: data.scene.elements,
|
||||||
forceFetchFiles: true,
|
forceFetchFiles: true,
|
||||||
})
|
})
|
||||||
@ -417,7 +417,7 @@ const ExcalidrawWrapper = () => {
|
|||||||
}, [] as FileId[]) || [];
|
}, [] as FileId[]) || [];
|
||||||
|
|
||||||
if (data.isExternalScene) {
|
if (data.isExternalScene) {
|
||||||
loadFilesFromFirebase(
|
loadFilesFromDatabase(
|
||||||
`${FIREBASE_STORAGE_PREFIXES.shareLinkFiles}/${data.id}`,
|
`${FIREBASE_STORAGE_PREFIXES.shareLinkFiles}/${data.id}`,
|
||||||
data.key,
|
data.key,
|
||||||
fileIds,
|
fileIds,
|
||||||
|
|||||||
@ -46,12 +46,12 @@ import {
|
|||||||
getSyncableElements,
|
getSyncableElements,
|
||||||
} from "../data";
|
} from "../data";
|
||||||
import {
|
import {
|
||||||
isSavedToFirebase,
|
isSavedToDatabase,
|
||||||
loadFilesFromFirebase,
|
loadFilesFromDatabase,
|
||||||
loadFromFirebase,
|
loadFromDatabase,
|
||||||
saveFilesToFirebase,
|
saveFilesToDatabase,
|
||||||
saveToFirebase,
|
saveToDatabase,
|
||||||
} from "../data/firebase";
|
} from "../data/database";
|
||||||
import {
|
import {
|
||||||
importUsernameFromLocalStorage,
|
importUsernameFromLocalStorage,
|
||||||
saveUsernameToLocalStorage,
|
saveUsernameToLocalStorage,
|
||||||
@ -111,7 +111,7 @@ export interface CollabAPI {
|
|||||||
startCollaboration: CollabInstance["startCollaboration"];
|
startCollaboration: CollabInstance["startCollaboration"];
|
||||||
stopCollaboration: CollabInstance["stopCollaboration"];
|
stopCollaboration: CollabInstance["stopCollaboration"];
|
||||||
syncElements: CollabInstance["syncElements"];
|
syncElements: CollabInstance["syncElements"];
|
||||||
fetchImageFilesFromFirebase: CollabInstance["fetchImageFilesFromFirebase"];
|
fetchImageFiles: CollabInstance["fetchImageFiles"];
|
||||||
setUsername: CollabInstance["setUsername"];
|
setUsername: CollabInstance["setUsername"];
|
||||||
getUsername: CollabInstance["getUsername"];
|
getUsername: CollabInstance["getUsername"];
|
||||||
getActiveRoomLink: CollabInstance["getActiveRoomLink"];
|
getActiveRoomLink: CollabInstance["getActiveRoomLink"];
|
||||||
@ -149,7 +149,7 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
throw new AbortError();
|
throw new AbortError();
|
||||||
}
|
}
|
||||||
|
|
||||||
return loadFilesFromFirebase(`files/rooms/${roomId}`, roomKey, fileIds);
|
return loadFilesFromDatabase(`files/rooms/${roomId}`, roomKey, fileIds);
|
||||||
},
|
},
|
||||||
saveFiles: async ({ addedFiles }) => {
|
saveFiles: async ({ addedFiles }) => {
|
||||||
const { roomId, roomKey } = this.portal;
|
const { roomId, roomKey } = this.portal;
|
||||||
@ -157,7 +157,7 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
throw new AbortError();
|
throw new AbortError();
|
||||||
}
|
}
|
||||||
|
|
||||||
return saveFilesToFirebase({
|
return saveFilesToDatabase({
|
||||||
prefix: `${FIREBASE_STORAGE_PREFIXES.collabFiles}/${roomId}`,
|
prefix: `${FIREBASE_STORAGE_PREFIXES.collabFiles}/${roomId}`,
|
||||||
files: await encodeFilesForUpload({
|
files: await encodeFilesForUpload({
|
||||||
files: addedFiles,
|
files: addedFiles,
|
||||||
@ -201,7 +201,7 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
onPointerUpdate: this.onPointerUpdate,
|
onPointerUpdate: this.onPointerUpdate,
|
||||||
startCollaboration: this.startCollaboration,
|
startCollaboration: this.startCollaboration,
|
||||||
syncElements: this.syncElements,
|
syncElements: this.syncElements,
|
||||||
fetchImageFilesFromFirebase: this.fetchImageFilesFromFirebase,
|
fetchImageFiles: this.fetchImageFiles,
|
||||||
stopCollaboration: this.stopCollaboration,
|
stopCollaboration: this.stopCollaboration,
|
||||||
setUsername: this.setUsername,
|
setUsername: this.setUsername,
|
||||||
getUsername: this.getUsername,
|
getUsername: this.getUsername,
|
||||||
@ -265,21 +265,21 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
if (
|
if (
|
||||||
this.isCollaborating() &&
|
this.isCollaborating() &&
|
||||||
(this.fileManager.shouldPreventUnload(syncableElements) ||
|
(this.fileManager.shouldPreventUnload(syncableElements) ||
|
||||||
!isSavedToFirebase(this.portal, syncableElements))
|
!isSavedToDatabase(this.portal, syncableElements))
|
||||||
) {
|
) {
|
||||||
// this won't run in time if user decides to leave the site, but
|
// this won't run in time if user decides to leave the site, but
|
||||||
// the purpose is to run in immediately after user decides to stay
|
// the purpose is to run in immediately after user decides to stay
|
||||||
this.saveCollabRoomToFirebase(syncableElements);
|
this.saveCollabRoom(syncableElements);
|
||||||
|
|
||||||
preventUnload(event);
|
preventUnload(event);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
saveCollabRoomToFirebase = async (
|
saveCollabRoom = async (
|
||||||
syncableElements: readonly SyncableExcalidrawElement[],
|
syncableElements: readonly SyncableExcalidrawElement[],
|
||||||
) => {
|
) => {
|
||||||
try {
|
try {
|
||||||
const storedElements = await saveToFirebase(
|
const storedElements = await saveToDatabase(
|
||||||
this.portal,
|
this.portal,
|
||||||
syncableElements,
|
syncableElements,
|
||||||
this.excalidrawAPI.getAppState(),
|
this.excalidrawAPI.getAppState(),
|
||||||
@ -318,11 +318,11 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
|
|
||||||
stopCollaboration = (keepRemoteState = true) => {
|
stopCollaboration = (keepRemoteState = true) => {
|
||||||
this.queueBroadcastAllElements.cancel();
|
this.queueBroadcastAllElements.cancel();
|
||||||
this.queueSaveToFirebase.cancel();
|
this.queueSaveToDatabase.cancel();
|
||||||
this.loadImageFiles.cancel();
|
this.loadImageFiles.cancel();
|
||||||
this.resetErrorIndicator(true);
|
this.resetErrorIndicator(true);
|
||||||
|
|
||||||
this.saveCollabRoomToFirebase(
|
this.saveCollabRoom(
|
||||||
getSyncableElements(
|
getSyncableElements(
|
||||||
this.excalidrawAPI.getSceneElementsIncludingDeleted(),
|
this.excalidrawAPI.getSceneElementsIncludingDeleted(),
|
||||||
),
|
),
|
||||||
@ -379,7 +379,7 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private fetchImageFilesFromFirebase = async (opts: {
|
private fetchImageFiles = async (opts: {
|
||||||
elements: readonly ExcalidrawElement[];
|
elements: readonly ExcalidrawElement[];
|
||||||
/**
|
/**
|
||||||
* Indicates whether to fetch files that are errored or pending and older
|
* Indicates whether to fetch files that are errored or pending and older
|
||||||
@ -513,7 +513,7 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
storeAction: StoreAction.UPDATE,
|
storeAction: StoreAction.UPDATE,
|
||||||
});
|
});
|
||||||
|
|
||||||
this.saveCollabRoomToFirebase(getSyncableElements(elements));
|
this.saveCollabRoom(getSyncableElements(elements));
|
||||||
}
|
}
|
||||||
|
|
||||||
// fallback in case you're not alone in the room but still don't receive
|
// fallback in case you're not alone in the room but still don't receive
|
||||||
@ -547,7 +547,7 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
const reconciledElements =
|
const reconciledElements =
|
||||||
this._reconcileElements(remoteElements);
|
this._reconcileElements(remoteElements);
|
||||||
this.handleRemoteSceneUpdate(reconciledElements);
|
this.handleRemoteSceneUpdate(reconciledElements);
|
||||||
// noop if already resolved via init from firebase
|
// noop if already resolved via init from database
|
||||||
scenePromise.resolve({
|
scenePromise.resolve({
|
||||||
elements: reconciledElements,
|
elements: reconciledElements,
|
||||||
scrollToContent: true,
|
scrollToContent: true,
|
||||||
@ -678,7 +678,7 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
this.excalidrawAPI.resetScene();
|
this.excalidrawAPI.resetScene();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const elements = await loadFromFirebase(
|
const elements = await loadFromDatabase(
|
||||||
roomLinkData.roomId,
|
roomLinkData.roomId,
|
||||||
roomLinkData.roomKey,
|
roomLinkData.roomKey,
|
||||||
this.portal.socket,
|
this.portal.socket,
|
||||||
@ -730,7 +730,7 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
|
|
||||||
private loadImageFiles = throttle(async () => {
|
private loadImageFiles = throttle(async () => {
|
||||||
const { loadedFiles, erroredFiles } =
|
const { loadedFiles, erroredFiles } =
|
||||||
await this.fetchImageFilesFromFirebase({
|
await this.fetchImageFiles({
|
||||||
elements: this.excalidrawAPI.getSceneElementsIncludingDeleted(),
|
elements: this.excalidrawAPI.getSceneElementsIncludingDeleted(),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -896,7 +896,7 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
|
|
||||||
syncElements = (elements: readonly OrderedExcalidrawElement[]) => {
|
syncElements = (elements: readonly OrderedExcalidrawElement[]) => {
|
||||||
this.broadcastElements(elements);
|
this.broadcastElements(elements);
|
||||||
this.queueSaveToFirebase();
|
this.queueSaveToDatabase();
|
||||||
};
|
};
|
||||||
|
|
||||||
queueBroadcastAllElements = throttle(() => {
|
queueBroadcastAllElements = throttle(() => {
|
||||||
@ -913,10 +913,10 @@ class Collab extends PureComponent<CollabProps, CollabState> {
|
|||||||
this.setLastBroadcastedOrReceivedSceneVersion(newVersion);
|
this.setLastBroadcastedOrReceivedSceneVersion(newVersion);
|
||||||
}, SYNC_FULL_SCENE_INTERVAL_MS);
|
}, SYNC_FULL_SCENE_INTERVAL_MS);
|
||||||
|
|
||||||
queueSaveToFirebase = throttle(
|
queueSaveToDatabase = throttle(
|
||||||
() => {
|
() => {
|
||||||
if (this.portal.socketInitialized) {
|
if (this.portal.socketInitialized) {
|
||||||
this.saveCollabRoomToFirebase(
|
this.saveCollabRoom(
|
||||||
getSyncableElements(
|
getSyncableElements(
|
||||||
this.excalidrawAPI.getSceneElementsIncludingDeleted(),
|
this.excalidrawAPI.getSceneElementsIncludingDeleted(),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -96,7 +96,7 @@ const loadFirestore = async () => {
|
|||||||
return firebase;
|
return firebase;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const loadFirebaseStorage = async () => {
|
const loadFirebaseStorage = async () => {
|
||||||
const firebase = await _getFirebase();
|
const firebase = await _getFirebase();
|
||||||
if (!firebaseStoragePromise) {
|
if (!firebaseStoragePromise) {
|
||||||
firebaseStoragePromise = import(
|
firebaseStoragePromise = import(
|
||||||
@ -154,7 +154,7 @@ class FirebaseSceneVersionCache {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export const isSavedToFirebase = (
|
export const isSavedToDatabase = (
|
||||||
portal: Portal,
|
portal: Portal,
|
||||||
elements: readonly ExcalidrawElement[],
|
elements: readonly ExcalidrawElement[],
|
||||||
): boolean => {
|
): boolean => {
|
||||||
@ -168,7 +168,7 @@ export const isSavedToFirebase = (
|
|||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const saveFilesToFirebase = async ({
|
export const saveFilesToDatabase = async ({
|
||||||
prefix,
|
prefix,
|
||||||
files,
|
files,
|
||||||
}: {
|
}: {
|
||||||
@ -220,7 +220,7 @@ const createFirebaseSceneDocument = async (
|
|||||||
} as FirebaseStoredScene;
|
} as FirebaseStoredScene;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const saveToFirebase = async (
|
export const saveToDatabase = async (
|
||||||
portal: Portal,
|
portal: Portal,
|
||||||
elements: readonly SyncableExcalidrawElement[],
|
elements: readonly SyncableExcalidrawElement[],
|
||||||
appState: AppState,
|
appState: AppState,
|
||||||
@ -231,7 +231,7 @@ export const saveToFirebase = async (
|
|||||||
!roomId ||
|
!roomId ||
|
||||||
!roomKey ||
|
!roomKey ||
|
||||||
!socket ||
|
!socket ||
|
||||||
isSavedToFirebase(portal, elements)
|
isSavedToDatabase(portal, elements)
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -289,7 +289,7 @@ export const saveToFirebase = async (
|
|||||||
return storedElements;
|
return storedElements;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const loadFromFirebase = async (
|
export const loadFromDatabase = async (
|
||||||
roomId: string,
|
roomId: string,
|
||||||
roomKey: string,
|
roomKey: string,
|
||||||
socket: Socket | null,
|
socket: Socket | null,
|
||||||
@ -314,7 +314,7 @@ export const loadFromFirebase = async (
|
|||||||
return elements;
|
return elements;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const loadFilesFromFirebase = async (
|
export const loadFilesFromDatabase = async (
|
||||||
prefix: string,
|
prefix: string,
|
||||||
decryptionKey: string,
|
decryptionKey: string,
|
||||||
filesIds: readonly FileId[],
|
filesIds: readonly FileId[],
|
||||||
@ -35,7 +35,7 @@ import {
|
|||||||
ROOM_ID_BYTES,
|
ROOM_ID_BYTES,
|
||||||
} from "../app_constants";
|
} from "../app_constants";
|
||||||
import { encodeFilesForUpload } from "./FileManager";
|
import { encodeFilesForUpload } from "./FileManager";
|
||||||
import { saveFilesToFirebase } from "./firebase";
|
import { saveFilesToDatabase } from "./database";
|
||||||
|
|
||||||
export type SyncableExcalidrawElement = OrderedExcalidrawElement &
|
export type SyncableExcalidrawElement = OrderedExcalidrawElement &
|
||||||
MakeBrand<"SyncableExcalidrawElement">;
|
MakeBrand<"SyncableExcalidrawElement">;
|
||||||
@ -316,7 +316,7 @@ export const exportToBackend = async (
|
|||||||
url.hash = `json=${json.id},${encryptionKey}`;
|
url.hash = `json=${json.id},${encryptionKey}`;
|
||||||
const urlString = url.toString();
|
const urlString = url.toString();
|
||||||
|
|
||||||
await saveFilesToFirebase({
|
await saveFilesToDatabase({
|
||||||
prefix: `/files/shareLinks/${json.id}`,
|
prefix: `/files/shareLinks/${json.id}`,
|
||||||
files: filesToUpload,
|
files: filesToUpload,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -26,25 +26,25 @@ Object.defineProperty(window, "crypto", {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
vi.mock("../../excalidraw-app/data/firebase.ts", () => {
|
vi.mock("../../excalidraw-app/data/database.ts", () => {
|
||||||
const loadFromFirebase = async () => null;
|
const loadFromDatabase = async () => null;
|
||||||
const saveToFirebase = () => {};
|
const saveToDatabase = () => {};
|
||||||
const isSavedToFirebase = () => true;
|
const isSavedToDatabase = () => true;
|
||||||
const loadFilesFromFirebase = async () => ({
|
const loadFilesFromDatabase = async () => ({
|
||||||
loadedFiles: [],
|
loadedFiles: [],
|
||||||
erroredFiles: [],
|
erroredFiles: [],
|
||||||
});
|
});
|
||||||
const saveFilesToFirebase = async () => ({
|
const saveFilesToDatabase = async () => ({
|
||||||
savedFiles: new Map(),
|
savedFiles: new Map(),
|
||||||
erroredFiles: new Map(),
|
erroredFiles: new Map(),
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
loadFromFirebase,
|
loadFromDatabase,
|
||||||
saveToFirebase,
|
saveToDatabase,
|
||||||
isSavedToFirebase,
|
isSavedToDatabase,
|
||||||
loadFilesFromFirebase,
|
loadFilesFromDatabase,
|
||||||
saveFilesToFirebase,
|
saveFilesToDatabase,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user