Browse Source
- Removed Firebase and start using Auth0 Metadata to store users services. - Instead of getting latest version from Firebase, now get it from GitHub.pull/591/head
14 changed files with 207 additions and 418 deletions
@ -1,170 +0,0 @@ |
|||||||
Ext.define('Rambox.ux.Firebase', { |
|
||||||
singleton: true |
|
||||||
|
|
||||||
// private
|
|
||||||
,eventsDefined: false |
|
||||||
|
|
||||||
,createEvents: function() { |
|
||||||
//if ( this.eventsDefined || !localStorage.getItem('id_token') ) return;
|
|
||||||
if ( !localStorage.getItem('id_token') ) return; |
|
||||||
|
|
||||||
console.log('Define listeners for Firebase'); |
|
||||||
|
|
||||||
var ref = fireRef.database().ref('users/' + Ext.decode(localStorage.getItem('profile')).user_id).child('services'); |
|
||||||
|
|
||||||
// Attach an asynchronous callback to read the data at our posts reference
|
|
||||||
ref.on("child_changed", function(snapshot, prevChildKey) { |
|
||||||
// Disable duplicate actions when user edit a service
|
|
||||||
var rec = Ext.getStore('Services').findRecord('firebase_key', snapshot.key); |
|
||||||
var recData = Ext.clone(rec.data); |
|
||||||
delete recData.id; |
|
||||||
delete recData.firebase_key; |
|
||||||
if ( Ext.Object.equals(recData, snapshot.val()) ) return; |
|
||||||
|
|
||||||
console.info('Firebase - Child Changed', snapshot.val(), snapshot.key, prevChildKey); |
|
||||||
|
|
||||||
// Suspend events
|
|
||||||
Ext.getStore('Services').suspendEvent('update'); |
|
||||||
|
|
||||||
// Change the title of the Tab
|
|
||||||
Ext.getCmp('tab_'+rec.get('id')).setTitle(snapshot.val().name); |
|
||||||
// Change sound of the Tab
|
|
||||||
Ext.getCmp('tab_'+rec.get('id')).setAudioMuted(snapshot.val().muted); |
|
||||||
// Change notifications of the Tab
|
|
||||||
Ext.getCmp('tab_'+rec.get('id')).setNotifications(snapshot.val().notifications); |
|
||||||
// Change the icon of the Tab
|
|
||||||
if ( rec.get('type') === 'custom' && rec.get('logo') !== snapshot.val().logo ) Ext.getCmp('tab_'+rec.get('id')).setConfig('icon', snapshot.val().logo === '' ? 'resources/icons/custom.png' : snapshot.val().logo); |
|
||||||
// Change the URL of the Tab
|
|
||||||
if ( rec.get('url') !== snapshot.val().url ) Ext.getCmp('tab_'+rec.get('id')).setURL(snapshot.val().url); |
|
||||||
|
|
||||||
// Change the align of the Tab
|
|
||||||
if ( rec.get('align') !== snapshot.val().align ) { |
|
||||||
if ( rec.get('align') === 'left' ) { |
|
||||||
Ext.cq1('app-main').moveBefore(Ext.getCmp('tab_'+rec.get('id')), Ext.getCmp('tbfill')); |
|
||||||
} else { |
|
||||||
Ext.cq1('app-main').moveAfter(Ext.getCmp('tab_'+rec.get('id')), Ext.getCmp('tbfill')); |
|
||||||
} |
|
||||||
} |
|
||||||
// Apply the JS Code of the Tab
|
|
||||||
if ( rec.get('js_unread') !== snapshot.val().js_unread ) { |
|
||||||
Ext.Msg.confirm('CUSTOM CODE', 'Rambox needs to reload the service to execute the new JavaScript code. Do you want to do it now?', function( btnId ) { |
|
||||||
if ( btnId === 'yes' ) Ext.getCmp('tab_'+rec.get('id')).reloadService(); |
|
||||||
}); |
|
||||||
} |
|
||||||
// Position
|
|
||||||
if ( rec.get('position') !== snapshot.val().position ) { |
|
||||||
var pos = parseInt(snapshot.val().position); |
|
||||||
if ( rec.get('align') === 'right' ) pos++; |
|
||||||
Ext.cq1('app-main').move(Ext.getCmp('tab_'+rec.get('id')), pos); |
|
||||||
} |
|
||||||
|
|
||||||
rec.set(snapshot.val()); |
|
||||||
rec.save(); |
|
||||||
Ext.getCmp('tab_'+rec.get('id')).record = rec; |
|
||||||
Ext.getCmp('tab_'+rec.get('id')).tabConfig.service = rec; |
|
||||||
|
|
||||||
// Enable/Disable
|
|
||||||
if ( recData.enabled !== snapshot.val().enabled ) Ext.getCmp('tab_'+rec.get('id')).setEnabled(snapshot.val().enabled); |
|
||||||
|
|
||||||
Ext.getStore('Services').resumeEvent('update'); |
|
||||||
Ext.getStore('Services').load(); |
|
||||||
}, function (errorObject) { |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
ref.on("child_added", function(snapshot, prevChildKey) { |
|
||||||
console.info('Firebase - Child Added', snapshot.val(), snapshot.key, prevChildKey); |
|
||||||
|
|
||||||
Ext.getStore('Services').suspendEvents(['add', 'update']); |
|
||||||
var rec = Ext.getStore('Services').findRecord('firebase_key', snapshot.key); |
|
||||||
|
|
||||||
// For all version of Rambox (0.3.0)
|
|
||||||
if ( rec === null ) rec = Ext.getStore('Services').getById(snapshot.val().id); |
|
||||||
|
|
||||||
var data = snapshot.val(); |
|
||||||
|
|
||||||
// Update current services
|
|
||||||
if ( rec ) { |
|
||||||
delete data.id; |
|
||||||
data.firebase_key = snapshot.key; |
|
||||||
rec.set(data); |
|
||||||
rec.save(); |
|
||||||
} else { // Add new ones if exist
|
|
||||||
data.firebase_key = snapshot.key; |
|
||||||
rec = Ext.create('Rambox.model.Service', data); |
|
||||||
rec.save(); |
|
||||||
Ext.getStore('Services').add(rec); |
|
||||||
|
|
||||||
var tabData = { |
|
||||||
xtype: 'webview' |
|
||||||
,id: 'tab_'+rec.get('id') |
|
||||||
,title: rec.get('name') |
|
||||||
,icon: rec.get('type') !== 'custom' ? 'resources/icons/'+rec.get('logo') : ( rec.get('logo') === '' ? 'resources/icons/custom.png' : rec.get('logo')) |
|
||||||
,src: rec.get('url') |
|
||||||
,type: rec.get('type') |
|
||||||
,align: rec.get('align') |
|
||||||
,notifications: rec.get('notifications') |
|
||||||
,muted: rec.get('muted') |
|
||||||
,record: rec |
|
||||||
,tabConfig: { |
|
||||||
service: rec |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
if ( rec.get('align') === 'left' ) { |
|
||||||
var tbfill = Ext.cq1('app-main').getTabBar().down('tbfill'); |
|
||||||
Ext.cq1('app-main').insert(Ext.cq1('app-main').getTabBar().items.indexOf(tbfill), tabData); |
|
||||||
} else { |
|
||||||
Ext.cq1('app-main').add(tabData); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
Ext.getStore('Services').resumeEvents(['add', 'update']); |
|
||||||
Ext.getStore('Services').load(); |
|
||||||
//rec.commit();
|
|
||||||
}, function (errorObject) { |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
ref.on("child_removed", function(snapshot) { |
|
||||||
console.info('Firebase - Child Removed', snapshot.val(), snapshot.key); |
|
||||||
|
|
||||||
var rec = Ext.getStore('Services').findRecord('firebase_key', snapshot.key); |
|
||||||
|
|
||||||
// Remove record from localStorage
|
|
||||||
if ( rec ) { |
|
||||||
Ext.getStore('Services').suspendEvent('remove'); |
|
||||||
Ext.getStore('Services').remove(rec); |
|
||||||
Ext.cq1('app-main').suspendEvent('remove'); |
|
||||||
Ext.getCmp('tab_'+rec.get('id')).close(); |
|
||||||
Ext.cq1('app-main').resumeEvent('remove'); |
|
||||||
Ext.getStore('Services').resumeEvent('remove'); |
|
||||||
Ext.getStore('Services').load(); |
|
||||||
} |
|
||||||
}, function (errorObject) { |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
this.eventsDefined = true; |
|
||||||
} |
|
||||||
|
|
||||||
,removeEvents: function() { |
|
||||||
//if ( !this.eventsDefined ) return;
|
|
||||||
|
|
||||||
console.log('Remove listeners for Firebase'); |
|
||||||
|
|
||||||
var ref = fireRef.database().ref('users/' + Ext.decode(localStorage.getItem('profile')).user_id).child('services'); |
|
||||||
|
|
||||||
ref.off('child_changed', function() { |
|
||||||
console.warn('Firebase - Child Changed event removed'); |
|
||||||
}); |
|
||||||
|
|
||||||
ref.off('child_added', function() { |
|
||||||
console.warn('Firebase - Child Added event removed'); |
|
||||||
}); |
|
||||||
|
|
||||||
ref.off('child_removed', function() { |
|
||||||
console.warn('Firebase - Child Removed event removed'); |
|
||||||
}); |
|
||||||
} |
|
||||||
}); |
|
Loading…
Reference in new issue