forked from core/mobile_nebula
Don't reload Nebula unless config is updated (#91)
This commit is contained in:
parent
e4bbd0a31c
commit
9dd5b9cad9
|
@ -40,13 +40,19 @@ class DNUpdateWorker(ctx: Context, params: WorkerParameters) : Worker(ctx, param
|
||||||
private fun updateSite(site: Site) {
|
private fun updateSite(site: Site) {
|
||||||
try {
|
try {
|
||||||
DNUpdateLock(site).use {
|
DNUpdateLock(site).use {
|
||||||
if (updater.updateSite(site)) {
|
val res = updater.updateSite(site)
|
||||||
|
|
||||||
// Reload Nebula if this is the currently active site
|
// Reload Nebula if this is the currently active site
|
||||||
|
if (res == DNSiteUpdater.Result.CONFIG_UPDATED) {
|
||||||
Intent().also { intent ->
|
Intent().also { intent ->
|
||||||
intent.action = NebulaVpnService.ACTION_RELOAD
|
intent.action = NebulaVpnService.ACTION_RELOAD
|
||||||
intent.putExtra("id", site.id)
|
intent.putExtra("id", site.id)
|
||||||
context.sendBroadcast(intent)
|
context.sendBroadcast(intent)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the UI on any change
|
||||||
|
if (res != DNSiteUpdater.Result.NOOP) {
|
||||||
Intent().also { intent ->
|
Intent().also { intent ->
|
||||||
intent.action = MainActivity.ACTION_REFRESH_SITES
|
intent.action = MainActivity.ACTION_REFRESH_SITES
|
||||||
context.sendBroadcast(intent)
|
context.sendBroadcast(intent)
|
||||||
|
@ -77,9 +83,13 @@ class DNSiteUpdater(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val apiClient: APIClient,
|
private val apiClient: APIClient,
|
||||||
) {
|
) {
|
||||||
fun updateSite(site: Site): Boolean {
|
enum class Result {
|
||||||
|
CONFIG_UPDATED, CREDENTIALS_UPDATED, NOOP
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updateSite(site: Site): Result {
|
||||||
if (!site.managed) {
|
if (!site.managed) {
|
||||||
return false
|
return Result.NOOP
|
||||||
}
|
}
|
||||||
|
|
||||||
val credentials = site.getDNCredentials(context)
|
val credentials = site.getDNCredentials(context)
|
||||||
|
@ -97,21 +107,23 @@ class DNSiteUpdater(
|
||||||
if (!credentials.invalid) {
|
if (!credentials.invalid) {
|
||||||
site.invalidateDNCredentials(context)
|
site.invalidateDNCredentials(context)
|
||||||
Log.d(TAG, "Invalidated credentials in site ${site.name}")
|
Log.d(TAG, "Invalidated credentials in site ${site.name}")
|
||||||
|
return Result.CREDENTIALS_UPDATED
|
||||||
}
|
}
|
||||||
return true
|
return Result.NOOP
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newSite != null) {
|
if (newSite != null) {
|
||||||
newSite.save(context)
|
newSite.save(context)
|
||||||
Log.d(TAG, "Updated site ${site.id}: ${site.name}")
|
Log.d(TAG, "Updated site ${site.id}: ${site.name}")
|
||||||
return true
|
return Result.CONFIG_UPDATED
|
||||||
}
|
}
|
||||||
|
|
||||||
if (credentials.invalid) {
|
if (credentials.invalid) {
|
||||||
site.validateDNCredentials(context)
|
site.validateDNCredentials(context)
|
||||||
Log.d(TAG, "Revalidated credentials in site ${site.id}: ${site.name}")
|
Log.d(TAG, "Revalidated credentials in site ${site.id}: ${site.name}")
|
||||||
|
return Result.CREDENTIALS_UPDATED
|
||||||
}
|
}
|
||||||
|
|
||||||
return false
|
return Result.NOOP
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue