Skip to content

Commit a506585

Browse files
authored
Merge pull request cangzhang#10 from cangzhang/feat/depot-api
feat: complete create team logic, optimize auth logic
2 parents d9efc90 + 376a635 commit a506585

18 files changed

+427
-211
lines changed

src/extension.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import init from './init';
1+
import initialize from './initialize';
22
import CodingServer from './services/codingServer';
33
import WebviewProvider from './webviews';
44
import ACTIONS, { dispatch } from './utils/actions';
@@ -7,19 +7,12 @@ import toast from './utils/toast';
77
import { readConfig } from './services/dcloud';
88

99
async function activate(context: IContext) {
10-
// TODO: 认证,拿到用户信息
1110
const webviewProvider = new WebviewProvider(context);
12-
1311
const repoInfo = await CodingServer.getRepoParams();
14-
console.log('repoInfo ==> ', repoInfo);
12+
console.log('repoInfo: ', repoInfo);
1513
const token = await readConfig(`token`);
16-
if (!token) {
17-
toast.warn(`请先登录 CODING`);
18-
}
1914

20-
const codingServer = new CodingServer({
21-
accessToken: token,
22-
});
15+
const codingServer = new CodingServer(context);
2316

2417
dispatch(ACTIONS.SET_CTX, {
2518
context,
@@ -36,7 +29,7 @@ async function activate(context: IContext) {
3629
});
3730

3831
proxyCtx(context);
39-
init(context);
32+
initialize(context);
4033
}
4134

4235
function deactivate() {

src/init.ts

Lines changed: 0 additions & 170 deletions
This file was deleted.

src/init/createTreeViews.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import hx from 'hbuilderx';
2+
import DepotTreeDataProvider from '../trees/depot';
3+
import MRTreeDataProvider from '../trees/mr';
4+
import DepotMRTreeDataProvider from '../trees/depotMR';
5+
6+
const { createTreeView } = hx.window;
7+
8+
const TREE_VIEWS = [
9+
{
10+
id: 'codingPlugin.treeMR',
11+
treeDataProvider: MRTreeDataProvider,
12+
},
13+
{
14+
id: 'codingPlugin.treeDepot',
15+
treeDataProvider: DepotTreeDataProvider,
16+
},
17+
{
18+
id: 'codingPlugin.treeDepotMR',
19+
treeDataProvider: DepotMRTreeDataProvider,
20+
},
21+
];
22+
23+
function createTreeViews(context: IContext) {
24+
TREE_VIEWS.forEach(({ id, treeDataProvider }) => {
25+
context.subscriptions.push(
26+
createTreeView(id, {
27+
showCollapseAll: false,
28+
treeDataProvider: new treeDataProvider(context),
29+
}),
30+
);
31+
});
32+
}
33+
34+
export default createTreeViews;

src/init/initCredentials.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import hx from 'hbuilderx';
2+
import * as DCloudService from '../services/dcloud';
3+
import toast from '../utils/toast';
4+
import { refreshTree } from './registerCommands';
5+
6+
const { executeCommand } = hx.commands;
7+
8+
export async function initCredentials(context: IContext) {
9+
try {
10+
let hbToken = await DCloudService.readConfig(`hbToken`);
11+
const token = await DCloudService.readConfig(`token`);
12+
13+
if (!hbToken) {
14+
const code = await DCloudService.grantForUserInfo();
15+
const tokenResult = await DCloudService.applyForToken(code);
16+
hbToken = tokenResult.data.access_token;
17+
}
18+
19+
const resp = await DCloudService.fetchUser(hbToken);
20+
toast.info(`logged in as DCloud user: ${resp.data.nickname} ${resp.data.email}`);
21+
22+
if (!token) {
23+
await executeCommand('codingPlugin.createTeam');
24+
}
25+
26+
const {
27+
ctx: { codingServer, token: accessToken },
28+
} = context;
29+
if (accessToken) {
30+
const userData = await codingServer.getUserInfo(accessToken);
31+
toast.info(`logged in as CODING user: ${userData.name} @ ${userData.team}`);
32+
}
33+
} catch (err) {
34+
if (Number(err) === 1) {
35+
toast.warn(`请先登录 DCloud`);
36+
}
37+
} finally {
38+
refreshTree();
39+
}
40+
}

src/init/initLoginLogout.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import hx from 'hbuilderx';
2+
import { refreshTree } from './registerCommands';
3+
4+
const { onUserLogin, onUserLogout } = hx.authorize;
5+
6+
export default function initLoginLogout(context: IContext) {
7+
onUserLogin(() => {
8+
console.warn('login');
9+
refreshTree();
10+
});
11+
12+
onUserLogout(() => {
13+
console.warn('logout');
14+
});
15+
}

src/init/initWorkspace.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import hx from 'hbuilderx';
2+
import CodingServer from '../services/codingServer';
3+
import ACTIONS, { dispatch } from '../utils/actions';
4+
5+
function initWorkspace(context: IContext) {
6+
hx.workspace.onDidChangeWorkspaceFolders(async function () {
7+
const repoInfo = await CodingServer.getRepoParams();
8+
dispatch(ACTIONS.SET_REPO_INFO, {
9+
context,
10+
value: repoInfo,
11+
});
12+
});
13+
}
14+
15+
export default initWorkspace;

0 commit comments

Comments
 (0)