This is an automated email from the ASF dual-hosted git repository.

Harbs pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new b77436f703 Routing supports replaceState
b77436f703 is described below

commit b77436f70318a6494762e5039d8e9e660c59599c
Author: Harbs <[email protected]>
AuthorDate: Sun Jun 21 15:52:25 2026 +0300

    Routing supports replaceState
---
 .../org/apache/royale/routing/BrowserRouter.as     | 20 +++++++++++++++++++-
 .../royale/org/apache/royale/routing/HashRouter.as | 20 +++++++++++++++++++-
 .../royale/org/apache/royale/routing/IRouter.as    |  1 +
 .../royale/org/apache/royale/routing/Router.as     | 22 ++++++++++++++++++++--
 4 files changed, 59 insertions(+), 4 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/BrowserRouter.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/BrowserRouter.as
index 408491b15f..91d5327801 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/BrowserRouter.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/BrowserRouter.as
@@ -189,6 +189,22 @@ package org.apache.royale.routing
                 *  @productversion Royale 0.9.8
                 */
                public function setState():void
+               {
+                 commitState(false);
+               }
+               /**
+                * Replaces the current state in the browsing history
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 1.0.0
+                */
+               public function replaceState():void
+               {
+                 commitState(true);
+               }
+
+               private function commitState(replace:Boolean):void
                {
                  COMPILE::JS
                  {
@@ -200,7 +216,9 @@ package org.apache.royale.routing
                        if(!ev.defaultPrevented)
                        {
                          path += ev.value;
-                         
window.history.pushState(stateEv.value,_routeState.title,path);
+                         replace ?
+                                       
window.history.replaceState(stateEv.value,_routeState.title,path):
+                                       
window.history.pushState(stateEv.value,_routeState.title,path);
                          sendStrandEvent(this,"stateSet");
                        }
                  }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/HashRouter.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/HashRouter.as
index 8f183da004..188e5918dd 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/HashRouter.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/HashRouter.as
@@ -200,6 +200,22 @@ package org.apache.royale.routing
                 *  @productversion Royale 0.9.8
                 */
                public function setState():void
+               {
+                 commitState(false);
+               }
+               /**
+                * Replaces the current state in the browsing history
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 1.0.0
+                */
+               public function replaceState():void
+               {
+                 commitState(true);
+               }
+
+               private function commitState(replace:Boolean):void
                {
                  COMPILE::JS
                  {
@@ -211,7 +227,9 @@ package org.apache.royale.routing
                        if(!ev.defaultPrevented)
                        {
                          hash += ev.value;
-                         
window.history.pushState(stateEv.value,_routeState.title,hash);
+                         replace ?
+                                       
window.history.replaceState(stateEv.value,_routeState.title,hash):
+                                       
window.history.pushState(stateEv.value,_routeState.title,hash);
                          sendStrandEvent(this,"stateSet");
                        }
                  }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/IRouter.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/IRouter.as
index 2898431b65..f275d25ba6 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/IRouter.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/IRouter.as
@@ -26,5 +26,6 @@ package org.apache.royale.routing
     function set routeState(state:RouteState):void;
     function get host():IStrand;
     function setState():void;
+    function replaceState():void;
   }
 }
\ No newline at end of file
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/Router.as 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/Router.as
index 4c0205f9d0..32b52d2b37 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/Router.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/routing/Router.as
@@ -167,6 +167,22 @@ package org.apache.royale.routing
                 *  @productversion Royale 0.9.7
                 */
                public function setState():void
+               {
+                 commitState(false);
+               }
+               /**
+                * Replaces the current state in the browsing history
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.7
+                */
+               public function replaceState():void
+               {
+                 commitState(true);
+               }
+
+               private function commitState(replace:Boolean):void
                {
                  COMPILE::JS
                  {
@@ -178,8 +194,10 @@ package org.apache.royale.routing
                        if(!ev.defaultPrevented)
                        {
                          hash += ev.value;
-                         
window.history.pushState(stateEv.value,_routeState.title,hash);
-                         sendStrandEvent(this,"stateSet");
+                         replace ?
+                                       
window.history.replaceState(stateEv.value,_routeState.title,hash):
+                                       
window.history.pushState(stateEv.value,_routeState.title,hash);
+                               sendStrandEvent(this,"stateSet");
                        }
                  }
                }

Reply via email to