mirror of
https://github.com/element-hq/element-web
synced 2024-11-28 12:28:50 +03:00
Merge pull request #5211 from matrix-org/t3chguy/fix/15173
Hide Analytics sections if piwik config is not provided
This commit is contained in:
commit
4db9ac16b5
4 changed files with 35 additions and 25 deletions
|
@ -170,15 +170,19 @@ class Analytics {
|
||||||
return !this.baseUrl;
|
return !this.baseUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
canEnable() {
|
||||||
|
const config = SdkConfig.get();
|
||||||
|
return navigator.doNotTrack !== "1" && config && config.piwik && config.piwik.url && config.piwik.siteId;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable Analytics if initialized but disabled
|
* Enable Analytics if initialized but disabled
|
||||||
* otherwise try and initalize, no-op if piwik config missing
|
* otherwise try and initalize, no-op if piwik config missing
|
||||||
*/
|
*/
|
||||||
async enable() {
|
async enable() {
|
||||||
if (!this.disabled) return;
|
if (!this.disabled) return;
|
||||||
|
if (!this.canEnable()) return;
|
||||||
const config = SdkConfig.get();
|
const config = SdkConfig.get();
|
||||||
if (!config || !config.piwik || !config.piwik.url || !config.piwik.siteId) return;
|
|
||||||
|
|
||||||
this.baseUrl = new URL("piwik.php", config.piwik.url);
|
this.baseUrl = new URL("piwik.php", config.piwik.url);
|
||||||
// set constants
|
// set constants
|
||||||
|
|
|
@ -1233,8 +1233,8 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
||||||
|
|
||||||
StorageManager.tryPersistStorage();
|
StorageManager.tryPersistStorage();
|
||||||
|
|
||||||
if (SettingsStore.getValue("showCookieBar") && this.props.config.piwik && navigator.doNotTrack !== "1") {
|
if (SettingsStore.getValue("showCookieBar") && Analytics.canEnable()) {
|
||||||
showAnalyticsToast(this.props.config.piwik && this.props.config.piwik.policyUrl);
|
showAnalyticsToast(this.props.config.piwik?.policyUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -329,6 +329,29 @@ export default class SecurityUserSettingsTab extends React.Component {
|
||||||
</div>;
|
</div>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let privacySection;
|
||||||
|
if (Analytics.canEnable()) {
|
||||||
|
privacySection = <React.Fragment>
|
||||||
|
<div className="mx_SettingsTab_heading">{_t("Privacy")}</div>
|
||||||
|
<div className="mx_SettingsTab_section">
|
||||||
|
<span className="mx_SettingsTab_subheading">{_t("Analytics")}</span>
|
||||||
|
<div className="mx_SettingsTab_subsectionText">
|
||||||
|
{_t(
|
||||||
|
"%(brand)s collects anonymous analytics to allow us to improve the application.",
|
||||||
|
{ brand },
|
||||||
|
)}
|
||||||
|
|
||||||
|
{_t("Privacy is important to us, so we don't collect any personal or " +
|
||||||
|
"identifiable data for our analytics.")}
|
||||||
|
<AccessibleButton className="mx_SettingsTab_linkBtn" onClick={Analytics.showDetailsModal}>
|
||||||
|
{_t("Learn more about how we use analytics.")}
|
||||||
|
</AccessibleButton>
|
||||||
|
</div>
|
||||||
|
<SettingsFlag name="analyticsOptIn" level={SettingLevel.DEVICE} onChange={this._updateAnalytics} />
|
||||||
|
</div>
|
||||||
|
</React.Fragment>;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="mx_SettingsTab mx_SecurityUserSettingsTab">
|
<div className="mx_SettingsTab mx_SecurityUserSettingsTab">
|
||||||
{warning}
|
{warning}
|
||||||
|
@ -357,24 +380,7 @@ export default class SecurityUserSettingsTab extends React.Component {
|
||||||
{crossSigning}
|
{crossSigning}
|
||||||
{this._renderCurrentDeviceInfo()}
|
{this._renderCurrentDeviceInfo()}
|
||||||
</div>
|
</div>
|
||||||
<div className="mx_SettingsTab_heading">{_t("Privacy")}</div>
|
{ privacySection }
|
||||||
<div className="mx_SettingsTab_section">
|
|
||||||
<span className="mx_SettingsTab_subheading">{_t("Analytics")}</span>
|
|
||||||
<div className='mx_SettingsTab_subsectionText'>
|
|
||||||
{_t(
|
|
||||||
"%(brand)s collects anonymous analytics to allow us to improve the application.",
|
|
||||||
{ brand },
|
|
||||||
)}
|
|
||||||
|
|
||||||
{_t("Privacy is important to us, so we don't collect any personal or " +
|
|
||||||
"identifiable data for our analytics.")}
|
|
||||||
<AccessibleButton className="mx_SettingsTab_linkBtn" onClick={Analytics.showDetailsModal}>
|
|
||||||
{_t("Learn more about how we use analytics.")}
|
|
||||||
</AccessibleButton>
|
|
||||||
</div>
|
|
||||||
<SettingsFlag name='analyticsOptIn' level={SettingLevel.DEVICE}
|
|
||||||
onChange={this._updateAnalytics} />
|
|
||||||
</div>
|
|
||||||
<div className="mx_SettingsTab_heading">{_t("Advanced")}</div>
|
<div className="mx_SettingsTab_heading">{_t("Advanced")}</div>
|
||||||
<div className="mx_SettingsTab_section">
|
<div className="mx_SettingsTab_section">
|
||||||
{this._renderIgnoredUsers()}
|
{this._renderIgnoredUsers()}
|
||||||
|
|
|
@ -912,13 +912,13 @@
|
||||||
"Message search": "Message search",
|
"Message search": "Message search",
|
||||||
"Cross-signing": "Cross-signing",
|
"Cross-signing": "Cross-signing",
|
||||||
"Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.",
|
"Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.",
|
||||||
"Where you’re logged in": "Where you’re logged in",
|
|
||||||
"Manage the names of and sign out of your sessions below or <a>verify them in your User Profile</a>.": "Manage the names of and sign out of your sessions below or <a>verify them in your User Profile</a>.",
|
|
||||||
"A session's public name is visible to people you communicate with": "A session's public name is visible to people you communicate with",
|
|
||||||
"Privacy": "Privacy",
|
"Privacy": "Privacy",
|
||||||
"%(brand)s collects anonymous analytics to allow us to improve the application.": "%(brand)s collects anonymous analytics to allow us to improve the application.",
|
"%(brand)s collects anonymous analytics to allow us to improve the application.": "%(brand)s collects anonymous analytics to allow us to improve the application.",
|
||||||
"Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.",
|
"Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.",
|
||||||
"Learn more about how we use analytics.": "Learn more about how we use analytics.",
|
"Learn more about how we use analytics.": "Learn more about how we use analytics.",
|
||||||
|
"Where you’re logged in": "Where you’re logged in",
|
||||||
|
"Manage the names of and sign out of your sessions below or <a>verify them in your User Profile</a>.": "Manage the names of and sign out of your sessions below or <a>verify them in your User Profile</a>.",
|
||||||
|
"A session's public name is visible to people you communicate with": "A session's public name is visible to people you communicate with",
|
||||||
"No media permissions": "No media permissions",
|
"No media permissions": "No media permissions",
|
||||||
"You may need to manually permit %(brand)s to access your microphone/webcam": "You may need to manually permit %(brand)s to access your microphone/webcam",
|
"You may need to manually permit %(brand)s to access your microphone/webcam": "You may need to manually permit %(brand)s to access your microphone/webcam",
|
||||||
"Missing media permissions, click the button below to request.": "Missing media permissions, click the button below to request.",
|
"Missing media permissions, click the button below to request.": "Missing media permissions, click the button below to request.",
|
||||||
|
|
Loading…
Reference in a new issue