Merge branch 'stable-3.9'

* stable-3.9:
  GitHubOAuthConfigTest: Reformat the code using google-java-format
  Build github plugin against the v3.8.0-rc5 Gerrit API
  PullRequestCreateChange: Remove unused import
  Fix velocity deprecated configuration keys
  Set plugin version to 3.4.7
  Fire git ref update events for all imported refs
  PluginVelocityRuntimeProvider: Fix warning flagged by error prone
  Fix default scopes resolution

Change-Id: I3f3f559c70378003766916bbf70e8173c3c89109
diff --git a/github-plugin/src/main/ts/gr-github-oauth-progress.ts b/github-plugin/src/main/ts/gr-github-oauth-progress.ts
index 3b53d47..292e294 100644
--- a/github-plugin/src/main/ts/gr-github-oauth-progress.ts
+++ b/github-plugin/src/main/ts/gr-github-oauth-progress.ts
@@ -10,9 +10,11 @@
 
     @property() plugin!: PluginApi;
 
-    @state() authInfo?: AuthInfo
+    @state() authInfo?: AuthInfo;
 
-    @state() loggedIn?: boolean
+    @state() loggedIn?: boolean;
+
+    @state() currentNavigationPath?: string;
 
     override connectedCallback() {
         super.connectedCallback();
@@ -21,6 +23,13 @@
             restApi.getConfig().then(config => this.authInfo = config?.auth);
         }
         restApi.getLoggedIn().then(loggedIn => this.loggedIn = loggedIn);
+        document.addEventListener(
+          'nav-report',
+          // the `nav-report` event is emitted before `window.location` is updated, in order
+          // to get the current location, we need to delay `this.updateLocationPath` execution
+          // by putting it on the end of processing queue
+          () => setTimeout(() => this.updateLocationPath(), 0));
+        this.updateLocationPath();
     }
 
     static override get styles() {
@@ -50,11 +59,15 @@
 
     override render() {
         if (!this.authInfo || this.loggedIn !== false) {
-            return
+            return;
+        }
+        const loginWithRedirect = new URL(this.authInfo.login_url ?? "/", window.location.origin);
+        if (this.currentNavigationPath) {
+          loginWithRedirect.pathname = loginWithRedirect.pathname + this.currentNavigationPath;
         }
 
         return html`
-            <a class="loginButton" href=${this.authInfo.login_url} @click=${this.showModal}>
+            <a class="loginButton" href="${loginWithRedirect}" @click=${this.showModal}>
                 ${this.authInfo.login_text}
             </a>
             <dialog id="gitHubOAuthProgress">
@@ -66,6 +79,10 @@
         `
     }
 
+    private updateLocationPath() {
+        this.currentNavigationPath = window.location.pathname;
+    }
+
     private showModal() {
         setTimeout(() => this.gitHubOAuthProgress?.showModal(), 550);
     }