Skip to content

Commit b4f2b3a

Browse files
committed
Add possibility edit user agent string in UI and save it to database
1 parent 4de8574 commit b4f2b3a

7 files changed

Lines changed: 50 additions & 1 deletion

File tree

app/src/main/java/at/bitfire/icsdroid/db/AppDatabase.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import javax.inject.Singleton
2929
@TypeConverters(Converters::class)
3030
@Database(
3131
entities = [Subscription::class, Credential::class],
32-
version = 4,
32+
version = 5,
3333
autoMigrations = [
3434
AutoMigration (
3535
from = 1,
@@ -42,6 +42,10 @@ import javax.inject.Singleton
4242
AutoMigration (
4343
from = 3,
4444
to = 4
45+
),
46+
AutoMigration (
47+
from = 4,
48+
to = 5
4549
)
4650
]
4751
)

app/src/main/java/at/bitfire/icsdroid/model/EditSubscriptionModel.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ class EditSubscriptionModel @AssistedInject constructor(
105105
setUrl(subscription.url.toString())
106106
setTitle(subscription.displayName)
107107
setColor(subscription.color)
108+
// setCustomUserAgent(subscription.customUserAgent)
108109
setIgnoreAlerts(subscription.ignoreEmbeddedAlerts)
109110
setDefaultAlarmMinutes(subscription.defaultAlarmMinutes?.toString())
110111
setDefaultAllDayAlarmMinutes(subscription.defaultAllDayAlarmMinutes?.toString())
@@ -134,6 +135,7 @@ class EditSubscriptionModel @AssistedInject constructor(
134135
val newSubscription = subscription.copy(
135136
displayName = title ?: subscription.displayName,
136137
color = color,
138+
// customUserAgent = customUserAgent,
137139
defaultAlarmMinutes = defaultAlarmMinutes,
138140
defaultAllDayAlarmMinutes = defaultAllDayAlarmMinutes,
139141
ignoreEmbeddedAlerts = ignoreAlerts,

app/src/main/java/at/bitfire/icsdroid/model/SubscriptionSettingsUseCase.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class SubscriptionSettingsUseCase @Inject constructor() {
1919
val urlError: String? = null,
2020
val title: String? = null,
2121
val color: Int? = null,
22+
val customUserAgent: String? = null,
2223
val ignoreAlerts: Boolean = false,
2324
val defaultAlarmMinutes: Long? = null,
2425
val defaultAllDayAlarmMinutes: Long? = null,
@@ -67,6 +68,9 @@ class SubscriptionSettingsUseCase @Inject constructor() {
6768
uiState = uiState.copy(color = value)
6869
}
6970

71+
fun setCustomUserAgent(value: String?) {
72+
uiState = uiState.copy(customUserAgent = value)
73+
}
7074
fun setIgnoreAlerts(value: Boolean) {
7175
uiState = uiState.copy(ignoreAlerts = value)
7276
}
@@ -87,6 +91,7 @@ class SubscriptionSettingsUseCase @Inject constructor() {
8791
uiState.url == subscription.url.toString()
8892
&& uiState.title == subscription.displayName
8993
&& uiState.color == subscription.color
94+
// && uiState.customUserAgent == subscription.customUserAgent
9095
&& uiState.ignoreAlerts == subscription.ignoreEmbeddedAlerts
9196
&& uiState.defaultAlarmMinutes == subscription.defaultAlarmMinutes
9297
&& uiState.defaultAllDayAlarmMinutes == subscription.defaultAllDayAlarmMinutes

app/src/main/java/at/bitfire/icsdroid/ui/screen/AddSubscriptionScreen.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,8 @@ fun AddSubscriptionScreen(
188188
onTitleChange = ::setTitle,
189189
color = uiState.color,
190190
onColorChange = ::setColor,
191+
customUserAgent = uiState.customUserAgent,
192+
onCustomUserAgentChange = ::setCustomUserAgent,
191193
ignoreAlerts = uiState.ignoreAlerts,
192194
onIgnoreAlertsChange = ::setIgnoreAlerts,
193195
defaultAlarmMinutes = uiState.defaultAlarmMinutes,
@@ -261,6 +263,8 @@ fun AddSubscriptionScreen(
261263
onTitleChange: (String) -> Unit,
262264
color: Int?,
263265
onColorChange: (Int) -> Unit,
266+
customUserAgent: String?,
267+
onCustomUserAgentChange: (String) -> Unit,
264268
ignoreAlerts: Boolean,
265269
onIgnoreAlertsChange: (Boolean) -> Unit,
266270
defaultAlarmMinutes: Long?,
@@ -320,6 +324,8 @@ fun AddSubscriptionScreen(
320324
titleChanged = onTitleChange,
321325
color = color,
322326
colorChanged = onColorChange,
327+
customUserAgent = customUserAgent,
328+
customUserAgentChanged = onCustomUserAgentChange,
323329
ignoreAlerts = ignoreAlerts,
324330
ignoreAlertsChanged = onIgnoreAlertsChange,
325331
defaultAlarmMinutes = defaultAlarmMinutes,

app/src/main/java/at/bitfire/icsdroid/ui/screen/EditSubscriptionScreen.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ fun EditSubscriptionScreen(
7474
titleChanged = ::setTitle,
7575
color = uiState.color,
7676
colorChanged = ::setColor,
77+
customUserAgent = uiState.customUserAgent,
78+
customUserAgentChanged = ::setCustomUserAgent,
7779
ignoreAlerts = uiState.ignoreAlerts,
7880
ignoreAlertsChanged = ::setIgnoreAlerts,
7981
defaultAlarmMinutes = uiState.defaultAlarmMinutes,
@@ -110,6 +112,8 @@ fun EditSubscriptionScreen(
110112
titleChanged: (String) -> Unit,
111113
color: Int?,
112114
colorChanged: (Int) -> Unit,
115+
customUserAgent: String?,
116+
customUserAgentChanged: (String) -> Unit,
113117
ignoreAlerts: Boolean,
114118
ignoreAlertsChanged: (Boolean) -> Unit,
115119
defaultAlarmMinutes: Long?,
@@ -157,6 +161,8 @@ fun EditSubscriptionScreen(
157161
titleChanged = titleChanged,
158162
color = color,
159163
colorChanged = colorChanged,
164+
customUserAgent = customUserAgent,
165+
customUserAgentChanged = customUserAgentChanged,
160166
ignoreAlerts = ignoreAlerts,
161167
ignoreAlertsChanged = ignoreAlertsChanged,
162168
defaultAlarmMinutes = defaultAlarmMinutes,
@@ -275,6 +281,8 @@ fun EditSubscriptionScreen_Preview() {
275281
titleChanged = {},
276282
color = 0,
277283
colorChanged = {},
284+
customUserAgent = "customUserAgent",
285+
customUserAgentChanged = {},
278286
ignoreAlerts = true,
279287
ignoreAlertsChanged = {},
280288
defaultAlarmMinutes = 20L,

app/src/main/java/at/bitfire/icsdroid/ui/views/SubscriptionSettingsComposable.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ fun SubscriptionSettingsComposable(
4545
titleChanged: (String) -> Unit,
4646
color: Int?,
4747
colorChanged: (Int) -> Unit,
48+
customUserAgent: String?,
49+
customUserAgentChanged: (String) -> Unit,
4850
ignoreAlerts: Boolean,
4951
ignoreAlertsChanged: (Boolean) -> Unit,
5052
defaultAlarmMinutes: Long?,
@@ -189,6 +191,24 @@ fun SubscriptionSettingsComposable(
189191
checked = ignoreDescription,
190192
onCheckedChange = onIgnoreDescriptionChanged
191193
)
194+
195+
// Custom User Agent
196+
Text(
197+
text = stringResource(R.string.add_calendar_custom_user_agent_title),
198+
style = MaterialTheme.typography.bodyLarge,
199+
)
200+
Text(
201+
text = stringResource(R.string.add_calendar_custom_user_agent_description),
202+
color = Color.Gray,
203+
style = MaterialTheme.typography.bodyMedium,
204+
)
205+
OutlinedTextField(
206+
value = customUserAgent ?: "",
207+
onValueChange = customUserAgentChanged,
208+
label = { Text(stringResource(R.string.add_calendar_custom_user_agent_title)) },
209+
modifier = Modifier.fillMaxWidth(),
210+
enabled = !isCreating
211+
)
192212
}
193213
}
194214

@@ -202,6 +222,8 @@ fun SubscriptionSettingsComposable_Preview() {
202222
titleChanged = {},
203223
color = 0,
204224
colorChanged = {},
225+
customUserAgent = "customUserAgent",
226+
customUserAgentChanged = {},
205227
ignoreAlerts = true,
206228
ignoreAlertsChanged = {},
207229
defaultAlarmMinutes = 20L,

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@
8888
<string name="add_calendar_advanced_title">Advanced</string>
8989
<string name="add_calendar_description_title">Ignore DESCRIPTION field</string>
9090
<string name="add_calendar_description_summary">If enabled, the DESCRIPTION field will be removed from events. Helpful if it contains spammy information.</string>
91+
<string name="add_calendar_custom_user_agent_title">Custom User Agent</string>
92+
<string name="add_calendar_custom_user_agent_description">This will override the default user agent</string>
9193

9294
<!-- AlertFragment -->
9395
<string name="alert_share_details">Share details</string>

0 commit comments

Comments
 (0)