11import { Item } from 'qiita-js-2' ;
2- import { Command , TreeDataProvider , TreeItem , TreeItemCollapsibleState , Uri } from 'vscode' ;
2+ import {
3+ Command ,
4+ Event ,
5+ EventEmitter ,
6+ TreeDataProvider ,
7+ TreeItem ,
8+ TreeItemCollapsibleState ,
9+ Uri ,
10+ } from 'vscode' ;
311import * as nls from 'vscode-nls' ;
412import { client } from '../client' ;
513
614const localize = nls . loadMessageBundle ( ) ;
715
8- export class QiitaItemProvider implements TreeDataProvider < QiitaItem > {
16+ export class QiitaItem extends TreeItem {
17+ /**
18+ * "Qiitaの投稿" ビューに表示されるアイテム
19+ * @param item Qiitaの投稿
20+ * @param collapsibleState アイテムが折り畳まれているかの状態
21+ * @param command クリック時に発火するコマンド
22+ */
23+ constructor (
24+ public readonly item : Item ,
25+ public readonly collapsibleState : TreeItemCollapsibleState ,
26+ public readonly command : Command ,
27+ ) {
28+ super ( item . title , collapsibleState ) ;
29+ }
30+
31+ public resourceUri = Uri . parse ( 'file:///text.md' ) ; // Hack: アイコンをMarkdownのものに
32+ public contextValue = 'qiitaItems' ;
33+ }
34+
35+
36+ class QiitaItemsProvider implements TreeDataProvider < QiitaItem > {
37+ private _onDidChangeTreeData : EventEmitter < QiitaItem | undefined > = new EventEmitter < QiitaItem | undefined > ( ) ;
38+ public readonly onDidChangeTreeData : Event < QiitaItem | undefined > = this . _onDidChangeTreeData . event ;
39+
40+ /**
41+ * ツリーデータを更新
42+ */
43+ public refresh ( ) {
44+ this . _onDidChangeTreeData . fire ( ) ;
45+ }
946
1047 /**
1148 * `element` に対応するツリーアイテムを取得
@@ -20,11 +57,7 @@ export class QiitaItemProvider implements TreeDataProvider<QiitaItem> {
2057 * 小要素を取得
2158 * @param element 取得するelement
2259 */
23- public async getChildren ( /* element?: QiitaItem */ ) : Promise < QiitaItem [ ] > {
24- // if (element) {
25- // return array of item
26- // }
27-
60+ public async getChildren ( ) : Promise < QiitaItem [ ] > {
2861 const { value : items } = await client . fetchMyItems ( { page : 1 , per_page : 60 } ) . next ( ) ;
2962
3063 return items . map ( ( item ) => {
@@ -39,22 +72,4 @@ export class QiitaItemProvider implements TreeDataProvider<QiitaItem> {
3972 }
4073}
4174
42- export class QiitaItem extends TreeItem {
43- /**
44- * "Qiitaの投稿" ビューに表示されるアイテム
45- * @param item Qiitaの投稿
46- * @param collapsibleState アイテムが折り畳まれているかの状態
47- * @param command クリック時に発火するコマンド
48- */
49- constructor (
50- public readonly item : Item ,
51- public readonly collapsibleState : TreeItemCollapsibleState ,
52- public readonly command : Command ,
53- ) {
54- super ( item . title , collapsibleState ) ;
55- }
56-
57- public resourceUri = Uri . parse ( 'file:///text.md' ) ;
58-
59- public contextValue = 'qiitaItems' ;
60- }
75+ export const qiitaItemsProvider = new QiitaItemsProvider ( ) ;
0 commit comments