mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-19 11:58:38 +00:00
fix(android): refresh scoped canvas URLs without trailing slash
This commit is contained in:
@@ -734,7 +734,7 @@ private fun parseJsonOrNull(payload: String): JsonElement? {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun replaceCanvasCapabilityInScopedHostUrl(
|
internal fun replaceCanvasCapabilityInScopedHostUrl(
|
||||||
scopedUrl: String,
|
scopedUrl: String,
|
||||||
capability: String,
|
capability: String,
|
||||||
): String? {
|
): String? {
|
||||||
@@ -742,7 +742,10 @@ private fun replaceCanvasCapabilityInScopedHostUrl(
|
|||||||
val markerStart = scopedUrl.indexOf(marker)
|
val markerStart = scopedUrl.indexOf(marker)
|
||||||
if (markerStart < 0) return null
|
if (markerStart < 0) return null
|
||||||
val capabilityStart = markerStart + marker.length
|
val capabilityStart = markerStart + marker.length
|
||||||
val capabilityEnd = scopedUrl.indexOf("/", capabilityStart)
|
val slashEnd = scopedUrl.indexOf("/", capabilityStart).takeIf { it >= 0 }
|
||||||
|
val queryEnd = scopedUrl.indexOf("?", capabilityStart).takeIf { it >= 0 }
|
||||||
|
val fragmentEnd = scopedUrl.indexOf("#", capabilityStart).takeIf { it >= 0 }
|
||||||
|
val capabilityEnd = listOfNotNull(slashEnd, queryEnd, fragmentEnd).minOrNull() ?: scopedUrl.length
|
||||||
if (capabilityEnd <= capabilityStart) return null
|
if (capabilityEnd <= capabilityStart) return null
|
||||||
return scopedUrl.substring(0, capabilityStart) + capability + scopedUrl.substring(capabilityEnd)
|
return scopedUrl.substring(0, capabilityStart) + capability + scopedUrl.substring(capabilityEnd)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,4 +22,26 @@ class GatewaySessionInvokeTimeoutTest {
|
|||||||
assertEquals(120_000L, resolveInvokeResultAckTimeoutMs(121_000L))
|
assertEquals(120_000L, resolveInvokeResultAckTimeoutMs(121_000L))
|
||||||
assertEquals(120_000L, resolveInvokeResultAckTimeoutMs(Long.MAX_VALUE))
|
assertEquals(120_000L, resolveInvokeResultAckTimeoutMs(Long.MAX_VALUE))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun replaceCanvasCapabilityInScopedHostUrl_rewritesTerminalCapabilitySegment() {
|
||||||
|
assertEquals(
|
||||||
|
"http://127.0.0.1:18789/__openclaw__/cap/new-token",
|
||||||
|
replaceCanvasCapabilityInScopedHostUrl(
|
||||||
|
"http://127.0.0.1:18789/__openclaw__/cap/old-token",
|
||||||
|
"new-token",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun replaceCanvasCapabilityInScopedHostUrl_rewritesWhenQueryAndFragmentPresent() {
|
||||||
|
assertEquals(
|
||||||
|
"http://127.0.0.1:18789/__openclaw__/cap/new-token?a=1#frag",
|
||||||
|
replaceCanvasCapabilityInScopedHostUrl(
|
||||||
|
"http://127.0.0.1:18789/__openclaw__/cap/old-token?a=1#frag",
|
||||||
|
"new-token",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user