Skip to content

Commit 406103a

Browse files
committed
upload snapchat
0 parents  commit 406103a

File tree

330 files changed

+62817
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

330 files changed

+62817
-0
lines changed

.buckconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
[android]
3+
target = Google Inc.:Google APIs:23
4+
5+
[maven_repositories]
6+
central = https://repo1.maven.org/maven2

.eslintrc.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module.exports = {
2+
root: true,
3+
extends: '@react-native-community',
4+
};

.flowconfig

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
[ignore]
2+
; We fork some components by platform
3+
.*/*[.]android.js
4+
5+
; Ignore "BUCK" generated dirs
6+
<PROJECT_ROOT>/\.buckd/
7+
8+
; Ignore polyfills
9+
node_modules/react-native/Libraries/polyfills/.*
10+
11+
; These should not be required directly
12+
; require from fbjs/lib instead: require('fbjs/lib/warning')
13+
node_modules/warning/.*
14+
15+
; Flow doesn't support platforms
16+
.*/Libraries/Utilities/LoadingView.js
17+
18+
[untyped]
19+
.*/node_modules/@react-native-community/cli/.*/.*
20+
21+
[include]
22+
23+
[libs]
24+
node_modules/react-native/interface.js
25+
node_modules/react-native/flow/
26+
27+
[options]
28+
emoji=true
29+
30+
esproposal.optional_chaining=enable
31+
esproposal.nullish_coalescing=enable
32+
33+
module.file_ext=.js
34+
module.file_ext=.json
35+
module.file_ext=.ios.js
36+
37+
munge_underscores=true
38+
39+
module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1'
40+
module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub'
41+
42+
suppress_type=$FlowIssue
43+
suppress_type=$FlowFixMe
44+
suppress_type=$FlowFixMeProps
45+
suppress_type=$FlowFixMeState
46+
47+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)
48+
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+
49+
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
50+
51+
[lints]
52+
sketchy-null-number=warn
53+
sketchy-null-mixed=warn
54+
sketchy-number=warn
55+
untyped-type-import=warn
56+
nonstrict-import=warn
57+
deprecated-type=warn
58+
unsafe-getters-setters=warn
59+
unnecessary-invariant=warn
60+
signature-verification-failure=warn
61+
deprecated-utility=error
62+
63+
[strict]
64+
deprecated-type
65+
nonstrict-import
66+
sketchy-null
67+
unclear-type
68+
unsafe-getters-setters
69+
untyped-import
70+
untyped-type-import
71+
72+
[version]
73+
^0.122.0

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.pbxproj -text

.gitignore

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# OSX
2+
#
3+
.DS_Store
4+
5+
# Xcode
6+
#
7+
build/
8+
*.pbxuser
9+
!default.pbxuser
10+
*.mode1v3
11+
!default.mode1v3
12+
*.mode2v3
13+
!default.mode2v3
14+
*.perspectivev3
15+
!default.perspectivev3
16+
xcuserdata
17+
*.xccheckout
18+
*.moved-aside
19+
DerivedData
20+
*.hmap
21+
*.ipa
22+
*.xcuserstate
23+
24+
# Android/IntelliJ
25+
#
26+
build/
27+
.idea
28+
.gradle
29+
local.properties
30+
*.iml
31+
32+
# node.js
33+
#
34+
node_modules/
35+
npm-debug.log
36+
yarn-error.log
37+
38+
# BUCK
39+
buck-out/
40+
\.buckd/
41+
*.keystore
42+
!debug.keystore
43+
44+
# fastlane
45+
#
46+
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
47+
# screenshots whenever they are needed.
48+
# For more information about the recommended setup visit:
49+
# https://docs.fastlane.tools/best-practices/source-control/
50+
51+
*/fastlane/report.xml
52+
*/fastlane/Preview.html
53+
*/fastlane/screenshots
54+
55+
# Bundle artifact
56+
*.jsbundle
57+
58+
# CocoaPods
59+
/ios/Pods/
60+
61+
env.js

.prettierrc.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
bracketSpacing: false,
3+
jsxBracketSameLine: true,
4+
singleQuote: true,
5+
trailingComma: 'all',
6+
};

.watchmanconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

App.js

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
import React, { useEffect, useState } from 'react';
2+
import {
3+
Alert,
4+
Image,
5+
Platform,
6+
StyleSheet,
7+
Text,
8+
TouchableOpacity,
9+
View,
10+
} from 'react-native';
11+
import { CometChat } from '@cometchat-pro/react-native-chat';
12+
import { createNativeStackNavigator } from '@react-navigation/native-stack';
13+
import { NavigationContainer } from '@react-navigation/native';
14+
import AsyncStorage from '@react-native-async-storage/async-storage';
15+
16+
import CreateStory from './components/story/CreateStory';
17+
import Login from './components/login/Login';
18+
import SignUp from './components/register/SignUp';
19+
import SuggestedFriends from './components/friend/SuggestedFriends';
20+
import Tabs from './components/navigation/Tabs';
21+
22+
import { cometChatConfig } from './env';
23+
24+
import Context from './context';
25+
26+
import logOut from './images/logout.png';
27+
import addUser from './images/add-user.png';
28+
import plus from './images/plus.png';
29+
30+
const Stack = createNativeStackNavigator();
31+
32+
const App = () => {
33+
const [user, setUser] = useState(null);
34+
35+
const initCometChat = async () => {
36+
const appID = `${cometChatConfig.cometChatAppId}`;
37+
const region = `${cometChatConfig.cometChatRegion}`;
38+
const appSetting = new CometChat.AppSettingsBuilder().subscribePresenceForAllUsers().setRegion(region).build();
39+
CometChat.init(appID, appSetting).then(
40+
() => {
41+
console.log('CometChat was initialized successfully');
42+
},
43+
error => {
44+
}
45+
);
46+
};
47+
48+
const initAuthenticatedUser = async () => {
49+
const authenticatedUser = await AsyncStorage.getItem('auth');
50+
setUser(() => authenticatedUser ? JSON.parse(authenticatedUser) : null);
51+
};
52+
53+
useEffect(() => {
54+
initCometChat();
55+
initAuthenticatedUser();
56+
}, []);
57+
58+
const goToSuggestedFriends = navigation => () => {
59+
navigation.navigate('SuggestedFriends');
60+
};
61+
62+
const goToCreateStory = navigation => () => {
63+
navigation.navigate('CreateStory');
64+
};
65+
66+
const logout = navigation => () => {
67+
Alert.alert(
68+
"Confirm",
69+
"Do you want to log out?",
70+
[
71+
{
72+
text: "Cancel",
73+
style: "cancel"
74+
},
75+
{ text: "OK", onPress: () => handleLogout(navigation) }
76+
]
77+
);
78+
};
79+
80+
const handleLogout = (navigation) => {
81+
CometChat.logout().then(
82+
() => {
83+
removeAuthedInfo();
84+
backToLogin(navigation);
85+
}, error => {
86+
console.log("Logout failed with exception:", { error });
87+
}
88+
);
89+
};
90+
91+
const removeAuthedInfo = () => {
92+
AsyncStorage.removeItem('auth');
93+
setUser(null);
94+
};
95+
96+
const backToLogin = navigation => {
97+
// reset routes history and back to the login page.
98+
navigation.reset({
99+
index: 0,
100+
routes: [{ name: 'Login' }]
101+
});
102+
};
103+
104+
if (user) {
105+
return (
106+
<Context.Provider value={{ user, setUser }}>
107+
<NavigationContainer>
108+
<Stack.Navigator>
109+
<Stack.Screen name="Home" component={Tabs} options={({ navigation }) => ({
110+
headerTitle: () => (
111+
<View>
112+
<Text style={styles.headerTitle}>Snapchat</Text>
113+
</View>
114+
),
115+
headerLeft: () => {
116+
if (Platform.OS === 'ios') {
117+
return (
118+
<TouchableOpacity style={styles.container} onPress={goToSuggestedFriends(navigation)}>
119+
<Image source={addUser} style={styles.headerIcon} />
120+
</TouchableOpacity>
121+
);
122+
}
123+
},
124+
headerRight: () => (
125+
<View style={styles.container}>
126+
<TouchableOpacity style={styles.headerGap} onPress={goToCreateStory(navigation)}>
127+
<Image source={plus} style={styles.headerIcon} />
128+
</TouchableOpacity>
129+
<TouchableOpacity onPress={logout(navigation)}>
130+
<Image source={logOut} style={styles.headerIcon} />
131+
</TouchableOpacity>
132+
</View>
133+
)
134+
})} />
135+
<Stack.Screen name="SuggestedFriends" component={SuggestedFriends} options={{ title: 'Add Friends' }} />
136+
<Stack.Screen name="CreateStory" component={CreateStory} />
137+
</Stack.Navigator>
138+
</NavigationContainer>
139+
</Context.Provider>
140+
);
141+
}
142+
143+
return (
144+
<Context.Provider value={{ user, setUser }}>
145+
<NavigationContainer>
146+
<Stack.Navigator>
147+
<Stack.Screen
148+
name="Login"
149+
component={Login}
150+
/>
151+
<Stack.Screen name="SignUp" component={SignUp} />
152+
<Stack.Screen name="Home" component={Tabs} />
153+
</Stack.Navigator>
154+
</NavigationContainer>
155+
</Context.Provider>
156+
);
157+
};
158+
159+
const styles = StyleSheet.create({
160+
container: {
161+
display: 'flex',
162+
flexDirection: 'row'
163+
},
164+
headerGap: {
165+
marginHorizontal: 8,
166+
},
167+
headerTitle: {
168+
fontSize: 24,
169+
fontWeight: 'bold',
170+
},
171+
headerIcon: {
172+
height: 24,
173+
width: 24,
174+
}
175+
});
176+
177+
export default App;

0 commit comments

Comments
 (0)