Skip to content

Commit

Permalink
Merge pull request #86 from CaptainFact/misc-improvements
Browse files Browse the repository at this point in the history
Misc improvements
  • Loading branch information
Betree committed Mar 5, 2018
2 parents 0fd87dd + 6b97678 commit d0c8ef9
Show file tree
Hide file tree
Showing 26 changed files with 365 additions and 165 deletions.
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ or [here (archive.org)](https://web.archive.org/web/20170518075321/http://bulma.

## Conventions

#### File structure

```
app
├── API => Api libraries for both REST API and websockets
Expand All @@ -54,6 +56,20 @@ app
└── router.jsx => Application router and main entry point
```

#### Exporting components

Components files should export two versions :

1. `export DumbMyComponent` : non-connected component (for testing)
2. `export default MyComponent` : connected component

Non-connected components exports are there for testing them without the need
to be connected to a store. If component is always dump, you can export
`default` only.

You might find some exceptions in old components but all new
ones must follow this rule.

### Effects

An effect is an async action that may dispatch one or more actions when called. It always returns a
Expand Down
1 change: 0 additions & 1 deletion app/API/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
export {default as HttpApi} from "./http_api"
export * from "./socket_api"
export * from "./resources"
11 changes: 0 additions & 11 deletions app/API/resources.js

This file was deleted.

75 changes: 71 additions & 4 deletions app/assets/assets/help/en/bug_report.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,74 @@
# You found a bug or worst, a security breach ?
# I found a bug !

Please [contact us](mailto:bug-report@captainfact.io) with as much details as
you can. A detailed report can save us a lot of time and will make the resolution
of the issue a lot easier.
Also join your CaptainFact username, you may get a
rare [achievement](/help/achievements)!

If you're comfortable with Git, you can also check if the issue doesn't already
exists [here](https://github.com/CaptainFact/captain-fact-frontend/issues)
for the website and [here](https://github.com/CaptainFact/captain-fact-extension/issues)
for the extension.

# Or worst, a security breach ?

Please [contact us](mailto:bug-report@captainfact.io) with as much details as you can.
We believe in responsive disclosure and encourage it.

Also join your CaptainFact username, you may get a
rare [achievement](/help/achievements)!
If your report concerns a critical security issue, you can encrypt your message
with the following PGP key:

```
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
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
WfEstI5xkkqQDP+lI43K
=qB43
-----END PGP PUBLIC KEY BLOCK-----
```
77 changes: 72 additions & 5 deletions app/assets/assets/help/fr/bug_report.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,75 @@
# Vous avez trouvé un bug ou pire, une faille de sécurité ?
# Vous avez trouvé un bug ?


Merci de [nous contacter](mailto:bug-report@captainfact.io) avec autant de détails que possible.
Nous croyons en la divulation réponsable et l'envourageons.

Merci de [nous contacter](mailto:bug-report@captainfact.io) avec autant de
détails que possible. Un signalement bien détaillé peut nous faire gagner
beaucoup de temps et facilitera la résolution du problème.
Envoyez nous également votre pseudo sur CaptainFact, vous pourriez obtenir une
[médaille](/help/achievements) rare!
[médaille](/help/achievements) rare !

Si vous êtes à l'aise avec git, vous pouvez vérifier si le problème a déjà
été signalé [ici](https://github.com/CaptainFact/captain-fact-frontend/issues)
pour le site ou [ici](https://github.com/CaptainFact/captain-fact-extension/issues)
pour l'extension.

# Pire ! Une faille de sécurité ?

Nous croyons en la divulation responsable et l'encourageons.

Si votre signalement est relatif à une faille de sécurité critique, vous pouvez
chiffrer votre message avec la clef PGP ci-dessous :

```
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
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
WfEstI5xkkqQDP+lI43K
=qB43
-----END PGP PUBLIC KEY BLOCK-----
```
2 changes: 1 addition & 1 deletion app/assets/assets/help/fr/contact.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Vous pouvez nous contacter en Anglais ou en Français via:
Vous pouvez nous contacter en Anglais ou en Français via :
* [Discord](https://discord.gg/2Qd7hMz)
* [Mail](mailto:contact@captainfact.io)
* [Facebook](https://www.facebook.com/CaptainFact.io)
Expand Down
4 changes: 2 additions & 2 deletions app/components/App/Sidebar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import classNames from 'classnames'

import { Icon } from "../Utils"
import { MOBILE_WIDTH_THRESHOLD, USER_PICTURE_SMALL } from '../../constants'
import { MODERATION_REPUTATION_REQUIRED } from "../../constants"
import { MIN_REPUTATION_MODERATION } from "../../constants"
import { LoadingFrame } from '../Utils/LoadingFrame'
import ReputationGuard from '../Utils/ReputationGuard'
import LanguageSelector from './LanguageSelector'
Expand Down Expand Up @@ -156,7 +156,7 @@ export default class Sidebar extends React.PureComponent {
<this.MenuListLink to="/speakers" iconName="users" className="is-disabled">
{ capitalize(t('entities.speaker_plural')) }
</this.MenuListLink>
<ReputationGuard requiredRep={MODERATION_REPUTATION_REQUIRED}>
<ReputationGuard requiredRep={MIN_REPUTATION_MODERATION}>
<this.MenuListLink to="/moderation" iconName="flag" className="hide-when-collapsed">
{ t('menu.moderation') }
</this.MenuListLink>
Expand Down
4 changes: 2 additions & 2 deletions app/components/Comments/Source.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ const isPlayer = url => {

export const Source = ({ source: { url, title, site_name }, withoutPlayer }) => {
if (!withoutPlayer && isPlayer(url)) {
return <ReactPlayer className="video" controls={true} height={180} width={320} url={url}
config={{youtube: {playerVars: { showinfo: 1 }}}}/>
return <ReactPlayer className="video" controls={true} height={198} width={352} url={url}
config={{youtube: {playerVars: { showinfo: 1, fs: 0 }}}}/>
} else {
return (
<div>
Expand Down
25 changes: 13 additions & 12 deletions app/components/FormUtils/index.jsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
/**
* Removes multiple spaces, tabs and trim on left
* @param {String} str
* @return {String} clean string
*/
import React from "react"
import capitalize from "voca/capitalize"
import trimLeft from "voca/trim_left"
import classNames from "classnames"

import TextareaAutosize from './TextareaAutosize'
import { Icon } from '../Utils/Icon'
import TextareaLengthCounter from './TextareaLengthCounter'
Expand All @@ -26,6 +22,7 @@ export const renderInput = ({ input, label, placeholder, type, className, meta }

export const renderField = (params) => {
const { icon, meta: { touched, error } } = params

return (
<p className={`control ${icon ? 'has-icon' : ''}`}>
{renderInput(params)}
Expand All @@ -39,24 +36,28 @@ export const renderField = (params) => {

export const renderTextareaField = (params) => {
const {
input, label, icon, type, placeholder, autosize, maxLength,
input, label, icon, type, placeholder, autosize, maxLength, hideErrorIfEmpty,
meta: { touched, error, submitting },
...props
} = params
const hasError = (!hideErrorIfEmpty || input.value.length > 0) && touched && error
const inputProps = {
...input,
...props,
className: classNames('textarea', {'is-danger': touched && error}),
className: classNames('textarea', {'is-danger': hasError}),
placeholder: placeholder ? placeholder : label,
disabled: submitting,
type
}
const textarea = autosize ? (<TextareaAutosize {...inputProps}/>) : (<textarea {...inputProps}/>)
const textarea = autosize ?
(<TextareaAutosize {...inputProps}/>) :
(<textarea {...inputProps}/>)

return (
<p className={`control ${icon ? 'has-icon' : ''}`}>
<p className={classNames('control', {'has-icon': !!icon})}>
{ textarea }
<TextareaLengthCounter length={input.value.length} maxLength={maxLength}/>
{ touched && error && <span className='help is-danger'>{ error }</span> }
{ hasError && <span className='help is-danger'>{ error }</span> }
</p>
)
}
Expand Down Expand Up @@ -113,12 +114,12 @@ export const validateLengthI18n = (t, errors, fieldName, value, range) => {

export const validateFieldLength = (t, value, range) => {
if (checkLength(value, range))
return false
return undefined
if (!value || value.length < range[0])
return t('main:misc.fieldMinLength', {min: range[0]})
else if (range[1] !== -1 && value.length > range[1])
return t('main:misc.fieldMaxLength', {max: range[1]})
return false
return undefined
}

export const cleanStr = (str) =>
Expand Down
21 changes: 16 additions & 5 deletions app/components/Moderation/Moderation.jsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import React from "react"
import { connect } from "react-redux"
import { translate } from 'react-i18next'
import Message from '../Utils/Message'
import FlipMove from 'react-flip-move'

import Message from '../Utils/Message'
import ReputationGuard from '../Utils/ReputationGuard'

import { fetchRandomModeration, postModerationFeedback } from '../../state/moderation/effects'
import ModerationEntry from './ModerationEntry'

import { MODERATION_REPUTATION_REQUIRED } from '../../constants'
import { MIN_REPUTATION_MODERATION } from '../../constants'

@connect(state => ({
isLoading: state.Moderation.isLoading,
Expand All @@ -17,15 +18,21 @@ import { MODERATION_REPUTATION_REQUIRED } from '../../constants'
}), { fetchRandomModeration, postModerationFeedback })
@translate('moderation')
export default class Moderation extends React.PureComponent {
constructor(props) {
super(props)
this.onEntryAction = this.onEntryAction.bind(this)
}

componentDidMount() {
this.props.fetchRandomModeration()
}

render() {
return (
<ReputationGuard requiredRep={MODERATION_REPUTATION_REQUIRED} showLoading showNotEnough>
<ReputationGuard requiredRep={MIN_REPUTATION_MODERATION} showLoading showNotEnough>
<div className="section container">
<h1 className="title is-1 has-text-centered">{this.props.t('title')}</h1>

{this.getItems()}
</div>
</ReputationGuard>
Expand All @@ -37,8 +44,12 @@ export default class Moderation extends React.PureComponent {

if (!items || items.size === 0)
return <Message className="has-text-centered">{this.props.t('emptyModeration')}</Message>
return items.map(el =>
<ModerationEntry key={el.id} entry={el} onAction={this.onEntryAction.bind(this)}/>
return (
<FlipMove>
{items.map(el =>
<ModerationEntry key={el.id} entry={el} onAction={this.onEntryAction}/>
)}
</FlipMove>
)
}

Expand Down
1 change: 1 addition & 0 deletions app/components/Speakers/SpeakerForm.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const capitalizeName = (str) => (
)

const searchSpeakerRequest = debounce((query) => (
// TODO This request has nothing to do here !
SocketApi.push("video_debate", "search_speaker", {query})
.then(({speakers}) => ({options: speakers}))
), 250)
Expand Down
Loading

0 comments on commit d0c8ef9

Please sign in to comment.