Refactor Application to delegate state management to services

Co-authored-by: PR0M3TH3AN <[email protected]>
This commit is contained in:
google-labs-jules[bot]andPR0M3TH3AN committed 2026-02-08 00:36:05 +00:00
1 parent 566c2dbf89
commit bcacf46f8b
4 files changed
+60 -47

No files matched your search

+18 -22
View File
@@ -138,22 +138,10 @@ import {
import { getDesignSystemMode as getCanonicalDesignSystemMode } from "./designSystem.js";
import { getHashViewName, setHashView } from "./hashView.js";
import {
getPubkey as getStoredPubkey,
setPubkey as setStoredPubkey,
getCurrentUserNpub as getStoredCurrentUserNpub,
setCurrentUserNpub as setStoredCurrentUserNpub,
getCurrentVideo as getStoredCurrentVideo,
setCurrentVideo as setStoredCurrentVideo,
setModalState as setGlobalModalState,
subscribeToAppStateKey,
} from "./state/appState.js";
import {
getSavedProfiles,
getActiveProfilePubkey,
setActiveProfilePubkey as setStoredActiveProfilePubkey,
setSavedProfiles,
persistSavedProfiles,
getProfileCacheMap,
getCachedUrlHealth as readCachedUrlHealth,
storeUrlHealth as persistUrlHealth,
setInFlightUrlProbe,
@@ -211,35 +199,43 @@ const RELAY_UI_BATCH_DELAY_MS = 250;
*/
class Application {
get pubkey() {
return getStoredPubkey();
return this.authService.pubkey;
}
set pubkey(value) {
setStoredPubkey(value ?? null);
this.authService.pubkey = value;
}
get currentUserNpub() {
return getStoredCurrentUserNpub();
return this.authService.currentUserNpub;
}
set currentUserNpub(value) {
setStoredCurrentUserNpub(value ?? null);
this.authService.currentUserNpub = value;
}
get currentVideo() {
return getStoredCurrentVideo();
return this.playbackService.currentVideo;
}
set currentVideo(value) {
setStoredCurrentVideo(value ?? null);
this.playbackService.currentVideo = value;
}
get activeProfilePubkey() {
return getActiveProfilePubkey();
return this.authService.activeProfilePubkey;
}
set activeProfilePubkey(value) {
this.authService.setActiveProfilePubkey(value, { persist: false });
}
get savedProfiles() {
return getSavedProfiles();
return this.authService.savedProfiles;
}
set savedProfiles(value) {
this.authService.setSavedProfiles(value, { persist: false, persistActive: false });
}
constructor({ services = {}, ui = {}, helpers = {}, loadView: viewLoader } = {}) {
@@ -603,7 +599,7 @@ class Application {
queueSignEvent,
bootstrapTrustedSeeds,
getModerationSettings,
getActiveProfilePubkey,
getActiveProfilePubkey: () => this.authService.activeProfilePubkey,
})),
writable: true,
configurable: true,
@@ -688,7 +684,7 @@ class Application {
}
persistActiveProfileSelection(pubkey, { persist = true } = {}) {
setStoredActiveProfilePubkey(pubkey, { persist });
this.authService.setActiveProfilePubkey(pubkey, { persist });
this.renderSavedProfiles();
}
+33
View File
@@ -10,6 +10,7 @@ import { userLogger } from "../utils/logger.js";
import { requestDefaultExtensionPermissions } from "../nostr/defaultClient.js";
import {
getSavedProfiles,
setSavedProfiles,
getActiveProfilePubkey,
setActiveProfilePubkey,
mutateSavedProfiles,
@@ -417,6 +418,38 @@ export default class AuthService {
return publish(payload);
}
get pubkey() {
return getPubkey();
}
set pubkey(value) {
setPubkey(value ?? null);
}
get currentUserNpub() {
return getCurrentUserNpub();
}
set currentUserNpub(value) {
setCurrentUserNpub(value ?? null);
}
get activeProfilePubkey() {
return getActiveProfilePubkey();
}
setActiveProfilePubkey(pubkey, options = {}) {
return setActiveProfilePubkey(pubkey, options);
}
get savedProfiles() {
return getSavedProfiles();
}
setSavedProfiles(profiles, options = {}) {
return setSavedProfiles(profiles, options);
}
getActivePubkey() {
return getPubkey();
}
+9
View File
@@ -1,6 +1,7 @@
import { userLogger } from "../utils/logger.js";
import { safeDecodeURIComponent } from "../utils/safeDecode.js";
import { PLAYBACK_START_TIMEOUT } from "../constants.js";
import { getCurrentVideo, setCurrentVideo } from "../state/appState.js";
// js/services/playbackService.js
/**
@@ -285,6 +286,14 @@ export class PlaybackService {
this.probeCacheTtlMs = PROBE_CACHE_TTL_MS;
}
get currentVideo() {
return getCurrentVideo();
}
set currentVideo(value) {
setCurrentVideo(value);
}
log(...args) {
try {
this.logger(...args);
-25
View File
@@ -867,31 +867,6 @@ export default class ApplicationBootstrap {
}
};
app.boundNwcSettingsToastHandler = null;
Object.defineProperty(app, "savedProfiles", {
configurable: false,
enumerable: false,
get() {
return getSavedProfiles();
},
set(next) {
setSavedProfiles(Array.isArray(next) ? next : [], {
persist: false,
persistActive: false,
});
},
});
Object.defineProperty(app, "activeProfilePubkey", {
configurable: false,
enumerable: false,
get() {
return getActiveProfilePubkey();
},
set(value) {
setStoredActiveProfilePubkey(value, { persist: false });
},
});
Object.defineProperty(app, "profileCache", {
configurable: false,
enumerable: false,