Skip to content

Commit 3a8d901

Browse files
committed
[webhooks] require internet access option
1 parent d5707f3 commit 3a8d901

File tree

7 files changed

+49
-8
lines changed

7 files changed

+49
-8
lines changed

app/src/main/java/me/capcom/smsgateway/modules/settings/Module.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import me.capcom.smsgateway.modules.localserver.LocalServerSettings
88
import me.capcom.smsgateway.modules.logs.LogsSettings
99
import me.capcom.smsgateway.modules.messages.MessagesSettings
1010
import me.capcom.smsgateway.modules.ping.PingSettings
11+
import me.capcom.smsgateway.modules.webhooks.WebhooksSettings
1112
import org.koin.dsl.module
1213

1314
val settingsModule = module {
@@ -43,4 +44,9 @@ val settingsModule = module {
4344
PreferencesStorage(get(), "logs")
4445
)
4546
}
47+
factory {
48+
WebhooksSettings(
49+
PreferencesStorage(get(), "webhooks")
50+
)
51+
}
4652
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package me.capcom.smsgateway.modules.webhooks
22

3+
import org.koin.core.module.dsl.singleOf
34
import org.koin.dsl.module
45

56
val webhooksModule = module {
6-
single { WebHooksService(get(), get(), get()) }
7+
singleOf(::WebHooksService)
78
}
89

910
val NAME = "webhooks"

app/src/main/java/me/capcom/smsgateway/modules/webhooks/WebHooksService.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class WebHooksService(
1919
private val webHooksDao: WebHooksDao,
2020
private val localServerSettings: LocalServerSettings,
2121
private val gatewaySettings: GatewaySettings,
22+
private val webhooksSettings: WebhooksSettings,
2223
) : KoinComponent {
2324
private val eventsReceiver by lazy { EventsReceiver() }
2425

@@ -102,7 +103,8 @@ class WebHooksService(
102103
event = event,
103104
deviceId = deviceId,
104105
payload = payload,
105-
)
106+
),
107+
webhooksSettings.internetRequired
106108
)
107109
}
108110
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package me.capcom.smsgateway.modules.webhooks
2+
3+
import me.capcom.smsgateway.modules.settings.KeyValueStorage
4+
import me.capcom.smsgateway.modules.settings.get
5+
6+
class WebhooksSettings(
7+
private val storage: KeyValueStorage,
8+
) {
9+
val internetRequired: Boolean
10+
get() = storage.get<Boolean>(INTERNET_REQUIRED) ?: true
11+
12+
companion object {
13+
const val INTERNET_REQUIRED = "internet_required"
14+
}
15+
}

app/src/main/java/me/capcom/smsgateway/modules/webhooks/workers/SendWebhookWorker.kt

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ package me.capcom.smsgateway.modules.webhooks.workers
22

33
import android.content.Context
44
import androidx.work.BackoffPolicy
5+
import androidx.work.Constraints
56
import androidx.work.CoroutineWorker
67
import androidx.work.ForegroundInfo
78
import androidx.work.ListenableWorker
9+
import androidx.work.NetworkType
810
import androidx.work.OneTimeWorkRequestBuilder
911
import androidx.work.OutOfQuotaPolicy
1012
import androidx.work.WorkManager
@@ -168,7 +170,8 @@ class SendWebhookWorker(appContext: Context, params: WorkerParameters) :
168170
fun start(
169171
context: Context,
170172
url: String,
171-
data: WebHookEventDTO
173+
data: WebHookEventDTO,
174+
internetRequired: Boolean
172175
) {
173176
val work = OneTimeWorkRequestBuilder<SendWebhookWorker>()
174177
.setInputData(
@@ -183,11 +186,15 @@ class SendWebhookWorker(appContext: Context, params: WorkerParameters) :
183186
WorkRequest.MIN_BACKOFF_MILLIS,
184187
TimeUnit.MILLISECONDS
185188
)
186-
.setConstraints(
187-
androidx.work.Constraints.Builder()
188-
.setRequiredNetworkType(androidx.work.NetworkType.CONNECTED)
189-
.build()
190-
)
189+
.apply {
190+
if (internetRequired) {
191+
setConstraints(
192+
Constraints.Builder()
193+
.setRequiredNetworkType(NetworkType.CONNECTED)
194+
.build()
195+
)
196+
}
197+
}
191198
.build()
192199

193200
WorkManager.getInstance(context)

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,6 @@
6060
<string name="logs">Logs</string>
6161
<string name="view">View</string>
6262
<string name="list_of_last_50_log_entries">List of last 50 log entries</string>
63+
<string name="webhooks">WebHooks</string>
64+
<string name="the_webhook_request_will_wait_for_an_internet_connection">The webhook request will wait for an internet connection</string>
6365
</resources>

app/src/main/res/xml/root_preferences.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@
6363
app:useSimpleSummaryProvider="true" />
6464
</PreferenceCategory>
6565

66+
<PreferenceCategory app:title="@string/webhooks">
67+
<SwitchPreference
68+
android:key="webhooks.internet_required"
69+
app:title="Require Internet connection"
70+
app:summary="@string/the_webhook_request_will_wait_for_an_internet_connection"
71+
android:defaultValue="true"/>
72+
</PreferenceCategory>
73+
6674
<PreferenceCategory
6775
android:summary="@string/online_status_at_the_cost_of_battery_life"
6876
app:title="@string/ping">

0 commit comments

Comments
 (0)