帐户方便切换

https://github.com/leanote/desktop-app/issues/66
This commit is contained in:
life
2015-10-19 11:06:55 +08:00
parent 4fd8ca71b2
commit 6ede336b6b
7 changed files with 121 additions and 58 deletions

35
node_modules/user.js generated vendored
View File

@@ -153,21 +153,24 @@ User = {
}, },
// 不同host的userId可能一样, 潜在的bug // 不同host的userId可能一样, 潜在的bug
saveCurUser: function(user, callback) { saveCurUser: function(user, callback) {
// 设置其它用户为 not active
db.users.update({_id: {$ne: user.UserId}}, {$set: {IsActive: false}}, {multi: true}, function(err, n) {
// 当前用户是否在数据库中 // 当前用户是否在数据库中
db.users.count({_id: user.UserId}, function(err, count) { db.users.count({_id: user.UserId}, function(err, count) {
if(err || count == 0) { if(err || count == 0) {
// 添加一个 // 添加一个
user['_id'] = user.UserId; user['_id'] = user.UserId;
user['IsActive'] = true; user['IsActive'] = true;
user['LastLoginTime'] = new Date();
db.users.insert(user, function(err, doc) { db.users.insert(user, function(err, doc) {
log(err); callback && callback(true);
}); });
} else { } else {
user.IsActive = true; user.IsActive = true;
user.LastLoginTime = new Date();
delete user['Ok']; delete user['Ok'];
db.users.update({_id: user.UserId}, {$set: user}, function(err, cnt) { db.users.update({_id: user.UserId}, {$set: user}, function(err, cnt) {
if(err || cnt == 0) { if(err || cnt == 0) {
log(err);
callback && callback(false); callback && callback(false);
} else { } else {
callback && callback(true); callback && callback(true);
@@ -175,20 +178,6 @@ User = {
}); });
} }
}); });
// console.log(".........");
// console.log(user);
// 设值其它用户为非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);
}); });
}, },
@@ -310,8 +299,8 @@ User = {
} }
Api.getLastSyncState(function(state) { Api.getLastSyncState(function(state) {
if(state) { if(state) {
console.error('--updateLastSyncState---') // console.error('--updateLastSyncState---')
console.log(state); // console.log(state);
me.LastSyncUsn = state.LastSyncUsn; me.LastSyncUsn = state.LastSyncUsn;
me.LastSyncTime = state.LastSyncTime; me.LastSyncTime = state.LastSyncTime;
db.users.update({UserId: me.getCurActiveUserId()}, {$set: state}); db.users.update({UserId: me.getCurActiveUserId()}, {$set: state});
@@ -372,6 +361,16 @@ User = {
db.users.update({_id: me.getCurActiveUserId()}, {$set: {State: state}}, function() { db.users.update({_id: me.getCurActiveUserId()}, {$set: {State: state}}, function() {
callback && callback(); 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);
});
} }
}; };

View File

@@ -6,6 +6,7 @@ var Api = {
loading: Loading, loading: Loading,
gui: gui, gui: gui,
onClose: onClose, onClose: onClose,
reloadApp: reloadApp,
isMac: isMac(), isMac: isMac(),
nodeFs: NodeFs, nodeFs: NodeFs,
evtService: EvtService, evtService: EvtService,

View File

@@ -1437,7 +1437,11 @@ function initPage(initedCallback) {
}); });
} }
$('#username').text(UserInfo.Username); $('#username').text(UserInfo.Username);
userMenu();
UserService.getAllUsers(function(users) {
userMenu(users);
});
setLayoutWidth(); setLayoutWidth();
} else { } else {
switchAccount(); switchAccount();
@@ -1901,7 +1905,7 @@ function setMacTopMenu() {
} }
// user // user
function userMenu() { function userMenu(allUsers) {
// ---------- // ----------
// 全局菜单 // 全局菜单
var win = gui.getCurrentWindow(); 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() { function menu() {
var me = this; var me = this;
// this.target = ''; // this.target = '';
UserInfo.Host = UserInfo.Host || 'http://leanote.com'; UserInfo.Host = UserInfo.Host || 'https://leanote.com';
var shortHost = UserInfo.Host; var shortHost = getShortHost(UserInfo.Host);
var ret = /http(s*):\/\/([a-zA-Z0-9\.\-]+)/.exec(shortHost);
if(ret && ret.length == 3) {
shortHost = ret[2];
}
this.menu = new gui.Menu(); this.menu = new gui.Menu();
this.email = new gui.MenuItem({ this.email = new gui.MenuItem({
@@ -1932,7 +1944,7 @@ function userMenu() {
} }
}); });
this.switchAccount = new gui.MenuItem({ this.switchAccount = new gui.MenuItem({
label: getMsg('Switch account'), label: getMsg('Add account'),
click: function(e) { click: function(e) {
// window.open('login.html'); // window.open('login.html');
// win.close(); // 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({ this.checkForUpdates = new gui.MenuItem({
label: getMsg('Check for updates'), label: getMsg('Check for updates'),
@@ -1963,6 +2011,7 @@ function userMenu() {
this.menu.append(this.blog); this.menu.append(this.blog);
} }
this.menu.append(this.switchAccount); this.menu.append(this.switchAccount);
this.menu.append(allUsersMenu);
this.menu.append(new gui.MenuItem({ type: 'separator' })); this.menu.append(new gui.MenuItem({ type: 'separator' }));
// themeMenu // themeMenu

View File

@@ -539,8 +539,16 @@ function isAceError(val) {
} }
// 有tinymce得到的content有<html>包围 // 有tinymce得到的content有<html>包围
// false表示编辑器未初始化 // 总会出现<p>&nbsp;<br></p>, 原因, setContent('<p><br data-mce-bogus="1" /></p>') 会设置成 <p> <br></p>
// 所以, 要在getContent时, 当是<p><br data-mce-bogus="1"></p>, 返回 <p><br/></p>
function getEditorContent(isMarkdown) { function getEditorContent(isMarkdown) {
var content = _getEditorContent(isMarkdown);
if (content === '<p><br data-mce-bogus="1"></p>') {
return '<p><br></p>';
}
return content;
}
function _getEditorContent(isMarkdown) {
if(!isMarkdown) { if(!isMarkdown) {
var editor = tinymce.activeEditor; var editor = tinymce.activeEditor;
if(editor) { if(editor) {
@@ -569,9 +577,9 @@ function getEditorContent(isMarkdown) {
// 去掉恶心的花瓣注入 // 去掉恶心的花瓣注入
// <pinit></pinit> // <pinit></pinit>
// 把最后的<script>..</script>全去掉 // 把最后的<script>..</script>全去掉
content.find("pinit").remove(); // content.find("pinit").remove();
content.find(".thunderpin").remove(); // content.find(".thunderpin").remove();
content.find(".pin").parent().remove(); // content.find(".pin").parent().remove();
content = $(content).html(); content = $(content).html();
if(content) { if(content) {
while(true) { while(true) {
@@ -1664,6 +1672,7 @@ var onClose = function(afterFunc) {
try { try {
// 先把服务关掉 // 先把服务关掉
Server.close(); Server.close();
SyncService.stop();
// 先保存之前改变的 // 先保存之前改变的
Note.curChangedSaveIt(); Note.curChangedSaveIt();
@@ -1681,4 +1690,12 @@ function isURL(str_url) {
return re.test(str_url); return re.test(str_url);
} }
function reloadApp() {
onClose(function() {
setTimeout(function() {
location.reload();
}, isMac() ? 0 : 200);
});
}
ContextTips.init(); ContextTips.init();

View File

@@ -184,6 +184,7 @@
"Search note": "搜索笔记", "Search note": "搜索笔记",
"Search notebook": "搜索笔记本", "Search notebook": "搜索笔记本",
"Add account": "添加帐户",
"Switch account": "切换帐户", "Switch account": "切换帐户",
"Sync": "同步", "Sync": "同步",
"Loading": "正在加载", "Loading": "正在加载",

View File

@@ -184,6 +184,7 @@
"Search note": "搜索筆記", "Search note": "搜索筆記",
"Search notebook": "搜索筆記本", "Search notebook": "搜索筆記本",
"Add account": "添加帳戶",
"Switch account": "切換帳戶", "Switch account": "切換帳戶",
"Sync": "同步", "Sync": "同步",
"Loading": "正在加載", "Loading": "正在加載",
@@ -253,7 +254,7 @@
"Warning": "警告", "Warning": "警告",
"Mode": "模式", "Mode": "模式",
"Toggle Fullscreen": "全屏切", "Toggle Fullscreen": "全屏切",
"Toggle Presentation": "演示切換", "Toggle Presentation": "演示切換",
"Toggle View": "預覽切換", "Toggle View": "預覽切換",
@@ -278,4 +279,5 @@
"Username": "用戶名", "Username": "用戶名",
"User exists": "用戶已存在", "User exists": "用戶已存在",
"Local": "本地" "Local": "本地"
} }

View File

@@ -32,13 +32,7 @@ define(function() {
Config.lang = langFileName; Config.lang = langFileName;
var ok = Api.writeConfig(Config); var ok = Api.writeConfig(Config);
if(ok) { if(ok) {
Api.onClose(function() { Api.reloadApp();
// mac下server关闭要点时间
var timeout = Api.isMac ? 0 : 200;
setTimeout(function() {
location.reload();
}, timeout);
});
} else { } else {
alert(getMsg('error')); alert(getMsg('error'));
} }