Fallback to the default push gateway on error (#5742)

* Add more HTTP response code returning NoMatrixGateway

Fix Push notifications with Mozilla's autopush that returns 406

* Update gateway resolver tests to match new known errors

* Use default gateway on error if no gateway is recorded yet

* Update gateway resolver tests to return default gateway on error
This commit is contained in:
S1m
2026-06-04 16:19:52 +02:00
committed by GitHub
parent 0c5c2dc10b
commit 25264dd3e3
2 changed files with 5 additions and 4 deletions
@@ -29,8 +29,9 @@ class DefaultUnifiedPushGatewayUrlResolver(
): String {
return when (gatewayResult) {
is UnifiedPushGatewayResolverResult.Error -> {
// Use previous gateway if any, or the provided one
unifiedPushStore.getPushGateway(instance) ?: gatewayResult.gateway
// Use previous gateway if any, or the default one
unifiedPushStore.getPushGateway(instance)
?: defaultPushGatewayHttpUrlProvider.provide()
}
UnifiedPushGatewayResolverResult.ErrorInvalidUrl,
UnifiedPushGatewayResolverResult.NoMatrixGateway -> {
@@ -60,7 +60,7 @@ class DefaultUnifiedPushGatewayUrlResolverTest {
}
@Test
fun `resolve Error returns the url if no current url is available`() {
fun `resolve Error returns the default gateway url if no current url is available`() {
val sut = createDefaultUnifiedPushGatewayUrlResolver(
unifiedPushStore = FakeUnifiedPushStore(
getPushGatewayResult = { instance ->
@@ -73,7 +73,7 @@ class DefaultUnifiedPushGatewayUrlResolverTest {
gatewayResult = UnifiedPushGatewayResolverResult.Error("aUrl"),
instance = "instance",
)
assertThat(result).isEqualTo("aUrl")
assertThat(result).isEqualTo(FakeDefaultPushGatewayHttpUrlProvider().provide())
}
private fun createDefaultUnifiedPushGatewayUrlResolver(