Migrate the UserService/Model to not be a singleton
- Rename userService to userModel on appContext
- Merge user-model.ts and user-service.ts
- Rename UserService to UserModel
- Move all observables onto UserModel
- Inject UserModel in the models/services that were directly accessing
the observables
Google-Bug-Id: b/206459178, b/207628953
Change-Id: Icf4f81c877efb58e289678a7331bde7254142a58
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-mode-selector/gr-diff-mode-selector.ts b/polygerrit-ui/app/elements/diff/gr-diff-mode-selector/gr-diff-mode-selector.ts
index 0d63360..fd30c6a 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-mode-selector/gr-diff-mode-selector.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-mode-selector/gr-diff-mode-selector.ts
@@ -50,7 +50,7 @@
// Private but accessed by tests.
readonly browserModel = getAppContext().browserModel;
- private readonly userService = getAppContext().userService;
+ private readonly userModel = getAppContext().userModel;
private subscriptions: Subscription[] = [];
@@ -83,7 +83,7 @@
*/
setMode(newMode: DiffViewMode) {
if (this.saveOnChange && this.mode && this.mode !== newMode) {
- this.userService.updatePreferences({diff_view: newMode});
+ this.userModel.updatePreferences({diff_view: newMode});
}
this.mode = newMode;
let announcement;
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog_test.ts b/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog_test.ts
index 7f7f265..f469799 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog_test.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog_test.ts
@@ -19,7 +19,6 @@
import './gr-diff-preferences-dialog';
import {GrDiffPreferencesDialog} from './gr-diff-preferences-dialog';
import {createDefaultDiffPrefs} from '../../../constants/constants';
-import {updateDiffPreferences} from '../../../services/user/user-model';
import * as MockInteractions from '@polymer/iron-test-helpers/mock-interactions';
const basicFixture = fixtureFromElement('gr-diff-preferences-dialog');
@@ -37,7 +36,6 @@
line_wrapping: true,
};
element.diffPrefs = originalDiffPrefs;
- updateDiffPreferences(originalDiffPrefs);
await flush();
element.open();
await flush();
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
index c4e2488..ca89b1d 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
@@ -118,10 +118,6 @@
import {Subscription, combineLatest} from 'rxjs';
import {listen} from '../../../services/shortcuts/shortcuts-service';
import {
- preferences$,
- diffPreferences$,
-} from '../../../services/user/user-model';
-import {
diffPath$,
currentPatchNum$,
change$,
@@ -359,11 +355,12 @@
private readonly restApiService = getAppContext().restApiService;
- private readonly userService = getAppContext().userService;
+ // Private but used in tests.
+ readonly userModel = getAppContext().userModel;
private readonly changeService = getAppContext().changeService;
- // Private but used in tests
+ // Private but used in tests.
readonly browserModel = getAppContext().browserModel;
// We just want to make sure that CommentsService is instantiated.
@@ -401,12 +398,12 @@
);
this.subscriptions.push(
- preferences$.subscribe(preferences => {
+ this.userModel.preferences$.subscribe(preferences => {
this._userPrefs = preferences;
})
);
this.subscriptions.push(
- diffPreferences$.subscribe(diffPreferences => {
+ this.userModel.diffPreferences$.subscribe(diffPreferences => {
this._prefs = diffPreferences;
})
);
@@ -423,7 +420,12 @@
// properties since the method will be called anytime a property updates
// but we only want to call this on the initial load.
this.subscriptions.push(
- combineLatest(currentPatchNum$, routerView$, diffPath$, diffPreferences$)
+ combineLatest(
+ currentPatchNum$,
+ routerView$,
+ diffPath$,
+ this.userModel.diffPreferences$
+ )
.pipe(
filter(
([currentPatchNum, routerView, path, diffPrefs]) =>
@@ -784,9 +786,9 @@
_handleToggleDiffMode() {
if (!this._userPrefs) return;
if (this._userPrefs.diff_view === DiffViewMode.SIDE_BY_SIDE) {
- this.userService.updatePreferences({diff_view: DiffViewMode.UNIFIED});
+ this.userModel.updatePreferences({diff_view: DiffViewMode.UNIFIED});
} else {
- this.userService.updatePreferences({
+ this.userModel.updatePreferences({
diff_view: DiffViewMode.SIDE_BY_SIDE,
});
}
@@ -1764,7 +1766,7 @@
}
_handleReloadingDiffPreference() {
- this.userService.getDiffPreferences();
+ this.userModel.getDiffPreferences();
}
_computeCanEdit(
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
index 2367342..9076420 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
@@ -31,7 +31,6 @@
import {EditPatchSetNum} from '../../../types/common.js';
import {CursorMoveResult} from '../../../api/core.js';
import {Side} from '../../../api/diff.js';
-import {_testOnly_setState as setUserModelState, _testOnly_getState as getUserModelState} from '../../../services/user/user-model.js';
import {_testOnly_setState as setChangeModelState} from '../../../services/change/change-model.js';
import {_testOnly_setState as setCommentState} from '../../../services/comments/comments-model.js';
@@ -1199,7 +1198,7 @@
...createDefaultDiffPrefs(),
manual_review: true,
};
- setUserModelState({...getUserModelState(), diffPreferences});
+ element.userModel.setDiffPreferences(diffPreferences);
setChangeModelState({change: createChange(), diffPath: '/COMMIT_MSG'});
setRouterModelState({
@@ -1216,8 +1215,7 @@
assert.isTrue(getReviewedStub.called);
// if prefs are updated then the reviewed status should not be set again
- setUserModelState({...getUserModelState(),
- diffPreferences: createDefaultDiffPrefs()});
+ element.userModel.setDiffPreferences(createDefaultDiffPrefs());
await flush();
assert.isFalse(saveReviewedStub.called);
@@ -1237,7 +1235,7 @@
...createDefaultDiffPrefs(),
manual_review: false,
};
- setUserModelState({...getUserModelState(), diffPreferences});
+ element.userModel.setDiffPreferences(diffPreferences);
setChangeModelState({change: createChange(),
diffPath: '/COMMIT_MSG'});
@@ -1262,8 +1260,7 @@
.callsFake(() => Promise.resolve());
sinon.stub(element.$.diffHost, 'reload');
- setUserModelState({...getUserModelState(),
- diffPreferences: createDefaultDiffPrefs()});
+ element.userModel.setDiffPreferences(createDefaultDiffPrefs());
setChangeModelState({change: createChange(), diffPath: '/COMMIT_MSG'});
setRouterModelState({