fix(bricks): 非用户主动登录(401自动弹窗)成功后不刷新页面

- withLoginInfo 弹登录窗带 login_source=auto 标记被动登录
- Message 类读 refresh=false 设 _login_no_reload,跳过 dispatch user_logined
- 用户主动点击登录仍正常刷新
This commit is contained in:
yumoqing 2026-08-20 14:41:18 +08:00
parent 3c8eb4bb3d
commit f2f9893bac
2 changed files with 14 additions and 2 deletions

View File

@ -171,7 +171,10 @@ bricks.HttpText = class {
var login_window = await bricks.widgetBuild({
"widgettype":"urlwidget",
"options":{
"url":bricks.app.login_url
"url":bricks.app.login_url,
"params":{
"login_source":"auto"
}
}
});
@ -208,7 +211,12 @@ bricks.HttpText = class {
console.log('withLoginInfo: retry successful');
// Dispatch user_logined event so shell can reload menu
if (bricks.app && bricks.app.dispatch) {
bricks.app.dispatch('user_logined');
if (bricks.app._login_no_reload) {
bricks.app._login_no_reload = false;
console.log('withLoginInfo: non-user login, skip menu reload');
} else {
bricks.app.dispatch('user_logined');
}
}
return await this.get_result_data(retryResult);
}

View File

@ -9,6 +9,10 @@ bricks.Message = class extends bricks.PopupWindow {
*/
constructor(opts){
opts.auto_open = true;
// 登录消息带 refresh=false 时,标记不刷新(非用户主动登录)
if (opts.refresh === false && bricks.app){
bricks.app._login_no_reload = true;
}
super(opts);
this.create_message_widget();
this.set_css('message');