mirror of
https://github.com/darkwire/darkwire.io.git
synced 2025-07-27 05:42:52 +00:00
Refactor small components
This commit is contained in:
parent
a49db05eb9
commit
bbbe0f5e2d
@ -6,32 +6,22 @@ import { COMMIT_SHA } from '@/config/env';
|
|||||||
import apiUrlGenerator from '@/api/generator';
|
import apiUrlGenerator from '@/api/generator';
|
||||||
import styles from './styles.module.scss';
|
import styles from './styles.module.scss';
|
||||||
|
|
||||||
class About extends Component {
|
const About = ({ roomId: roomIdProp }) => {
|
||||||
constructor(props) {
|
const [roomId, setRoomId] = React.useState(roomIdProp);
|
||||||
super(props);
|
const [abuseReported, setAbuseReported] = React.useState(false);
|
||||||
this.state = {
|
|
||||||
roomId: props.roomId,
|
const handleUpdateRoomId = evt => {
|
||||||
abuseReported: false,
|
setRoomId(evt.target.value);
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
|
||||||
handleUpdateRoomId(evt) {
|
const handleReportAbuse = evt => {
|
||||||
this.setState({
|
|
||||||
roomId: evt.target.value,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
handleReportAbuse(evt) {
|
|
||||||
evt.preventDefault();
|
evt.preventDefault();
|
||||||
fetch(`${apiUrlGenerator('abuse')}/${this.state.roomId}`, {
|
fetch(`${apiUrlGenerator('abuse')}/${roomId}`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
});
|
});
|
||||||
this.setState({
|
setAbuseReported(true);
|
||||||
abuseReported: true,
|
};
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
render() {
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.base}>
|
<div className={styles.base}>
|
||||||
<div className={styles.links}>
|
<div className={styles.links}>
|
||||||
@ -96,8 +86,8 @@ class About extends Component {
|
|||||||
<h4>Report Abuse</h4>
|
<h4>Report Abuse</h4>
|
||||||
<p>
|
<p>
|
||||||
We encourage you to report problematic content to us. Please keep in mind that to help ensure the safety,
|
We encourage you to report problematic content to us. Please keep in mind that to help ensure the safety,
|
||||||
confidentiality and security of your messages, we do not have the contents of messages available to us,
|
confidentiality and security of your messages, we do not have the contents of messages available to us, which
|
||||||
which limits our ability to verify the report and take action.
|
limits our ability to verify the report and take action.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
When needed, you can take a screenshot of the content and share it, along with any available contact info,
|
When needed, you can take a screenshot of the content and share it, along with any available contact info,
|
||||||
@ -106,15 +96,15 @@ class About extends Component {
|
|||||||
<p>
|
<p>
|
||||||
To report any content, email us at abuse[at]darkwire.io or submit the room ID below to report anonymously.
|
To report any content, email us at abuse[at]darkwire.io or submit the room ID below to report anonymously.
|
||||||
</p>
|
</p>
|
||||||
<form onSubmit={this.handleReportAbuse.bind(this)}>
|
<form onSubmit={handleReportAbuse}>
|
||||||
{this.state.abuseReported && <div>Thank you!</div>}
|
{abuseReported && <div>Thank you!</div>}
|
||||||
<div>
|
<div>
|
||||||
<div className="input-group">
|
<div className="input-group">
|
||||||
<input
|
<input
|
||||||
className="form-control"
|
className="form-control"
|
||||||
placeholder="Room ID"
|
placeholder="Room ID"
|
||||||
onChange={this.handleUpdateRoomId.bind(this)}
|
onChange={handleUpdateRoomId}
|
||||||
value={this.state.roomId}
|
value={roomId}
|
||||||
type="text"
|
type="text"
|
||||||
/>
|
/>
|
||||||
<div className="input-group-append">
|
<div className="input-group-append">
|
||||||
@ -142,31 +132,30 @@ class About extends Component {
|
|||||||
<h4>Acceptable Use Policy</h4>
|
<h4>Acceptable Use Policy</h4>
|
||||||
<p>
|
<p>
|
||||||
This Acceptable Use Policy (this “Policy”) describes prohibited uses of the web services offered by Darkwire
|
This Acceptable Use Policy (this “Policy”) describes prohibited uses of the web services offered by Darkwire
|
||||||
and its affiliates (the “Services”) and the website located at https://darkwire.io (the “Darkwire Site”).
|
and its affiliates (the “Services”) and the website located at https://darkwire.io (the “Darkwire Site”). The
|
||||||
The examples described in this Policy are not exhaustive. We may modify this Policy at any time by posting a
|
examples described in this Policy are not exhaustive. We may modify this Policy at any time by posting a
|
||||||
revised version on the Darkwire Site. By using the Services or accessing the Darkwire Site, you agree to the
|
revised version on the Darkwire Site. By using the Services or accessing the Darkwire Site, you agree to the
|
||||||
latest version of this Policy. If you violate the Policy or authorize or help others to do so, we may
|
latest version of this Policy. If you violate the Policy or authorize or help others to do so, we may suspend
|
||||||
suspend or terminate your use of the Services.
|
or terminate your use of the Services.
|
||||||
</p>
|
</p>
|
||||||
<strong>No Illegal, Harmful, or Offensive Use or Content</strong>
|
<strong>No Illegal, Harmful, or Offensive Use or Content</strong>
|
||||||
<p>
|
<p>
|
||||||
You may not use, or encourage, promote, facilitate or instruct others to use, the Services or Darkwire Site
|
You may not use, or encourage, promote, facilitate or instruct others to use, the Services or Darkwire Site
|
||||||
for any illegal, harmful, fraudulent, infringing or offensive use, or to transmit, store, display,
|
for any illegal, harmful, fraudulent, infringing or offensive use, or to transmit, store, display, distribute
|
||||||
distribute or otherwise make available content that is illegal, harmful, fraudulent, infringing or
|
or otherwise make available content that is illegal, harmful, fraudulent, infringing or offensive. Prohibited
|
||||||
offensive. Prohibited activities or content include:
|
activities or content include:
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<strong>Illegal, Harmful or Fraudulent Activities.</strong> Any activities that are illegal, that violate
|
<strong>Illegal, Harmful or Fraudulent Activities.</strong> Any activities that are illegal, that violate
|
||||||
the rights of others, or that may be harmful to others, our operations or reputation, including
|
the rights of others, or that may be harmful to others, our operations or reputation, including
|
||||||
disseminating, promoting or facilitating child pornography, offering or disseminating fraudulent goods,
|
disseminating, promoting or facilitating child pornography, offering or disseminating fraudulent goods,
|
||||||
services, schemes, or promotions, make-money-fast schemes, ponzi and pyramid schemes, phishing, or
|
services, schemes, or promotions, make-money-fast schemes, ponzi and pyramid schemes, phishing, or pharming.
|
||||||
pharming.
|
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<strong>Infringing Content.</strong> Content that infringes or misappropriates the intellectual property
|
<strong>Infringing Content.</strong> Content that infringes or misappropriates the intellectual property or
|
||||||
or proprietary rights of others.
|
proprietary rights of others.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
@ -184,13 +173,12 @@ class About extends Component {
|
|||||||
<strong>No Security Violations</strong>
|
<strong>No Security Violations</strong>
|
||||||
<br />
|
<br />
|
||||||
You may not use the Services to violate the security or integrity of any network, computer or communications
|
You may not use the Services to violate the security or integrity of any network, computer or communications
|
||||||
system, software application, or network or computing device (each, a “System”). Prohibited activities
|
system, software application, or network or computing device (each, a “System”). Prohibited activities include:
|
||||||
include:
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<strong>Unauthorized Access.</strong> Accessing or using any System without permission, including
|
<strong>Unauthorized Access.</strong> Accessing or using any System without permission, including attempting
|
||||||
attempting to probe, scan, or test the vulnerability of a System or to breach any security or
|
to probe, scan, or test the vulnerability of a System or to breach any security or authentication measures
|
||||||
authentication measures used by a System.
|
used by a System.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
@ -205,8 +193,8 @@ class About extends Component {
|
|||||||
</ul>
|
</ul>
|
||||||
<strong>No Network Abuse</strong>
|
<strong>No Network Abuse</strong>
|
||||||
<br />
|
<br />
|
||||||
You may not make network connections to any users, hosts, or networks unless you have permission to
|
You may not make network connections to any users, hosts, or networks unless you have permission to communicate
|
||||||
communicate with them. Prohibited activities include:
|
with them. Prohibited activities include:
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<strong>Monitoring or Crawling.</strong> Monitoring or crawling of a System that impairs or disrupts the
|
<strong>Monitoring or Crawling.</strong> Monitoring or crawling of a System that impairs or disrupts the
|
||||||
@ -219,9 +207,9 @@ class About extends Component {
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<strong>Intentional Interference.</strong> Interfering with the proper functioning of any System,
|
<strong>Intentional Interference.</strong> Interfering with the proper functioning of any System, including
|
||||||
including any deliberate attempt to overload a system by mail bombing, news bombing, broadcast attacks, or
|
any deliberate attempt to overload a system by mail bombing, news bombing, broadcast attacks, or flooding
|
||||||
flooding techniques.
|
techniques.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
@ -230,21 +218,21 @@ class About extends Component {
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<strong>Avoiding System Restrictions.</strong> Using manual or electronic means to avoid any use
|
<strong>Avoiding System Restrictions.</strong> Using manual or electronic means to avoid any use limitations
|
||||||
limitations placed on a System, such as access and storage restrictions.
|
placed on a System, such as access and storage restrictions.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<strong>No E-Mail or Other Message Abuse</strong>
|
<strong>No E-Mail or Other Message Abuse</strong>
|
||||||
<br />
|
<br />
|
||||||
You will not distribute, publish, send, or facilitate the sending of unsolicited mass e-mail or other
|
You will not distribute, publish, send, or facilitate the sending of unsolicited mass e-mail or other messages,
|
||||||
messages, promotions, advertising, or solicitations (like “spam”), including commercial advertising and
|
promotions, advertising, or solicitations (like “spam”), including commercial advertising and informational
|
||||||
informational announcements. You will not alter or obscure mail headers or assume a sender’s identity without
|
announcements. You will not alter or obscure mail headers or assume a sender’s identity without the sender’s
|
||||||
the sender’s explicit permission. You will not collect replies to messages sent from another internet service
|
explicit permission. You will not collect replies to messages sent from another internet service provider if
|
||||||
provider if those messages violate this Policy or the acceptable use policy of that provider.
|
those messages violate this Policy or the acceptable use policy of that provider.
|
||||||
<strong>Our Monitoring and Enforcement</strong>
|
<strong>Our Monitoring and Enforcement</strong>
|
||||||
<br />
|
<br />
|
||||||
We reserve the right, but do not assume the obligation, to investigate any violation of this Policy or misuse
|
We reserve the right, but do not assume the obligation, to investigate any violation of this Policy or misuse of
|
||||||
of the Services or Darkwire Site. We may:
|
the Services or Darkwire Site. We may:
|
||||||
<ul>
|
<ul>
|
||||||
<li>investigate violations of this Policy or misuse of the Services or Darkwire Site; or</li>
|
<li>investigate violations of this Policy or misuse of the Services or Darkwire Site; or</li>
|
||||||
<li>
|
<li>
|
||||||
@ -253,17 +241,17 @@ class About extends Component {
|
|||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
We may report any activity that we suspect violates any law or regulation to appropriate law enforcement
|
We may report any activity that we suspect violates any law or regulation to appropriate law enforcement
|
||||||
officials, regulators, or other appropriate third parties. Our reporting may include disclosing
|
officials, regulators, or other appropriate third parties. Our reporting may include disclosing appropriate
|
||||||
appropriate customer information. We also may cooperate with appropriate law enforcement agencies,
|
customer information. We also may cooperate with appropriate law enforcement agencies, regulators, or other
|
||||||
regulators, or other appropriate third parties to help with the investigation and prosecution of illegal
|
appropriate third parties to help with the investigation and prosecution of illegal conduct by providing
|
||||||
conduct by providing network and systems information related to alleged violations of this Policy.
|
network and systems information related to alleged violations of this Policy.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
Reporting of Violations of this Policy
|
Reporting of Violations of this Policy
|
||||||
<br />
|
<br />
|
||||||
If you become aware of any violation of this Policy, you will immediately notify us and provide us with
|
If you become aware of any violation of this Policy, you will immediately notify us and provide us with
|
||||||
assistance, as requested, to stop or remedy the violation. To report any violation of this Policy, please
|
assistance, as requested, to stop or remedy the violation. To report any violation of this Policy, please follow
|
||||||
follow our abuse reporting process.
|
our abuse reporting process.
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="terms">
|
<section id="terms">
|
||||||
@ -289,9 +277,9 @@ class About extends Component {
|
|||||||
<p>
|
<p>
|
||||||
Darkwire has no control over, and assumes no responsibility for, the content, privacy policies, or practices
|
Darkwire has no control over, and assumes no responsibility for, the content, privacy policies, or practices
|
||||||
of any third party web sites or services. You further acknowledge and agree that Darkwire shall not be
|
of any third party web sites or services. You further acknowledge and agree that Darkwire shall not be
|
||||||
responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or
|
responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in
|
||||||
in connection with use of or reliance on any such content, goods or services available on or through any
|
connection with use of or reliance on any such content, goods or services available on or through any such web
|
||||||
such web sites or services.
|
sites or services.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
We strongly advise you to read the terms and conditions and privacy policies of any third-party web sites or
|
We strongly advise you to read the terms and conditions and privacy policies of any third-party web sites or
|
||||||
@ -313,11 +301,10 @@ class About extends Component {
|
|||||||
regard to its conflict of law provisions.
|
regard to its conflict of law provisions.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Our failure to enforce any right or provision of these Terms will not be considered a waiver of those
|
Our failure to enforce any right or provision of these Terms will not be considered a waiver of those rights.
|
||||||
rights. If any provision of these Terms is held to be invalid or unenforceable by a court, the remaining
|
If any provision of these Terms is held to be invalid or unenforceable by a court, the remaining provisions of
|
||||||
provisions of these Terms will remain in effect. These Terms constitute the entire agreement between us
|
these Terms will remain in effect. These Terms constitute the entire agreement between us regarding our
|
||||||
regarding our Service, and supersede and replace any prior agreements we might have between us regarding the
|
Service, and supersede and replace any prior agreements we might have between us regarding the Service.
|
||||||
Service.
|
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@ -328,8 +315,8 @@ class About extends Component {
|
|||||||
Proceed with caution and always confirm recipients beforre starting a chat session.
|
Proceed with caution and always confirm recipients beforre starting a chat session.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Please also note that <strong>ALL CHATROOMS</strong> are public. Anyone can guess your room URL. If
|
Please also note that <strong>ALL CHATROOMS</strong> are public. Anyone can guess your room URL. If you
|
||||||
you need a more-private room, use the lock feature or set the URL manually by entering a room ID after
|
need a more-private room, use the lock feature or set the URL manually by entering a room ID after
|
||||||
"darkwire.io/".
|
"darkwire.io/".
|
||||||
</p>
|
</p>
|
||||||
<br />
|
<br />
|
||||||
@ -340,17 +327,17 @@ class About extends Component {
|
|||||||
WARRANTIES OF ANY KIND. TO THE FULLEST EXTENT PERMITTED BY LAW, Darkwire SPECIFICALLY DISCLAIMS ALL
|
WARRANTIES OF ANY KIND. TO THE FULLEST EXTENT PERMITTED BY LAW, Darkwire SPECIFICALLY DISCLAIMS ALL
|
||||||
WARRANTIES AND CONDITIONS OF ANY KIND, INCLUDING ALL IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY,
|
WARRANTIES AND CONDITIONS OF ANY KIND, INCLUDING ALL IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY,
|
||||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NONINFRINGEMENT FOR OUR WEBSITE AND ANY CONTRACTS AND SERVICES
|
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NONINFRINGEMENT FOR OUR WEBSITE AND ANY CONTRACTS AND SERVICES
|
||||||
YOU PURCHASE THROUGH IT. Darkwire SHALL NOT HAVE ANY LIABILITY OR RESPONSIBILITY FOR ANY ERRORS OR
|
YOU PURCHASE THROUGH IT. Darkwire SHALL NOT HAVE ANY LIABILITY OR RESPONSIBILITY FOR ANY ERRORS OR OMISSIONS
|
||||||
OMISSIONS IN THE CONTENT OF OUR WEBSITE, FOR CONTRACTS OR SERVICES SOLD THROUGH OUR WEBSITE, FOR YOUR
|
IN THE CONTENT OF OUR WEBSITE, FOR CONTRACTS OR SERVICES SOLD THROUGH OUR WEBSITE, FOR YOUR ACTION OR
|
||||||
ACTION OR INACTION IN CONNECTION WITH OUR WEBSITE OR FOR ANY DAMAGE TO YOUR COMPUTER OR DATA OR ANY OTHER
|
INACTION IN CONNECTION WITH OUR WEBSITE OR FOR ANY DAMAGE TO YOUR COMPUTER OR DATA OR ANY OTHER DAMAGE YOU
|
||||||
DAMAGE YOU MAY INCUR IN CONNECTION WITH OUR WEBSITE. YOUR USE OF OUR WEBSITE AND ANY CONTRACTS OR SERVICES
|
MAY INCUR IN CONNECTION WITH OUR WEBSITE. YOUR USE OF OUR WEBSITE AND ANY CONTRACTS OR SERVICES ARE AT YOUR
|
||||||
ARE AT YOUR OWN RISK. IN NO EVENT SHALL EITHER Darkwire OR THEIR AGENTS BE LIABLE FOR ANY DIRECT,
|
OWN RISK. IN NO EVENT SHALL EITHER Darkwire OR THEIR AGENTS BE LIABLE FOR ANY DIRECT, INDIRECT, PUNITIVE,
|
||||||
INDIRECT, PUNITIVE, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN ANY WAY CONNECTED
|
INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN ANY WAY CONNECTED WITH THE USE OF OUR
|
||||||
WITH THE USE OF OUR WEBSITE, CONTRACTS AND SERVICES PURCHASED THROUGH OUR WEBSITE, THE DELAY OR INABILITY
|
WEBSITE, CONTRACTS AND SERVICES PURCHASED THROUGH OUR WEBSITE, THE DELAY OR INABILITY TO USE OUR WEBSITE OR
|
||||||
TO USE OUR WEBSITE OR OTHERWISE ARISING IN CONNECTION WITH OUR WEBSITE, CONTRACTS OR RELATED SERVICES,
|
OTHERWISE ARISING IN CONNECTION WITH OUR WEBSITE, CONTRACTS OR RELATED SERVICES, WHETHER BASED ON CONTRACT,
|
||||||
WHETHER BASED ON CONTRACT, TORT, STRICT LIABILITY OR OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF ANY
|
TORT, STRICT LIABILITY OR OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF ANY SUCH DAMAGES. IN NO EVENT
|
||||||
SUCH DAMAGES. IN NO EVENT SHALL Darkwire’s LIABILITY FOR ANY DAMAGE CLAIM EXCEED THE AMOUNT PAID BY YOU TO
|
SHALL Darkwire’s LIABILITY FOR ANY DAMAGE CLAIM EXCEED THE AMOUNT PAID BY YOU TO Darkwire FOR THE
|
||||||
Darkwire FOR THE TRANSACTION GIVING RISE TO SUCH DAMAGE CLAIM.
|
TRANSACTION GIVING RISE TO SUCH DAMAGE CLAIM.
|
||||||
</strong>
|
</strong>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@ -369,8 +356,8 @@ class About extends Component {
|
|||||||
<p>
|
<p>
|
||||||
<strong>
|
<strong>
|
||||||
YOU AGREE THAT ALL TIMES, YOU WILL LOOK TO ATTORNEYS FROM WHOM YOU PURCHASE SERVICES FOR ANY CLAIMS OF ANY
|
YOU AGREE THAT ALL TIMES, YOU WILL LOOK TO ATTORNEYS FROM WHOM YOU PURCHASE SERVICES FOR ANY CLAIMS OF ANY
|
||||||
NATURE, INCLUDING LOSS, DAMAGE, OR WARRANTY. Darkwire AND THEIR RESPECTIVE AFFILIATES MAKE NO
|
NATURE, INCLUDING LOSS, DAMAGE, OR WARRANTY. Darkwire AND THEIR RESPECTIVE AFFILIATES MAKE NO REPRESENTATION
|
||||||
REPRESENTATION OR GUARANTEES ABOUT ANY CONTRACTS AND SERVICES OFFERED THROUGH OUR WEBSITE.
|
OR GUARANTEES ABOUT ANY CONTRACTS AND SERVICES OFFERED THROUGH OUR WEBSITE.
|
||||||
</strong>
|
</strong>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
@ -381,15 +368,15 @@ class About extends Component {
|
|||||||
</p>
|
</p>
|
||||||
<strong>Indemnification</strong>
|
<strong>Indemnification</strong>
|
||||||
<p>
|
<p>
|
||||||
You agree to defend, indemnify and hold Darkwire harmless from and against any and all claims, damages,
|
You agree to defend, indemnify and hold Darkwire harmless from and against any and all claims, damages, costs
|
||||||
costs and expenses, including attorneys' fees, arising from or related to your use of our Website or any
|
and expenses, including attorneys' fees, arising from or related to your use of our Website or any Contracts
|
||||||
Contracts or Services you purchase through it.
|
or Services you purchase through it.
|
||||||
</p>
|
</p>
|
||||||
<strong>Changes</strong>
|
<strong>Changes</strong>
|
||||||
<p>
|
<p>
|
||||||
We reserve the right, at our sole discretion, to modify or replace these Terms at any time. If a revision is
|
We reserve the right, at our sole discretion, to modify or replace these Terms at any time. If a revision is
|
||||||
material we will try to provide at least 30 days notice prior to any new terms taking effect. What
|
material we will try to provide at least 30 days notice prior to any new terms taking effect. What constitutes
|
||||||
constitutes a material change will be determined at our sole discretion.
|
a material change will be determined at our sole discretion.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
By continuing to access or use our Service after those revisions become effective, you agree to be bound by
|
By continuing to access or use our Service after those revisions become effective, you agree to be bound by
|
||||||
@ -441,8 +428,7 @@ class About extends Component {
|
|||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
}
|
|
||||||
|
|
||||||
About.propTypes = {
|
About.propTypes = {
|
||||||
roomId: PropTypes.string.isRequired,
|
roomId: PropTypes.string.isRequired,
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import React, { Component } from 'react';
|
const Connecting = () => {
|
||||||
|
|
||||||
export default class Connecting extends Component {
|
|
||||||
render() {
|
|
||||||
return <div>Please wait while we secure a connection to Darkwire...</div>;
|
return <div>Please wait while we secure a connection to Darkwire...</div>;
|
||||||
}
|
};
|
||||||
}
|
|
||||||
|
export default Connecting;
|
||||||
|
@ -316,7 +316,7 @@ const User = ({ createUser, username, ...rest }) => {
|
|||||||
setLoaded(true);
|
setLoaded(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!loaded && !loading.current) {
|
if (!loaded) {
|
||||||
loading.current = true;
|
loading.current = true;
|
||||||
createUserLocal();
|
createUserLocal();
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,17 @@
|
|||||||
import React, { Component } from 'react';
|
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import Linkify from 'react-linkify';
|
import Linkify from 'react-linkify';
|
||||||
|
|
||||||
import Username from '@/components/Username';
|
import Username from '@/components/Username';
|
||||||
|
|
||||||
class Message extends Component {
|
const Message = ({ message, timestamp, sender }) => {
|
||||||
render() {
|
const msg = decodeURI(message);
|
||||||
const msg = decodeURI(this.props.message);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div className="chat-meta">
|
<div className="chat-meta">
|
||||||
<Username username={this.props.sender} />
|
<Username username={sender} />
|
||||||
<span className="muted timestamp">{moment(this.props.timestamp).format('LT')}</span>
|
<span className="muted timestamp">{moment(timestamp).format('LT')}</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="chat">
|
<div className="chat">
|
||||||
<Linkify
|
<Linkify
|
||||||
@ -27,8 +25,7 @@ class Message extends Component {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
}
|
|
||||||
|
|
||||||
Message.propTypes = {
|
Message.propTypes = {
|
||||||
sender: PropTypes.string.isRequired,
|
sender: PropTypes.string.isRequired,
|
||||||
|
@ -4,15 +4,10 @@ import { Copy } from 'react-feather';
|
|||||||
import Clipboard from 'clipboard';
|
import Clipboard from 'clipboard';
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
|
|
||||||
class RoomLink extends Component {
|
const RoomLink = ({ roomId, translations }) => {
|
||||||
constructor(props) {
|
const roomUrl = `${window.location.origin}/${roomId}`;
|
||||||
super(props);
|
|
||||||
this.state = {
|
|
||||||
roomUrl: `${window.location.origin}/${props.roomId}`,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
componentDidMount() {
|
React.useEffect(() => {
|
||||||
const clip = new Clipboard('.copy-room');
|
const clip = new Clipboard('.copy-room');
|
||||||
|
|
||||||
clip.on('success', () => {
|
clip.on('success', () => {
|
||||||
@ -27,26 +22,25 @@ class RoomLink extends Component {
|
|||||||
trigger: 'manual',
|
trigger: 'manual',
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
componentWillUnmount() {
|
return () => {
|
||||||
if ($('.copy-room').tooltip) $('.copy-room').tooltip('hide');
|
if ($('.copy-room').tooltip) $('.copy-room').tooltip('hide');
|
||||||
}
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
render() {
|
|
||||||
return (
|
return (
|
||||||
<form>
|
<form>
|
||||||
<div className="form-group">
|
<div className="form-group">
|
||||||
<div className="input-group">
|
<div className="input-group">
|
||||||
<input id="room-url" className="form-control" type="text" readOnly value={this.state.roomUrl} />
|
<input id="room-url" className="form-control" type="text" readOnly value={roomUrl} />
|
||||||
<div className="input-group-append">
|
<div className="input-group-append">
|
||||||
<button
|
<button
|
||||||
className="copy-room btn btn-secondary"
|
className="copy-room btn btn-secondary"
|
||||||
type="button"
|
type="button"
|
||||||
data-toggle="tooltip"
|
data-toggle="tooltip"
|
||||||
data-placement="bottom"
|
data-placement="bottom"
|
||||||
data-clipboard-text={this.state.roomUrl}
|
data-clipboard-text={roomUrl}
|
||||||
title={this.props.translations.copyButtonTooltip}
|
title={translations.copyButtonTooltip}
|
||||||
>
|
>
|
||||||
<Copy />
|
<Copy />
|
||||||
</button>
|
</button>
|
||||||
@ -55,8 +49,7 @@ class RoomLink extends Component {
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
}
|
|
||||||
|
|
||||||
RoomLink.propTypes = {
|
RoomLink.propTypes = {
|
||||||
roomId: PropTypes.string.isRequired,
|
roomId: PropTypes.string.isRequired,
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import React, { Component } from 'react';
|
const RoomLocked = ({ modalContent }) => {
|
||||||
|
return <div>{modalContent}</div>;
|
||||||
|
};
|
||||||
|
|
||||||
export default class RoomLocked extends Component {
|
export default RoomLocked;
|
||||||
render() {
|
|
||||||
return <div>{this.props.modalContent}</div>;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import React, { Component } from 'react';
|
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
|
||||||
@ -6,24 +5,25 @@ import { getTranslations } from '@/i18n';
|
|||||||
|
|
||||||
const regex = /{(.*?)}/g;
|
const regex = /{(.*?)}/g;
|
||||||
|
|
||||||
class T extends Component {
|
const T = ({ language, path, data }) => {
|
||||||
render() {
|
const t = getTranslations(language);
|
||||||
const t = getTranslations(this.props.language);
|
|
||||||
const englishT = getTranslations('en');
|
const englishT = getTranslations('en');
|
||||||
const str = _.get(t, this.props.path, '') || _.get(englishT, this.props.path, '');
|
const str = _.get(t, path, '') || _.get(englishT, path, '');
|
||||||
|
|
||||||
let string = str.split(regex);
|
let string = str.split(regex);
|
||||||
if (this.props.data) {
|
|
||||||
|
// Data for string interpolation
|
||||||
|
if (data) {
|
||||||
string = string.map(word => {
|
string = string.map(word => {
|
||||||
if (this.props.data[word]) {
|
if (data[word]) {
|
||||||
return this.props.data[word];
|
return data[word];
|
||||||
}
|
}
|
||||||
return word;
|
return word;
|
||||||
});
|
});
|
||||||
return <span>{string}</span>;
|
return <span>{string}</span>;
|
||||||
}
|
}
|
||||||
return string;
|
return string;
|
||||||
}
|
};
|
||||||
}
|
|
||||||
|
|
||||||
T.propTypes = {
|
T.propTypes = {
|
||||||
path: PropTypes.string.isRequired,
|
path: PropTypes.string.isRequired,
|
||||||
|
@ -1,16 +1,13 @@
|
|||||||
import React, { Component } from 'react';
|
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import randomColor from 'randomcolor';
|
import randomColor from 'randomcolor';
|
||||||
|
|
||||||
class Username extends Component {
|
const Username = ({ username }) => {
|
||||||
render() {
|
|
||||||
return (
|
return (
|
||||||
<span className="username" style={{ color: randomColor({ seed: this.props.username, luminosity: 'light' }) }}>
|
<span className="username" style={{ color: randomColor({ seed: username, luminosity: 'light' }) }}>
|
||||||
{this.props.username}
|
{username}
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
}
|
|
||||||
|
|
||||||
Username.propTypes = {
|
Username.propTypes = {
|
||||||
username: PropTypes.string.isRequired,
|
username: PropTypes.string.isRequired,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user