Skip to content

Commit 7bb4c23

Browse files
committed
feat(app): configure eslint
1 parent 95dd82e commit 7bb4c23

16 files changed

+518
-198
lines changed

.eslintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
module.exports = {
22
root: true,
33
extends: '@react-native-community',
4-
}
4+
};

.prettierrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ module.exports = {
55
singleQuote: true,
66
trailingComma: 'all',
77
quoteProps: 'preserve',
8-
semi: false,
8+
semi: true,
99
};

index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { AppRegistry } from 'react-native'
2-
import App from './src/app'
3-
import { name as appName } from './app.json'
1+
import { AppRegistry } from 'react-native';
2+
import App from './src/app';
3+
import { name as appName } from './app.json';
44

5-
AppRegistry.registerComponent(appName, () => App)
5+
AppRegistry.registerComponent(appName, () => App);

package.json

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,20 @@
77
"ios": "react-native run-ios",
88
"start": "react-native start",
99
"test": "jest",
10-
"lint": "eslint ."
10+
"lint": "eslint .",
11+
"lint:write": "eslint . --fix",
12+
"prettier": "prettier --write \"**/*.+(js|jsx|scss|json)\""
13+
},
14+
"husky": {
15+
"hooks": {
16+
"pre-commit": "lint-staged"
17+
}
18+
},
19+
"lint-staged": {
20+
"*.(js|jsx)": [
21+
"npm run lint:write",
22+
"git add"
23+
]
1124
},
1225
"dependencies": {
1326
"@react-native-community/masked-view": "^0.1.10",
@@ -34,8 +47,12 @@
3447
"@react-native-community/eslint-config": "^2.0.0",
3548
"babel-jest": "^26.6.3",
3649
"eslint": "^7.16.0",
50+
"eslint-plugin-prettier": "^3.3.1",
51+
"husky": "^4.3.7",
3752
"jest": "^26.6.3",
53+
"lint-staged": "^10.5.3",
3854
"metro-react-native-babel-preset": "^0.64.0",
55+
"prettier": "^2.2.1",
3956
"react-test-renderer": "16.13.1"
4057
},
4158
"jest": {

server.js

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,34 @@
1-
require('dotenv').config()
1+
require('dotenv').config();
22

3-
const Twilio = require('twilio')
4-
const express = require('express')
3+
const Twilio = require('twilio');
4+
const express = require('express');
55

6-
const app = express()
6+
const app = express();
77

8-
const AccessToken = Twilio.jwt.AccessToken
9-
const ChatGrant = AccessToken.ChatGrant
8+
const AccessToken = Twilio.jwt.AccessToken;
9+
const ChatGrant = AccessToken.ChatGrant;
1010

1111
app.get('/token/:identity', (req, res) => {
12-
const identity = req.params.identity
12+
const identity = req.params.identity;
1313
const token = new AccessToken(
1414
process.env.TWILIO_ACCOUNT_SID,
1515
process.env.TWILIO_API_KEY,
16-
process.env.TWILIO_API_SECRET
16+
process.env.TWILIO_API_SECRET,
1717
);
1818

19-
token.identity = identity
20-
token.addGrant(new ChatGrant({
21-
serviceSid: process.env.TWILIO_CHAT_SERVICE_SID
22-
}));
19+
token.identity = identity;
20+
token.addGrant(
21+
new ChatGrant({
22+
serviceSid: process.env.TWILIO_CHAT_SERVICE_SID,
23+
}),
24+
);
2325

2426
res.send({
2527
identity: token.identity,
26-
jwt: token.toJwt()
27-
})
28-
})
28+
jwt: token.toJwt(),
29+
});
30+
});
2931

3032
app.listen(3001, function () {
31-
console.log('Programmable Chat server running on port 3001!')
32-
})
33+
console.log('Programmable Chat server running on port 3001!');
34+
});

src/app.js

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,35 @@
1-
import React from 'react'
2-
import { NavigationContainer } from '@react-navigation/native'
3-
import { createStackNavigator } from '@react-navigation/stack'
4-
import FlashMessage from 'react-native-flash-message'
1+
import React from 'react';
2+
import { NavigationContainer } from '@react-navigation/native';
3+
import { createStackNavigator } from '@react-navigation/stack';
4+
import FlashMessage from 'react-native-flash-message';
55

6-
import { WelcomeScreen } from './screens/welcome-screen'
7-
import { ChatListScreen } from './screens/chat-list-screen'
8-
import { ChatRoomScreen } from './screens/chat-room-screen'
9-
import { ChatCreateScreen } from './screens/chat-create-screen'
6+
import { WelcomeScreen } from './screens/welcome-screen';
7+
import { ChatListScreen } from './screens/chat-list-screen';
8+
import { ChatRoomScreen } from './screens/chat-room-screen';
9+
import { ChatCreateScreen } from './screens/chat-create-screen';
1010

11-
import { colors } from './theme'
11+
import { colors } from './theme';
1212

1313
const Stack = createStackNavigator();
1414

1515
export const routes = {
1616
Welcome: {
17-
name: 'welcome', title: 'Welcome'
17+
name: 'welcome',
18+
title: 'Welcome',
1819
},
1920
ChatList: {
20-
name: 'chat-list', title: 'Chat List'
21+
name: 'chat-list',
22+
title: 'Chat List',
2123
},
2224
ChatRoom: {
23-
name: 'chat-room', title: 'Chat Room'
25+
name: 'chat-room',
26+
title: 'Chat Room',
2427
},
2528
ChatCreat: {
26-
name: 'chat-create', title: 'New Channel'
27-
}
28-
}
29+
name: 'chat-create',
30+
title: 'New Channel',
31+
},
32+
};
2933

3034
export default function App() {
3135
const screenOptions = (title) => ({
@@ -37,12 +41,12 @@ export default function App() {
3741
headerTitleStyle: {
3842
fontWeight: '700',
3943
},
40-
})
44+
});
4145

4246
return (
4347
<NavigationContainer>
4448
<Stack.Navigator>
45-
<Stack.Screen
49+
<Stack.Screen
4650
name={routes.Welcome.name}
4751
options={screenOptions(routes.Welcome.title)}
4852
component={WelcomeScreen}
@@ -65,6 +69,5 @@ export default function App() {
6569
</Stack.Navigator>
6670
<FlashMessage position="bottom" />
6771
</NavigationContainer>
68-
)
72+
);
6973
}
70-

src/assets/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
export const images = {
22
logo: require('./twilio.png'),
3-
message: require('./message.png')
4-
}
3+
message: require('./message.png'),
4+
};

src/screens/chat-create-screen.js

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,40 @@
1-
import React, { useState } from 'react'
2-
import { View, Text, TextInput, StyleSheet, Image, TouchableOpacity } from 'react-native'
3-
import { showMessage } from 'react-native-flash-message'
1+
import React, { useState } from 'react';
2+
import { View, Text, TextInput, StyleSheet, Image, TouchableOpacity } from 'react-native';
3+
import { showMessage } from 'react-native-flash-message';
44

5-
import { colors } from '../theme'
6-
import { images } from '../assets'
7-
import { TwilioService } from '../services/twilio-service'
5+
import { colors } from '../theme';
6+
import { images } from '../assets';
7+
import { TwilioService } from '../services/twilio-service';
88

99
export function ChatCreateScreen({ navigation }) {
10-
const [channelName, setChannelName] = useState("")
10+
const [channelName, setChannelName] = useState('');
1111

12-
const onPress = () => TwilioService.getInstance().getChatClient()
13-
.then((client) => client.getChannelByUniqueName(channelName)
14-
.then((channel) => {
15-
if (channel.channelState.status !== 'joined') {
16-
return channel.join()
17-
} else {
18-
throw new Error('You are already joined.')
19-
}
20-
})
21-
.catch((err) => {
22-
if (err.message === 'Not Found') {
23-
return client
24-
.createChannel({ uniqueName: channelName, friendlyName: channelName })
25-
.then(channel => channel.join())
26-
}
27-
showMessage({
28-
message: err.message,
29-
type: 'danger'
30-
})
31-
}))
32-
.then(() => navigation.goBack())
12+
const onPress = () =>
13+
TwilioService.getInstance()
14+
.getChatClient()
15+
.then((client) =>
16+
client
17+
.getChannelByUniqueName(channelName)
18+
.then((channel) => {
19+
if (channel.channelState.status !== 'joined') {
20+
return channel.join();
21+
} else {
22+
throw new Error('You are already joined.');
23+
}
24+
})
25+
.catch((err) => {
26+
if (err.message === 'Not Found') {
27+
return client
28+
.createChannel({ uniqueName: channelName, friendlyName: channelName })
29+
.then((channel) => channel.join());
30+
}
31+
showMessage({
32+
message: err.message,
33+
type: 'danger',
34+
});
35+
}),
36+
)
37+
.then(() => navigation.goBack());
3338

3439
return (
3540
<View style={styles.screen}>
@@ -45,7 +50,7 @@ export function ChatCreateScreen({ navigation }) {
4550
<Text style={styles.buttonText}>Create</Text>
4651
</TouchableOpacity>
4752
</View>
48-
)
53+
);
4954
}
5055

5156
const styles = StyleSheet.create({
@@ -77,10 +82,10 @@ const styles = StyleSheet.create({
7782
backgroundColor: colors.malibu,
7883
borderRadius: 8,
7984
alignItems: 'center',
80-
justifyContent: 'center'
85+
justifyContent: 'center',
8186
},
8287
buttonText: {
8388
fontSize: 17,
84-
color: colors.white
85-
}
86-
});
89+
color: colors.white,
90+
},
91+
});

0 commit comments

Comments
 (0)