Skip to content

Instantly share code, notes, and snippets.

@abinavseelan
abinavseelan / queue.js
Last active August 26, 2017 05:04
Medium - DS in Javascript - Queue - Seeing it in action
function Queue() {
this.values = [];
this.count = 0;
}
Queue.prototype.enqueue = (newValue) => {
this.values[this.count] = newValue;
this.count++;
}
@abinavseelan
abinavseelan / ToPrimitive.md
Last active September 2, 2017 07:02
Medium - The Curious Case of Null >= 0 - ToPrimitive Conversion table
Input Type Result
Undefined No Conversion
Null No Conversion
Boolean No Conversion
Number No Conversion
String No Conversion
Object Return a default value for the Object. The default value of an object is retrieved by calling the internal [[DefaultValue]] method of the object, passing the optional hint PreferredType
@abinavseelan
abinavseelan / ToNumber.md
Created September 2, 2017 07:05
Medium - The Curious Case of Null >= 0 - ToNumber Conversion
Input Type Result
Undefined NaN
Null +0
Number No Conversion
Boolean The result is 1 if the argument is true. The result is +0 if the argument is false.
... ...
@abinavseelan
abinavseelan / index.js
Last active December 15, 2017 04:01
Marking a user as online - Firestore
const db = firebase.firestore();
const usersRef = db.collection('users'); // Get a reference to the Users collection;
// Set the specific user's online status to true
usersRef
.doc(userId)
.set({
online: true,
}, { merge: true});
@abinavseelan
abinavseelan / onDisconnectExample.js
Created December 14, 2017 18:48
onDisconnect() Firebase Real Time Database example
const oldRealTimeDb = firebase.database();
oldRealTimeDb
.ref('/some/random/key') // Making a reference to a key-value pair in the old real-time database structure
.onDisconnect() // Setting up the onDisconnect hook
.set('This string will be set for the referenced key once the client disconnects!');
@abinavseelan
abinavseelan / cloudfunction.js
Last active May 18, 2020 00:17
Firebase Cloud Function to handle online/offline status
const functions = require('firebase-functions');
const Firestore = require('@google-cloud/firestore');
const firestore = new Firestore();
exports.onUserStatusChanged = functions.database
.ref('/status/{userId}') // Reference to the Firebase RealTime database key
.onUpdate(event => {
const usersRef = firestore.collection('/users'); // Create a reference to the Firestore Collection
@abinavseelan
abinavseelan / index.js
Created December 14, 2017 19:34
Create key-value pair on Real Time Database
const firestoreDb = firebase.firestore();
const oldRealTimeDb = firebase.database();
const usersRef = firestoreDb.collection('users'); // Get a reference to the Users collection;
const onlineRef = oldRealTimeDb.ref('.info/connected'); // Get a reference to the list of connections
onlineRef.on('value', snapshot => {
// Set the Firestore User's online status to true
usersRef
.doc(userId)
@abinavseelan
abinavseelan / index.js
Created December 14, 2017 19:41
onDisconnect in mark-as-online flow
const firestoreDb = firebase.firestore();
const oldRealTimeDb = firebase.database();
const usersRef = firestoreDb.collection('users'); // Get a reference to the Users collection;
const onlineRef = oldRealTimeDb.ref('.info/connected'); // Get a reference to the list of connections
onlineRef.on('value', snapshot => {
oldRealTimeDb
.ref(`/status/${userId}`)
@abinavseelan
abinavseelan / proxyObject.js
Created December 22, 2017 11:18
Proxy Objects - 1
const handler = {
get: function() {
console.log('A value has been accessed');
}
}
const initialObj = {
id: 1,
name: 'Foo Bar'
}
@abinavseelan
abinavseelan / proxyObject.js
Last active January 3, 2018 12:44
Proxy Objects - 2
const handler = {
get: function(obj, prop) {
console.log('A value has been accessed');
return obj[prop]; // Return the value stored in the key being accessed
}
}
const initialObj = {
id: 1,
name: 'Foo Bar'