@@ -13,9 +13,7 @@ app.extend({
1313 }
1414} ) ;
1515
16- var bugsnag = require ( './bugsnag' ) ;
17- bugsnag . listen ( app ) ;
18-
16+ var metrics = require ( 'mongodb-js-metrics' ) ;
1917var _ = require ( 'lodash' ) ;
2018var domReady = require ( 'domready' ) ;
2119var qs = require ( 'qs' ) ;
@@ -27,6 +25,7 @@ var localLinks = require('local-links');
2725var QueryOptions = require ( './models/query-options' ) ;
2826var Connection = require ( './models/connection' ) ;
2927var MongoDBInstance = require ( './models/mongodb-instance' ) ;
28+ var User = require ( './models/user' ) ;
3029var Router = require ( './router' ) ;
3130var Statusbar = require ( './statusbar' ) ;
3231
@@ -116,6 +115,9 @@ var Application = View.extend({
116115 clientStartedAt : 'date' ,
117116 clientStalledTimeout : 'number'
118117 } ,
118+ children : {
119+ user : User
120+ } ,
119121 events : {
120122 'click a' : 'onLinkClick'
121123 } ,
@@ -143,14 +145,26 @@ var Application = View.extend({
143145 pushState : false ,
144146 root : '/'
145147 } ) ;
148+
149+ metrics . listen ( app ) ;
150+
151+ User . getOrCreate ( function ( err , user ) {
152+ if ( err ) {
153+ metrics . error ( err , 'user: get or create' ) ;
154+ return ;
155+ }
156+ this . user . set ( user . serialize ( ) ) ;
157+ this . user . trigger ( 'sync' ) ;
158+ } . bind ( this ) ) ;
159+
146160 app . statusbar . hide ( ) ;
147161 } ,
148162 onFatalError : function ( id , err ) {
149163 debug ( 'clearing client stall timeout...' ) ;
150164 clearTimeout ( this . clientStalledTimeout ) ;
151165
152166 console . error ( 'Fatal Error!: ' , id , err ) ;
153- bugsnag . notifyException ( err , 'Fatal Error: ' + id ) ;
167+ metrics . error ( err , 'Fatal Error: ' + id ) ;
154168 app . statusbar . fatal ( err ) ;
155169 } ,
156170 // ms we'll wait for a `scout-client` instance
@@ -228,20 +242,30 @@ var state = new Application({
228242 connection_id : connection_id
229243} ) ;
230244
231- // @todo (imlucas): Feature flags can be overrideen
232- // via `window.localStorage`.
245+ /**
246+ * @todo (imlucas): Feature flags can be overridden
247+ * via `window.localStorage`.
248+ */
233249var FEATURES = {
234250 querybuilder : true ,
235251 keychain : true ,
236252 'Google Map Minicharts' : true ,
237253 'Connect with SSL' : false ,
238254 'Connect with Kerberos' : false ,
239255 'Connect with LDAP' : false ,
240- 'Connect with X.509' : false
256+ 'Connect with X.509' : false ,
257+ intercom : true ,
258+ bugsnag : true ,
259+ 'google-analytics' : true
241260} ;
242261
243262app . extend ( {
244263 client : null ,
264+ config : {
265+ intercom : {
266+ app_id : 'p57suhg7'
267+ }
268+ } ,
245269 /**
246270 * Check whether a feature flag is currently enabled.
247271 *
@@ -267,6 +291,7 @@ app.extend({
267291 debug ( 'message received from main process:' , msg ) ;
268292 this . trigger ( msg ) ;
269293 } ,
294+ metrics : metrics ,
270295 init : function ( ) {
271296 domReady ( function ( ) {
272297 state . render ( ) ;
@@ -344,6 +369,13 @@ Object.defineProperty(app, 'router', {
344369 }
345370} ) ;
346371
372+ Object . defineProperty ( app , 'user' , {
373+ get : function ( ) {
374+ return state . user ;
375+ }
376+ } ) ;
377+
378+
347379app . init ( ) ;
348380
349381// expose app globally for debugging purposes
0 commit comments