fix: add a JSON-parseable field, make small data tweaks, and add commentary on JSON fields
This commit is contained in:
@@ -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") {
|
||||
|
||||
Reference in New Issue
Block a user