Add utm_campaign to the hosting links
According to where in the app the link was clicked
This commit is contained in:
parent
b68a71b294
commit
0244990731
4 changed files with 43 additions and 5 deletions
|
@ -21,7 +21,7 @@ import Promise from 'bluebird';
|
||||||
import MatrixClientPeg from '../../MatrixClientPeg';
|
import MatrixClientPeg from '../../MatrixClientPeg';
|
||||||
import sdk from '../../index';
|
import sdk from '../../index';
|
||||||
import dis from '../../dispatcher';
|
import dis from '../../dispatcher';
|
||||||
import SdkConfig from '../../SdkConfig';
|
import { getHostingLink } from '../../utils/HostingLink';
|
||||||
import { sanitizedHtmlNode } from '../../HtmlUtils';
|
import { sanitizedHtmlNode } from '../../HtmlUtils';
|
||||||
import { _t, _td } from '../../languageHandler';
|
import { _t, _td } from '../../languageHandler';
|
||||||
import AccessibleButton from '../views/elements/AccessibleButton';
|
import AccessibleButton from '../views/elements/AccessibleButton';
|
||||||
|
@ -818,7 +818,7 @@ export default React.createClass({
|
||||||
|
|
||||||
const header = this.state.editing ? <h2> { _t('Community Settings') } </h2> : <div />;
|
const header = this.state.editing ? <h2> { _t('Community Settings') } </h2> : <div />;
|
||||||
|
|
||||||
const hostingSignupLink = SdkConfig.get().hosting_signup_link;
|
const hostingSignupLink = getHostingLink('community-settings');
|
||||||
let hostingSignup = null;
|
let hostingSignup = null;
|
||||||
if (hostingSignupLink) {
|
if (hostingSignupLink) {
|
||||||
hostingSignup = <div className="mx_GroupView_hostingSignup">
|
hostingSignup = <div className="mx_GroupView_hostingSignup">
|
||||||
|
|
|
@ -21,6 +21,7 @@ import { _t } from '../../../languageHandler';
|
||||||
import LogoutDialog from "../dialogs/LogoutDialog";
|
import LogoutDialog from "../dialogs/LogoutDialog";
|
||||||
import Modal from "../../../Modal";
|
import Modal from "../../../Modal";
|
||||||
import SdkConfig from '../../../SdkConfig';
|
import SdkConfig from '../../../SdkConfig';
|
||||||
|
import { getHostingLink } from '../../../utils/HostingLink';
|
||||||
import MatrixClientPeg from '../../../MatrixClientPeg';
|
import MatrixClientPeg from '../../../MatrixClientPeg';
|
||||||
|
|
||||||
export class TopLeftMenu extends React.Component {
|
export class TopLeftMenu extends React.Component {
|
||||||
|
@ -53,7 +54,7 @@ export class TopLeftMenu extends React.Component {
|
||||||
render() {
|
render() {
|
||||||
const isGuest = MatrixClientPeg.get().isGuest();
|
const isGuest = MatrixClientPeg.get().isGuest();
|
||||||
|
|
||||||
const hostingSignupLink = SdkConfig.get().hosting_signup_link;
|
const hostingSignupLink = getHostingLink('user-context-menu');
|
||||||
let hostingSignup = null;
|
let hostingSignup = null;
|
||||||
if (hostingSignupLink) {
|
if (hostingSignupLink) {
|
||||||
hostingSignup = <div className="mx_TopLeftMenu_upgradeLink">
|
hostingSignup = <div className="mx_TopLeftMenu_upgradeLink">
|
||||||
|
|
|
@ -21,7 +21,7 @@ import Field from "../elements/Field";
|
||||||
import AccessibleButton from "../elements/AccessibleButton";
|
import AccessibleButton from "../elements/AccessibleButton";
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import {User} from "matrix-js-sdk";
|
import {User} from "matrix-js-sdk";
|
||||||
import SdkConfig from '../../../SdkConfig';
|
import { getHostingLink } from '../../../utils/HostingLink';
|
||||||
|
|
||||||
export default class ProfileSettings extends React.Component {
|
export default class ProfileSettings extends React.Component {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@ -138,7 +138,7 @@ export default class ProfileSettings extends React.Component {
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
const hostingSignupLink = SdkConfig.get().hosting_signup_link;
|
const hostingSignupLink = getHostingLink('user-settings');
|
||||||
let hostingSignup = null;
|
let hostingSignup = null;
|
||||||
if (hostingSignupLink) {
|
if (hostingSignupLink) {
|
||||||
hostingSignup = <span className="mx_ProfileSettings_hostingSignup">
|
hostingSignup = <span className="mx_ProfileSettings_hostingSignup">
|
||||||
|
|
37
src/utils/HostingLink.js
Normal file
37
src/utils/HostingLink.js
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
/*
|
||||||
|
Copyright 2019 New Vector Ltd.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import url from 'url';
|
||||||
|
import qs from 'qs';
|
||||||
|
|
||||||
|
import SdkConfig from '../SdkConfig';
|
||||||
|
|
||||||
|
export function getHostingLink(campaign) {
|
||||||
|
const hostingLink = SdkConfig.get().hosting_signup_link;
|
||||||
|
if (!hostingLink) return null;
|
||||||
|
if (!campaign) return hostingLink;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const hostingUrl = url.parse(hostingLink);
|
||||||
|
const params = qs.parse(hostingUrl.query);
|
||||||
|
params.utm_campaign = campaign;
|
||||||
|
hostingUrl.search = undefined;
|
||||||
|
hostingUrl.query = params;
|
||||||
|
return hostingUrl.format();
|
||||||
|
} catch (e) {
|
||||||
|
return hostingLink;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue