55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
import {
|
|
isSavedToFirebase,
|
|
loadFilesFromFirebase,
|
|
loadFromFirebase,
|
|
saveFilesToFirebase,
|
|
saveToFirebase,
|
|
} from "./firebase";
|
|
import {
|
|
isSavedToHttpStorage,
|
|
loadFilesFromHttpStorage,
|
|
loadFromHttpStorage,
|
|
saveFilesToHttpStorage,
|
|
saveToHttpStorage,
|
|
} from "./httpStorage";
|
|
import type { StorageBackend } from "./StorageBackend";
|
|
|
|
const firebaseStorage: StorageBackend = {
|
|
isSaved: isSavedToFirebase,
|
|
saveToStorageBackend: saveToFirebase,
|
|
loadFromStorageBackend: loadFromFirebase,
|
|
saveFilesToStorageBackend: saveFilesToFirebase,
|
|
loadFilesFromStorageBackend: loadFilesFromFirebase,
|
|
};
|
|
|
|
const httpStorage: StorageBackend = {
|
|
isSaved: isSavedToHttpStorage,
|
|
saveToStorageBackend: saveToHttpStorage,
|
|
loadFromStorageBackend: loadFromHttpStorage,
|
|
saveFilesToStorageBackend: saveFilesToHttpStorage,
|
|
loadFilesFromStorageBackend: loadFilesFromHttpStorage,
|
|
};
|
|
|
|
const storageBackends = new Map<string, StorageBackend>()
|
|
.set("firebase", firebaseStorage)
|
|
.set("http", httpStorage);
|
|
|
|
export let storageBackend: StorageBackend | null = null;
|
|
|
|
export async function getStorageBackend() {
|
|
if (storageBackend) {
|
|
return storageBackend;
|
|
}
|
|
|
|
const storageBackendName = import.meta.env.VITE_APP_STORAGE_BACKEND || "";
|
|
|
|
if (storageBackends.has(storageBackendName)) {
|
|
storageBackend = storageBackends.get(storageBackendName) as StorageBackend;
|
|
} else {
|
|
console.warn("No storage backend found, default to firebase");
|
|
storageBackend = firebaseStorage;
|
|
}
|
|
|
|
return storageBackend;
|
|
}
|