Skip to content

Instantly share code, notes, and snippets.

@riddles8888
Created August 5, 2016 03:27
Show Gist options
  • Save riddles8888/e5348c80fcb267add8d7113bb508a818 to your computer and use it in GitHub Desktop.
Save riddles8888/e5348c80fcb267add8d7113bb508a818 to your computer and use it in GitHub Desktop.
store/index.js using firebase 3.x library
import { EventEmitter } from 'events'
import Firebase from 'firebase'
// ENTER YOUR FIREBASE URL BELOW
const db = Firebase.initializeApp({
apiKey: 'YOUR_FIREBASE_APP_SECRET',
databaseURL: 'https://YOUR_FIREBASE_APP.firebaseio.com/',
});
const categoriesRef = db.database().ref().child('categories')
const bookmarksRef = db.database().ref().child('bookmarks')
const store = new EventEmitter()
let categories = {}
let bookmarks = {}
db.database().ref().on('value', (snapshot) => {
var bookmarkData = snapshot.val()
if (bookmarkData) {
categories = bookmarkData.categories
bookmarks = bookmarkData.bookmarks
store.emit('data-updated', categories, bookmarks)
}
})
store.addCategory = (category) => {
categoriesRef.update(category)
}
store.deleteCategory = (catName) => {
// first check if an 'Uncategorized' category exists, if not, create it
if (!('Uncategorized' in categories)) {
categoriesRef.update({'Uncategorized': 'white'})
}
for (var key in bookmarks) {
if (bookmarks[key].category === catName) {
bookmarksRef.child(key).update({category: 'Uncategorized'})
}
}
categoriesRef.child(catName).remove()
}
store.addBookmark = (bookmark) => {
bookmarksRef.push(bookmark)
}
store.deleteBookmark = (bookmarkId) => {
bookmarksRef.child(bookmarkId).remove()
}
export default store
@riddles8888
Copy link
Author

riddles8888 commented Aug 5, 2016

Diff of the changes

diff --git a/app/store/index.js b/app/store/index.js
index dbb1992..a847157 100644
--- a/app/store/index.js
+++ b/app/store/index.js
@@ -2,15 +2,18 @@ import { EventEmitter } from 'events'
 import Firebase from 'firebase'

 // ENTER YOUR FIREBASE URL BELOW
-const db = new Firebase("https://YOUR_FIREBASE_APP.firebaseio.com/")
-const categoriesRef = db.child('categories')
-const bookmarksRef = db.child('bookmarks')
+const db = Firebase.initializeApp({
+  apiKey:        'YOUR_FIREBASE_APP_SECRET',
+  databaseURL:   'https://YOUR_FIREBASE_APP.firebaseio.com/',
+});
+const categoriesRef = db.database().ref().child('categories')
+const bookmarksRef = db.database().ref().child('bookmarks')
 const store = new EventEmitter()

 let categories = {}
 let bookmarks = {}

-db.on('value', (snapshot) => {
+db.database().ref().on('value', (snapshot) => {
   var bookmarkData = snapshot.val()
   if (bookmarkData) {
     categories = bookmarkData.categories

@wweld
Copy link

wweld commented Aug 10, 2016

Thanks very much for this! Please also note that you'll need to take the following steps in order for this to run successfully:

  1. Clone repository
  2. Update the Firebase version to 3.2.1 in your package.json
  3. Update the /store/index.js file as specified in above file
  4. Save
  5. npm install
  6. webpack
  7. npm start

At least that's how I got all of it working :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment