forked from trent_larson/crowd-funder-for-time-pwa
fix: remove the duplicate settings for user 0, remove other user-0-specific code, enhance errors
This commit is contained in:
@@ -57,7 +57,7 @@ import {
|
|||||||
KeyMetaMaybeWithPrivate,
|
KeyMetaMaybeWithPrivate,
|
||||||
} from "../interfaces/common";
|
} from "../interfaces/common";
|
||||||
import { PlanSummaryRecord } from "../interfaces/records";
|
import { PlanSummaryRecord } from "../interfaces/records";
|
||||||
import { logger } from "../utils/logger";
|
import { logger, safeStringify } from "../utils/logger";
|
||||||
import { PlatformServiceFactory } from "@/services/PlatformServiceFactory";
|
import { PlatformServiceFactory } from "@/services/PlatformServiceFactory";
|
||||||
import { APP_SERVER } from "@/constants/app";
|
import { APP_SERVER } from "@/constants/app";
|
||||||
import { SOMEONE_UNNAMED } from "@/constants/entities";
|
import { SOMEONE_UNNAMED } from "@/constants/entities";
|
||||||
@@ -685,7 +685,7 @@ export function serverMessageForUser(error: unknown): string | undefined {
|
|||||||
export function errorStringForLog(error: unknown) {
|
export function errorStringForLog(error: unknown) {
|
||||||
let stringifiedError = "" + error;
|
let stringifiedError = "" + error;
|
||||||
try {
|
try {
|
||||||
stringifiedError = JSON.stringify(error);
|
stringifiedError = safeStringify(error);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// can happen with Dexie, eg:
|
// can happen with Dexie, eg:
|
||||||
// TypeError: Converting circular structure to JSON
|
// TypeError: Converting circular structure to JSON
|
||||||
@@ -697,7 +697,7 @@ export function errorStringForLog(error: unknown) {
|
|||||||
|
|
||||||
if (error && typeof error === "object" && "response" in error) {
|
if (error && typeof error === "object" && "response" in error) {
|
||||||
const err = error as AxiosErrorResponse;
|
const err = error as AxiosErrorResponse;
|
||||||
const errorResponseText = JSON.stringify(err.response);
|
const errorResponseText = safeStringify(err.response);
|
||||||
// for some reason, error.response is not included in stringify result (eg. for 400 errors on invite redemptions)
|
// for some reason, error.response is not included in stringify result (eg. for 400 errors on invite redemptions)
|
||||||
if (!R.empty(errorResponseText) && !fullError.includes(errorResponseText)) {
|
if (!R.empty(errorResponseText) && !fullError.includes(errorResponseText)) {
|
||||||
// add error.response stuff
|
// add error.response stuff
|
||||||
@@ -707,7 +707,7 @@ export function errorStringForLog(error: unknown) {
|
|||||||
R.equals(err.config, err.response.config)
|
R.equals(err.config, err.response.config)
|
||||||
) {
|
) {
|
||||||
// but exclude "config" because it's already in there
|
// but exclude "config" because it's already in there
|
||||||
const newErrorResponseText = JSON.stringify(
|
const newErrorResponseText = safeStringify(
|
||||||
R.omit(["config"] as never[], err.response),
|
R.omit(["config"] as never[], err.response),
|
||||||
);
|
);
|
||||||
fullError +=
|
fullError +=
|
||||||
|
|||||||
@@ -988,11 +988,6 @@ export async function importFromMnemonic(
|
|||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const mne: string = mnemonic.trim().toLowerCase();
|
const mne: string = mnemonic.trim().toLowerCase();
|
||||||
|
|
||||||
// Check if this is Test User #0
|
|
||||||
const TEST_USER_0_MNEMONIC =
|
|
||||||
"rigid shrug mobile smart veteran half all pond toilet brave review universe ship congress found yard skate elite apology jar uniform subway slender luggage";
|
|
||||||
const isTestUser0 = mne === TEST_USER_0_MNEMONIC;
|
|
||||||
|
|
||||||
// Derive address and keys from mnemonic
|
// Derive address and keys from mnemonic
|
||||||
const [address, privateHex, publicHex] = deriveAddress(mne, derivationPath);
|
const [address, privateHex, publicHex] = deriveAddress(mne, derivationPath);
|
||||||
|
|
||||||
@@ -1007,90 +1002,6 @@ export async function importFromMnemonic(
|
|||||||
|
|
||||||
// Save the new identity
|
// Save the new identity
|
||||||
await saveNewIdentity(newId, mne, derivationPath);
|
await saveNewIdentity(newId, mne, derivationPath);
|
||||||
|
|
||||||
// Set up Test User #0 specific settings
|
|
||||||
if (isTestUser0) {
|
|
||||||
// Set up Test User #0 specific settings with enhanced error handling
|
|
||||||
const platformService = await getPlatformService();
|
|
||||||
|
|
||||||
try {
|
|
||||||
// First, ensure the DID-specific settings record exists
|
|
||||||
await platformService.insertNewDidIntoSettings(newId.did);
|
|
||||||
|
|
||||||
// Then update with Test User #0 specific settings
|
|
||||||
await platformService.updateDidSpecificSettings(newId.did, {
|
|
||||||
firstName: "User Zero",
|
|
||||||
isRegistered: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
// Verify the settings were saved correctly
|
|
||||||
const verificationResult = await platformService.dbQuery(
|
|
||||||
"SELECT firstName, isRegistered FROM settings WHERE accountDid = ?",
|
|
||||||
[newId.did],
|
|
||||||
);
|
|
||||||
|
|
||||||
if (verificationResult?.values?.length) {
|
|
||||||
const settings = verificationResult.values[0];
|
|
||||||
const firstName = settings[0];
|
|
||||||
const isRegistered = settings[1];
|
|
||||||
|
|
||||||
logger.debug(
|
|
||||||
"[importFromMnemonic] Test User #0 settings verification",
|
|
||||||
{
|
|
||||||
did: newId.did,
|
|
||||||
firstName,
|
|
||||||
isRegistered,
|
|
||||||
expectedFirstName: "User Zero",
|
|
||||||
expectedIsRegistered: true,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
// If settings weren't saved correctly, try individual updates
|
|
||||||
if (firstName !== "User Zero" || isRegistered !== 1) {
|
|
||||||
logger.warn(
|
|
||||||
"[importFromMnemonic] Test User #0 settings not saved correctly, retrying with individual updates",
|
|
||||||
);
|
|
||||||
|
|
||||||
await platformService.dbExec(
|
|
||||||
"UPDATE settings SET firstName = ? WHERE accountDid = ?",
|
|
||||||
["User Zero", newId.did],
|
|
||||||
);
|
|
||||||
|
|
||||||
await platformService.dbExec(
|
|
||||||
"UPDATE settings SET isRegistered = ? WHERE accountDid = ?",
|
|
||||||
[1, newId.did],
|
|
||||||
);
|
|
||||||
|
|
||||||
// Verify again
|
|
||||||
const retryResult = await platformService.dbQuery(
|
|
||||||
"SELECT firstName, isRegistered FROM settings WHERE accountDid = ?",
|
|
||||||
[newId.did],
|
|
||||||
);
|
|
||||||
|
|
||||||
if (retryResult?.values?.length) {
|
|
||||||
const retrySettings = retryResult.values[0];
|
|
||||||
logger.debug(
|
|
||||||
"[importFromMnemonic] Test User #0 settings after retry",
|
|
||||||
{
|
|
||||||
firstName: retrySettings[0],
|
|
||||||
isRegistered: retrySettings[1],
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
logger.error(
|
|
||||||
"[importFromMnemonic] Failed to verify Test User #0 settings - no record found",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
logger.error(
|
|
||||||
"[importFromMnemonic] Error setting up Test User #0 settings:",
|
|
||||||
error,
|
|
||||||
);
|
|
||||||
// Don't throw - allow the import to continue even if settings fail
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1480,7 +1480,7 @@ export default class AccountViewView extends Vue {
|
|||||||
status?: number;
|
status?: number;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
logger.error("[Server Limits] Error retrieving limits:", {
|
logger.warn("[Server Limits] Error retrieving limits, expected for unregistered users:", {
|
||||||
error: error instanceof Error ? error.message : String(error),
|
error: error instanceof Error ? error.message : String(error),
|
||||||
did: did,
|
did: did,
|
||||||
apiServer: this.apiServer,
|
apiServer: this.apiServer,
|
||||||
|
|||||||
@@ -662,7 +662,7 @@ export default class HomeView extends Vue {
|
|||||||
};
|
};
|
||||||
|
|
||||||
logger.warn(
|
logger.warn(
|
||||||
"[HomeView Settings Trace] ⚠️ Registration check failed",
|
"[HomeView Settings Trace] ⚠️ Registration check failed, expected for unregistered users.",
|
||||||
{
|
{
|
||||||
error: errorMessage,
|
error: errorMessage,
|
||||||
did: this.activeDid,
|
did: this.activeDid,
|
||||||
|
|||||||
Reference in New Issue
Block a user