Merge branch 'main' into avm99963-monorail
Merged commit 4137ed7879acadbf891e8c471108acb874dae886.
GitOrigin-RevId: b6100ffc5b1da355a35f37b13fcaaf746ee8b307
diff --git a/static_src/elements/framework/links/mr-user-link/mr-user-link.js b/static_src/elements/framework/links/mr-user-link/mr-user-link.js
index c009f89..8e5be27 100644
--- a/static_src/elements/framework/links/mr-user-link/mr-user-link.js
+++ b/static_src/elements/framework/links/mr-user-link/mr-user-link.js
@@ -91,7 +91,7 @@
rel="stylesheet">
<i
id="availability-icon"
- class="material-icons inline-icon ${user.last_visit_timestamp ? "" : "inline-icon-unseen"}"
+ class=${"material-icons inline-icon ${user.last_visit_timestamp ? '': 'inline-icon-unseen'}"}
title="${availability}"
?hidden="${!(this.showAvailabilityIcon && availability)}"
>schedule</i>
diff --git a/static_src/elements/framework/links/mr-user-link/mr-user-link.test.js b/static_src/elements/framework/links/mr-user-link/mr-user-link.test.js
index 77af246..ec84074 100644
--- a/static_src/elements/framework/links/mr-user-link/mr-user-link.test.js
+++ b/static_src/elements/framework/links/mr-user-link/mr-user-link.test.js
@@ -139,7 +139,7 @@
await element.updateComplete;
getElements();
- assert.isTrue(availabilityIcon.classList.contains("inline-icon-unseen"));
+ assert.isFalse(availabilityIcon.classList.contains("inline-icon-unseen"));
});
it('show availability user visited', async () => {
diff --git a/static_src/elements/framework/mr-header/mr-header.js b/static_src/elements/framework/mr-header/mr-header.js
index be6afad..5b9defa 100644
--- a/static_src/elements/framework/mr-header/mr-header.js
+++ b/static_src/elements/framework/mr-header/mr-header.js
@@ -341,12 +341,7 @@
return `/p/${this.projectName}/issues/entry`;
}
- const token = prpcClient.token;
-
- const customUrl = this.presentationConfig.customIssueEntryUrl;
-
- return `${customUrl}?token=${token}&role=${
- role}&continue=${this._wizardPostUrl}`;
+ return `/p/${this.projectName}/issues/wizard`;
}
/**
diff --git a/static_src/elements/framework/mr-header/mr-header.test.js b/static_src/elements/framework/mr-header/mr-header.test.js
index 277347f..e290584 100644
--- a/static_src/elements/framework/mr-header/mr-header.test.js
+++ b/static_src/elements/framework/mr-header/mr-header.test.js
@@ -84,9 +84,7 @@
element.presentationConfig = {customIssueEntryUrl: 'https://issue.wizard'};
element.userProjects = {ownerOf: ['not-proj']};
element.userDisplayName = 'test@example.com';
- assert.equal(element.issueEntryUrl,
- 'https://issue.wizard?token=token1&role=&' +
- 'continue=http://localhost/p/proj/issues/entry.do');
+ assert.equal(element.issueEntryUrl, '/p/proj/issues/wizard');
});
it('uses default issue filing URL when user is not logged in', () => {
diff --git a/static_src/elements/issue-detail/dialogs/mr-edit-description/mr-edit-description.js b/static_src/elements/issue-detail/dialogs/mr-edit-description/mr-edit-description.js
index 2a34b8f..0bee4d8 100644
--- a/static_src/elements/issue-detail/dialogs/mr-edit-description/mr-edit-description.js
+++ b/static_src/elements/issue-detail/dialogs/mr-edit-description/mr-edit-description.js
@@ -80,6 +80,7 @@
id="description"
class="content"
@keyup=${this._setEditedDescription}
+ @beforeinput=${this._setEditedDescription}
@change=${this._setEditedDescription}
.value=${this._editedDescription}
></textarea>
diff --git a/static_src/elements/mr-app/mr-app.js b/static_src/elements/mr-app/mr-app.js
index c91511f..8fe3dad 100644
--- a/static_src/elements/mr-app/mr-app.js
+++ b/static_src/elements/mr-app/mr-app.js
@@ -30,6 +30,7 @@
import {SHARED_STYLES} from 'shared/shared-styles.js';
const QUERY_PARAMS_THAT_RESET_SCROLL = ['q', 'mode', 'id'];
+const GOOGLE_EMAIL_SUFFIX = '@google.com';
/**
* `<mr-app>`
@@ -256,6 +257,8 @@
connectedCallback() {
super.connectedCallback();
+ this._logGooglerUsage();
+
// TODO(zhangtiff): Figure out some way to save Redux state between
// page loads.
@@ -311,6 +314,21 @@
}
/**
+ * Helper to log how often Googlers access Monorail.
+ */
+ _logGooglerUsage() {
+ const email = this.userDisplayName;
+ if (!email) return;
+ if (!email.endsWith(GOOGLE_EMAIL_SUFFIX)) return;
+
+ const username = email.replace(GOOGLE_EMAIL_SUFFIX, '');
+
+ // Context: b/229758140
+ window.fetch(`https://buganizer.corp.google.com/action/yes?monorail=yes&username=${username}`,
+ {mode: 'no-cors'});
+ }
+
+ /**
* Handler that runs on every single route change, before the new page has
* loaded. This function should not use store.dispatch() or assign properties
* on this because running these actions causes extra re-renders to happen.
@@ -513,7 +531,7 @@
const mount = document.getElementById('reactMount');
- renderWizard(mount);
+ renderWizard(mount, this.loginUrl, this.userDisplayName);
}
/**