render() {
    const { children, linkTo, styleName } = this.props;

    return (
      <div
        className={makeClassName(
          'HeroSection',
          `HeroSection-styleName--${String(styleName)}`,
        )}
      >
        {linkTo ? (
          <Link
            className="HeroSection-link-wrapper"
            onClick={this.props.onClick}
            to={addQueryParams(linkTo, { src: INSTALL_SOURCE_HERO_PROMO })}
          >
            <div className="HeroSection-content">{children}</div>
          </Link>
        ) : (
          <div className="HeroSection-wrapper">
            <div className="HeroSection-content">{children}</div>
          </div>
        )}
      </div>
    );
  }
 it('overrides multiple existing parameters', () => {
   const output = addQueryParams('http://whatever.com/?foo=1&bar=2', {
     foo: 'bar',
     bar: 'baz',
   });
   expect(url.parse(output, true).query).toEqual({ foo: 'bar', bar: 'baz' });
 });
Beispiel #3
0
export function install(
  _url: string | void,
  eventCallback: Function,
  {
    _mozAddonManager = window.navigator.mozAddonManager,
    src,
    hash,
  }: OptionalInstallParams = {},
) {
  if (src === undefined) {
    return Promise.reject(new Error('No src for add-on install'));
  }
  const url = addQueryParams(_url, { src });

  return _mozAddonManager.createInstall({ url, hash }).then((installObj) => {
    const callback = (e) => eventCallback(installObj, e);
    for (const event of INSTALL_EVENT_LIST) {
      log.info(`[install] Adding listener for ${event}`);
      installObj.addEventListener(event, callback);
    }
    return new Promise((resolve, reject) => {
      installObj.addEventListener('onInstallEnded', () => resolve());
      installObj.addEventListener('onInstallFailed', () => reject());
      log.info('Events to handle the installation initialized.');
      installObj.install();
    });
  });
}
Beispiel #4
0
export function changeLocaleURL({ currentLocale, location, newLocale }) {
  const newPath = location.pathname.replace(
    new RegExp(`^/${currentLocale}/`),
    `/${newLocale}/`,
  );
  return addQueryParams(newPath, location.query);
}
 it('adds more than one query param to a plain url', () => {
   const output = addQueryParams('http://whatever.com/', {
     foo: 'bar',
     test: 1,
   });
   expect(url.parse(output, true).query).toEqual({ foo: 'bar', test: '1' });
 });
 it('leaves other params intact', () => {
   const output = addQueryParams('http://whatever.com/?foo=1&bar=2', {
     bar: 'updated',
   });
   expect(url.parse(output, true).query).toEqual({
     foo: '1',
     bar: 'updated',
   });
 });
Beispiel #7
0
export function fetchAddon({ api, slug }: FetchAddonParams) {
  const { clientApp, userAgentInfo } = api;
  const appVersion = userAgentInfo.browser.version;
  if (!appVersion) {
    log.warn(
      `Failed to parse appversion for client app ${clientApp || '[empty]'}`,
    );
  }

  return callApi({
    endpoint: addQueryParams(`addons/addon/${slug}`, {
      app: clientApp,
      appversion: appVersion,
    }),
    auth: true,
    apiState: api,
  });
}
Beispiel #8
0
  render() {
    const { addon, addonInstallSource } = this.props;

    const result = this.renderResult();
    const resultClassnames = makeClassName('SearchResult', {
      'SearchResult--theme': addon && isTheme(addon.type),
      'SearchResult--persona': addon && addon.type === ADDON_TYPE_THEME,
    });

    let item = result;
    if (addon) {
      let linkTo = `/addon/${addon.slug}/`;
      if (addonInstallSource) {
        linkTo = addQueryParams(linkTo, { src: addonInstallSource });
      }
      item = (
        <Link to={linkTo} className="SearchResult-link">
          {result}
        </Link>
      );
    }

    return <li className={resultClassnames}>{item}</li>;
  }
 it('handles relative URLs', () => {
   const output = addQueryParams('/relative/path/?one=1', { two: '2' });
   expect(output).toMatch(/^\/relative\/path\//);
   expect(url.parse(output, true).query).toEqual({ one: '1', two: '2' });
 });
 it('overrides an existing parameter', () => {
   const output = addQueryParams('http://whatever.com/?foo=1', {
     foo: 'bar',
   });
   expect(url.parse(output, true).query).toEqual({ foo: 'bar' });
 });
 it('leaves other params intact', () => {
   const output = addQueryParams('http://whatever.com/?foo=1&bar=2', { bar: 'updated' });
   assert.deepEqual(url.parse(output, true).query, { foo: '1', bar: 'updated' });
 });
 it('overrides an existing parameter', () => {
   const output = addQueryParams('http://whatever.com/?foo=1', { foo: 'bar' });
   assert.deepEqual(url.parse(output, true).query, { foo: 'bar' });
 });
 it('adds more than one query param to a plain url', () => {
   const output = addQueryParams('http://whatever.com/', { foo: 'bar', test: 1 });
   assert.deepEqual(url.parse(output, true).query, { foo: 'bar', test: '1' });
 });