Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
c349b491
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,发现更多精彩内容 >>
提交
c349b491
编写于
10月 20, 2017
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #36285
上级
245ee974
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
3 deletion
+23
-3
src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts
...parts/extensions/electron-browser/extensionTipsService.ts
+23
-3
未找到文件。
src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts
浏览文件 @
c349b491
...
...
@@ -7,7 +7,7 @@ import { localize } from 'vs/nls';
import
*
as
paths
from
'
vs/base/common/paths
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
forEach
}
from
'
vs/base/common/collections
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
IDisposable
,
dispose
,
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
match
}
from
'
vs/base/common/glob
'
;
import
*
as
json
from
'
vs/base/common/json
'
;
import
{
IExtensionManagementService
,
IExtensionGalleryService
,
IExtensionTipsService
,
LocalExtensionType
,
EXTENSION_IDENTIFIER_PATTERN
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
...
...
@@ -19,7 +19,7 @@ import { IChoiceService, IMessageService } from 'vs/platform/message/common/mess
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
ShowRecommendedExtensionsAction
,
ShowWorkspaceRecommendedExtensionsAction
}
from
'
vs/workbench/parts/extensions/browser/extensionsActions
'
;
import
Severity
from
'
vs/base/common/severity
'
;
import
{
IWorkspaceContextService
,
IWorkspaceFolder
,
IWorkspace
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IWorkspaceContextService
,
IWorkspaceFolder
,
IWorkspace
,
IWorkspaceFoldersChangeEvent
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
Schemas
}
from
'
vs/base/common/network
'
;
import
{
IFileService
}
from
'
vs/platform/files/common/files
'
;
import
{
IExtensionsConfiguration
,
ConfigurationKey
}
from
'
vs/workbench/parts/extensions/common/extensions
'
;
...
...
@@ -36,7 +36,7 @@ interface IExtensionsContent {
const
empty
:
{
[
key
:
string
]:
any
;
}
=
Object
.
create
(
null
);
const
milliSecondsInADay
=
1000
*
60
*
60
*
24
;
export
class
ExtensionTipsService
implements
IExtensionTipsService
{
export
class
ExtensionTipsService
extends
Disposable
implements
IExtensionTipsService
{
_serviceBrand
:
any
;
...
...
@@ -48,6 +48,8 @@ export class ExtensionTipsService implements IExtensionTipsService {
private
_allRecommendations
:
string
[];
private
_disposables
:
IDisposable
[]
=
[];
private
_suggestedWorkspaceRecommendedExtensions
:
string
[]
=
[];
constructor
(
@
IExtensionGalleryService
private
_galleryService
:
IExtensionGalleryService
,
@
IModelService
private
_modelService
:
IModelService
,
...
...
@@ -61,16 +63,20 @@ export class ExtensionTipsService implements IExtensionTipsService {
@
IMessageService
private
messageService
:
IMessageService
,
@
ITelemetryService
private
telemetryService
:
ITelemetryService
)
{
super
();
if
(
!
this
.
_galleryService
.
isEnabled
())
{
return
;
}
this
.
_suggestTips
();
this
.
_suggestWorkspaceRecommendations
();
// Executable based recommendations carry out a lot of file stats, so run them after 10 secs
// So that the startup is not affected
setTimeout
(()
=>
this
.
_suggestBasedOnExecutables
(
this
.
_exeBasedRecommendations
),
10000
);
this
.
_register
(
this
.
contextService
.
onDidChangeWorkspaceFolders
(
e
=>
this
.
onWorkspaceFoldersChanged
(
e
)));
}
getWorkspaceRecommendations
():
TPromise
<
string
[]
>
{
...
...
@@ -102,6 +108,19 @@ export class ExtensionTipsService implements IExtensionTipsService {
return
[];
}
private
onWorkspaceFoldersChanged
(
event
:
IWorkspaceFoldersChangeEvent
):
void
{
if
(
event
.
added
.
length
)
{
TPromise
.
join
(
event
.
added
.
map
(
workspaceFolder
=>
this
.
resolveWorkspaceFolderRecommendations
(
workspaceFolder
)))
.
then
(
result
=>
{
const
newRecommendations
=
flatten
(
result
);
// Suggest only if atleast one of the newly added recommendtations was not suggested before
if
(
newRecommendations
.
some
(
e
=>
this
.
_suggestedWorkspaceRecommendedExtensions
.
indexOf
(
e
)
===
-
1
))
{
this
.
_suggestWorkspaceRecommendations
();
}
});
}
}
getRecommendations
(
installedExtensions
:
string
[],
searchText
:
string
):
string
[]
{
const
allRecomendations
=
this
.
_getAllRecommendationsInProduct
();
const
fileBased
=
Object
.
keys
(
this
.
_fileBasedRecommendations
)
...
...
@@ -360,6 +379,7 @@ export class ExtensionTipsService implements IExtensionTipsService {
"userReaction" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
this
.
_suggestedWorkspaceRecommendedExtensions
=
allRecommendations
;
this
.
telemetryService
.
publicLog
(
'
extensionWorkspaceRecommendations:popup
'
,
{
userReaction
:
'
show
'
});
return
action
.
run
();
case
1
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录