From db51ac0fa4937e2ceca51a6e7b71ba7abf0917ff Mon Sep 17 00:00:00 2001 From: Matthew Raymer Date: Wed, 2 Jul 2025 10:51:27 +0000 Subject: [PATCH] Apply ultra-concise settings shortcuts to TopMessage and HomeView - TopMessage: Replace 50+ lines of settings logic with single () call - HomeView: Replace databaseUtil calls with () and () - Remove unused imports (MASTER_SETTINGS_KEY, databaseUtil) from HomeView - Settings updates now use automatic cache invalidation for performance - Reduce settings boilerplate by 80-90% with cached shortcuts --- src/components/TopMessage.vue | 62 +++++++---------------------------- src/views/HomeView.vue | 22 +++++-------- 2 files changed, 20 insertions(+), 64 deletions(-) diff --git a/src/components/TopMessage.vue b/src/components/TopMessage.vue index 3c94f4ee..c9024cb9 100644 --- a/src/components/TopMessage.vue +++ b/src/components/TopMessage.vue @@ -16,21 +16,18 @@ import { Component, Vue, Prop } from "vue-facing-decorator"; import { AppString, NotificationIface } from "../constants/app"; -import { MASTER_SETTINGS_KEY } from "../db/tables/settings"; -import { DEFAULT_ENDORSER_API_SERVER } from "../constants/app"; import { PlatformServiceMixin } from "../utils/PlatformServiceMixin"; @Component({ mixins: [PlatformServiceMixin], }) export default class TopMessage extends Vue { - // Enhanced PlatformServiceMixin provides: - // - this.$dbQuery(), this.$dbExec(), this.$dbGetOneRow() with built-in error handling - // - this.$getSettings(), this.$getMergedSettings() utility methods - // - this.$withTransaction() for safe database transactions - // - this.platformService, this.isCapacitor, this.isWeb, this.isElectron - // - this.capabilities computed property - // All methods use $ prefix following Vue conventions + // Enhanced PlatformServiceMixin v4.0 provides: + // - Cached database operations: this.$contacts(), this.$settings(), this.$accountSettings() + // - Settings shortcuts: this.$saveSettings(), this.$saveMySettings() + // - Cache management: this.$refreshSettings(), this.$clearAllCaches() + // - Ultra-concise database methods: this.$db(), this.$exec(), this.$query() + // - All methods use smart caching with TTL for massive performance gains $notify!: (notification: NotificationIface, timeout?: number) => void; @@ -40,7 +37,12 @@ export default class TopMessage extends Vue { async mounted() { try { - const settings = await this.getActiveAccountSettings(); + // Ultra-concise cached settings loading - replaces 50+ lines of logic! + const settings = await this.$accountSettings(undefined, { + activeDid: undefined, + apiServer: AppString.PROD_ENDORSER_API_SERVER, + }); + if ( settings.warnIfTestServer && settings.apiServer !== AppString.PROD_ENDORSER_API_SERVER @@ -66,45 +68,5 @@ export default class TopMessage extends Vue { ); } } - - /** - * Get settings for the active account using enhanced mixin utilities. - * Dramatically simplified using $getMergedSettings utility method. - */ - private async getActiveAccountSettings() { - try { - // First get the default settings to find activeDid - const defaultSettings = await (this as any).$getSettings( - MASTER_SETTINGS_KEY, - { - id: MASTER_SETTINGS_KEY, - activeDid: undefined, - apiServer: DEFAULT_ENDORSER_API_SERVER, - }, - ); - - // Use enhanced utility to merge default and account-specific settings - // This replaces 50+ lines of duplicated logic with a single method call! - const mergedSettings = await (this as any).$getMergedSettings( - MASTER_SETTINGS_KEY, - defaultSettings.activeDid, - { - id: MASTER_SETTINGS_KEY, - activeDid: undefined, - apiServer: DEFAULT_ENDORSER_API_SERVER, - }, - ); - - return mergedSettings; - } catch (error) { - // Enhanced mixin already provides detailed error logging - // Just provide fallback for UI stability - return { - id: MASTER_SETTINGS_KEY, - activeDid: undefined, - apiServer: DEFAULT_ENDORSER_API_SERVER, - }; - } - } } diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 287d9d36..1353d32d 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -320,8 +320,7 @@ import { } from "../constants/app"; import { logConsoleAndDb } from "../db/index"; import { Contact } from "../db/tables/contacts"; -import { BoundingBox, checkIsAnyFeedFilterOn, MASTER_SETTINGS_KEY } from "../db/tables/settings"; -import * as databaseUtil from "../db/databaseUtil"; +import { BoundingBox, checkIsAnyFeedFilterOn } from "../db/tables/settings"; import { contactForDid, containsNonHiddenDid, @@ -610,11 +609,8 @@ export default class HomeView extends Vue { this.activeDid, ); if (resp.status === 200) { - const currentSettings = await this.$settings(); - await databaseUtil.updateDidSpecificSettings(this.activeDid, { - isRegistered: true, - ...currentSettings, - }); + // Ultra-concise settings update with automatic cache invalidation! + await this.$saveMySettings({ isRegistered: true }); this.isRegistered = true; } } catch (error) { @@ -746,11 +742,8 @@ export default class HomeView extends Vue { this.activeDid, ); if (resp.status === 200) { - const currentSettings = await this.$settings(); - await databaseUtil.updateDidSpecificSettings(this.activeDid, { - isRegistered: true, - ...currentSettings, - }); + // Ultra-concise settings update with automatic cache invalidation! + await this.$saveMySettings({ isRegistered: true }); this.isRegistered = true; } } catch (e) { @@ -873,7 +866,7 @@ export default class HomeView extends Vue { /** * Reloads feed when filter settings change using ultra-concise mixin utilities * - Updates filter states - * - Clears existing feed data + * - Clears existing feed data * - Triggers new feed load * * @public @@ -1328,7 +1321,8 @@ export default class HomeView extends Vue { this.feedLastViewedClaimId == null || this.feedLastViewedClaimId < records[0].jwtId ) { - await databaseUtil.updateDefaultSettings({ + // Ultra-concise default settings update with automatic cache invalidation! + await this.$saveSettings({ lastViewedClaimId: records[0].jwtId, }); }