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");
}
}
}