diff --git a/node_modules/user.js b/node_modules/user.js index 12c2fc94..26e73864 100644 --- a/node_modules/user.js +++ b/node_modules/user.js @@ -153,42 +153,31 @@ User = { }, // 不同host的userId可能一样, 潜在的bug saveCurUser: function(user, callback) { - // 当前用户是否在数据库中 - db.users.count({_id: user.UserId}, function(err, count) { - if(err || count == 0) { - // 添加一个 - user['_id'] = user.UserId; - user['IsActive'] = true; - db.users.insert(user, function(err, doc) { - log(err); - }); - } else { - user.IsActive = true; - delete user['Ok']; - db.users.update({_id: user.UserId}, {$set: user}, function(err, cnt) { - if(err || cnt == 0) { - log(err); - callback && callback(false); - } else { - callback && callback(true); - } - }); - } - }); - // console.log("........."); - // console.log(user); - // 设值其它用户为非active + // 设置其它用户为 not active db.users.update({_id: {$ne: user.UserId}}, {$set: {IsActive: false}}, {multi: true}, function(err, n) { - // console.log(err); - // console.log(n); - }); - }, - - // for test - getAllUsers: function(callback) { - var me = this; - db.users.find({}, function(err, users) { - callback && callback(users); + // 当前用户是否在数据库中 + db.users.count({_id: user.UserId}, function(err, count) { + if(err || count == 0) { + // 添加一个 + user['_id'] = user.UserId; + user['IsActive'] = true; + user['LastLoginTime'] = new Date(); + db.users.insert(user, function(err, doc) { + callback && callback(true); + }); + } else { + user.IsActive = true; + user.LastLoginTime = new Date(); + delete user['Ok']; + db.users.update({_id: user.UserId}, {$set: user}, function(err, cnt) { + if(err || cnt == 0) { + callback && callback(false); + } else { + callback && callback(true); + } + }); + } + }); }); }, @@ -310,8 +299,8 @@ User = { } Api.getLastSyncState(function(state) { if(state) { - console.error('--updateLastSyncState---') - console.log(state); + // console.error('--updateLastSyncState---') + // console.log(state); me.LastSyncUsn = state.LastSyncUsn; me.LastSyncTime = state.LastSyncTime; db.users.update({UserId: me.getCurActiveUserId()}, {$set: state}); @@ -372,6 +361,16 @@ User = { db.users.update({_id: me.getCurActiveUserId()}, {$set: {State: state}}, function() { callback && callback(); }); + }, + + // 获取所有用户, 当前active的在第一个 + getAllUsers: function(callback) { + db.users.find({}).sort({'LastLoginTime': -1}).exec(function(err, users) { + if(err) { + return callback && callback(false); + } + return callback && callback(users); + }); } }; diff --git a/public/js/app/api.js b/public/js/app/api.js index ecad9bff..6604e7d4 100644 --- a/public/js/app/api.js +++ b/public/js/app/api.js @@ -6,6 +6,7 @@ var Api = { loading: Loading, gui: gui, onClose: onClose, + reloadApp: reloadApp, isMac: isMac(), nodeFs: NodeFs, evtService: EvtService, diff --git a/public/js/app/page.js b/public/js/app/page.js index 2eed206e..98eacc39 100644 --- a/public/js/app/page.js +++ b/public/js/app/page.js @@ -1437,7 +1437,11 @@ function initPage(initedCallback) { }); } $('#username').text(UserInfo.Username); - userMenu(); + + UserService.getAllUsers(function(users) { + userMenu(users); + }); + setLayoutWidth(); } else { switchAccount(); @@ -1901,7 +1905,7 @@ function setMacTopMenu() { } // user -function userMenu() { +function userMenu(allUsers) { // ---------- // 全局菜单 var win = gui.getCurrentWindow(); @@ -1914,15 +1918,23 @@ function userMenu() { //------------------- // 右键菜单 + + function getShortHost(host) { + if (!host) { + host = 'https://leanote.com'; + } + var ret = /http(s*):\/\/([a-zA-Z0-9\.\-]+)/.exec(host); + if(ret && ret.length == 3) { + host = ret[2]; + } + return host; + } + function menu() { var me = this; // this.target = ''; - UserInfo.Host = UserInfo.Host || 'http://leanote.com'; - var shortHost = UserInfo.Host; - var ret = /http(s*):\/\/([a-zA-Z0-9\.\-]+)/.exec(shortHost); - if(ret && ret.length == 3) { - shortHost = ret[2]; - } + UserInfo.Host = UserInfo.Host || 'https://leanote.com'; + var shortHost = getShortHost(UserInfo.Host); this.menu = new gui.Menu(); this.email = new gui.MenuItem({ @@ -1932,7 +1944,7 @@ function userMenu() { } }); this.switchAccount = new gui.MenuItem({ - label: getMsg('Switch account'), + label: getMsg('Add account'), click: function(e) { // window.open('login.html'); // win.close(); @@ -1944,6 +1956,42 @@ function userMenu() { } }); + // 所有用户 + var allUsersMenu; + if (allUsers) { + function toggleAccount(user) { + if (!user) { + return; + } + UserService.saveCurUser({UserId: user.UserId}, function () { + reloadApp(); + }); + } + var userMenus = new gui.Menu(); + for (var i = 0; i < allUsers.length; ++i) { + var user = allUsers[i]; + if (user.Username && user.UserId) { + var label = user.Username; + + var otherLabel = user.IsLocal ? getMsg('Local') : getShortHost(user.Host); + label += ' (' + otherLabel + ')'; + + userMenus.append(new gui.MenuItem({ + label: label, + enabled: !user.IsActive, + click: (function(user) { + return function() { + toggleAccount(user); + } + })(user) + })); + } + } + allUsersMenu = new gui.MenuItem({ + label: getMsg('Switch account'), + submenu: userMenus + }); + } this.checkForUpdates = new gui.MenuItem({ label: getMsg('Check for updates'), @@ -1963,6 +2011,7 @@ function userMenu() { this.menu.append(this.blog); } this.menu.append(this.switchAccount); + this.menu.append(allUsersMenu); this.menu.append(new gui.MenuItem({ type: 'separator' })); // themeMenu diff --git a/public/js/common.js b/public/js/common.js index 9fc4936a..d7edf5b9 100644 --- a/public/js/common.js +++ b/public/js/common.js @@ -539,8 +539,16 @@ function isAceError(val) { } // 有tinymce得到的content有包围 -// false表示编辑器未初始化 +// 总会出现