import { CorsAnywhere } from './cors-anywhere.js';
import {define} from 'xtal-latx/define.js';
/**
 * `ava-pwar`
 *  Find and Process PWA Manifest url.
 *
 * @customElement
 * @polymer
 * @demo demo/index.html
 */
export class AvaPwar extends CorsAnywhere {
    static get is() { return 'ava-pwar'; }
    onPropsChange() {
        if (!this._connected || !this._href || this.disabled || !this._serviceUrl) return;
        this.doFetch();
    }
    processResponse(resp: Response) {
        const debug =  this.hasAttribute('debug');
        resp.text().then(content => {
            if(debug) debugger; 
            const parser = new DOMParser();
            const htmlDoc = parser.parseFromString(content, "text/html");
            const manifestLink = htmlDoc.querySelector('link[rel="manifest"]') as HTMLLinkElement;

            if (!manifestLink || !manifestLink.href) return;

            const path = location.href.split('/').slice(0, -1).join('/');

            //const lastPath = manifestLink.href.split('/').pop();
            let manifestURL = manifestLink.getAttribute('href');
            const upLevels = manifestURL.startsWith('/') ? -1 : 0;
            manifestURL = this.calculateURL(upLevels) + manifestURL;
            fetch(manifestURL).then(resp => {
                resp.json().then(json => {
                    json.url = this._href;
                    this.manifest = json;
                })
            })
        })
    }

    _manifest: any; //TODO:  create typing for manifest?
    get manifest() {
        return this._manifest;
    }
    set manifest(val) {
        this._manifest = val;
        this.de('manifest', {
            value: val,
        })
    }

}
define(AvaPwar);

