fix: add a JSON-parseable field, make small data tweaks, and add commentary on JSON fields

This commit is contained in:
2025-09-16 19:54:11 -06:00
parent f31a76b816
commit 28cea8f55b
6 changed files with 28 additions and 13 deletions

View File

@@ -275,16 +275,22 @@ export const PlatformServiceMixin = {
// Convert SQLite integer booleans to JavaScript booleans
if (
// settings
column === "isRegistered" ||
column === "finishedOnboarding" ||
column === "filterFeedByVisible" ||
column === "filterFeedByNearby" ||
column === "hasBackedUpSeed" ||
column === "hideRegisterPromptOnNewContact" ||
column === "showContactGivesInline" ||
column === "showGeneralAdvanced" ||
column === "showShortcutBvc" ||
column === "warnIfProdServer" ||
column === "warnIfTestServer"
column === "warnIfTestServer" ||
// contacts
column === "iViewContent" ||
column === "registered" ||
column === "seesMe"
) {
if (value === 1) {
value = true;
@@ -294,13 +300,9 @@ export const PlatformServiceMixin = {
// Keep null values as null
}
// Handle JSON fields like contactMethods
if (column === "contactMethods" && typeof value === "string") {
try {
value = JSON.parse(value);
} catch {
value = [];
}
// Convert SQLite JSON strings to objects/arrays
if (column === "contactMethods" || column === "searchBoxes") {
value = this._parseJsonField(value, []);
}
obj[column] = value;
@@ -310,10 +312,13 @@ export const PlatformServiceMixin = {
},
/**
* Self-contained implementation of parseJsonField
* Safely parses JSON strings with fallback to default value
* Safely parses JSON strings with fallback to default value.
* Handles different SQLite implementations:
* - Web SQLite (wa-sqlite/absurd-sql): Auto-parses JSON strings to objects
* - Capacitor SQLite: Returns raw strings that need manual parsing
*
* Consolidate this with src/libs/util.ts parseJsonField
* See also src/db/databaseUtil.ts parseJsonField
* and maybe consolidate
*/
_parseJsonField<T>(value: unknown, defaultValue: T): T {
if (typeof value === "string") {