Merge branch 'build-improvement' into performance-optimizations-testing
This commit is contained in:
@@ -253,22 +253,6 @@ import { createNotifyHelpers, TIMEOUTS } from "@/utils/notify";
|
||||
*
|
||||
* @component
|
||||
*/
|
||||
// TODO: Testing Required - Database Operations + Logging Migration to PlatformServiceMixin
|
||||
// Priority: Medium | Migrated: 2025-07-06 | Author: Matthew Raymer
|
||||
//
|
||||
//
|
||||
// TESTING NEEDED: Contact import functionality
|
||||
// 1. Test contact import via URL: /contact-import?contacts=[{"did":"did:example:123","name":"Alice"}]
|
||||
// 2. Test JWT import via URL path: /contact-import/[JWT_TOKEN]
|
||||
// 3. Test manual JWT input via textarea
|
||||
// 4. Test duplicate contact detection and field comparison
|
||||
// 5. Test error scenarios: invalid JWT, malformed data, network issues
|
||||
// 6. Verify error logging appears correctly
|
||||
//
|
||||
// Test URLs:
|
||||
// /contact-import (manual input)
|
||||
// /contact-import?contacts=[{"did":"did:test:123","name":"Test User"}]
|
||||
|
||||
@Component({
|
||||
components: { EntityIcon, OfferDialog, QuickNav },
|
||||
mixins: [PlatformServiceMixin],
|
||||
|
||||
@@ -310,7 +310,6 @@ import { PlatformServiceMixin } from "@/utils/PlatformServiceMixin";
|
||||
import { createNotifyHelpers, TIMEOUTS } from "@/utils/notify";
|
||||
import {
|
||||
NOTIFY_CONTACT_LOADING_ISSUE,
|
||||
NOTIFY_FEED_LOADING_ISSUE,
|
||||
NOTIFY_CONFIRMATION_ERROR,
|
||||
} from "@/constants/notifications";
|
||||
import * as Package from "../../package.json";
|
||||
@@ -486,6 +485,10 @@ export default class HomeView extends Vue {
|
||||
if (newDid !== oldDid) {
|
||||
// Re-initialize identity with new settings (loads settings internally)
|
||||
await this.initializeIdentity();
|
||||
} else {
|
||||
logger.info(
|
||||
"[HomeView Settings Trace] 📍 DID unchanged, skipping re-initialization",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -528,11 +531,7 @@ export default class HomeView extends Vue {
|
||||
// Load settings with better error context using ultra-concise mixin
|
||||
let settings;
|
||||
try {
|
||||
settings = await this.$settings({
|
||||
apiServer: "",
|
||||
activeDid: "",
|
||||
isRegistered: false,
|
||||
});
|
||||
settings = await this.$accountSettings();
|
||||
} catch (error) {
|
||||
this.$logAndConsole(
|
||||
`[HomeView] Failed to retrieve settings: ${error}`,
|
||||
@@ -600,65 +599,21 @@ export default class HomeView extends Vue {
|
||||
// Ultra-concise settings update with automatic cache invalidation!
|
||||
await this.$saveMySettings({ isRegistered: true });
|
||||
this.isRegistered = true;
|
||||
// Force Vue to re-render the template
|
||||
await this.$nextTick();
|
||||
}
|
||||
} catch (error) {
|
||||
// Consolidate logging: Only log unexpected errors, not expected 400s
|
||||
const axiosError = error as any;
|
||||
if (axiosError?.response?.status !== 400) {
|
||||
this.$logAndConsole(
|
||||
`[HomeView] Registration check failed: ${error}`,
|
||||
true,
|
||||
);
|
||||
}
|
||||
// Continue as unregistered - this is expected for new users
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize feed and offers
|
||||
try {
|
||||
// Start feed update in background
|
||||
this.updateAllFeed().catch((error) => {
|
||||
this.$logAndConsole(
|
||||
`[HomeView] Background feed update failed: ${error}`,
|
||||
true,
|
||||
logger.warn(
|
||||
"[HomeView Settings Trace] ⚠️ Registration check failed",
|
||||
{
|
||||
error: error instanceof Error ? error.message : String(error),
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
// Load new offers if we have an active DID
|
||||
if (this.activeDid) {
|
||||
const [offersToUser, offersToProjects] = await Promise.all([
|
||||
getNewOffersToUser(
|
||||
this.axios,
|
||||
this.apiServer,
|
||||
this.activeDid,
|
||||
this.lastAckedOfferToUserJwtId,
|
||||
),
|
||||
getNewOffersToUserProjects(
|
||||
this.axios,
|
||||
this.apiServer,
|
||||
this.activeDid,
|
||||
this.lastAckedOfferToUserProjectsJwtId,
|
||||
),
|
||||
]);
|
||||
|
||||
this.numNewOffersToUser = offersToUser.data.length;
|
||||
this.newOffersToUserHitLimit = offersToUser.hitLimit;
|
||||
this.numNewOffersToUserProjects = offersToProjects.data.length;
|
||||
this.newOffersToUserProjectsHitLimit = offersToProjects.hitLimit;
|
||||
}
|
||||
} catch (error) {
|
||||
this.$logAndConsole(
|
||||
`[HomeView] Failed to initialize feed/offers: ${error}`,
|
||||
true,
|
||||
);
|
||||
// Don't throw - we can continue with empty feed
|
||||
this.notify.warning(NOTIFY_FEED_LOADING_ISSUE.message, TIMEOUTS.LONG);
|
||||
}
|
||||
} catch (error) {
|
||||
this.handleError(error);
|
||||
throw error; // Re-throw to be caught by mounted()
|
||||
} catch (err: unknown) {
|
||||
logger.error("[HomeView Settings Trace] ❌ initializeIdentity() failed", {
|
||||
error: err instanceof Error ? err.message : String(err),
|
||||
});
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -683,10 +638,8 @@ export default class HomeView extends Vue {
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads user settings from storage using ultra-concise mixin utilities
|
||||
* Sets component state for:
|
||||
* - API server, Active DID, Feed filters and view settings
|
||||
* - Registration status, Notification acknowledgments
|
||||
* Loads user settings from database using ultra-concise mixin
|
||||
* Used for displaying settings in feed and actions
|
||||
*
|
||||
* @internal
|
||||
* Called by mounted() and reloadFeedOnChange()
|
||||
@@ -816,7 +769,7 @@ export default class HomeView extends Vue {
|
||||
* Called by mounted()
|
||||
*/
|
||||
private async checkOnboarding() {
|
||||
const settings = await this.$settings();
|
||||
const settings = await this.$accountSettings();
|
||||
if (!settings.finishedOnboarding) {
|
||||
(this.$refs.onboardingDialog as OnboardingDialog).open(OnboardPage.Home);
|
||||
}
|
||||
|
||||
@@ -214,7 +214,10 @@ export default class IdentitySwitcherView extends Vue {
|
||||
}
|
||||
} catch (err) {
|
||||
this.notify.error(NOTIFY_ERROR_LOADING_ACCOUNTS.message, TIMEOUTS.LONG);
|
||||
logger.error("Telling user to clear cache at page create because:", err);
|
||||
logger.error(
|
||||
"[IdentitySwitcher Settings Trace] ❌ Error loading accounts:",
|
||||
err,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,12 +228,35 @@ export default class IdentitySwitcherView extends Vue {
|
||||
// Check if we need to load user-specific settings for the new DID
|
||||
if (did) {
|
||||
try {
|
||||
await this.$accountSettings(did);
|
||||
const newSettings = await this.$accountSettings(did);
|
||||
logger.info(
|
||||
"[IdentitySwitcher Settings Trace] ✅ New account settings loaded",
|
||||
{
|
||||
did,
|
||||
settingsKeys: Object.keys(newSettings).filter(
|
||||
(k) => (newSettings as any)[k] !== undefined,
|
||||
),
|
||||
},
|
||||
);
|
||||
} catch (error) {
|
||||
logger.warn(
|
||||
"[IdentitySwitcher Settings Trace] ⚠️ Error loading new account settings",
|
||||
{
|
||||
did,
|
||||
error: error instanceof Error ? error.message : String(error),
|
||||
},
|
||||
);
|
||||
// Handle error silently - user settings will be loaded when needed
|
||||
}
|
||||
}
|
||||
|
||||
logger.info(
|
||||
"[IdentitySwitcher Settings Trace] 🔄 Navigating to home to trigger watcher",
|
||||
{
|
||||
newDid: did,
|
||||
},
|
||||
);
|
||||
|
||||
// Navigate to home page to trigger the watcher
|
||||
this.$router.push({ name: "home" });
|
||||
}
|
||||
|
||||
@@ -166,10 +166,8 @@ export default class ImportAccountView extends Vue {
|
||||
] as string;
|
||||
|
||||
const newDerivPath = nextDerivationPath(maxDerivPath);
|
||||
|
||||
const mne = selectedArray[0].mnemonic as string;
|
||||
const [address, privateHex, publicHex] = deriveAddress(mne, newDerivPath);
|
||||
|
||||
const newId = newIdentifier(address, publicHex, privateHex, newDerivPath);
|
||||
|
||||
try {
|
||||
@@ -187,7 +185,10 @@ export default class ImportAccountView extends Vue {
|
||||
);
|
||||
this.$router.push({ name: "account" });
|
||||
} catch (err) {
|
||||
logger.error("Error saving mnemonic & updating settings:", err);
|
||||
logger.error(
|
||||
"[ImportDerived Settings Trace] ❌ Error saving mnemonic & updating settings:",
|
||||
err,
|
||||
);
|
||||
this.notify.error(NOTIFY_ACCOUNT_DERIVATION_ERROR.message, TIMEOUTS.LONG);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user