Parafia Skoczów
  • 👋Witaj w Parafii Skoczów
  • O APLIKACJI
    • ✨Funkcjonalności
    • 📷Galeria
    • 🛠️Zarządzanie treściami
  • DLA PROGRAMISTÓW
    • 🏗️Przegląd narzędzi
    • ⛪Parafia Skoczów
      • Assets
      • Components
        • Atoms
        • Molecules
        • Organisms
        • Templates
      • Helpers
        • getAnimationProps
        • getData
        • getTransmissionUrl
        • searchContent
        • useModal
      • Hooks
        • useDisablePinchZoom
        • usePinching
        • useSwipe
      • Providers
        • ContentProvider
        • FirebaseProvider
        • PlaylistProvider
      • Utils
      • Views
        • Home
        • Categories
        • Titles
        • Text
        • Playlist
        • Search
      • Cordova
      • Rozwiązywanie problemów
    • 🎶Playlist Maker
      • Assets
      • Components
        • Atoms
        • Molecules
        • Organisms
        • Templates
      • Helpers
      • Hooks
        • useDnd
        • useEdit
        • useName
        • useModal
      • Providers
        • ContentProvider
        • FirebaseProvider
        • NotificationProvider
        • PlaylistProvider
      • Utils
      • Cordova
      • Rozwiązywanie problemów
Powered by GitBook
On this page
  1. DLA PROGRAMISTÓW
  2. Playlist Maker
  3. Providers

FirebaseProvider

Pobiera dane do utworzenia playlist z Firebase Real Time Database.

FirebaseProvider.js
import React, { useState } from 'react';
import { initializeApp } from 'firebase/app';
import { getDatabase, ref, set, remove, child, get } from 'firebase/database';

export const FirebaseContext = React.createContext({
  writePlaylist: () => {},
  getPlaylists: () => {},
  removePlaylist: () => {},
});

const firebaseConfig = {
  apiKey: '',
  authDomain: '',
  databaseURL: '',
  projectId: '',
  storageBucket: '',
  messagingSenderId: '',
  appId: '',
  measurementId: '',
};

const FirebaseProvider = ({ children }) => {
  const [app] = useState(initializeApp(firebaseConfig));
  const [db] = useState(getDatabase(app));

  const getPlaylists = async () => {
    return get(child(ref(db), '/'))
      .then((snapshot) => {
        if (snapshot.exists()) {
          let playlists = [];
          let value = snapshot.val();
          for (const key in value) {
            value[key].day = new Date(value[key].day);
            playlists.push(value[key]);
          }
          return playlists.sort((a, b) => {
            return b.day > a.day ? -1 : a.day > b.day ? 1 : 0;
          });
        } else {
          return [];
        }
      })
      .catch((error) => {
        console.error(error);
      });
  };

  const writePlaylist = (playlist) => {
    const reference = ref(db, '/' + playlist.id);
    set(reference, playlist);
  };

  const removePlaylist = (id) => {
    const reference = ref(db, `/${id}`);
    remove(reference);
  };

  return (
    <FirebaseContext.Provider
      value={{
        writePlaylist,
        getPlaylists,
        removePlaylist,
      }}
    >
      {children}
    </FirebaseContext.Provider>
  );
};

export default FirebaseProvider;
PreviousContentProviderNextNotificationProvider

Last updated 1 year ago

🎶