export default function parseQuery(uri) {
    uri = uri.split('?')[1];
    if (!uri) {
        return {};
    }
    // 兼容 ios 546～554 之间的分享链接多encode一次的bug，接收到的时候判断是否有token，有的话替换。
    let mm = ''
    uri = uri.replace(/&bltk=([a-z\d]+)(?=$|&)/, function(m, m1) {
        if (m1) {
            mm = m1;
        }
        return '';
    });
    if (mm) {
        uri = uri.replace(new RegExp(mm, 'g'), '%');
    }
    // end 兼容

    // 分享新方案
    let nn = '';
    uri = uri.replace(/(?:^|&)bltk_new=([a-z\d]+)(?=$|&)/, function(n, n1) {
        if (n1) {
            nn = n1;
        }
        return '';
    });
    if (nn) {
        uri = uri.replace(/(^|&)blcpshare=(.+?)(?=$|&)/, function(m, m1, m2) {
            if (m2) {
                return `${m1}${decodeURIComponent(m2.replace(new RegExp(nn, 'g'), '%'))}`;
            }
            return '';
        });
    }
    // end 分享新方案

    let queryString = uri;

    // 针对小程序生命周期query会被转义问题处理，这里是为了NA能先正常拿到query，然后被剔除。
    if (/__blS=false/.test(queryString)) {
        queryString = queryString.replace(/&__blS=false.+$/, '');
    }

    let query = {};
    let pairs = queryString.split('&');

    if (pairs.length === 1 && pairs[0] === '') {
        return {};
    }

    for (let i = 0; i < pairs.length; i++) {
        if (pairs[i] === '') {
            continue;
        }

        let p = pairs[i].indexOf('=');
        if (p < 0) {
            query[pairs[i]] = '';
        } else {
            let key = pairs[i].substr(0, p);
            let val = pairs[i].substr(p + 1);
            query[key] = val;
        }
    }
    return query;
}
