58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
import AsyncStorage from "@react-native-async-storage/async-storage";
|
|
import {
|
|
getReactNativePersistence,
|
|
initializeAuth,
|
|
} from "firebase/auth/react-native";
|
|
import firebase from "firebase/compat/app";
|
|
|
|
import "firebase/compat/auth";
|
|
import "firebase/compat/firestore";
|
|
import "firebase/compat/functions";
|
|
import "firebase/compat/storage";
|
|
|
|
export const firebaseConfig = {
|
|
apiKey: "AIzaSyCuHJHdwVN_F-VmUG4Hd7bGiMRqj6rPlLo",
|
|
authDomain: "musicland-d33f9.firebaseapp.com",
|
|
projectId: "musicland-d33f9",
|
|
storageBucket: "musicland-d33f9.firebasestorage.app",
|
|
messagingSenderId: "305598753437",
|
|
appId: "1:305598753437:web:9930f10af59e5cf7f28274",
|
|
measurementId: "G-RV4MS1SVTT",
|
|
};
|
|
|
|
if (!firebase?.apps?.filter(({ name_ }) => name_ === "[DEFAULT]").length) {
|
|
const defaultApp = firebase.initializeApp(firebaseConfig);
|
|
|
|
initializeAuth(defaultApp, {
|
|
persistence: getReactNativePersistence(AsyncStorage),
|
|
});
|
|
|
|
// if (__DEV__) {
|
|
// firebase.functions().useEmulator("localhost", 5001);
|
|
// }
|
|
console.log("Firebase init");
|
|
}
|
|
|
|
// Firestore settings for React Native/iOS: avoid streaming transport issues
|
|
const firestore = firebase.firestore();
|
|
try {
|
|
// Prefer auto-detect; disable fetch streams for RN iOS stability
|
|
firebase.firestore().settings({
|
|
experimentalAutoDetectLongPolling: true,
|
|
useFetchStreams: false,
|
|
ignoreUndefinedProperties: true,
|
|
});
|
|
} catch (e) {
|
|
// Ignore if settings were already set elsewhere
|
|
}
|
|
|
|
export const usersRef = firestore.collection("users");
|
|
export const projectsRef = firestore.collection("projects");
|
|
export const playlistsRef = firestore.collection("playlists");
|
|
export const chatsRef = firestore.collection("chats");
|
|
|
|
export const { arrayUnion, arrayRemove, increment, serverTimestamp } =
|
|
firebase.firestore.FieldValue;
|
|
|
|
export default firebase;
|