Coding style: formatting, typos

This commit is contained in:
Lyubo Marinov 2018-04-16 18:07:25 -05:00
parent 8c0bb377ba
commit 13e0e18f37
4 changed files with 89 additions and 103 deletions

View File

@ -1,4 +1,5 @@
// @flow
import React, { Component } from 'react';
import {
SafeAreaView,
@ -8,11 +9,10 @@ import {
View
} from 'react-native';
import styles, { UNDERLAY_COLOR } from './styles';
import { Icon } from '../../../font-icons';
import { translate } from '../../../i18n';
import { Icon } from '../../../font-icons';
import styles, { UNDERLAY_COLOR } from './styles';
type Props = {
@ -60,14 +60,30 @@ type Props = {
* ]
*/
sections: Array<Object>
}
};
/**
* Implements a general section list to display items that have a URL
* property and navigates to (probably) meetings, such as the recent list
* or the meeting list components.
* Implements a general section list to display items that have a URL property
* and navigates to (probably) meetings, such as the recent list or the meeting
* list components.
*/
class NavigateSectionList extends Component<Props> {
/**
* Creates an empty section object.
*
* @param {string} title - The title of the section.
* @param {string} key - The key of the section. It must be unique.
* @private
* @returns {Object}
*/
static createSection(title, key) {
return {
data: [],
key,
title
};
}
/**
* Constructor of the NavigateSectionList component.
*
@ -89,23 +105,23 @@ class NavigateSectionList extends Component<Props> {
}
/**
* Implements React's Component.render function.
* Implements React's Component.render.
* Note: we don't use the refreshing value yet, because refreshing of these
* lists is super quick, no need to complicate the code - yet.
*
* @inheritdoc
*/
render() {
const { renderListEmptyComponent, sections } = this.props;
const {
renderListEmptyComponent = this._renderListEmptyComponent,
sections
} = this.props;
return (
<SafeAreaView
style = { styles.container } >
<SectionList
ListEmptyComponent = {
renderListEmptyComponent
|| this._renderListEmptyComponent
}
ListEmptyComponent = { renderListEmptyComponent }
keyExtractor = { this._getItemKey }
onRefresh = { this._onRefresh }
refreshing = { false }
@ -117,27 +133,11 @@ class NavigateSectionList extends Component<Props> {
);
}
/**
* Creates an empty section object.
*
* @private
* @param {string} title - The title of the section.
* @param {string} key - The key of the section. It must be unique.
* @returns {Object}
*/
static createSection(title, key) {
return {
data: [],
key,
title
};
}
_getAvatarColor: string => Object
_getAvatarColor: string => Object;
/**
* Returns a style (color) based on the string that determines the
* color of the avatar.
* Returns a style (color) based on the string that determines the color of
* the avatar.
*
* @param {string} colorBase - The string that is the base of the color.
* @private
@ -162,22 +162,22 @@ class NavigateSectionList extends Component<Props> {
/**
* Generates a unique id to every item.
*
* @private
* @param {Object} item - The item.
* @param {number} index - The item index.
* @private
* @returns {string}
*/
_getItemKey(item, index) {
return `${index}-${item.key}`;
}
_onPress: string => Function
_onPress: string => Function;
/**
* Returns a function that is used in the onPress callback of the items.
*
* @private
* @param {string} url - The URL of the item to navigate to.
* @private
* @returns {Function}
*/
_onPress(url) {
@ -188,7 +188,7 @@ class NavigateSectionList extends Component<Props> {
};
}
_onRefresh: () => void
_onRefresh: () => void;
/**
* Invokes the onRefresh callback if present.
@ -209,26 +209,35 @@ class NavigateSectionList extends Component<Props> {
/**
* Renders a single item in the list.
*
* @private
* @param {Object} listItem - The item to render.
* @private
* @returns {Component}
*/
_renderItem(listItem) {
const { item } = listItem;
const { item: { colorBase, lines, title, url } } = listItem;
// XXX The value of title cannot be undefined; otherwise, react-native
// will throw a TypeError: Cannot read property of undefined. While it's
// difficult to get an undefined title and very likely requires the
// execution of incorrect source code, it is undesirable to break the
// whole app because of an undefined string.
if (typeof title === 'undefined') {
return null;
}
return (
<TouchableHighlight
onPress = { this._onPress(item.url) }
onPress = { this._onPress(url) }
underlayColor = { UNDERLAY_COLOR }>
<View style = { styles.listItem }>
<View style = { styles.avatarContainer } >
<View
style = { [
styles.avatar,
this._getAvatarColor(item.colorBase)
this._getAvatarColor(colorBase)
] } >
<Text style = { styles.avatarContent }>
{ item.title.substr(0, 1).toUpperCase() }
{ title.substr(0, 1).toUpperCase() }
</Text>
</View>
</View>
@ -239,11 +248,9 @@ class NavigateSectionList extends Component<Props> {
styles.listItemText,
styles.listItemTitle
] }>
{ item.title }
{ title }
</Text>
{
this._renderItemLines(item.lines)
}
{ this._renderItemLines(lines) }
</View>
</View>
</TouchableHighlight>
@ -255,9 +262,9 @@ class NavigateSectionList extends Component<Props> {
/**
* Renders a single line from the additional lines.
*
* @private
* @param {string} line - The line text.
* @param {number} index - The index of the line.
* @private
* @returns {React$Node}
*/
_renderItemLine(line, index) {
@ -275,32 +282,26 @@ class NavigateSectionList extends Component<Props> {
);
}
_renderItemLines: (Array<string>) => Array<React$Node>;
_renderItemLines: Array<string> => Array<React$Node>;
/**
* Renders the additional item lines, if any.
*
* @private
* @param {Array<string>} lines - The lines to render.
* @private
* @returns {Array<React$Node>}
*/
_renderItemLines(lines) {
if (lines && lines.length) {
return lines.map((line, index) =>
this._renderItemLine(line, index)
);
return lines && lines.length ? lines.map(this._renderItemLine) : null;
}
return null;
}
_renderListEmptyComponent: () => Object
_renderListEmptyComponent: () => Object;
/**
* Renders a component to display when the list is empty.
*
* @private
* @param {Object} section - The section being rendered.
* @private
* @returns {React$Node}
*/
_renderListEmptyComponent() {
@ -322,13 +323,13 @@ class NavigateSectionList extends Component<Props> {
return null;
}
_renderSection: Object => Object
_renderSection: Object => Object;
/**
* Renders a section title.
*
* @private
* @param {Object} section - The section being rendered.
* @private
* @returns {React$Node}
*/
_renderSection(section) {

View File

@ -83,7 +83,7 @@ class MeetingList extends Component<Props> {
}
/**
* Implements React Component's componentWillReceiveProps function.
* Implements React Component's componentWillReceiveProps.
*
* @inheritdoc
*/
@ -98,7 +98,7 @@ class MeetingList extends Component<Props> {
}
/**
* Implements the React Components's render method.
* Implements the React Components's render.
*
* @inheritdoc
*/
@ -115,7 +115,7 @@ class MeetingList extends Component<Props> {
);
}
_getRenderListEmptyComponent: () => Object
_getRenderListEmptyComponent: () => Object;
/**
* Returns a list empty component if a custom one has to be rendered instead
@ -147,7 +147,7 @@ class MeetingList extends Component<Props> {
return null;
}
_onPress: string => Function
_onPress: string => Function;
/**
* Handles the list's navigate action.
@ -160,7 +160,7 @@ class MeetingList extends Component<Props> {
this.props.dispatch(appNavigate(url));
}
_onRefresh: () => void
_onRefresh: () => void;
/**
* Callback to execute when the list is doing a pull-to-refresh.
@ -172,7 +172,7 @@ class MeetingList extends Component<Props> {
this.props.dispatch(refreshCalendar(true));
}
_toDisplayableItem: Object => Object
_toDisplayableItem: Object => Object;
/**
* Creates a displayable object from an event.
@ -193,7 +193,7 @@ class MeetingList extends Component<Props> {
};
}
_toDisplayableList: () => Array<Object>
_toDisplayableList: () => Array<Object>;
/**
* Transforms the event list to a displayable list with sections.
@ -204,18 +204,10 @@ class MeetingList extends Component<Props> {
_toDisplayableList() {
const { _eventList, t } = this.props;
const now = Date.now();
const nowSection = NavigateSectionList.createSection(
t('calendarSync.now'),
'now'
);
const nextSection = NavigateSectionList.createSection(
t('calendarSync.next'),
'next'
);
const laterSection = NavigateSectionList.createSection(
t('calendarSync.later'),
'later'
);
const { createSection } = NavigateSectionList;
const nowSection = createSection(t('calendarSync.now'), 'now');
const nextSection = createSection(t('calendarSync.next'), 'next');
const laterSection = createSection(t('calendarSync.later'), 'later');
for (const event of _eventList) {
const displayableEvent = this._toDisplayableItem(event);
@ -247,7 +239,7 @@ class MeetingList extends Component<Props> {
return sectionList;
}
_toDateString: Object => string
_toDateString: Object => string;
/**
* Generates a date (interval) string for a given event.

View File

@ -102,9 +102,8 @@ function _ensureCalendarAccess(promptForPermission, dispatch) {
* @returns {Promise}
*/
function _ensureDefaultServer({ dispatch, getState }) {
const state = getState();
const defaultURL
= parseURIString(state['features/app'].app._getDefaultURL());
= parseURIString(getState()['features/app'].app._getDefaultURL());
dispatch(addKnownDomain(defaultURL.host));
}
@ -164,7 +163,7 @@ function _fetchCalendarEntries(
}
/**
* Retreives a jitsi URL from an event if present.
* Retrieves a Jitsi Meet URL from an event if present.
*
* @param {Object} event - The event to parse.
* @param {Array<string>} knownDomains - The known domain names.
@ -219,7 +218,7 @@ export function _isCalendarEnabled() {
}
/**
* Retreives the domain name of a room upon join and stores it in the known
* Retrieves the domain name of a room upon join and stores it in the known
* domain list, if not present yet.
*
* @param {Object} store - The redux store.

View File

@ -78,7 +78,7 @@ class RecentList extends Component<Props> {
);
}
_onPress: string => Function
_onPress: string => Function;
/**
* Handles the list's navigate action.
@ -93,7 +93,7 @@ class RecentList extends Component<Props> {
dispatch(appNavigate(url));
}
_toDisplayableItem: Object => Object
_toDisplayableItem: Object => Object;
/**
* Creates a displayable list item of a recent list entry.
@ -121,7 +121,7 @@ class RecentList extends Component<Props> {
};
}
_toDisplayableList: () => Array<Object>
_toDisplayableList: () => Array<Object>;
/**
* Transforms the history list to a displayable list
@ -132,18 +132,12 @@ class RecentList extends Component<Props> {
*/
_toDisplayableList() {
const { _recentList, t } = this.props;
const todaySection = NavigateSectionList.createSection(
t('recentList.today'),
'today'
);
const yesterdaySection = NavigateSectionList.createSection(
t('recentList.yesterday'),
'yesterday'
);
const earlierSection = NavigateSectionList.createSection(
t('recentList.earlier'),
'earlier'
);
const { createSection } = NavigateSectionList;
const todaySection = createSection(t('recentList.today'), 'today');
const yesterdaySection
= createSection(t('recentList.yesterday'), 'yesterday');
const earlierSection
= createSection(t('recentList.earlier'), 'earlier');
const today = new Date().toDateString();
const yesterdayDate = new Date();
@ -182,7 +176,7 @@ class RecentList extends Component<Props> {
return displayableList;
}
_toDateString: number => string
_toDateString: number => string;
/**
* Generates a date string for the item.
@ -203,7 +197,7 @@ class RecentList extends Component<Props> {
return m.format('lll');
}
_toDurationString: number => string
_toDurationString: number => string;
/**
* Generates a duration string for the item.