Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
2bb2507f
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2bb2507f
编写于
4月 13, 2020
作者:
R
Rachel Macfarlane
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Show active account usage in account menu, fixes #94635
上级
9982b22d
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
49 addition
and
2 deletion
+49
-2
src/vs/workbench/api/browser/mainThreadAuthentication.ts
src/vs/workbench/api/browser/mainThreadAuthentication.ts
+49
-2
未找到文件。
src/vs/workbench/api/browser/mainThreadAuthentication.ts
浏览文件 @
2bb2507f
...
@@ -38,6 +38,25 @@ interface AllowedExtension {
...
@@ -38,6 +38,25 @@ interface AllowedExtension {
name
:
string
;
name
:
string
;
}
}
const
accountUsages
=
new
Map
<
string
,
{
[
accountName
:
string
]:
string
[]
}
>
();
function
addAccountUsage
(
providerId
:
string
,
accountName
:
string
,
extensionOrFeatureName
:
string
)
{
const
providerAccountUsage
=
accountUsages
.
get
(
providerId
);
if
(
!
providerAccountUsage
)
{
accountUsages
.
set
(
providerId
,
{
[
accountName
]:
[
extensionOrFeatureName
]
});
}
else
{
if
(
providerAccountUsage
[
accountName
])
{
if
(
!
providerAccountUsage
[
accountName
].
includes
(
extensionOrFeatureName
))
{
providerAccountUsage
[
accountName
].
push
(
extensionOrFeatureName
);
}
}
else
{
providerAccountUsage
[
accountName
]
=
[
extensionOrFeatureName
];
}
accountUsages
.
set
(
providerId
,
providerAccountUsage
);
}
}
function
readAllowedExtensions
(
storageService
:
IStorageService
,
providerId
:
string
,
accountName
:
string
):
AllowedExtension
[]
{
function
readAllowedExtensions
(
storageService
:
IStorageService
,
providerId
:
string
,
accountName
:
string
):
AllowedExtension
[]
{
let
trustedExtensions
:
AllowedExtension
[]
=
[];
let
trustedExtensions
:
AllowedExtension
[]
=
[];
try
{
try
{
...
@@ -98,6 +117,24 @@ export class MainThreadAuthenticationProvider extends Disposable {
...
@@ -98,6 +117,24 @@ export class MainThreadAuthenticationProvider extends Disposable {
quickPick
.
show
();
quickPick
.
show
();
}
}
private
showUsage
(
quickInputService
:
IQuickInputService
,
accountName
:
string
)
{
const
quickPick
=
quickInputService
.
createQuickPick
();
const
providerUsage
=
accountUsages
.
get
(
this
.
id
);
const
accountUsage
=
(
providerUsage
||
{})[
accountName
]
||
[];
quickPick
.
items
=
accountUsage
.
map
(
extensionOrFeature
=>
{
return
{
label
:
extensionOrFeature
};
});
quickPick
.
onDidHide
(()
=>
{
quickPick
.
dispose
();
});
quickPick
.
show
();
}
private
async
registerCommandsAndContextMenuItems
():
Promise
<
void
>
{
private
async
registerCommandsAndContextMenuItems
():
Promise
<
void
>
{
const
sessions
=
await
this
.
_proxy
.
$getSessions
(
this
.
id
);
const
sessions
=
await
this
.
_proxy
.
$getSessions
(
this
.
id
);
...
@@ -153,9 +190,10 @@ export class MainThreadAuthenticationProvider extends Disposable {
...
@@ -153,9 +190,10 @@ export class MainThreadAuthenticationProvider extends Disposable {
const
storageService
=
accessor
.
get
(
IStorageService
);
const
storageService
=
accessor
.
get
(
IStorageService
);
const
quickPick
=
quickInputService
.
createQuickPick
();
const
quickPick
=
quickInputService
.
createQuickPick
();
const
showUsage
=
nls
.
localize
(
'
showUsage
'
,
"
Show Extensions and Features Using This Account
"
);
const
manage
=
nls
.
localize
(
'
manageTrustedExtensions
'
,
"
Manage Trusted Extensions
"
);
const
manage
=
nls
.
localize
(
'
manageTrustedExtensions
'
,
"
Manage Trusted Extensions
"
);
const
signOut
=
nls
.
localize
(
'
signOut
'
,
"
Sign Out
"
);
const
signOut
=
nls
.
localize
(
'
signOut
'
,
"
Sign Out
"
);
const
items
=
([{
label
:
manage
},
{
label
:
signOut
}]);
const
items
=
([{
label
:
showUsage
},
{
label
:
manage
},
{
label
:
signOut
}]);
quickPick
.
items
=
items
;
quickPick
.
items
=
items
;
...
@@ -170,6 +208,10 @@ export class MainThreadAuthenticationProvider extends Disposable {
...
@@ -170,6 +208,10 @@ export class MainThreadAuthenticationProvider extends Disposable {
this
.
manageTrustedExtensions
(
quickInputService
,
storageService
,
session
.
accountName
);
this
.
manageTrustedExtensions
(
quickInputService
,
storageService
,
session
.
accountName
);
}
}
if
(
selected
.
label
===
showUsage
)
{
this
.
showUsage
(
quickInputService
,
session
.
accountName
);
}
quickPick
.
dispose
();
quickPick
.
dispose
();
});
});
...
@@ -189,7 +231,10 @@ export class MainThreadAuthenticationProvider extends Disposable {
...
@@ -189,7 +231,10 @@ export class MainThreadAuthenticationProvider extends Disposable {
return
{
return
{
id
:
session
.
id
,
id
:
session
.
id
,
accountName
:
session
.
accountName
,
accountName
:
session
.
accountName
,
getAccessToken
:
()
=>
this
.
_proxy
.
$getSessionAccessToken
(
this
.
id
,
session
.
id
)
getAccessToken
:
()
=>
{
addAccountUsage
(
this
.
id
,
session
.
accountName
,
nls
.
localize
(
'
sync
'
,
"
Preferences Sync
"
));
return
this
.
_proxy
.
$getSessionAccessToken
(
this
.
id
,
session
.
id
);
}
};
};
});
});
}
}
...
@@ -281,6 +326,8 @@ export class MainThreadAuthentication extends Disposable implements MainThreadAu
...
@@ -281,6 +326,8 @@ export class MainThreadAuthentication extends Disposable implements MainThreadAu
}
}
async
$getSessionsPrompt
(
providerId
:
string
,
accountName
:
string
,
providerName
:
string
,
extensionId
:
string
,
extensionName
:
string
):
Promise
<
boolean
>
{
async
$getSessionsPrompt
(
providerId
:
string
,
accountName
:
string
,
providerName
:
string
,
extensionId
:
string
,
extensionName
:
string
):
Promise
<
boolean
>
{
addAccountUsage
(
providerId
,
accountName
,
extensionName
);
const
allowList
=
readAllowedExtensions
(
this
.
storageService
,
providerId
,
accountName
);
const
allowList
=
readAllowedExtensions
(
this
.
storageService
,
providerId
,
accountName
);
const
extensionData
=
allowList
.
find
(
extension
=>
extension
.
id
===
extensionId
);
const
extensionData
=
allowList
.
find
(
extension
=>
extension
.
id
===
extensionId
);
if
(
extensionData
)
{
if
(
extensionData
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录