帐户方便切换

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
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) {
if(err || count == 0) {
// 添加一个
user['_id'] = user.UserId;
user['IsActive'] = true;
user['LastLoginTime'] = new Date();
db.users.insert(user, function(err, doc) {
log(err);
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) {
log(err);
callback && callback(false);
} else {
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) {
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);
});
}
};

View File

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

View File

@@ -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

View File

@@ -539,8 +539,16 @@ function isAceError(val) {
}
// 有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) {
var content = _getEditorContent(isMarkdown);
if (content === '<p><br data-mce-bogus="1"></p>') {
return '<p><br></p>';
}
return content;
}
function _getEditorContent(isMarkdown) {
if(!isMarkdown) {
var editor = tinymce.activeEditor;
if(editor) {
@@ -569,9 +577,9 @@ function getEditorContent(isMarkdown) {
// 去掉恶心的花瓣注入
// <pinit></pinit>
// 把最后的<script>..</script>全去掉
content.find("pinit").remove();
content.find(".thunderpin").remove();
content.find(".pin").parent().remove();
// content.find("pinit").remove();
// content.find(".thunderpin").remove();
// content.find(".pin").parent().remove();
content = $(content).html();
if(content) {
while(true) {
@@ -1664,6 +1672,7 @@ var onClose = function(afterFunc) {
try {
// 先把服务关掉
Server.close();
SyncService.stop();
// 先保存之前改变的
Note.curChangedSaveIt();
@@ -1681,4 +1690,12 @@ function isURL(str_url) {
return re.test(str_url);
}
function reloadApp() {
onClose(function() {
setTimeout(function() {
location.reload();
}, isMac() ? 0 : 200);
});
}
ContextTips.init();

View File

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

View File

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

View File

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