Skip to content

Commit 65875c5

Browse files
committed
feat: add modify post settings command to context menu of explorer item
1 parent f2ade59 commit 65875c5

File tree

2 files changed

+37
-11
lines changed

2 files changed

+37
-11
lines changed

package.json

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -477,31 +477,40 @@
477477
"editor/title": [
478478
{
479479
"command": "vscode-cnb.upload-image",
480-
"when": "resourceLangId == markdown && vscode-cnb.isTargetWorkspace",
480+
"when": "resourceLangId == markdown",
481481
"group": "navigation"
482482
},
483483
{
484484
"command": "vscode-cnb.save-post-file-to-cnblogs",
485-
"when": "resourceLangId == markdown && vscode-cnb.isTargetWorkspace && resourceScheme == file",
485+
"when": "resourceLangId == markdown",
486486
"group": "navigation"
487487
}
488488
],
489489
"explorer/context": [
490490
{
491491
"command": "vscode-cnb.login",
492-
"when": "!vscode-cnb.isAuthorized"
492+
"when": "!vscode-cnb.isAuthorized",
493+
"group": "cnblogs@1"
493494
},
494495
{
495496
"command": "vscode-cnb.save-post-file-to-cnblogs",
496-
"when": "resourceLangId == markdown"
497+
"when": "resourceLangId == markdown",
498+
"group": "cnblogs@2"
499+
},
500+
{
501+
"command": "vscode-cnb.modify-post-settings",
502+
"when": "resourceLangId == markdown",
503+
"group": "cnblogs@3"
497504
},
498505
{
499506
"command": "vscode-cnb.show-post-to-local-file-info",
500-
"when": "resourceLangId == markdown"
507+
"when": "resourceLangId == markdown",
508+
"group": "cnblogs@4"
501509
},
502510
{
503511
"command": "vscode-cnb.open-post-in-blog-admin",
504-
"when": "resourceLangId == markdown"
512+
"when": "resourceLangId == markdown",
513+
"group": "cnblogs@5"
505514
}
506515
]
507516
},

src/commands/posts-list/modify-post-settings.ts

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,35 @@
1+
import { Uri } from 'vscode';
12
import { BlogPost } from '../../models/blog-post';
23
import { AlertService } from '../../services/alert.service';
34
import { blogPostService } from '../../services/blog-post.service';
5+
import { PostFileMapManager } from '../../services/post-file-map';
46
import { extensionViews } from '../../tree-view-providers/tree-view-registration';
57
import { inputPostSettings } from '../../utils/input-post-settings';
68

7-
export const modifyPostSettings = async (post: BlogPost) => {
8-
if (!post || post.id < 0) {
9+
export const modifyPostSettings = async (input: BlogPost | Uri) => {
10+
let post: BlogPost | undefined;
11+
let postId = -1;
12+
if (input instanceof BlogPost) {
13+
post = input;
14+
postId = input.id;
15+
} else if (input instanceof Uri) {
16+
postId = PostFileMapManager.getPostId(input.fsPath) ?? -1;
17+
if (postId < 0) {
18+
AlertService.warning('本地文件尚未关联到博文');
19+
return;
20+
}
21+
}
22+
23+
if (!(postId >= 0)) {
924
return;
1025
}
1126

12-
await extensionViews.postsList?.reveal(post);
13-
const editDto = await blogPostService.fetchPostEditDto(post.id);
27+
if (post) {
28+
await extensionViews.postsList?.reveal(post);
29+
}
30+
const editDto = await blogPostService.fetchPostEditDto(postId);
1431
const postEditDto = editDto.post;
15-
const inputSettings = await inputPostSettings(post.title, postEditDto);
32+
const inputSettings = await inputPostSettings(postEditDto.title, postEditDto);
1633
if (!inputSettings) {
1734
return;
1835
}

0 commit comments

Comments
 (0)