diff --git a/app/src/main/java/net/helcel/cowspent/android/main/BillsListScreen.kt b/app/src/main/java/net/helcel/cowspent/android/main/BillsListScreen.kt
index ba009ae..9180582 100644
--- a/app/src/main/java/net/helcel/cowspent/android/main/BillsListScreen.kt
+++ b/app/src/main/java/net/helcel/cowspent/android/main/BillsListScreen.kt
@@ -105,9 +105,9 @@ fun BillsListScreen(
val context = LocalContext.current
val sharedPreferences = remember { PreferenceManager.getDefaultSharedPreferences(context) }
val showArchived = sharedPreferences.getBoolean(stringResource(R.string.pref_key_show_archived), false)
- val keyBetaFeatures = stringResource(R.string.pref_key_beta_features)
- var showBetaFeatures by remember(keyBetaFeatures) {
- mutableStateOf(sharedPreferences.getBoolean(keyBetaFeatures, false))
+ val keyExtraFeatures = stringResource(R.string.pref_key_extra_features)
+ var showExtraFeatures by remember(keyExtraFeatures) {
+ mutableStateOf(sharedPreferences.getBoolean(keyExtraFeatures, false))
}
StatefulAlertDialog(
@@ -165,7 +165,7 @@ fun BillsListScreen(
projectType = proj?.type ?: ProjectType.LOCAL,
accessLevel = proj?.myAccessLevel ?: DBProject.ACCESS_LEVEL_ADMIN,
isShareable = proj?.isShareable() ?: true,
- showBetaFeatures = showBetaFeatures
+ showExtraFeatures = showExtraFeatures
)
}
}
@@ -334,7 +334,7 @@ fun BillsListScreen(
},
actions = {
if (!isSearchExpanded) {
- if (showBetaFeatures && viewModel.hasUnlabeledBills) {
+ if (showExtraFeatures && viewModel.hasUnlabeledBills) {
IconButton(onClick = onLabelBillsClick) {
Icon(
Icons.Default.Category,
diff --git a/app/src/main/java/net/helcel/cowspent/android/main/BillsListViewActivity.kt b/app/src/main/java/net/helcel/cowspent/android/main/BillsListViewActivity.kt
index 53de537..e624507 100644
--- a/app/src/main/java/net/helcel/cowspent/android/main/BillsListViewActivity.kt
+++ b/app/src/main/java/net/helcel/cowspent/android/main/BillsListViewActivity.kt
@@ -782,7 +782,7 @@ class BillsListViewActivity :
// The account and all-projects refresh belongs to opening the app, throttled by the
// SyncOnOpen interval so that resuming within the interval does not repeat it.
- val intervalMinutes = SyncSettings.intervalMinutes(applicationContext)
+ val intervalMinutes = SyncSettings.OPEN_SYNC_INTERVAL_MINUTES
val lastAccountSync = preferences.getLong(getString(R.string.pref_key_last_account_sync_timestamp), 0L)
val accountSyncDue = trigger == SyncTrigger.APP_OPEN &&
now - lastAccountSync > intervalMinutes * 60 * 1000L
@@ -866,10 +866,13 @@ class BillsListViewActivity :
projectId: Long,
now: Long
): Boolean {
- if (!preferences.getBoolean(getString(R.string.pref_key_beta_features), false)) return false
+ if (!preferences.getBoolean(getString(R.string.pref_key_extra_features), false)) return false
+ // "Always" means what it says: every manual refresh is a full sync.
+ val delayMinutes = SyncSettings.fullSyncDelayMinutes(applicationContext)
+ if (delayMinutes == 0) return false
val lastFull = preferences.getLong(lastFullSyncKey(projectId), 0L)
if (lastFull == 0L) return false
- return now - lastFull < SyncSettings.intervalMinutes(applicationContext) * 60 * 1000L
+ return now - lastFull < delayMinutes * 60 * 1000L
}
private fun markProjectSynced(preferences: SharedPreferences, projectId: Long, at: Long) {
preferences.edit { putLong(lastProjectSyncKey(projectId), at) }
diff --git a/app/src/main/java/net/helcel/cowspent/android/project/ProjectOptionsDialog.kt b/app/src/main/java/net/helcel/cowspent/android/project/ProjectOptionsDialog.kt
index 13e2cfb..96d86d1 100644
--- a/app/src/main/java/net/helcel/cowspent/android/project/ProjectOptionsDialog.kt
+++ b/app/src/main/java/net/helcel/cowspent/android/project/ProjectOptionsDialog.kt
@@ -36,7 +36,7 @@ fun ProjectOptionsDialogContent(
projectType: ProjectType = ProjectType.LOCAL,
accessLevel: Int = DBProject.ACCESS_LEVEL_ADMIN,
isShareable: Boolean = true,
- showBetaFeatures: Boolean = false
+ showExtraFeatures: Boolean = false
) {
Surface(
shape = MaterialTheme.shapes.large,
@@ -80,7 +80,7 @@ fun ProjectOptionsDialogContent(
// Row 2: Manage Member, Manage Labels, Manage Currencies
if (!isArchived && isMaintainer) {
row2.add(ProjectOption(stringResource(R.string.action_members), Icons.Default.Group, onManageMembers))
- if (showBetaFeatures && (projectType == ProjectType.LOCAL || projectType == ProjectType.COSPEND)) {
+ if (showExtraFeatures && (projectType == ProjectType.LOCAL || projectType == ProjectType.COSPEND)) {
row2.add(ProjectOption(stringResource(R.string.action_labels), Icons.AutoMirrored.Filled.Label, onManageLabels))
}
row2.add(ProjectOption(stringResource(R.string.action_currencies), Icons.Default.MonetizationOn, onManageCurrencies))
@@ -183,7 +183,7 @@ fun ProjectOptionsDialogPreview() {
projectType = ProjectType.COSPEND,
accessLevel = DBProject.ACCESS_LEVEL_ADMIN,
isShareable = true,
- showBetaFeatures = true
+ showExtraFeatures = true
)
}
}
@@ -208,7 +208,7 @@ fun ProjectOptionsDialogPreview2() {
projectType = ProjectType.COSPEND,
accessLevel = DBProject.ACCESS_LEVEL_ADMIN,
isShareable = true,
- showBetaFeatures = true
+ showExtraFeatures = true
)
}
}
@@ -232,7 +232,7 @@ fun ProjectOptionsDialogPreview3() {
projectType = ProjectType.LOCAL,
accessLevel = DBProject.ACCESS_LEVEL_ADMIN,
isShareable = true,
- showBetaFeatures = true
+ showExtraFeatures = true
)
}
}
diff --git a/app/src/main/java/net/helcel/cowspent/android/settings/SettingsScreen.kt b/app/src/main/java/net/helcel/cowspent/android/settings/SettingsScreen.kt
index b1c344c..9e7aa73 100644
--- a/app/src/main/java/net/helcel/cowspent/android/settings/SettingsScreen.kt
+++ b/app/src/main/java/net/helcel/cowspent/android/settings/SettingsScreen.kt
@@ -84,9 +84,9 @@ fun SettingsScreen(
val keyColor = stringResource(R.string.pref_key_color)
val keyOfflineMode = stringResource(R.string.pref_key_offline_mode)
val keyShowArchived = stringResource(R.string.pref_key_show_archived)
- val keyBetaFeatures = stringResource(R.string.pref_key_beta_features)
+ val keyExtraFeatures = stringResource(R.string.pref_key_extra_features)
val keyStatsIncludeDeactivated = stringResource(R.string.pref_key_stats_include_deactivated)
- val keyAutoSyncOnOpen = stringResource(R.string.pref_key_auto_sync_on_open)
+ val keyFullSyncDelay = stringResource(R.string.pref_key_full_sync_delay)
val keyFillNewBillFromLast = stringResource(R.string.pref_key_fill_new_bill_from_last)
val keyLastAccountSync = stringResource(R.string.pref_key_last_account_sync_timestamp)
@@ -128,8 +128,8 @@ fun SettingsScreen(
var showArchived by remember(keyShowArchived) {
mutableStateOf(sharedPreferences.getBoolean(keyShowArchived, false))
}
- var betaFeatures by remember(keyBetaFeatures) {
- mutableStateOf(sharedPreferences.getBoolean(keyBetaFeatures, false))
+ var extraFeatures by remember(keyExtraFeatures) {
+ mutableStateOf(sharedPreferences.getBoolean(keyExtraFeatures, false))
}
var fillNewBillFromLast by remember(keyFillNewBillFromLast) {
mutableStateOf(sharedPreferences.getBoolean(keyFillNewBillFromLast, false))
@@ -138,16 +138,16 @@ fun SettingsScreen(
mutableStateOf(sharedPreferences.getBoolean(keyStatsIncludeDeactivated, false))
}
- val syncIntervals = SyncSettings.INTERVAL_CHOICES_MINUTES
- val syncIntervalLabels = listOf(
- stringResource(R.string.pref_value_sync_1m),
- stringResource(R.string.pref_value_sync_10m),
+ val fullSyncDelays = SyncSettings.FULL_SYNC_DELAY_CHOICES_MINUTES
+ val fullSyncDelayLabels = listOf(
+ stringResource(R.string.pref_value_sync_always),
stringResource(R.string.pref_value_sync_1h),
- stringResource(R.string.pref_value_sync_1d)
+ stringResource(R.string.pref_value_sync_1d),
+ stringResource(R.string.pref_value_sync_1w)
)
-
- var syncInterval by remember(keyAutoSyncOnOpen) {
- mutableIntStateOf(SyncSettings.intervalMinutes(context))
+
+ var fullSyncDelay by remember(keyFullSyncDelay) {
+ mutableIntStateOf(SyncSettings.fullSyncDelayMinutes(context))
}
Scaffold(
@@ -173,28 +173,6 @@ fun SettingsScreen(
// Appearance
SettingsCategory(stringResource(R.string.settings_appearance))
- SettingsSwitchPreference(
- title = stringResource(R.string.settings_show_archived),
- icon = Icons.Default.Archive,
- checked = showArchived,
- onCheckedChange = {
- showArchived = it
- sharedPreferences.edit {
- putBoolean(keyShowArchived, it)
- if (!it) {
- val selectedProjectId = sharedPreferences.getLong("selected_project", 0)
- if (selectedProjectId != 0L) {
- val db = CowspentSQLiteOpenHelper.getInstance(context)
- val project = db.getProject(selectedProjectId)
- if (project?.isArchived == true) {
- putLong("selected_project", 0)
- }
- }
- }
- }
- }
- )
-
SettingsListPreference(
title = stringResource(R.string.settings_night_mode),
icon = Icons.Default.Brightness2,
@@ -283,19 +261,41 @@ fun SettingsScreen(
SettingsCategory(stringResource(R.string.settings_other))
SettingsSwitchPreference(
- title = stringResource(R.string.settings_beta_features),
- summary = stringResource(R.string.settings_beta_features_summary),
+ title = stringResource(R.string.settings_extra_features),
+ summary = stringResource(R.string.settings_extra_features_summary),
icon = Icons.Default.Info,
- checked = betaFeatures,
+ checked = extraFeatures,
onCheckedChange = {
- betaFeatures = it
+ extraFeatures = it
sharedPreferences.edit {
- putBoolean(keyBetaFeatures, it)
+ putBoolean(keyExtraFeatures, it)
}
}
)
- if (betaFeatures) {
+ if (extraFeatures) {
+ SettingsSwitchPreference(
+ title = stringResource(R.string.settings_show_archived),
+ icon = Icons.Default.Archive,
+ checked = showArchived,
+ onCheckedChange = {
+ showArchived = it
+ sharedPreferences.edit {
+ putBoolean(keyShowArchived, it)
+ if (!it) {
+ val selectedProjectId = sharedPreferences.getLong("selected_project", 0)
+ if (selectedProjectId != 0L) {
+ val db = CowspentSQLiteOpenHelper.getInstance(context)
+ val project = db.getProject(selectedProjectId)
+ if (project?.isArchived == true) {
+ putLong("selected_project", 0)
+ }
+ }
+ }
+ }
+ }
+ )
+
SettingsSwitchPreference(
title = stringResource(R.string.settings_fill_new_bill_from_last),
summary = stringResource(R.string.settings_fill_new_bill_from_last_summary),
@@ -322,18 +322,18 @@ fun SettingsScreen(
)
SettingsSliderPreference(
- title = stringResource(R.string.settings_auto_sync_on_open),
- summary = stringResource(R.string.settings_auto_sync_on_open_summary),
+ title = stringResource(R.string.settings_full_sync_delay),
+ summary = stringResource(R.string.settings_full_sync_delay_summary),
icon = Icons.Default.Sync,
- value = syncInterval,
- values = syncIntervals,
- labels = syncIntervalLabels,
- onValueChange = { newInterval ->
+ value = fullSyncDelay,
+ values = fullSyncDelays,
+ labels = fullSyncDelayLabels,
+ onValueChange = { newDelay ->
// Slider reports every drag delta, not just the snapped steps.
- if (newInterval != syncInterval) {
- syncInterval = newInterval
+ if (newDelay != fullSyncDelay) {
+ fullSyncDelay = newDelay
sharedPreferences.edit {
- putInt(keyAutoSyncOnOpen, newInterval)
+ putInt(keyFullSyncDelay, newDelay)
}
}
}
diff --git a/app/src/main/java/net/helcel/cowspent/util/SyncSettings.kt b/app/src/main/java/net/helcel/cowspent/util/SyncSettings.kt
index 25192c5..3b38863 100644
--- a/app/src/main/java/net/helcel/cowspent/util/SyncSettings.kt
+++ b/app/src/main/java/net/helcel/cowspent/util/SyncSettings.kt
@@ -5,29 +5,45 @@ import androidx.preference.PreferenceManager
import net.helcel.cowspent.R
/**
- * The SyncOnOpen preference: how often opening the app refreshes the account and every project.
+ * The two independent delays that govern syncing.
*
- * The choices and the default live here rather than in the settings screen so that the screen and
- * the sync trigger cannot disagree about what is in effect.
+ * They used to be one setting, which meant the app-open throttle and the full-sync delay could
+ * not be tuned apart even though they answer different questions. The choices and defaults live
+ * here rather than in the settings screen so the screen and the sync triggers cannot disagree
+ * about what is in effect.
*/
object SyncSettings {
- /** Steps offered by the slider, in minutes. */
- val INTERVAL_CHOICES_MINUTES = listOf(1, 10, 60, 1440)
-
- const val DEFAULT_INTERVAL_MINUTES = 10
+ /**
+ * How long opening the app waits before refreshing the account and every project again, so
+ * that resuming within the interval does not repeat the work. Not user-facing: it governs
+ * background catch-up, not anything the user asked for.
+ */
+ const val OPEN_SYNC_INTERVAL_MINUTES = 10
/**
- * The configured interval in minutes. A stored value that is not one of the offered steps —
- * from a restored backup, or a build that changed the steps — falls back to the default
- * rather than being displayed as the first step while a different value drives the sync.
+ * Steps offered for the full sync delay, in minutes. 0 means every manual refresh is a full
+ * sync; anything else lets a refresh inside the window settle for fetching just the changes.
*/
- fun intervalMinutes(context: Context): Int {
+ val FULL_SYNC_DELAY_CHOICES_MINUTES = listOf(0, 60, 1440, 10080)
+
+ /**
+ * Only consulted once Extra Features is on - with it off every pull-to-refresh is a full
+ * sync, whatever is stored here.
+ */
+ const val DEFAULT_FULL_SYNC_DELAY_MINUTES = 1440
+
+ /**
+ * The configured delay in minutes. A stored value that is not one of the offered steps - from
+ * a restored backup, or a build that changed the steps - falls back to the default rather
+ * than being displayed as one step while a different value drives the sync.
+ */
+ fun fullSyncDelayMinutes(context: Context): Int {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
val stored = prefs.getInt(
- context.getString(R.string.pref_key_auto_sync_on_open),
- DEFAULT_INTERVAL_MINUTES
+ context.getString(R.string.pref_key_full_sync_delay),
+ DEFAULT_FULL_SYNC_DELAY_MINUTES
)
- return if (stored in INTERVAL_CHOICES_MINUTES) stored else DEFAULT_INTERVAL_MINUTES
+ return if (stored in FULL_SYNC_DELAY_CHOICES_MINUTES) stored else DEFAULT_FULL_SYNC_DELAY_MINUTES
}
}
diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-af-rZA/strings.xml
+++ b/app/src/main/res/values-af-rZA/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-ar-rSA/strings.xml
+++ b/app/src/main/res/values-ar-rSA/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-ca-rES/strings.xml
+++ b/app/src/main/res/values-ca-rES/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-cs-rCZ/strings.xml
+++ b/app/src/main/res/values-cs-rCZ/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-da-rDK/strings.xml
+++ b/app/src/main/res/values-da-rDK/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml
index c3ac2ea..0a38959 100644
--- a/app/src/main/res/values-de-rDE/strings.xml
+++ b/app/src/main/res/values-de-rDE/strings.xml
@@ -138,14 +138,8 @@
Eigene Farbe
Farbauswahl
Archivierte Projekte anzeigen
- Beta-Funktionen
- Experimentelle Funktionen aktivieren. Benutzung auf eigene Gefahr.
Aus letzter Rechnung vorausfüllen
Zahler, Kategorie, Zahlungsart und Beteiligte aus der zuletzt erstellten Rechnung des Projekts übernehmen.
- Synchronisierungsintervall
- Wie oft Konto und alle Projekte beim Öffnen der App aktualisiert werden.
- 1 Minute
- 10 Minuten
1 Stunde
1 Tag
WARNUNG: \"http\" ist unsicher. Verwende \"https\".
diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-el-rGR/strings.xml
+++ b/app/src/main/res/values-el-rGR/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml
index 8cdeed3..2876e61 100644
--- a/app/src/main/res/values-es-rES/strings.xml
+++ b/app/src/main/res/values-es-rES/strings.xml
@@ -137,14 +137,8 @@
Color personalizado
Selección de color
Mostrar los proyectos archivados
- Funciones beta
- Activar las funciones experimentales. Úsalas bajo tu propia responsabilidad.
Rellenar desde la última factura
Reutilizar el pagador, la categoría, el modo y los participantes de la última factura creada en el proyecto.
- Intervalo de sincronización
- Con qué frecuencia se actualizan la cuenta y todos los proyectos al abrir la aplicación.
- 1 minuto
- 10 minutos
1 hora
1 día
ADVERTENCIA: \"http\" no es seguro. Usa \"https\".
diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-fi-rFI/strings.xml
+++ b/app/src/main/res/values-fi-rFI/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml
index d61cd7e..70ebfde 100644
--- a/app/src/main/res/values-fr-rFR/strings.xml
+++ b/app/src/main/res/values-fr-rFR/strings.xml
@@ -138,14 +138,8 @@
Couleur personnalisée
Sélection de la couleur
Afficher les projets archivés
- Fonctionnalités bêta
- Activer les fonctionnalités expérimentales. À utiliser à vos risques et périls.
Pré-remplir depuis la dernière facture
Reprendre le payeur, la catégorie, le mode et les participants de la dernière facture créée dans le projet.
- Intervalle de synchronisation
- Fréquence de rafraîchissement du compte et de tous les projets à l\'ouverture de l\'application.
- 1 minute
- 10 minutes
1 heure
1 jour
AVERTISSEMENT : \"http\" n\'est pas sûr. Utilisez \"https\".
diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-hu-rHU/strings.xml
+++ b/app/src/main/res/values-hu-rHU/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-it-rIT/strings.xml
+++ b/app/src/main/res/values-it-rIT/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-iw-rIL/strings.xml
+++ b/app/src/main/res/values-iw-rIL/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-ja-rJP/strings.xml
+++ b/app/src/main/res/values-ja-rJP/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-ko-rKR/strings.xml
+++ b/app/src/main/res/values-ko-rKR/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-nl-rNL/strings.xml
+++ b/app/src/main/res/values-nl-rNL/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-no-rNO/strings.xml
+++ b/app/src/main/res/values-no-rNO/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-pl-rPL/strings.xml
+++ b/app/src/main/res/values-pl-rPL/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-ro-rRO/strings.xml
+++ b/app/src/main/res/values-ro-rRO/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-ru-rRU/strings.xml
+++ b/app/src/main/res/values-ru-rRU/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-sr-rSP/strings.xml
+++ b/app/src/main/res/values-sr-rSP/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-sv-rSE/strings.xml
+++ b/app/src/main/res/values-sv-rSE/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-tr-rTR/strings.xml
+++ b/app/src/main/res/values-tr-rTR/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-uk-rUA/strings.xml
+++ b/app/src/main/res/values-uk-rUA/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-vi-rVN/strings.xml
+++ b/app/src/main/res/values-vi-rVN/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 0a095bd..3dd792e 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -144,14 +144,8 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
1 hour
1 day
WARNING: "http" is unsafe. Use "https".
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0b8973e..1512578 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -139,17 +139,17 @@
Custom color
Color Selection
Show archived projects
- Beta Features
- Enable experimental features. Use at your own risk.
+ Extra Features
+ Experimental and advanced settings. Use at your own risk.
Auto-fill from last bill
Pre-fill payer, category, mode and owers from the last bill created in the project.
Include deactivated members in stats
- Sync interval
- How often to refresh the account and all projects when opening the app.
- 1 minute
- 10 minutes
+ Full sync delay
+ How long a pull-to-refresh waits between two full syncs. In between, it only fetches what changed, which is much faster.
+ Always
1 hour
1 day
+ 1 week
WARNING: "http" is unsafe. Use "https".
Choose Color
@@ -170,9 +170,9 @@
colorMode
offlineMode
showArchived
- betaFeatures
+ betaFeatures
statsIncludeDeactivated
- autoSyncOnOpen
+ fullSyncDelayMinutes
lastAccountSyncTimestamp
fillNewBillFromLast
1