Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
c6bf931b
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c6bf931b
编写于
1月 17, 2020
作者:
R
Rachel Macfarlane
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Move settings sync auth provider id out to setting
上级
2eb1c837
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
22 addition
and
22 deletion
+22
-22
src/vs/platform/userDataSync/common/userDataSync.ts
src/vs/platform/userDataSync/common/userDataSync.ts
+2
-1
src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts
...vs/workbench/contrib/userDataSync/browser/userDataSync.ts
+20
-21
未找到文件。
src/vs/platform/userDataSync/common/userDataSync.ts
浏览文件 @
c6bf931b
...
...
@@ -140,11 +140,12 @@ export interface IUserDataSyncStore {
url
:
string
;
name
:
string
;
account
:
string
;
authenticationProviderId
:
string
;
}
export
function
getUserDataSyncStore
(
configurationService
:
IConfigurationService
):
IUserDataSyncStore
|
undefined
{
const
value
=
configurationService
.
getValue
<
IUserDataSyncStore
>
(
CONFIGURATION_SYNC_STORE_KEY
);
return
value
&&
value
.
url
&&
value
.
name
&&
value
.
account
?
value
:
undefined
;
return
value
&&
value
.
url
&&
value
.
name
&&
value
.
account
&&
value
.
authenticationProviderId
?
value
:
undefined
;
}
export
const
IUserDataSyncStoreService
=
createDecorator
<
IUserDataSyncStoreService
>
(
'
IUserDataSyncStoreService
'
);
...
...
src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts
浏览文件 @
c6bf931b
...
...
@@ -38,16 +38,15 @@ import { Session } from 'vs/editor/common/modes';
import
{
isPromiseCanceledError
,
canceled
}
from
'
vs/base/common/errors
'
;
import
{
toErrorMessage
}
from
'
vs/base/common/errorMessage
'
;
const
enum
MSA
AuthStatus
{
const
enum
AuthStatus
{
Initializing
=
'
Initializing
'
,
SignedIn
=
'
SignedIn
'
,
SignedOut
=
'
SignedOut
'
}
const
CONTEXT_AUTH_TOKEN_STATE
=
new
RawContextKey
<
string
>
(
'
authTokenStatus
'
,
MSA
AuthStatus
.
Initializing
);
const
CONTEXT_AUTH_TOKEN_STATE
=
new
RawContextKey
<
string
>
(
'
authTokenStatus
'
,
AuthStatus
.
Initializing
);
const
SYNC_PUSH_LIGHT_ICON_URI
=
URI
.
parse
(
registerAndGetAmdImageURL
(
`vs/workbench/contrib/userDataSync/browser/media/check-light.svg`
));
const
SYNC_PUSH_DARK_ICON_URI
=
URI
.
parse
(
registerAndGetAmdImageURL
(
`vs/workbench/contrib/userDataSync/browser/media/check-dark.svg`
));
const
MSA
=
'
MSA
'
;
type
ConfigureSyncQuickPickItem
=
{
id
:
string
,
label
:
string
,
description
?:
string
};
export
class
UserDataSyncWorkbenchContribution
extends
Disposable
implements
IWorkbenchContribution
{
...
...
@@ -104,8 +103,8 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
}
private
async
initializeActiveAccount
():
Promise
<
void
>
{
const
accounts
=
await
this
.
authenticationService
.
getSessions
(
MSA
);
//
MSA
provider has not yet been registered
const
accounts
=
await
this
.
authenticationService
.
getSessions
(
this
.
userDataSyncStore
!
.
authenticationProviderId
);
//
Auth
provider has not yet been registered
if
(
!
accounts
)
{
return
;
}
...
...
@@ -141,20 +140,20 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
if
(
account
)
{
this
.
userDataAuthTokenService
.
setToken
(
account
.
accessToken
);
this
.
authenticationState
.
set
(
MSA
AuthStatus
.
SignedIn
);
this
.
authenticationState
.
set
(
AuthStatus
.
SignedIn
);
}
else
{
this
.
userDataAuthTokenService
.
setToken
(
undefined
);
this
.
authenticationState
.
set
(
MSA
AuthStatus
.
SignedOut
);
this
.
authenticationState
.
set
(
AuthStatus
.
SignedOut
);
}
this
.
updateBadge
();
}
private
async
onDidChangeSessions
(
providerId
:
string
):
Promise
<
void
>
{
if
(
providerId
===
MSA
)
{
if
(
providerId
===
this
.
userDataSyncStore
!
.
authenticationProviderId
)
{
if
(
this
.
activeAccount
)
{
// Try to update existing account, case where access token has been refreshed
const
accounts
=
(
await
this
.
authenticationService
.
getSessions
(
MSA
)
||
[]);
const
accounts
=
(
await
this
.
authenticationService
.
getSessions
(
this
.
userDataSyncStore
!
.
authenticationProviderId
)
||
[]);
const
matchingAccount
=
accounts
.
filter
(
a
=>
a
.
id
===
this
.
activeAccount
?.
id
)[
0
];
this
.
activeAccount
=
matchingAccount
;
}
else
{
...
...
@@ -164,13 +163,13 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
}
private
async
onDidRegisterAuthenticationProvider
(
providerId
:
string
)
{
if
(
providerId
===
MSA
)
{
if
(
providerId
===
this
.
userDataSyncStore
!
.
authenticationProviderId
)
{
await
this
.
initializeActiveAccount
();
}
}
private
onDidUnregisterAuthenticationProvider
(
providerId
:
string
)
{
if
(
providerId
===
MSA
)
{
if
(
providerId
===
this
.
userDataSyncStore
!
.
authenticationProviderId
)
{
this
.
activeAccount
=
undefined
;
this
.
authenticationState
.
reset
();
}
...
...
@@ -215,7 +214,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
this
.
updateBadge
();
const
enabled
=
this
.
configurationService
.
getValue
<
boolean
>
(
UserDataSyncWorkbenchContribution
.
ENABLEMENT_SETTING
);
if
(
enabled
)
{
if
(
this
.
authenticationState
.
get
()
===
MSA
AuthStatus
.
SignedOut
)
{
if
(
this
.
authenticationState
.
get
()
===
AuthStatus
.
SignedOut
)
{
const
handle
=
this
.
notificationService
.
prompt
(
Severity
.
Info
,
localize
(
'
sign in message
'
,
"
Please sign in with your {0} account to continue sync
"
,
this
.
userDataSyncStore
!
.
account
),
[
{
...
...
@@ -238,7 +237,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
let
clazz
:
string
|
undefined
;
let
priority
:
number
|
undefined
=
undefined
;
if
(
this
.
userDataSyncService
.
status
!==
SyncStatus
.
Uninitialized
&&
this
.
configurationService
.
getValue
<
boolean
>
(
UserDataSyncWorkbenchContribution
.
ENABLEMENT_SETTING
)
&&
this
.
authenticationState
.
get
()
===
MSA
AuthStatus
.
SignedOut
)
{
if
(
this
.
userDataSyncService
.
status
!==
SyncStatus
.
Uninitialized
&&
this
.
configurationService
.
getValue
<
boolean
>
(
UserDataSyncWorkbenchContribution
.
ENABLEMENT_SETTING
)
&&
this
.
authenticationState
.
get
()
===
AuthStatus
.
SignedOut
)
{
badge
=
new
NumberBadge
(
1
,
()
=>
localize
(
'
sign in to sync
'
,
"
Sign in to Sync
"
));
}
else
if
(
this
.
userDataSyncService
.
status
===
SyncStatus
.
HasConflicts
)
{
badge
=
new
NumberBadge
(
1
,
()
=>
localize
(
'
resolve conflicts
'
,
"
Resolve Conflicts
"
));
...
...
@@ -261,7 +260,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
quickPick
.
title
=
localize
(
'
turn on sync
'
,
"
Turn on Sync
"
);
quickPick
.
ok
=
false
;
quickPick
.
customButton
=
true
;
if
(
this
.
authenticationState
.
get
()
===
MSA
AuthStatus
.
SignedIn
)
{
if
(
this
.
authenticationState
.
get
()
===
AuthStatus
.
SignedIn
)
{
quickPick
.
description
=
localize
(
'
turn on sync detail
'
,
"
Turn on to synchronize your following data across all your devices.
"
);
quickPick
.
customLabel
=
localize
(
'
turn on
'
,
"
Turn on
"
);
}
else
{
...
...
@@ -287,7 +286,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
}
private
async
doTurnOn
():
Promise
<
void
>
{
if
(
this
.
authenticationState
.
get
()
===
MSA
AuthStatus
.
SignedOut
)
{
if
(
this
.
authenticationState
.
get
()
===
AuthStatus
.
SignedOut
)
{
await
this
.
signIn
();
}
await
this
.
handleFirstTimeSync
();
...
...
@@ -400,7 +399,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
private
async
signIn
():
Promise
<
void
>
{
try
{
this
.
activeAccount
=
await
this
.
authenticationService
.
login
(
MSA
);
this
.
activeAccount
=
await
this
.
authenticationService
.
login
(
this
.
userDataSyncStore
!
.
authenticationProviderId
);
}
catch
(
e
)
{
this
.
notificationService
.
error
(
e
);
throw
e
;
...
...
@@ -409,7 +408,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
private
async
signOut
():
Promise
<
void
>
{
if
(
this
.
activeAccount
)
{
await
this
.
authenticationService
.
logout
(
MSA
,
this
.
activeAccount
.
id
);
await
this
.
authenticationService
.
logout
(
this
.
userDataSyncStore
!
.
authenticationProviderId
,
this
.
activeAccount
.
id
);
this
.
activeAccount
=
undefined
;
}
}
...
...
@@ -481,7 +480,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
private
registerActions
():
void
{
const
turnOnSyncCommandId
=
'
workbench.userData.actions.syncStart
'
;
const
turnOnSyncWhenContext
=
ContextKeyExpr
.
and
(
CONTEXT_SYNC_STATE
.
notEqualsTo
(
SyncStatus
.
Uninitialized
),
ContextKeyExpr
.
not
(
`config.
${
UserDataSyncWorkbenchContribution
.
ENABLEMENT_SETTING
}
`
),
CONTEXT_AUTH_TOKEN_STATE
.
notEqualsTo
(
MSA
AuthStatus
.
Initializing
));
const
turnOnSyncWhenContext
=
ContextKeyExpr
.
and
(
CONTEXT_SYNC_STATE
.
notEqualsTo
(
SyncStatus
.
Uninitialized
),
ContextKeyExpr
.
not
(
`config.
${
UserDataSyncWorkbenchContribution
.
ENABLEMENT_SETTING
}
`
),
CONTEXT_AUTH_TOKEN_STATE
.
notEqualsTo
(
AuthStatus
.
Initializing
));
CommandsRegistry
.
registerCommand
(
turnOnSyncCommandId
,
async
()
=>
{
try
{
await
this
.
turnOn
();
...
...
@@ -508,7 +507,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
});
const
signInCommandId
=
'
workbench.userData.actions.signin
'
;
const
signInWhenContext
=
ContextKeyExpr
.
and
(
CONTEXT_SYNC_STATE
.
notEqualsTo
(
SyncStatus
.
Uninitialized
),
ContextKeyExpr
.
has
(
`config.
${
UserDataSyncWorkbenchContribution
.
ENABLEMENT_SETTING
}
`
),
CONTEXT_AUTH_TOKEN_STATE
.
isEqualTo
(
MSA
AuthStatus
.
SignedOut
));
const
signInWhenContext
=
ContextKeyExpr
.
and
(
CONTEXT_SYNC_STATE
.
notEqualsTo
(
SyncStatus
.
Uninitialized
),
ContextKeyExpr
.
has
(
`config.
${
UserDataSyncWorkbenchContribution
.
ENABLEMENT_SETTING
}
`
),
CONTEXT_AUTH_TOKEN_STATE
.
isEqualTo
(
AuthStatus
.
SignedOut
));
CommandsRegistry
.
registerCommand
(
signInCommandId
,
()
=>
this
.
signIn
());
MenuRegistry
.
appendMenuItem
(
MenuId
.
GlobalActivity
,
{
group
:
'
5_sync
'
,
...
...
@@ -534,7 +533,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
id
:
stopSyncCommandId
,
title
:
localize
(
'
global activity stop sync
'
,
"
Turn off sync
"
)
},
when
:
ContextKeyExpr
.
and
(
ContextKeyExpr
.
has
(
`config.
${
UserDataSyncWorkbenchContribution
.
ENABLEMENT_SETTING
}
`
),
CONTEXT_AUTH_TOKEN_STATE
.
isEqualTo
(
MSA
AuthStatus
.
SignedIn
),
CONTEXT_SYNC_STATE
.
notEqualsTo
(
SyncStatus
.
Uninitialized
),
CONTEXT_SYNC_STATE
.
notEqualsTo
(
SyncStatus
.
HasConflicts
))
when
:
ContextKeyExpr
.
and
(
ContextKeyExpr
.
has
(
`config.
${
UserDataSyncWorkbenchContribution
.
ENABLEMENT_SETTING
}
`
),
CONTEXT_AUTH_TOKEN_STATE
.
isEqualTo
(
AuthStatus
.
SignedIn
),
CONTEXT_SYNC_STATE
.
notEqualsTo
(
SyncStatus
.
Uninitialized
),
CONTEXT_SYNC_STATE
.
notEqualsTo
(
SyncStatus
.
HasConflicts
))
});
MenuRegistry
.
appendMenuItem
(
MenuId
.
CommandPalette
,
{
command
:
{
...
...
@@ -605,7 +604,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
id
:
'
workbench.userData.actions.signout
'
,
title
:
localize
(
'
sign out
'
,
"
Sync: Sign out
"
)
},
when
:
ContextKeyExpr
.
and
(
CONTEXT_AUTH_TOKEN_STATE
.
isEqualTo
(
MSA
AuthStatus
.
SignedIn
)),
when
:
ContextKeyExpr
.
and
(
CONTEXT_AUTH_TOKEN_STATE
.
isEqualTo
(
AuthStatus
.
SignedIn
)),
};
CommandsRegistry
.
registerCommand
(
signOutMenuItem
.
command
.
id
,
()
=>
this
.
signOut
());
MenuRegistry
.
appendMenuItem
(
MenuId
.
CommandPalette
,
signOutMenuItem
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录