Skip to content

Commit 2a63840

Browse files
committed
🎉 pull in user model from first-run branch
1 parent d630554 commit 2a63840

File tree

2 files changed

+85
-4
lines changed

2 files changed

+85
-4
lines changed

src/app.js

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ var localLinks = require('local-links');
2727
var QueryOptions = require('./models/query-options');
2828
var Connection = require('./models/connection');
2929
var MongoDBInstance = require('./models/mongodb-instance');
30+
var User = require('./models/user');
3031
var Router = require('./router');
3132
var Statusbar = require('./statusbar');
3233

@@ -114,7 +115,8 @@ var Application = View.extend({
114115
*/
115116
router: 'object',
116117
clientStartedAt: 'date',
117-
clientStalledTimeout: 'number'
118+
clientStalledTimeout: 'number',
119+
user: 'state'
118120
},
119121
events: {
120122
'click a': 'onLinkClick'
@@ -143,6 +145,16 @@ var Application = View.extend({
143145
pushState: false,
144146
root: '/'
145147
});
148+
149+
this.user = new User();
150+
User.getOrCreate(function(err, user) {
151+
if (err) {
152+
metrics.error(err, 'user: get or create');
153+
return;
154+
}
155+
this.user.set(user.serialize());
156+
}.bind(this));
157+
146158
app.statusbar.hide();
147159
},
148160
onFatalError: function(id, err) {
@@ -228,20 +240,29 @@ var state = new Application({
228240
connection_id: connection_id
229241
});
230242

231-
// @todo (imlucas): Feature flags can be overrideen
232-
// via `window.localStorage`.
243+
/**
244+
* @todo (imlucas): Feature flags can be overridden
245+
* via `window.localStorage`.
246+
*/
233247
var FEATURES = {
234248
querybuilder: true,
235249
keychain: true,
236250
'Google Map Minicharts': true,
237251
'Connect with SSL': false,
238252
'Connect with Kerberos': false,
239253
'Connect with LDAP': false,
240-
'Connect with X.509': false
254+
'Connect with X.509': false,
255+
intercom: true,
256+
bugsnag: true
241257
};
242258

243259
app.extend({
244260
client: null,
261+
config: {
262+
intercom: {
263+
app_id: 'p57suhg7'
264+
}
265+
},
245266
/**
246267
* Check whether a feature flag is currently enabled.
247268
*
@@ -344,6 +365,13 @@ Object.defineProperty(app, 'router', {
344365
}
345366
});
346367

368+
Object.defineProperty(app, 'user', {
369+
get: function() {
370+
return state.user;
371+
}
372+
});
373+
374+
347375
app.init();
348376

349377
// expose app globally for debugging purposes

src/models/user.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
var Model = require('ampersand-model');
2+
var MetadataSync = require('./sync/metadata');
3+
var sync = new MetadataSync('com.mongodb.compass.User');
4+
var uuid = require('uuid');
5+
6+
var User = Model.extend({
7+
modelType: 'User',
8+
props: {
9+
id: 'string',
10+
name: 'string',
11+
email: 'string',
12+
created_at: 'date',
13+
avatar_url: 'string',
14+
company_name: 'string'
15+
// github_username: 'string',
16+
/**
17+
* `public_repos + public_gists + followers + following`
18+
*/
19+
// github_score: 'number',
20+
// github_last_activity_at: 'date'
21+
},
22+
sync: sync.exec.bind(sync)
23+
});
24+
25+
User.getOrCreate = function(done) {
26+
var id = localStorage.getItem('user_id');
27+
var user;
28+
29+
if (!id) {
30+
id = uuid.v4();
31+
localStorage.setItem('user_id', id);
32+
user = new User({
33+
id: id,
34+
created_at: new Date()
35+
});
36+
user.save();
37+
done(null, user);
38+
} else {
39+
user = new User({
40+
id: id
41+
});
42+
user.fetch({
43+
success: function() {
44+
done(null, user);
45+
},
46+
error: function(model, err) {
47+
done(err);
48+
}
49+
});
50+
}
51+
};
52+
53+
module.exports = User;

0 commit comments

Comments
 (0)