Skip to content

Commit a654d34

Browse files
authored
Merge pull request #820 from CodinGame/lmn/feat-allow-forcing-some-storage-key
feat: allow to force storage values
2 parents 5d2e410 + 04acf0e commit a654d34

2 files changed

Lines changed: 35 additions & 15 deletions

File tree

src/service-override/chat.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ import { ChatMarkdownAnchorService } from 'vs/workbench/contrib/chat/browser/wid
4343
import { ChatEditingService } from 'vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl'
4444
import {
4545
ChatEntitlementService,
46-
ChatEntitlement
46+
ChatEntitlement,
47+
type IChatEntitlementContextState
4748
} from 'vs/workbench/services/chat/common/chatEntitlementService'
4849
import { PromptsService } from 'vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl'
4950
import { IChatEntitlementService } from 'vs/workbench/services/chat/common/chatEntitlementService.service'
@@ -467,4 +468,4 @@ export default function getServiceOverride({
467468
}
468469
}
469470

470-
export { type IDefaultAccount, ChatEntitlement }
471+
export { type IDefaultAccount, ChatEntitlement, type IChatEntitlementContextState }

src/service-override/storage.ts

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ export interface DatabaseFactories {
113113
class InjectedBrowserStorageService extends BrowserStorageService {
114114
constructor(
115115
private fallbackOverride: Record<string, unknown> | undefined,
116+
private forcedValues: Record<string, unknown> | undefined,
116117
private databaseFactories: DatabaseFactories = {},
117118
@IUserDataProfileService userDataProfileService: IUserDataProfileService,
118119
@ILogService logService: ILogService,
@@ -124,9 +125,12 @@ class InjectedBrowserStorageService extends BrowserStorageService {
124125
override get(key: string, scope: StorageScope, fallbackValue: string): string
125126
override get(key: string, scope: StorageScope): string | undefined
126127
override get(key: string, scope: StorageScope, fallbackValue?: string): string | undefined {
127-
return this.getStorage(scope)?.get(
128-
key,
129-
(this.fallbackOverride?.[key] as string | undefined) ?? fallbackValue
128+
return (
129+
(this.forcedValues?.[key] as string | undefined) ??
130+
this.getStorage(scope)?.get(
131+
key,
132+
(this.fallbackOverride?.[key] as string | undefined) ?? fallbackValue
133+
)
130134
)
131135
}
132136

@@ -137,27 +141,36 @@ class InjectedBrowserStorageService extends BrowserStorageService {
137141
scope: StorageScope,
138142
fallbackValue?: boolean
139143
): boolean | undefined {
140-
return this.getStorage(scope)?.getBoolean(
141-
key,
142-
(this.fallbackOverride?.[key] as boolean | undefined) ?? fallbackValue
144+
return (
145+
(this.forcedValues?.[key] as boolean | undefined) ??
146+
this.getStorage(scope)?.getBoolean(
147+
key,
148+
(this.fallbackOverride?.[key] as boolean | undefined) ?? fallbackValue
149+
)
143150
)
144151
}
145152

146153
override getNumber(key: string, scope: StorageScope, fallbackValue: number): number
147154
override getNumber(key: string, scope: StorageScope): number | undefined
148155
override getNumber(key: string, scope: StorageScope, fallbackValue?: number): number | undefined {
149-
return this.getStorage(scope)?.getNumber(
150-
key,
151-
(this.fallbackOverride?.[key] as number | undefined) ?? fallbackValue
156+
return (
157+
(this.forcedValues?.[key] as number | undefined) ??
158+
this.getStorage(scope)?.getNumber(
159+
key,
160+
(this.fallbackOverride?.[key] as number | undefined) ?? fallbackValue
161+
)
152162
)
153163
}
154164

155165
override getObject(key: string, scope: StorageScope, fallbackValue: object): object
156166
override getObject(key: string, scope: StorageScope): object | undefined
157167
override getObject(key: string, scope: StorageScope, fallbackValue?: object): object | undefined {
158-
return this.getStorage(scope)?.getObject(
159-
key,
160-
(this.fallbackOverride?.[key] as object | undefined) ?? fallbackValue
168+
return (
169+
(this.forcedValues?.[key] as object | undefined) ??
170+
this.getStorage(scope)?.getObject(
171+
key,
172+
(this.fallbackOverride?.[key] as object | undefined) ?? fallbackValue
173+
)
161174
)
162175
}
163176

@@ -198,6 +211,11 @@ interface StorageServiceParameters {
198211
*/
199212
fallbackOverride?: Record<string, unknown>
200213

214+
/**
215+
* Allows to force the value of some keys
216+
*/
217+
forcedValues?: Record<string, unknown>
218+
201219
/**
202220
* Allow to override the storage database for a specific scope (application, profile, workspace)
203221
*/
@@ -206,12 +224,13 @@ interface StorageServiceParameters {
206224

207225
export default function getStorageServiceOverride({
208226
fallbackOverride,
227+
forcedValues,
209228
databaseFactories
210229
}: StorageServiceParameters = {}): IEditorOverrideServices {
211230
return {
212231
[IStorageService.toString()]: new SyncDescriptor(
213232
InjectedBrowserStorageService,
214-
[fallbackOverride, databaseFactories],
233+
[fallbackOverride, forcedValues, databaseFactories],
215234
true
216235
),
217236
[IExtensionStorageService.toString()]: new SyncDescriptor(ExtensionStorageService, [], true)

0 commit comments

Comments
 (0)