fix: resolve cross-platform contactMethods JSON parsing inconsistencies
- Add platform-agnostic parseJsonField utility for contactMethods handling - Update contact export functions (contactsToExportJson, contactToCsvLine) - Fix contact storage in QR scan views (ContactQRScanShowView, ContactQRScanFullView) - Ensure consistent JSON string storage across web SQLite and Capacitor SQLite - Prevents "[object Object] is not valid JSON" errors when switching platforms - Maintains compatibility between auto-parsing web SQLite and raw string Capacitor SQLite Fixes: contactMethods parsing errors in export and QR scan functionality Related: searchBoxes field had similar issue (already fixed)
This commit is contained in:
@@ -124,6 +124,7 @@ import UserNameDialog from "../components/UserNameDialog.vue";
|
||||
import { generateEndorserJwtUrlForAccount } from "../libs/endorserServer";
|
||||
import { retrieveAccountMetadata } from "../libs/util";
|
||||
import { PlatformServiceFactory } from "@/services/PlatformServiceFactory";
|
||||
import { parseJsonField } from "../db/databaseUtil";
|
||||
|
||||
interface QRScanResult {
|
||||
rawValue?: string;
|
||||
@@ -474,7 +475,7 @@ export default class ContactQRScan extends Vue {
|
||||
|
||||
// Add new contact
|
||||
// @ts-expect-error because we're just using the value to store to the DB
|
||||
contact.contactMethods = JSON.stringify(contact.contactMethods);
|
||||
contact.contactMethods = JSON.stringify(parseJsonField(contact.contactMethods, []));
|
||||
const { sql, params } = databaseUtil.generateInsertStatement(
|
||||
contact as unknown as Record<string, unknown>,
|
||||
"contacts",
|
||||
|
||||
Reference in New Issue
Block a user