diff options
| author | sameerasw <[email protected]> | 2025-04-25 17:38:16 +0530 | 
|---|---|---|
| committer | sameerasw <[email protected]> | 2025-04-25 17:38:16 +0530 | 
| commit | 9a5e14f6e66b6a0beb4a7c20c5512b873684b04a (patch) | |
| tree | 4dd0ed7c454c0a00aa4dc9358c8b348813c610fc | |
| parent | 4d7721c17bf2c8fbb517af972cad944f4d39f32c (diff) | |
fixes for www sites not showing features with suffix matching
| -rw-r--r-- | background.js | 8 | ||||
| -rw-r--r-- | popup/popup.js | 88 | 
2 files changed, 83 insertions, 13 deletions
diff --git a/background.js b/background.js index 45a9346..bc30678 100644 --- a/background.js +++ b/background.js @@ -414,11 +414,15 @@ async function applyCSS(tabId, hostname, features) {      JSON.stringify(globalSettings)    ); -  const siteKey = `transparentZenSettings.${hostname}`; +  // UPDATED: Use normalized hostname for consistent settings retrieval +  const normalizedHostname = normalizeHostname(hostname); +  const siteKey = `transparentZenSettings.${normalizedHostname}`;    const siteData = await browser.storage.local.get(siteKey);    const featureSettings = siteData[siteKey] || {}; +    console.log( -    "DEBUG: Site-specific settings:", +    "DEBUG: Site-specific settings from normalized key:", +    siteKey,      JSON.stringify(featureSettings)    ); diff --git a/popup/popup.js b/popup/popup.js index e1c4566..c353182 100644 --- a/popup/popup.js +++ b/popup/popup.js @@ -168,6 +168,7 @@ new (class ExtensionPopup {      // Load site-specific settings if on a specific site      if (this.currentSiteHostname) { +      // Try both normalized and original hostnames for backwards compatibility        const normalizedSiteKey = `${this.BROWSER_STORAGE_KEY}.${this.normalizedCurrentSiteHostname}`;        const originalSiteKey = `${this.BROWSER_STORAGE_KEY}.${this.currentSiteHostname}`; @@ -178,6 +179,20 @@ new (class ExtensionPopup {          normalizedData[normalizedSiteKey] ||          originalData[originalSiteKey] ||          {}; + +      // Make sure we always save to the normalized key going forward +      if (!normalizedData[normalizedSiteKey] && originalData[originalSiteKey]) { +        // Migrate settings from original to normalized key +        await browser.storage.local.set({ +          [normalizedSiteKey]: this.siteSettings, +        }); +        if (logging) +          console.log( +            "Migrated settings to normalized key:", +            normalizedSiteKey +          ); +      } +        await this.loadCurrentSiteFeatures();      }    } @@ -201,7 +216,8 @@ new (class ExtensionPopup {      // Save site-specific settings      if (this.currentSiteHostname) { -      const siteKey = `${this.BROWSER_STORAGE_KEY}.${this.currentSiteHostname}`; +      // UPDATED: Always save site settings using the normalized hostname +      const siteKey = `${this.BROWSER_STORAGE_KEY}.${this.normalizedCurrentSiteHostname}`;        const featureSettings = {};        this.currentSiteFeatures @@ -217,7 +233,8 @@ new (class ExtensionPopup {            [siteKey]: featureSettings,          })          .then(() => { -          if (logging) console.log("Site settings saved"); +          if (logging) +            console.log("Site settings saved to normalized key:", siteKey);            this.updateActiveTabStyling();          });      } @@ -262,10 +279,26 @@ new (class ExtensionPopup {        this.currentSiteFeatures.innerHTML = ""; +      // Debug which hostname we're searching for +      console.log( +        "Looking for styles for:", +        this.normalizedCurrentSiteHostname, +        "(original:", +        this.currentSiteHostname, +        ")" +      ); + +      // Find any matching style for this site        let currentSiteKey = Object.keys(styles).find((site) =>          this.isCurrentSite(site.replace(".css", ""))        ); +      if (logging && currentSiteKey) { +        console.log("Found matching site key:", currentSiteKey); +      } else if (logging) { +        console.log("No matching site key found"); +      } +        // Check if we have any styles at all, including example.com        const hasExampleSite = "example.com.css" in styles;        const hasNoStyles = Object.keys(styles).length === 0; @@ -356,9 +389,11 @@ new (class ExtensionPopup {        }        // Load site-specific settings before creating toggles -      const siteKey = `${this.BROWSER_STORAGE_KEY}.${this.currentSiteHostname}`; +      // UPDATED: Use normalized hostname for consistent settings retrieval +      const siteKey = `${this.BROWSER_STORAGE_KEY}.${this.normalizedCurrentSiteHostname}`;        const siteData = await browser.storage.local.get(siteKey);        this.siteSettings = siteData[siteKey] || {}; +      console.log("Loaded site settings from:", siteKey, this.siteSettings);        const features = styles[currentSiteKey]; @@ -430,19 +465,30 @@ new (class ExtensionPopup {      // Normalize the site name too      const normalizedSiteName = normalizeHostname(siteName); +    if (logging) +      console.log( +        `Comparing: current=${this.normalizedCurrentSiteHostname}, style=${normalizedSiteName}` +      ); +      // Exact match has priority -    if (this.normalizedCurrentSiteHostname === normalizedSiteName) return true; +    if (this.normalizedCurrentSiteHostname === normalizedSiteName) { +      if (logging) console.log("✓ Exact match!"); +      return true; +    } -    // TLD prefix match (match subdomain regardless of TLD) +    // Wildcard match (with proper domain boundary)      if (siteName.startsWith("+")) {        const baseSiteName = siteName.slice(1);        const normalizedBaseSiteName = normalizeHostname(baseSiteName); -      return ( + +      const isMatch =          this.normalizedCurrentSiteHostname === normalizedBaseSiteName ||          this.normalizedCurrentSiteHostname.endsWith(            `.${normalizedBaseSiteName}` -        ) -      ); +        ); + +      if (isMatch && logging) console.log("✓ Wildcard match!"); +      return isMatch;      }      // TLD suffix match (match domain regardless of TLD) @@ -454,11 +500,11 @@ new (class ExtensionPopup {        const cachedDomain = baseSiteName.split(".").slice(0, -1).join(".");        // For current hostname: Similarly extract the domain without the TLD -      const hostParts = this.currentSiteHostname.split("."); +      const hostParts = this.normalizedCurrentSiteHostname.split(".");        const hostDomain =          hostParts.length > 1            ? hostParts.slice(0, -1).join(".") -          : this.currentSiteHostname; +          : this.normalizedCurrentSiteHostname;        if (logging)          console.log( @@ -466,7 +512,9 @@ new (class ExtensionPopup {          );        // Match if the domain part (without TLD) matches -      return cachedDomain && hostDomain && hostDomain === cachedDomain; +      const isMatch = cachedDomain && hostDomain && hostDomain === cachedDomain; +      if (isMatch && logging) console.log("✓ TLD suffix match!"); +      return isMatch;      }      // Don't match partial domain names @@ -526,6 +574,15 @@ new (class ExtensionPopup {      const hostname = url.hostname;      const normalizedHostname = normalizeHostname(hostname); +    if (logging) +      console.log( +        "Applying CSS to tab with hostname:", +        normalizedHostname, +        "(original:", +        hostname, +        ")" +      ); +      try {        // Try to remove any existing CSS first        try { @@ -614,12 +671,21 @@ new (class ExtensionPopup {        // If we found a direct match, use it        if (bestMatch) {          const features = styles[bestMatch]; +        // UPDATED: Use normalized hostname for settings storage/retrieval          const normalizedSiteStorageKey = `${this.BROWSER_STORAGE_KEY}.${normalizedHostname}`;          const siteData = await browser.storage.local.get(            normalizedSiteStorageKey          );          const featureSettings = siteData[normalizedSiteStorageKey] || {}; +        if (logging) +          console.log( +            "Using settings from:", +            normalizedSiteStorageKey, +            "for match:", +            bestMatch +          ); +          let combinedCSS = "";          for (const [feature, css] of Object.entries(features)) {            if (featureSettings[feature] !== false) {  | 
