diff --git a/core/src/main/java/net/ivpn/core/v2/serverlist/all/AllServersRecyclerViewAdapter.kt b/core/src/main/java/net/ivpn/core/v2/serverlist/all/AllServersRecyclerViewAdapter.kt index 277ef6d8..31b064d1 100644 --- a/core/src/main/java/net/ivpn/core/v2/serverlist/all/AllServersRecyclerViewAdapter.kt +++ b/core/src/main/java/net/ivpn/core/v2/serverlist/all/AllServersRecyclerViewAdapter.kt @@ -66,6 +66,7 @@ class AllServersRecyclerViewAdapter( private var bindings = HashMap() private var searchBinding: SearchItemBinding? = null + private var allServers = arrayListOf() private var servers = arrayListOf() private var filteredServers = arrayListOf() private var displayServers = arrayListOf() @@ -226,14 +227,19 @@ class AllServersRecyclerViewAdapter( } private fun setServers(servers: ArrayList) { - this.servers = servers + this.allServers = servers + this.servers = if (forbiddenServer != null) { + ArrayList(servers.filter { it != forbiddenServer }) + } else { + servers + } setDistances() setLatencies() searchBinding?.search?.let { searchFilter.filter(it.query) } ?: run { - filteredServers = servers + filteredServers = this.servers if (pings.isNullOrEmpty() && filter == Filters.LATENCY) { Handler(Looper.getMainLooper()).postDelayed({ applyFilter() @@ -268,7 +274,12 @@ class AllServersRecyclerViewAdapter( } override fun setForbiddenServer(server: Server?) { - forbiddenServer = server + if (forbiddenServer != server) { + forbiddenServer = server + if (allServers.isNotEmpty()) { + setServers(ArrayList(allServers)) + } + } } private fun getPositionFor(server: Server): Int {