mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-11-13 16:22:33 +00:00
fix(hashtag-preferences): prevent crash and data loss on load failure
- fix `TypeError: Assignment to constant variable` in `HashtagPreferencesService.load` by changing `const` to `let` for `wasLoadedForUser`. - Prevent existing cached preferences from being wiped when remote decryption fails.
This commit is contained in:
1 parent
b2d3ae3286
commit
cc66fafcdd
1 file changed
+11
-4
@@ -414,7 +414,7 @@ class HashtagPreferencesService {
|
|||||||
|
|
||||||
async load(pubkey) {
|
async load(pubkey) {
|
||||||
const normalized = normalizeHexPubkey(pubkey);
|
const normalized = normalizeHexPubkey(pubkey);
|
||||||
const wasLoadedForUser =
|
let wasLoadedForUser =
|
||||||
this.activePubkey &&
|
this.activePubkey &&
|
||||||
this.activePubkey === normalized &&
|
this.activePubkey === normalized &&
|
||||||
(this.interests.size > 0 || this.disinterests.size > 0 || this.loaded);
|
(this.interests.size > 0 || this.disinterests.size > 0 || this.loaded);
|
||||||
@@ -573,9 +573,16 @@ class HashtagPreferencesService {
|
|||||||
`${LOG_PREFIX} Failed to decrypt hashtag preferences`,
|
`${LOG_PREFIX} Failed to decrypt hashtag preferences`,
|
||||||
decryptResult.error,
|
decryptResult.error,
|
||||||
);
|
);
|
||||||
// If decryption fails on a reload, we might want to keep old data?
|
|
||||||
// But typically decryption failure means key mismatch or bad payload.
|
// If we already have loaded preferences (e.g. from cache), preserve them
|
||||||
// Resetting is safer here to avoid stuck state, unless we want to be very conservative.
|
// rather than wiping everything just because the remote update couldn't be decrypted.
|
||||||
|
if (wasLoadedForUser) {
|
||||||
|
userLogger.warn(
|
||||||
|
`${LOG_PREFIX} Preserving cached preferences despite decryption failure.`,
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.reset();
|
this.reset();
|
||||||
this.loaded = true;
|
this.loaded = true;
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in new issue
Block a user