1
1
import { homedir } from 'os' ;
2
- import {
3
- Event ,
4
- EventEmitter ,
5
- MarkdownString ,
6
- ProviderResult ,
7
- ThemeIcon ,
8
- TreeDataProvider ,
9
- TreeItem ,
10
- TreeItemCollapsibleState ,
11
- Uri ,
12
- } from 'vscode' ;
2
+ import { Event , EventEmitter , MarkdownString , ProviderResult , TreeDataProvider , TreeItem , Uri } from 'vscode' ;
13
3
import { refreshPostsList } from '../commands/posts-list/refresh-posts-list' ;
14
4
import { Post } from '../models/post' ;
15
- import { LocalFileService } from '../services/local-draft.service' ;
16
5
import { PageModel } from '../models/page-model' ;
17
6
import { AlertService } from '../services/alert.service' ;
18
7
import { postService } from '../services/post.service' ;
19
8
import { globalState } from '../services/global-state' ;
20
9
import { PostFileMapManager } from '../services/post-file-map' ;
21
10
import { Settings } from '../services/settings.service' ;
22
11
23
- export const localDraftsTreeItem : TreeItem = Object . assign ( new TreeItem ( '本地草稿' ) , {
24
- iconPath : new ThemeIcon ( 'folder' ) ,
25
- collapsibleState : TreeItemCollapsibleState . Collapsed ,
26
- contextValue : 'cnb-local-drafts-folder' ,
27
- description : Settings . workspaceUri . fsPath . replace ( homedir ( ) , '~' ) ,
28
- tooltip : '在本地创建的还未保存到博客园的文章' ,
29
- } as TreeItem ) ;
30
-
31
- export type PostDataProviderItem = Post | TreeItem | LocalFileService ;
12
+ export type PostDataProviderItem = Post | TreeItem ;
32
13
33
14
export class PostsDataProvider implements TreeDataProvider < PostDataProviderItem > {
34
15
private static _instance ?: PostsDataProvider ;
@@ -50,15 +31,9 @@ export class PostsDataProvider implements TreeDataProvider<PostDataProviderItem>
50
31
51
32
protected constructor ( ) { }
52
33
53
- getChildren ( element ?: PostDataProviderItem ) : ProviderResult < PostDataProviderItem [ ] > {
34
+ getChildren ( parent ?: PostDataProviderItem ) : ProviderResult < PostDataProviderItem [ ] > {
54
35
return new Promise < PostDataProviderItem [ ] > ( resolve => {
55
- if ( element === localDraftsTreeItem ) {
56
- LocalFileService . readDrafts ( ) . then (
57
- v => resolve ( v ) ,
58
- ( ) => void 0
59
- ) ;
60
- return ;
61
- } else if ( ! element ) {
36
+ if ( ! parent ) {
62
37
const pagedPosts = this . _pagedPosts ;
63
38
if ( ! pagedPosts ) {
64
39
void refreshPostsList ( ) ;
@@ -73,10 +48,7 @@ export class PostsDataProvider implements TreeDataProvider<PostDataProviderItem>
73
48
}
74
49
75
50
getParent ( el : PostDataProviderItem ) {
76
- if ( el instanceof LocalFileService ) {
77
- return localDraftsTreeItem ;
78
- }
79
- return undefined ;
51
+ return el instanceof Post ? undefined : undefined ;
80
52
}
81
53
82
54
readonly onDidChangeTreeData : Event < PostDataProviderItem | null | undefined > | undefined =
@@ -86,9 +58,7 @@ export class PostsDataProvider implements TreeDataProvider<PostDataProviderItem>
86
58
if ( item instanceof TreeItem ) {
87
59
return item ;
88
60
}
89
- if ( item instanceof LocalFileService ) {
90
- return item . toTreeItem ( ) ;
91
- }
61
+
92
62
const descDatePublished = item . datePublished ? ` \n发布于: ${ item . datePublished } ` : '' ;
93
63
const localPath = PostFileMapManager . getFilePath ( item . id ) ;
94
64
const localPathForDesc = localPath ?. replace ( homedir ( ) , '~' ) || '未关联本地文件' ;
@@ -118,11 +88,11 @@ export class PostsDataProvider implements TreeDataProvider<PostDataProviderItem>
118
88
} ;
119
89
this . _pagedPosts = await postService . fetchPostsList ( { pageIndex, pageSize } ) ;
120
90
this . fireTreeDataChangedEvent ( undefined ) ;
121
- } catch ( e ) {
122
- if ( e instanceof Error ) {
123
- AlertService . error ( e . message ) ;
91
+ } catch ( ex ) {
92
+ if ( ex instanceof Error ) {
93
+ AlertService . error ( ex . message ) ;
124
94
} else {
125
- AlertService . error ( `Failed to fetch posts list\n${ JSON . stringify ( e ) } ` ) ;
95
+ AlertService . error ( `Failed to fetch posts list\n${ JSON . stringify ( ex ) } ` ) ;
126
96
}
127
97
}
128
98
}
0 commit comments