Update privacy policy and terms URLs

This commit is contained in:
Manuel Martin 2022-07-07 16:20:24 +02:00
Родитель 944fe084f1
Коммит f5731b4c31
13 изменённых файлов: 34 добавлений и 178 удалений

Просмотреть файл

@ -1,70 +0,0 @@
# Hubs and Spoke Privacy Notice
Aug 24, 2021
In this Privacy Notice, we explain what data [Hubs](https://hubs.mozilla.com) and [Spoke](https://hubs.mozilla.com/spoke) collect and share, and why. We also adhere to the practices outlined in the Mozilla [Privacy Policy](https://www.mozilla.org/en-US/privacy/) for how we receive, handle, and share information.
## Information We Collect and Share When Youre In a Room
### Information You Share With Us and Other Participants
We need certain information to operate Hubs and Spoke. For example, we need information about your account in order to save your avatar. Heres the information we may receive from you:
**Account information**: You dont need an account to use Hubs. However, certain features (like storing your avatar), require an account. You can create an account through Mozilla or through Discord. If you create an account with your email address, we store a hashed version of your email address. If you create an account through Discord, we receive the email address associated with your Discord account and your Discord avatar.
**Room Name and URL**: Rooms and room names are publicly accessible to anyone with the URL. Mozilla stores the name and the URL for the link you share so you and others with the link to the Room can use it again.
**Avatar data**: Your selected avatar and name will be shared with other participants in your room. If youre logged in to your account, we will store your avatar. If youre not logged into your account, we will not store your avatar.
**Voice data**: If your microphone is on, Hubs sends the audio to other users in the room. Mozilla does not store the audio; we only receive it temporarily to transmit it to others in the room.
**Chat**: If you send messages in Hubs, Hubs shares it with the other users in the room. Mozilla does not store chats; we only receive it temporarily to transmit it to others in the room.
**Photos and Videos You Take, and Photos, Videos, and Objects You Upload**: If you take photos and video in a Hubs room or upload photos, videos, or objects to a room, Mozilla stores them so you can share them within the room. They are deleted within 72 hours unless you pin them. If you pin them they will be stored until you remove them from the room and they will be viewable by anyone who can access the room.
You can learn more by looking at the code itself: [Hubs](https://github.com/mozilla/hubs) (the front-end) [Dialog](https://github.com/mozilla/dialog/) (the webRTC server), [Reticulum](https://github.com/mozilla/reticulum) (the backend web server), [Hubs-Ops](https://github.com/mozilla/hubs-ops) (the infrastructure code), [Discord Bot](https://github.com/MozillaReality/hubs-discord-bot) (enables users to connect their Discord community to Hubs).
### Other Information We Receive
We use technical, interaction, error, and website analytics data to help us improve the Hubs and Spoke experiences:
**Technical data**: We receive data about the type of device you use to interact with Hubs, as well as its operating system, language, the name and version of browser, and other data needed to load and operate a room.
**Interaction data**: We receive data about your interactions with Hubs, such as the number of rooms created, messages sent through or to third-party services like Discord (including aggregated counts such as the number of messages and users who have joined relevant channels), the number of users in a particular room, the start and end time of a your interaction with Hubs, the amount of time you interact with Hubs through virtual reality, the first time in a particular month or day that you begins to use Hubs.
**Error Data**: When Hubs or Spoke crashes or fails, Mozilla receives error messages which may include the room URL, response time for requests, the page you were on when you encountered the error, your operating system, browser information, and your IP address.
**Website Analytics Data**: We use Google Analytics (GA) to better understand how you interact with Hubs and Spoke For example, we collect de-identified information about the number of Hubs rooms you create or enter, your interactions with buttons and menus, your session length, your location (country, state/province, and city), language settings, your browser type and version, viewport size, and screen resolution. You can opt-out of GA data collection by installing the [Google Analytics Opt-out Browser Add-on](https://tools.google.com/dlpage/gaoptout).
## Information We Collect When Your Create and Publish Scenes or Custom Avatars
**Scenes and avatars you create**: You need an account to create scenes in Spoke and custom avatars in Hubs. When you create a scene or custom avatar, Mozilla stores that scene or avatar so we can display it.
**Attribution information**: When you publish a scene or avatar to Hubs, you have the option to “Allow Remixing with Creative Commons [CC-BY 3.0](https://creativecommons.org/licenses/by/3.0/)” or allow Mozilla to promote your scene or avatar. If you choose one or both of these options, Mozilla will share your scene or avatar and your attribution information publicly.
**Account information**: To publish a scene or avatar to Hubs, you need to have a Hubs account. Mozilla will receive and store a hashed version of your email address to allow you to log in and view your 3D Room models and Avatars.
You can learn more by looking at the [code itself](https://github.com/mozilla/spoke) for Spoke.
## Who Hubs May Disclose Information To
**Amazon Web Services (AWS)**: Hubs and Spoke use Amazons cloud storage service to store the information collected through Hubs and Spoke. You can read [AWSs Privacy Notice](https://aws.amazon.com/privacy/) for more information.
**Search providers**: You can search for images, GIFs, and 3D Models to share in Hubs. When you search, we will send your searches to supported third parties to fulfill the search. Mozilla does not store your search queries or the search results. We support the following providers:
- [Tenor](https://tenor.com/legal-privacy)
- [Sketchfab](https://sketchfab.com/privacy)
- [YouTube](https://policies.google.com/privacy)
- [Twitch](https://www.twitch.tv/p/legal/privacy-policy/)
**Twitter**: If you connect Twitter to Hubs, you can tweet and share 2D images from Hubs rooms. Any content you tweet will be shared with Twitter and published on the Twitter platform. You can see Twitters [Privacy Policy](https://twitter.com/en/privacy) for more information.
**Discord**: If you connect Discord to Hubs, we store access tokens and the server and channel IDs that have been connected. We will synchronize chat messages, room changes, 2D and 3D objects you create, and whether you join or leave with the connected Discord channel. Hubs does not log any synchronized messages. You can see [Discords Privacy Policy](https://discordapp.com/privacy) for more information.

Просмотреть файл

@ -66,7 +66,7 @@ Contributors are expected to abide by the project's [Code of Conduct](./CODE_OF_
## Privacy
Mozilla and Hubs believe that privacy is fundamental to a healthy internet. Read our [privacy policy](./PRIVACY.md) for more info.
Mozilla and Hubs believe that privacy is fundamental to a healthy internet. Read our [privacy policy](https://www.mozilla.org/en-US/privacy/hubs/) for more info.
## License

Просмотреть файл

@ -4,4 +4,4 @@ Allowing remixing means that others can download, edit, change, and re-publish y
You can change this setting at any time, by re-saving your avatar.
If you don't allow remixing, your content will be published under the Hubs [Terms of Service](https://github.com/mozilla/hubs/blob/master/TERMS.md).
If you don't allow remixing, your content will be published under the Hubs [Terms of Service](https://www.mozilla.org/en-US/about/legal/terms/hubs/).

Просмотреть файл

@ -1,78 +0,0 @@
# Terms of Service for Hubs and Spoke
Version 3.4, Effective February 9, 2020
[Hubs by Mozilla](https://hubs.mozilla.com) is a real-time communications platform for Virtual Reality, Augmented Reality, Desktop, Laptop, Mobile, or however else you browse the internet.
Spoke is a tool to arrange 3D models into scenes for use in Hubs.
These Terms of Service explain your rights and responsibilities when you use Hubs and Spoke.
### 1. Privacy Policy
The Hubs [Privacy Notice](https://github.com/mozilla/hubs/blob/master/PRIVACY.md) explains what information we collect when you use Hubs or Spoke and how that information is handled and shared.
### 2. Communications and Content
Hubs allows users to send information (such as audio, video, text, images, 3D models, and scenes) to other users.
Spoke allows users to arrange 3D Room models into scenes that can appear in Hubs. You can also use Hubs to customize your in-room Avatar.
By using Hubs or Spoke, you agree to give Mozilla all rights necessary to operate Hubs and Spoke. This includes, but is not limited to, a license and permission to process, transmit, and display the information you send through Hubs or Spoke. It also includes permission to gather and share information as described in the [Privacy Notice](https://github.com/mozilla/hubs/blob/master/PRIVACY.md) for Hubs and Spoke.
When you submit information to Hubs or Spoke, you continue to own the rights to your content. You grant us a worldwide, royalty-free, perpetual, irrevocable, non-exclusive, transferable, and sublicensable license to use, copy, modify, adapt, prepare derivative works from, distribute, perform, and display that information, audio, video, images, or 3D models for the purpose of operating Hubs and Spoke. You also agree that we may remove metadata associated with the information or data you submit. If you allow allow remixing of a scene or avatar you create, you agree to license your scene under a [CC-BY 3.0](https://creativecommons.org/licenses/by/3.0/legalcode) license.
You also represent and warrant that you have the authority to grant Mozilla all rights and permissions necessary for the operation of Hubs and Spoke.
To learn more about how Hubs operates, you can see the source code [here](https://github.com/mozilla/hubs).
To learn more about how Spoke operates, you can see the source code [here](https://github.com/mozilla/spoke).
Any ideas, suggestions, and feedback about Hubs or Spoke that you provide to us are entirely voluntary, and you agree that Mozilla may use such ideas, suggestions, and feedback without compensation or obligation to you.
You are solely responsible for the information you send, create, or edit using Hubs or Spoke, and the consequences of sending, creating, or editing that information.
### 3. Conditions of Use
By using Hubs or Spoke, you agree that your use will comply with Mozillas [Conditions of Use](https://www.mozilla.org/en-US/about/legal/acceptable-use/). Mozilla reserves the right to remove any content, suspend any users, and shut down any room it reasonably believes has violated these conditions.
Please also be aware of [Mozillas Community Participation Guidelines](https://www.mozilla.org/en-US/about/governance/policies/participation/), which address participation in Mozilla communities.
### 4. Mozilla's Rights
Mozilla does not grant you any intellectual property rights in Hubs or Spoke unless these Terms specifically say otherwise. For example, these Terms do not provide the right to use any of Mozillas copyrights, trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
Mozilla distributes the Hubs and Spoke software under an open source license. To learn more, you can read the [license for Spoke]((https://github.com/mozilla/spoke/blob/master/LICENSE)), and you can read the [license for Hubs](https://github.com/mozilla/hubs/blob/master/LICENSE) or read the [FAQ](https://www.mozilla.org/en-US/MPL/2.0/FAQ/).
### 5. Services Interruption; Term; Termination
We are continuing to develop Hubs and Spoke. As a result, we plan to upgrade and change them over time. To do this, we might have to temporarily suspend their service and it is not always possible for us to give notice. You will not be entitled to claim expenses or damages for such suspension or limitation of the use of Hubs or Spoke.
These Terms apply to your use of Hubs and Spoke and will continue to apply until ended by either you or upon notice from Mozilla. You can choose to end them at any time for any reason by discontinuing your use of Hubs and Spoke.
We may cut off your access to Hubs or Spoke, either temporarily or permanently at any time for any reason. This includes, but is not limited to, situations where we reasonably believe: (i) you have violated these Terms (ii) you create risk or possible legal exposure for Mozilla; or (iii) providing and operating Hubs is no longer commercially viable. If possible, we will make reasonable efforts to notify you through the relevant program, either Hubs or Spoke .
In all such cases, these Terms shall terminate, including, without limitation, your license to use Hubs and Spoke, except that the sections with the following titles shall continue to apply: Indemnification, Disclaimer; Limitation of Liability and Miscellaneous.
### 6. Indemnification
You agree to defend, indemnify and hold harmless Mozilla, and its respective parent and affiliate companies, contractors, contributors, licensors, partners, directors, officers, employees and agents ("Indemnified Parties") from and against any and all third party claims and expenses, including attorneys' fees, arising out of or related to your use of Hubs or Spoke. This includes, but is not limited to, claims and expenses from any content you transmit, edit, or create using Hubs or Spoke.
### 7. Disclaimer; Limitation of Liability
THE SERVICES ARE PROVIDED "AS IS" WITH ALL FAULTS. TO THE EXTENT PERMITTED BY LAW, THE INDEMNIFIED PARTIES, HEREBY DISCLAIM ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES THAT THE SERVICES ARE FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, AND NON-INFRINGING.
YOU BEAR THE ENTIRE RISK AS TO SELECTING THE SERVICES FOR YOUR PURPOSES AND AS TO THE QUALITY AND PERFORMANCE OF THE SERVICES, INCLUDING WITHOUT LIMITATION THE RISK THAT YOUR CONTENT IS DELETED OR CORRUPTED.
THIS LIMITATION WILL APPLY NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF IMPLIED WARRANTIES, SO THIS DISCLAIMER MAY NOT APPLY TO YOU.
EXCEPT AS REQUIRED BY LAW, THE INDEMNIFIED PARTIES, WILL NOT BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, OR EXEMPLARY DAMAGES ARISING OUT OF OR IN ANY WAY RELATING TO THESE TERMS OR THE USE OF OR INABILITY TO USE THE SERVICES, INCLUDING WITHOUT LIMITATION DIRECT AND INDIRECT DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, LOST PROFITS, LOSS OF DATA, AND COMPUTER FAILURE OR MALFUNCTION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND REGARDLESS OF THE THEORY (CONTRACT, TORT, OR OTHERWISE) UPON WHICH SUCH CLAIM IS BASED. THE COLLECTIVE LIABILITY OF THE INDEMNIFIED PARTIES, UNDER THIS AGREEMENT WILL NOT EXCEED $500 (FIVE HUNDRED DOLLARS). SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL, CONSEQUENTIAL, OR SPECIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
### 8. Modifications to These Terms
Mozilla may update these Terms from time to time. We will post the updated Terms online. If the changes are substantive, we may announce the update through Mozilla's usual channels for such announcements such as blog posts, forums, or in the particular service itself, in this case: Hubs and Spoke.
Your continued use of Hubs or Spoke after we post the new Terms constitutes your acceptance of the new Terms. To make your review more convenient, we will post an effective date at the top of this page.
### 9. Miscellaneous
These Terms make up the entire agreement between you and Mozilla concerning Hubs and Spoke. The laws of the state of California, U.S.A (excluding its conflict of law provisions) govern this agreement.
If any portion of these Terms is held to be invalid or unenforceable, the remaining portions remain in full force and effect. If there is a conflict or ambiguity between a translated version of these terms and the English language version, the English language version applies.
### 10. Contact Us
For support, to provide feedback, or to report abuse of Hubs or Spoke or violations of the Conditions of Use, you can email us at [hubs@mozilla.com](mailto:hubs@mozilla.com).
To report a claim of copyright or trademark infringement, see [our policy](https://www.mozilla.org/en-US/about/legal/report-infringement/).
For other notices, you may email us at [legal-notices@mozilla.com](mailto:legal-notices@mozilla.com) or write to us at Mozilla Corporation (Attn: Mozilla Legal Notices, 2 Harrison Street, San Francisco CA 94105).

Просмотреть файл

@ -16,6 +16,11 @@ CL.DEFAULT_INTERACTABLE = CL.INTERACTABLES | CL.ENVIRONMENT | CL.AVATAR | CL.HAN
CL.UNOWNED_INTERACTABLE = CL.INTERACTABLES | CL.HANDS;
CL.DEFAULT_SPAWNER = CL.INTERACTABLES | CL.HANDS;
const PRIVACY = "https://www.mozilla.org/en-US/privacy/hubs/";
const TERMS = "https://www.mozilla.org/en-US/about/legal/terms/hubs/";
module.exports = {
COLLISION_LAYERS: CL
COLLISION_LAYERS: CL,
PRIVACY,
TERMS
};

Просмотреть файл

@ -2,6 +2,7 @@ import React from "react";
import PropTypes from "prop-types";
import configs from "../../utils/configs";
import { OAuthScreen } from "./OAuthScreen";
import { TERMS, PRIVACY } from "../../constants";
export function OAuthScreenContainer({ oauthInfo }) {
const { url, type } = oauthInfo[0];
@ -10,14 +11,8 @@ export function OAuthScreenContainer({ oauthInfo }) {
<OAuthScreen
provider={type}
redirectUrl={url}
termsUrl={
configs.feature("show_terms") &&
configs.link("terms_of_use", "https://github.com/mozilla/hubs/blob/master/TERMS.md")
}
privacyUrl={
configs.feature("show_privacy") &&
configs.link("privacy_notice", "https://github.com/mozilla/hubs/blob/master/PRIVACY.md")
}
termsUrl={configs.feature("show_terms") && configs.link("terms_of_use", TERMS)}
privacyUrl={configs.feature("show_privacy") && configs.link("privacy_notice", PRIVACY)}
/>
);
}

Просмотреть файл

@ -2,6 +2,7 @@ import React, { useState } from "react";
import PropTypes from "prop-types";
import configs from "../../utils/configs";
import { SignInModal, SignInStep, SubmitEmail, WaitForVerification, SignInComplete } from "./SignInModal";
import { TERMS, PRIVACY } from "../../constants";
// TODO: Migrate to use AuthContext
export function RoomSignInModalContainer({ onClose, step, onSubmitEmail, message, onContinue }) {
@ -16,9 +17,9 @@ export function RoomSignInModalContainer({ onClose, step, onSubmitEmail, message
onSubmitEmail(email);
}}
initialEmail={cachedEmail}
termsUrl={configs.link("terms_of_use", "https://github.com/mozilla/hubs/blob/master/TERMS.md")}
termsUrl={configs.link("terms_of_use", TERMS)}
showTerms={configs.feature("show_terms")}
privacyUrl={configs.link("privacy_notice", "https://github.com/mozilla/hubs/blob/master/PRIVACY.md")}
privacyUrl={configs.link("privacy_notice", PRIVACY)}
showPrivacy={configs.feature("show_privacy")}
message={message}
/>

Просмотреть файл

@ -1,4 +1,5 @@
import React from "react";
import { TERMS, PRIVACY } from "../../constants";
// import { Center } from "../layout/Center";
// import { Page } from "../layout/Page";
import { RoomLayout } from "../layout/RoomLayout";
@ -19,9 +20,9 @@ export default {
// <Center>
// <SignInModal disableFullscreen>
// <SubmitEmail
// termsUrl="https://github.com/mozilla/hubs/blob/master/TERMS.md"
// termsUrl={TERMS}
// showTerms
// privacyUrl="https://github.com/mozilla/hubs/blob/master/PRIVACY.md"
// privacyUrl={PRIVACY}
// showPrivacy
// />
// </SignInModal>
@ -43,10 +44,7 @@ export const RoomSubmit = () => (
<RoomLayout
modal={
<SignInModal closeable>
<SubmitEmail
termsUrl="https://github.com/mozilla/hubs/blob/master/TERMS.md"
privacyUrl="https://github.com/mozilla/hubs/blob/master/PRIVACY.md"
/>
<SubmitEmail termsUrl={TERMS} privacyUrl={PRIVACY} />
</SignInModal>
}
/>
@ -56,7 +54,7 @@ export const RoomSubmitNoTOS = () => (
<RoomLayout
modal={
<SignInModal closeable>
<SubmitEmail privacyUrl="https://github.com/mozilla/hubs/blob/master/PRIVACY.md" />
<SubmitEmail privacyUrl={PRIVACY} />
</SignInModal>
}
/>
@ -66,7 +64,7 @@ export const RoomSubmitNoPrivacyPolicy = () => (
<RoomLayout
modal={
<SignInModal closeable>
<SubmitEmail termsUrl="https://github.com/mozilla/hubs/blob/master/TERMS.md" />
<SubmitEmail termsUrl={TERMS} />
</SignInModal>
}
/>

Просмотреть файл

@ -1,4 +1,5 @@
import React, { useCallback, useReducer, useContext, useEffect } from "react";
import { TERMS, PRIVACY } from "../../constants";
import configs from "../../utils/configs";
import { AuthContext } from "./AuthContext";
import { SignInModal, SignInStep, WaitForVerification, SubmitEmail } from "./SignInModal";
@ -72,9 +73,9 @@ export function SignInModalContainer() {
onSubmitEmail={submitEmail}
initialEmail={email}
signInReason={qs.get("sign_in_reason")}
termsUrl={configs.link("terms_of_use", "https://github.com/mozilla/hubs/blob/master/TERMS.md")}
termsUrl={configs.link("terms_of_use", TERMS)}
showTerms={configs.feature("show_terms")}
privacyUrl={configs.link("privacy_notice", "https://github.com/mozilla/hubs/blob/master/PRIVACY.md")}
privacyUrl={configs.link("privacy_notice", PRIVACY)}
showPrivacy={configs.feature("show_privacy")}
/>
) : (

Просмотреть файл

@ -5,6 +5,7 @@ import { AuthContext } from "../auth/AuthContext";
import configs from "../../utils/configs";
import { useAccessibleOutlineStyle } from "../input/useAccessibleOutlineStyle";
import { isHmc } from "../../utils/isHmc";
import { TERMS, PRIVACY } from "../../constants";
export function PageContainer({ children, ...rest }) {
const auth = useContext(AuthContext);
@ -26,9 +27,9 @@ export function PageContainer({ children, ...rest }) {
hidePoweredBy={configs.feature("hide_powered_by")}
showWhatsNewLink={configs.feature("show_whats_new_link")}
showTerms={configs.feature("show_terms")}
termsUrl={configs.link("terms_of_use", "https://github.com/mozilla/hubs/blob/master/TERMS.md")}
termsUrl={configs.link("terms_of_use", TERMS)}
showPrivacy={configs.feature("show_privacy")}
privacyUrl={configs.link("privacy_notice", "https://github.com/mozilla/hubs/blob/master/PRIVACY.md")}
privacyUrl={configs.link("privacy_notice", PRIVACY)}
showCompanyLogo={configs.feature("show_company_logo")}
companyLogoUrl={configs.image("company_logo")}
showDiscordBotLink={configs.feature("show_discord_bot_link")}

Просмотреть файл

@ -2,12 +2,13 @@ import React from "react";
import PropTypes from "prop-types";
import configs from "../../utils/configs";
import { ExitedRoomScreen } from "./ExitedRoomScreen";
import constants from "../../constants";
export function ExitedRoomScreenContainer({ reason }) {
return (
<ExitedRoomScreen
showTerms={configs.feature("show_terms")}
termsUrl={configs.link("terms_of_use", "https://github.com/mozilla/hubs/blob/master/TERMS.md")}
termsUrl={configs.link("terms_of_use", constants.TERMS)}
showSourceLink={configs.feature("show_source_link")}
reason={reason}
contactEmail={configs.translation("contact-email")}

Просмотреть файл

@ -11,6 +11,7 @@ import { ReactComponent as TextDocumentIcon } from "../icons/TextDocument.svg";
import { ReactComponent as SupportIcon } from "../icons/Support.svg";
import { ReactComponent as ShieldIcon } from "../icons/Shield.svg";
import { CompactMoreMenuButton, MoreMenuContextProvider, MoreMenuPopoverButton } from "./MoreMenuPopover";
import { TERMS, PRIVACY } from "../../constants";
export default {
title: "Room/MoreMenuPopover",
@ -58,13 +59,13 @@ const menu = [
id: "tos",
label: "Terms of Service",
icon: TextDocumentIcon,
href: "https://github.com/mozilla/hubs/blob/master/TERMS.md"
href: TERMS
},
{
id: "privacy",
label: "Privacy Notice",
icon: ShieldIcon,
href: "https://github.com/mozilla/hubs/blob/master/PRIVACY.md"
href: PRIVACY
}
]
}

5
src/react-components/ui-root.js поставляемый
Просмотреть файл

@ -94,6 +94,7 @@ import { TipContainer, FullscreenTip } from "./room/TipContainer";
import { SpectatingLabel } from "./room/SpectatingLabel";
import { SignInMessages } from "./auth/SignInModal";
import { MediaDevicesEvents } from "../utils/media-devices-utils";
import { TERMS, PRIVACY } from "../constants";
const avatarEditorDebug = qsTruthy("avatarEditorDebug");
@ -1276,13 +1277,13 @@ class UIRoot extends Component {
id: "tos",
label: <FormattedMessage id="more-menu.tos" defaultMessage="Terms of Service" />,
icon: TextDocumentIcon,
href: configs.link("terms_of_use", "https://github.com/mozilla/hubs/blob/master/TERMS.md")
href: configs.link("terms_of_use", TERMS)
},
configs.feature("show_privacy") && {
id: "privacy",
label: <FormattedMessage id="more-menu.privacy" defaultMessage="Privacy Notice" />,
icon: ShieldIcon,
href: configs.link("privacy_notice", "https://github.com/mozilla/hubs/blob/master/PRIVACY.md")
href: configs.link("privacy_notice", PRIVACY)
}
].filter(item => item)
}