Commit a3521c0 1 parent 35736b7 commit a3521c0 Copy full SHA for a3521c0
File tree 3 files changed +45
-0
lines changed
packages/core/src/composables
3 files changed +45
-0
lines changed Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ export * from './useDocumentText'
16
16
export * from './useEditorDecorations'
17
17
export * from './useEvent'
18
18
export * from './useEventEmitter'
19
+ export * from './useExtensionSecret'
19
20
export * from './useFetchTasks'
20
21
export * from './useFileUri'
21
22
export * from './useFoldingRangeProvider'
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import { useDisposable } from './useDisposable'
5
5
6
6
/**
7
7
* @reactive `extensions.all`
8
+ * @category extension
8
9
*/
9
10
export const useAllExtensions = createSingletonComposable ( ( ) => {
10
11
const allExtensions = shallowRef ( extensions . all )
Original file line number Diff line number Diff line change
1
+ import type { Ref } from '@reactive-vscode/reactivity'
2
+ import { ref , watch } from '@reactive-vscode/reactivity'
3
+ import { extensionContext } from '../utils'
4
+ import { useDisposable } from './useDisposable'
5
+
6
+ /**
7
+ * Get a reactive secret value from the extension's secrets.
8
+ *
9
+ * @reactive `ExtensionContext.secrets`
10
+ * @category extension
11
+ */
12
+ export async function useExtensionSecret ( key : string ) {
13
+ const secrets = extensionContext . value ! . secrets
14
+
15
+ const value = ref ( await secrets . get ( key ) ) as Ref < string | undefined > & {
16
+ set : ( newValue : string ) => Promise < void >
17
+ remove : ( ) => Promise < void >
18
+ }
19
+
20
+ value . set = async ( newValue : string ) => {
21
+ value . value = newValue
22
+ await secrets . store ( key , newValue )
23
+ }
24
+
25
+ value . remove = async ( ) => {
26
+ value . value = undefined
27
+ await secrets . delete ( key )
28
+ }
29
+
30
+ useDisposable ( secrets . onDidChange ( async ( ev ) => {
31
+ if ( ev . key === key )
32
+ value . value = await secrets . get ( key )
33
+ } ) )
34
+
35
+ watch ( value , ( newValue ) => {
36
+ if ( newValue === undefined )
37
+ secrets . delete ( key )
38
+ else
39
+ secrets . store ( key , newValue )
40
+ } )
41
+
42
+ return value
43
+ }
You can’t perform that action at this time.
0 commit comments