Migrate to DI for AccountsModel Release-Notes: skip Change-Id: I0aff0df472f4c4f696002f294f7f83b0d061c343
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.ts b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.ts index ba3e62f..ec5760b 100644 --- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.ts +++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.ts
@@ -132,6 +132,7 @@ import {Key, Modifier, whenVisible} from '../../../utils/dom-util'; import {GrThreadList} from '../gr-thread-list/gr-thread-list'; import {userModelToken} from '../../../models/user/user-model'; +import {accountsModelToken} from '../../../models/accounts-model/accounts-model'; export enum FocusTarget { ANY = 'any', @@ -395,7 +396,7 @@ private readonly getConfigModel = resolve(this, configModelToken); - private readonly accountsModel = getAppContext().accountsModel; + private readonly getAccountsModel = resolve(this, accountsModelToken); private readonly getUserModel = resolve(this, userModelToken); @@ -1419,7 +1420,9 @@ const newAttentionSetUsers = ( await Promise.all( - newAttentionSetAdditions.map(a => this.accountsModel.fillDetails(a)) + newAttentionSetAdditions.map(a => + this.getAccountsModel().fillDetails(a) + ) ) ).filter(isDefined);
diff --git a/polygerrit-ui/app/elements/shared/gr-account-label/gr-account-label.ts b/polygerrit-ui/app/elements/shared/gr-account-label/gr-account-label.ts index aa5fd58e..bb0200a 100644 --- a/polygerrit-ui/app/elements/shared/gr-account-label/gr-account-label.ts +++ b/polygerrit-ui/app/elements/shared/gr-account-label/gr-account-label.ts
@@ -22,6 +22,8 @@ import {getRemovedByIconClickReason} from '../../../utils/attention-set-util'; import {ifDefined} from 'lit/directives/if-defined.js'; import {createSearchUrl} from '../../../models/views/search'; +import {accountsModelToken} from '../../../models/accounts-model/accounts-model'; +import {resolve} from '../../../models/dependency'; @customElement('gr-account-label') export class GrAccountLabel extends LitElement { @@ -97,7 +99,7 @@ private readonly restApiService = getAppContext().restApiService; - private readonly accountsModel = getAppContext().accountsModel; + private readonly getAccountsModel = resolve(this, accountsModelToken); static override get styles() { return [ @@ -190,7 +192,7 @@ override async updated() { assertIsDefined(this.account, 'account'); - const account = await this.accountsModel.fillDetails(this.account); + const account = await this.getAccountsModel().fillDetails(this.account); if (account) this.account = account; }
diff --git a/polygerrit-ui/app/embed/gr-diff-app-context-init.ts b/polygerrit-ui/app/embed/gr-diff-app-context-init.ts index 9f54347..c99dd2b 100644 --- a/polygerrit-ui/app/embed/gr-diff-app-context-init.ts +++ b/polygerrit-ui/app/embed/gr-diff-app-context-init.ts
@@ -69,9 +69,6 @@ storageService: (_ctx: Partial<AppContext>) => { throw new Error('storageService is not implemented'); }, - accountsModel: (_ctx: Partial<AppContext>) => { - throw new Error('accountsModel is not implemented'); - }, pluginsModel: (_ctx: Partial<AppContext>) => { throw new Error('pluginsModel is not implemented'); },
diff --git a/polygerrit-ui/app/models/comments/comments-model_test.ts b/polygerrit-ui/app/models/comments/comments-model_test.ts index a3b3219..4db5d57 100644 --- a/polygerrit-ui/app/models/comments/comments-model_test.ts +++ b/polygerrit-ui/app/models/comments/comments-model_test.ts
@@ -28,6 +28,7 @@ import {changeModelToken} from '../change/change-model'; import {assert} from '@open-wc/testing'; import {testResolver} from '../../test/common-test-setup'; +import {accountsModelToken} from '../accounts-model/accounts-model'; suite('comments model tests', () => { test('updateStateDeleteDraft', () => { @@ -71,7 +72,7 @@ const model = new CommentsModel( testResolver(routerModelToken), testResolver(changeModelToken), - getAppContext().accountsModel, + testResolver(accountsModelToken), getAppContext().restApiService, getAppContext().reportingService ); @@ -132,7 +133,7 @@ const model = new CommentsModel( testResolver(routerModelToken), testResolver(changeModelToken), - getAppContext().accountsModel, + testResolver(accountsModelToken), getAppContext().restApiService, getAppContext().reportingService ); @@ -160,7 +161,7 @@ const model = new CommentsModel( testResolver(routerModelToken), testResolver(changeModelToken), - getAppContext().accountsModel, + testResolver(accountsModelToken), getAppContext().restApiService, getAppContext().reportingService );
diff --git a/polygerrit-ui/app/services/app-context-init.ts b/polygerrit-ui/app/services/app-context-init.ts index 1115f11..338dfb3 100644 --- a/polygerrit-ui/app/services/app-context-init.ts +++ b/polygerrit-ui/app/services/app-context-init.ts
@@ -31,7 +31,10 @@ import {BrowserModel, browserModelToken} from '../models/browser/browser-model'; import {PluginsModel} from '../models/plugins/plugins-model'; import {HighlightService} from './highlight/highlight-service'; -import {AccountsModel} from '../models/accounts-model/accounts-model'; +import { + AccountsModel, + accountsModelToken, +} from '../models/accounts-model/accounts-model'; import { DashboardViewModel, dashboardViewModelToken, @@ -86,10 +89,6 @@ return new GrJsApiInterface(reportingService); }, storageService: (_ctx: Partial<AppContext>) => new GrStorageService(), - accountsModel: (ctx: Partial<AppContext>) => { - assertIsDefined(ctx.restApiService, 'restApiService'); - return new AccountsModel(ctx.restApiService); - }, pluginsModel: (_ctx: Partial<AppContext>) => new PluginsModel(), highlightService: (ctx: Partial<AppContext>) => { assertIsDefined(ctx.reportingService, 'reportingService'); @@ -118,6 +117,10 @@ const browserModelCreator = () => new BrowserModel(resolver(userModelToken)); dependencies.set(browserModelToken, browserModelCreator); + const accountsModelCreator = () => + new AccountsModel(appContext.restApiService); + dependencies.set(accountsModelToken, accountsModelCreator); + const adminViewModelCreator = () => new AdminViewModel(); dependencies.set(adminViewModelToken, adminViewModelCreator); const agreementViewModelCreator = () => new AgreementViewModel(); @@ -181,7 +184,7 @@ new CommentsModel( resolver(routerModelToken), resolver(changeModelToken), - appContext.accountsModel, + resolver(accountsModelToken), appContext.restApiService, appContext.reportingService );
diff --git a/polygerrit-ui/app/services/app-context.ts b/polygerrit-ui/app/services/app-context.ts index 5394ee4..1e9f69d 100644 --- a/polygerrit-ui/app/services/app-context.ts +++ b/polygerrit-ui/app/services/app-context.ts
@@ -13,7 +13,6 @@ import {StorageService} from './storage/gr-storage'; import {PluginsModel} from '../models/plugins/plugins-model'; import {HighlightService} from './highlight/highlight-service'; -import {AccountsModel} from '../models/accounts-model/accounts-model'; export interface AppContext { flagsService: FlagsService; @@ -23,7 +22,6 @@ restApiService: RestApiService; jsApiService: JsApiService; storageService: StorageService; - accountsModel: AccountsModel; pluginsModel: PluginsModel; highlightService: HighlightService; }
diff --git a/polygerrit-ui/app/test/test-app-context-init.ts b/polygerrit-ui/app/test/test-app-context-init.ts index f0c9ba8..05844f6 100644 --- a/polygerrit-ui/app/test/test-app-context-init.ts +++ b/polygerrit-ui/app/test/test-app-context-init.ts
@@ -17,7 +17,6 @@ import {GrJsApiInterface} from '../elements/shared/gr-js-api-interface/gr-js-api-interface-element'; import {PluginsModel} from '../models/plugins/plugins-model'; import {MockHighlightService} from '../services/highlight/highlight-service-mock'; -import {AccountsModel} from '../models/accounts-model/accounts-model'; import {createAppDependencies, Creator} from '../services/app-context-init'; import {navigationToken} from '../elements/core/gr-navigation/gr-navigation'; import {DependencyToken} from '../models/dependency'; @@ -38,10 +37,6 @@ return new GrJsApiInterface(ctx.reportingService); }, storageService: (_ctx: Partial<AppContext>) => grStorageMock, - accountsModel: (ctx: Partial<AppContext>) => { - assertIsDefined(ctx.restApiService, 'restApiService'); - return new AccountsModel(ctx.restApiService); - }, pluginsModel: (_ctx: Partial<AppContext>) => new PluginsModel(), highlightService: (ctx: Partial<AppContext>) => { assertIsDefined(ctx.reportingService, 'reportingService');