├── .buckconfig
├── .eslintrc.js
├── .gitattributes
├── .gitignore
├── .watchmanconfig
├── App.tsx
├── LICENSE
├── README.md
├── __tests__
└── App-test.tsx
├── _prettierrc.js
├── android
├── app
│ ├── _BUCK
│ ├── build.gradle
│ ├── build_defs.bzl
│ ├── debug.keystore
│ ├── proguard-rules.pro
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ └── fonts
│ │ │ ├── AntDesign.ttf
│ │ │ ├── Entypo.ttf
│ │ │ ├── EvilIcons.ttf
│ │ │ ├── Feather.ttf
│ │ │ ├── FontAwesome.ttf
│ │ │ ├── FontAwesome5_Brands.ttf
│ │ │ ├── FontAwesome5_Regular.ttf
│ │ │ ├── FontAwesome5_Solid.ttf
│ │ │ ├── Fontisto.ttf
│ │ │ ├── Foundation.ttf
│ │ │ ├── Ionicons.ttf
│ │ │ ├── MaterialCommunityIcons.ttf
│ │ │ ├── MaterialIcons.ttf
│ │ │ ├── Octicons.ttf
│ │ │ ├── Roboto.ttf
│ │ │ ├── Roboto_medium.ttf
│ │ │ ├── SimpleLineIcons.ttf
│ │ │ ├── Zocial.ttf
│ │ │ └── rubicon-icon-font.ttf
│ │ ├── java
│ │ └── com
│ │ │ └── instagramclone
│ │ │ ├── MainActivity.java
│ │ │ └── MainApplication.java
│ │ └── res
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ └── values
│ │ ├── strings.xml
│ │ └── styles.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── app.json
├── babel.config.js
├── index.js
├── ios
├── InstagramClone-tvOS
│ └── Info.plist
├── InstagramClone-tvOSTests
│ └── Info.plist
├── InstagramClone.xcodeproj
│ ├── project.pbxproj
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── InstagramClone-tvOS.xcscheme
│ │ └── InstagramClone.xcscheme
├── InstagramClone.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
├── InstagramClone
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Base.lproj
│ │ └── LaunchScreen.xib
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ └── insta.imageset
│ │ │ ├── Contents.json
│ │ │ └── insta.jpeg
│ ├── Info.plist
│ └── main.m
├── InstagramCloneTests
│ ├── Info.plist
│ └── InstagramCloneTests.m
├── Podfile
└── Podfile.lock
├── metro.config.js
├── package-lock.json
├── package.json
├── src
├── assets
│ ├── images
│ │ ├── add.png
│ │ ├── camera.png
│ │ ├── camera_take.jpg
│ │ ├── chevron_left.png
│ │ ├── close.png
│ │ ├── collection.png
│ │ ├── comment.png
│ │ ├── direct.png
│ │ ├── heart.jpg
│ │ ├── heart_red.png
│ │ ├── home.png
│ │ ├── ic1.png
│ │ ├── ic10.png
│ │ ├── ic11.png
│ │ ├── ic2.png
│ │ ├── ic3.png
│ │ ├── ic4.png
│ │ ├── ic5.png
│ │ ├── ic6.png
│ │ ├── ic7.png
│ │ ├── ic8.png
│ │ ├── ic_camera_front_white.jpg
│ │ ├── ic_camera_front_white.png
│ │ ├── ic_camera_front_white@2x.png
│ │ ├── ic_camera_front_white@3x.png
│ │ ├── ic_camera_rear_white.png
│ │ ├── ic_camera_rear_white@2x.png
│ │ ├── ic_camera_rear_white@3x.png
│ │ ├── ic_flash_auto_white.png
│ │ ├── ic_flash_auto_white@2x.png
│ │ ├── ic_flash_auto_white@3x.png
│ │ ├── ic_flash_off_white.png
│ │ ├── ic_flash_off_white@2x.png
│ │ ├── ic_flash_off_white@3x.png
│ │ ├── ic_flash_on_white.png
│ │ ├── ic_flash_on_white@2x.png
│ │ ├── ic_flash_on_white@3x.png
│ │ ├── ic_photo_camera_36pt.png
│ │ ├── ic_photo_camera_36pt@2x.png
│ │ ├── ic_photo_camera_36pt@3x.png
│ │ ├── ic_stop_36pt.png
│ │ ├── ic_stop_36pt@2x.png
│ │ ├── ic_stop_36pt@3x.png
│ │ ├── ic_videocam_36pt.png
│ │ ├── ic_videocam_36pt@2x.png
│ │ ├── ic_videocam_36pt@3x.png
│ │ ├── insta.jpeg
│ │ ├── insta.png
│ │ ├── live.png
│ │ ├── logo.png
│ │ ├── plus.png
│ │ ├── post1.png
│ │ ├── post2.png
│ │ ├── post3.png
│ │ ├── post4.png
│ │ ├── post5.png
│ │ ├── post6.png
│ │ ├── post7.png
│ │ ├── post8.png
│ │ ├── post9.png
│ │ ├── search.png
│ │ ├── tv.png
│ │ ├── up.png
│ │ └── user.png
│ └── svg
│ │ ├── camera.svg
│ │ ├── camera_black.svg
│ │ ├── collection.svg
│ │ ├── comment.svg
│ │ ├── direct.svg
│ │ ├── edit.svg
│ │ ├── heart_red.svg
│ │ ├── home.svg
│ │ ├── list.svg
│ │ ├── live.svg
│ │ ├── location.svg
│ │ ├── logo_text.svg
│ │ ├── more.svg
│ │ ├── picture.svg
│ │ ├── play.svg
│ │ ├── play_video.svg
│ │ ├── plus.svg
│ │ ├── share.svg
│ │ └── thumb-up.svg
├── components
│ ├── GalleryView
│ │ ├── GalleryView.tsx
│ │ └── styles.ts
│ ├── StorySlide
│ │ ├── SlideHearder
│ │ │ └── SlideHeader.tsx
│ │ ├── SlideItem
│ │ │ └── SlideItem.tsx
│ │ ├── SlideView
│ │ │ └── SlideView.tsx
│ │ └── StoriesData
│ │ │ └── StoriesData.tsx
│ ├── avatarInput
│ │ ├── index.tsx
│ │ └── styles.ts
│ ├── cameraRollPicker
│ │ ├── ImageItem.tsx
│ │ ├── circle-check.png
│ │ ├── index.tsx
│ │ └── styles.ts
│ ├── cameraView
│ │ ├── CameraView.tsx
│ │ └── styles.ts
│ ├── card
│ │ └── CardComponent.tsx
│ ├── commentItem
│ │ ├── index.tsx
│ │ └── styles.ts
│ ├── favoriteItem
│ │ ├── index.tsx
│ │ └── styles.ts
│ ├── nestedCell
│ │ └── index.tsx
│ ├── postItems
│ │ ├── PostItem
│ │ │ ├── index.tsx
│ │ │ └── styles.ts
│ │ └── index.tsx
│ ├── searchTag
│ │ ├── index.tsx
│ │ └── styles.ts
│ ├── separator
│ │ └── index.tsx
│ ├── storyItems
│ │ ├── index.tsx
│ │ └── storyItem
│ │ │ ├── index.tsx
│ │ │ └── styles.ts
│ └── toolbar
│ │ └── index.tsx
├── containers
│ └── Aux
│ │ └── index.tsx
├── navigation
│ ├── home.tsx
│ └── navigation.tsx
├── screens
│ ├── Add
│ │ ├── index.tsx
│ │ └── styles.ts
│ ├── Comments
│ │ ├── index.tsx
│ │ └── styles.ts
│ ├── Detail
│ │ ├── index.tsx
│ │ └── styles.ts
│ ├── Favorite
│ │ └── index.tsx
│ ├── Home
│ │ ├── index.tsx
│ │ └── styles.ts
│ ├── Intro
│ │ ├── index.tsx
│ │ └── styles.ts
│ ├── Profile
│ │ └── index.tsx
│ ├── Root
│ │ ├── index.tsx
│ │ └── styles.ts
│ └── Search
│ │ ├── index.tsx
│ │ └── styles.ts
├── screenshots
│ ├── Demo.gif
│ ├── Demo1.png
│ ├── Demo2.png
│ ├── Demo3.png
│ ├── Demo4.png
│ ├── Demo5.png
│ ├── Demo6.png
│ ├── Demo7.png
│ └── Demo8.png
└── utils
│ ├── Layout.ts
│ ├── datas
│ ├── avatars.ts
│ ├── emojis.ts
│ ├── filers.ts
│ ├── follows.ts
│ ├── postComments.ts
│ ├── postImages.ts
│ ├── posts.ts
│ ├── stories.ts
│ └── tags.ts
│ ├── methods.tsx
│ └── theme.ts
├── tsconfig.json
└── yarn.lock
/.buckconfig:
--------------------------------------------------------------------------------
1 |
2 | [android]
3 | target = Google Inc.:Google APIs:23
4 |
5 | [maven_repositories]
6 | central = https://repo1.maven.org/maven2
7 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | extends: '@react-native-community',
4 | };
5 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.pbxproj -text
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
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 | project.xcworkspace
24 |
25 | # Android/IntelliJ
26 | #
27 | build/
28 | .idea
29 | .gradle
30 | local.properties
31 | *.iml
32 |
33 | # Visual Studio Code
34 | #
35 | .vscode/
36 |
37 | # node.js
38 | #
39 | node_modules/
40 | npm-debug.log
41 | yarn-error.log
42 |
43 | # BUCK
44 | buck-out/
45 | \.buckd/
46 | *.keystore
47 | !debug.keystore
48 |
49 | # fastlane
50 | #
51 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
52 | # screenshots whenever they are needed.
53 | # For more information about the recommended setup visit:
54 | # https://docs.fastlane.tools/best-practices/source-control/
55 |
56 | */fastlane/report.xml
57 | */fastlane/Preview.html
58 | */fastlane/screenshots
59 |
60 | # Bundle artifact
61 | *.jsbundle
62 |
63 | # CocoaPods
64 | /ios/Pods/
65 |
--------------------------------------------------------------------------------
/.watchmanconfig:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/App.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AppNavigator from "./src/navigation/navigation";
3 |
4 | const App = () => {
5 | console.disableYellowBox = true;
6 | return (
7 |
8 | );
9 | };
10 |
11 | export default App;
12 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Pavel Foujeu
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | # InstagramClone
6 |
7 | >A clone of the Instagram app (October 2019) made with React, React-native and Typescript.
8 |
9 | ## Preview
10 | 
11 |
12 |
13 | ## Screen (Home)
14 | 
15 |
16 | ## Screen (Profile)
17 | 
18 |
19 | ## Screen (Gallery)
20 | 
21 |
22 | ## Screen (Camera)
23 | 
24 |
25 | ## Screen (Story)
26 | 
27 |
28 |
29 | ## Screen (Comments)
30 | 
31 |
32 |
33 | ## Screen (Search By Tag)
34 | 
35 |
36 | ## Screen (-#-)
37 | 
38 |
39 |
40 | ### Dependencies
41 |
42 | - React Native (With Typescript)
43 | - Native Base
44 | - React Navigation
45 | - Others (See package.json at the root folder)
46 |
47 | ## Get Started
48 |
49 | #### 1. Clone the Repo
50 |
51 | On the command prompt run the following commands
52 | ```sh
53 | $ git clone https://github.com/Doha26/InstagramClone.git
54 |
55 | $ cd InstagramClone
56 |
57 | $ npm install
58 |
59 | $ grep -rl "s.dependency 'React/Core'" node_modules/ | xargs sed -i '' 's=React/Core=React-Core=g' // To replace React/Core with React-core for all dependencies that use it
60 |
61 | $ cd ios && pod install && cd..
62 |
63 | $ react-native run-ios
64 |
65 | ```
66 |
67 | ## Author
68 |
69 | * [Pavel Foujeu](mailto:foujeupavel@gmail.com)
70 |
71 | [](https://twitter.com/Pavel_FFP)
72 | [](https://www.linkedin.com/in/pavel-foujeu-8a8992142/)
73 | [](https://github.com/Doha26)
74 |
75 |
76 | ## Done with React-native
77 |
78 | * [MetFlix ](https://github.com/Doha26/MetFlix)
79 |
80 | * [Facebook challenge ](https://github.com/Doha26/Facebook-React-native)
81 |
--------------------------------------------------------------------------------
/__tests__/App-test.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @format
3 | */
4 |
5 | import 'react-native';
6 | import React from 'react';
7 | import App from '../App';
8 |
9 | // Note: test renderer must be required after react-native.
10 | import renderer from 'react-test-renderer';
11 |
12 | it('renders correctly', () => {
13 | renderer.create();
14 | });
15 |
--------------------------------------------------------------------------------
/_prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | bracketSpacing: false,
3 | jsxBracketSameLine: true,
4 | singleQuote: true,
5 | trailingComma: 'all',
6 | };
7 |
--------------------------------------------------------------------------------
/android/app/_BUCK:
--------------------------------------------------------------------------------
1 | # To learn about Buck see [Docs](https://buckbuild.com/).
2 | # To run your application with Buck:
3 | # - install Buck
4 | # - `npm start` - to start the packager
5 | # - `cd android`
6 | # - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
7 | # - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
8 | # - `buck install -r android/app` - compile, install and run application
9 | #
10 |
11 | load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")
12 |
13 | lib_deps = []
14 |
15 | create_aar_targets(glob(["libs/*.aar"]))
16 |
17 | create_jar_targets(glob(["libs/*.jar"]))
18 |
19 | android_library(
20 | name = "all-libs",
21 | exported_deps = lib_deps,
22 | )
23 |
24 | android_library(
25 | name = "app-code",
26 | srcs = glob([
27 | "src/main/java/**/*.java",
28 | ]),
29 | deps = [
30 | ":all-libs",
31 | ":build_config",
32 | ":res",
33 | ],
34 | )
35 |
36 | android_build_config(
37 | name = "build_config",
38 | package = "com.instagramclone",
39 | )
40 |
41 | android_resource(
42 | name = "res",
43 | package = "com.instagramclone",
44 | res = "src/main/res",
45 | )
46 |
47 | android_binary(
48 | name = "app",
49 | keystore = "//android/keystores:debug",
50 | manifest = "src/main/AndroidManifest.xml",
51 | package_type = "debug",
52 | deps = [
53 | ":app-code",
54 | ],
55 | )
56 |
--------------------------------------------------------------------------------
/android/app/build_defs.bzl:
--------------------------------------------------------------------------------
1 | """Helper definitions to glob .aar and .jar targets"""
2 |
3 | def create_aar_targets(aarfiles):
4 | for aarfile in aarfiles:
5 | name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
6 | lib_deps.append(":" + name)
7 | android_prebuilt_aar(
8 | name = name,
9 | aar = aarfile,
10 | )
11 |
12 | def create_jar_targets(jarfiles):
13 | for jarfile in jarfiles:
14 | name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
15 | lib_deps.append(":" + name)
16 | prebuilt_jar(
17 | name = name,
18 | binary_jar = jarfile,
19 | )
20 |
--------------------------------------------------------------------------------
/android/app/debug.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/debug.keystore
--------------------------------------------------------------------------------
/android/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
16 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/AntDesign.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/AntDesign.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Entypo.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/Entypo.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/EvilIcons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/EvilIcons.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Feather.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/Feather.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/FontAwesome.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/FontAwesome.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Fontisto.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/Fontisto.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Foundation.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/Foundation.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Ionicons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/Ionicons.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/MaterialIcons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/MaterialIcons.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Octicons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/Octicons.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Roboto.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/Roboto.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Roboto_medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/Roboto_medium.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/SimpleLineIcons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/SimpleLineIcons.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Zocial.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/Zocial.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/rubicon-icon-font.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/assets/fonts/rubicon-icon-font.ttf
--------------------------------------------------------------------------------
/android/app/src/main/java/com/instagramclone/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.instagramclone;
2 | import com.facebook.react.ReactActivity;
3 |
4 | public class MainActivity extends ReactActivity {
5 |
6 | /**
7 | * Returns the name of the main component registered from JavaScript. This is used to schedule
8 | * rendering of the component.
9 | */
10 | @Override
11 | protected String getMainComponentName() {
12 | return "InstagramClone";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/instagramclone/MainApplication.java:
--------------------------------------------------------------------------------
1 | package com.instagramclone;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 |
6 | import com.RNFetchBlob.RNFetchBlobPackage;
7 | import com.brentvatne.react.ReactVideoPackage;
8 | import com.facebook.react.PackageList;
9 | import com.facebook.react.ReactApplication;
10 | import com.cmcewen.blurview.BlurViewPackage;
11 | import com.facebook.react.shell.MainReactPackage;
12 | import com.oblador.vectoricons.VectorIconsPackage;
13 | import com.reactnativecommunity.cameraroll.CameraRollPackage;
14 | import com.reactnativecommunity.cameraroll.CameraRollPackage;
15 | //import com.lwansbrough.RCTCamera.RCTCameraPackage;
16 | import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
17 | import com.swmansion.reanimated.ReanimatedPackage;
18 | import com.BV.LinearGradient.LinearGradientPackage;
19 |
20 | import org.reactnative.camera.RNCameraPackage;
21 |
22 | import com.horcrux.svg.SvgPackage;
23 | import com.facebook.react.ReactNativeHost;
24 | import com.facebook.react.ReactPackage;
25 | import com.facebook.soloader.SoLoader;
26 |
27 | import java.lang.reflect.InvocationTargetException;
28 | import java.util.Arrays;
29 | import java.util.List;
30 |
31 | public class MainApplication extends Application implements ReactApplication {
32 |
33 | private final ReactNativeHost mReactNativeHost =
34 | new ReactNativeHost(this) {
35 | @Override
36 | public boolean getUseDeveloperSupport() {
37 | return BuildConfig.DEBUG;
38 | }
39 |
40 | @Override
41 | protected List getPackages() {
42 |
43 | return Arrays.asList(
44 | // Packages that cannot be autolinked yet can be added manually here, for example:
45 | // packages.add(new MyReactNativePackage());
46 | new MainReactPackage(),
47 | new RNCameraPackage(),
48 | new RNGestureHandlerPackage(),
49 | new VectorIconsPackage(),
50 | new LinearGradientPackage(),
51 | new ReanimatedPackage(),
52 | new RNFetchBlobPackage(),
53 | new SvgPackage(),
54 | new CameraRollPackage(),
55 | new ReactVideoPackage()
56 | );
57 |
58 | }
59 |
60 | @Override
61 | protected String getJSMainModuleName() {
62 | return "index";
63 | }
64 | };
65 |
66 | @Override
67 | public ReactNativeHost getReactNativeHost() {
68 | return mReactNativeHost;
69 | }
70 |
71 | @Override
72 | public void onCreate() {
73 | super.onCreate();
74 | SoLoader.init(this, /* native exopackage */ false);
75 | initializeFlipper(this); // Remove this line if you don't want Flipper enabled
76 | }
77 |
78 | /**
79 | * Loads Flipper in React Native templates.
80 | *
81 | * @param context
82 | */
83 | private static void initializeFlipper(Context context) {
84 | if (BuildConfig.DEBUG) {
85 | try {
86 | /*
87 | We use reflection here to pick up the class that initializes Flipper,
88 | since Flipper library is not available in release mode
89 | */
90 | Class> aClass = Class.forName("com.facebook.flipper.ReactNativeFlipper");
91 | aClass.getMethod("initializeFlipper", Context.class).invoke(null, context);
92 | } catch (ClassNotFoundException e) {
93 | e.printStackTrace();
94 | } catch (NoSuchMethodException e) {
95 | e.printStackTrace();
96 | } catch (IllegalAccessException e) {
97 | e.printStackTrace();
98 | } catch (InvocationTargetException e) {
99 | e.printStackTrace();
100 | }
101 | }
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Hello App Display Name
3 |
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | ext {
5 | buildToolsVersion = "28.0.3"
6 | minSdkVersion = 16
7 | compileSdkVersion = 28
8 | targetSdkVersion = 28
9 | }
10 | repositories {
11 | google()
12 | jcenter()
13 | }
14 | dependencies {
15 | classpath("com.android.tools.build:gradle:3.4.2")
16 |
17 | // NOTE: Do not place your application dependencies here; they belong
18 | // in the individual module build.gradle files
19 | }
20 | }
21 |
22 | allprojects {
23 | repositories {
24 | mavenLocal()
25 | maven {
26 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
27 | url("$rootDir/../node_modules/react-native/android")
28 | }
29 | maven {
30 | // Android JSC is installed from npm
31 | url("$rootDir/../node_modules/jsc-android/dist")
32 | }
33 |
34 | google()
35 | jcenter()
36 | maven { url 'https://jitpack.io' }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
20 | android.useAndroidX=true
21 | android.enableJetifier=true
22 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/android/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/android/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem http://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%" == "" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%" == "" set DIRNAME=.
29 | set APP_BASE_NAME=%~n0
30 | set APP_HOME=%DIRNAME%
31 |
32 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
33 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
34 |
35 | @rem Find java.exe
36 | if defined JAVA_HOME goto findJavaFromJavaHome
37 |
38 | set JAVA_EXE=java.exe
39 | %JAVA_EXE% -version >NUL 2>&1
40 | if "%ERRORLEVEL%" == "0" goto init
41 |
42 | echo.
43 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
44 | echo.
45 | echo Please set the JAVA_HOME variable in your environment to match the
46 | echo location of your Java installation.
47 |
48 | goto fail
49 |
50 | :findJavaFromJavaHome
51 | set JAVA_HOME=%JAVA_HOME:"=%
52 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
53 |
54 | if exist "%JAVA_EXE%" goto init
55 |
56 | echo.
57 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
58 | echo.
59 | echo Please set the JAVA_HOME variable in your environment to match the
60 | echo location of your Java installation.
61 |
62 | goto fail
63 |
64 | :init
65 | @rem Get command-line arguments, handling Windows variants
66 |
67 | if not "%OS%" == "Windows_NT" goto win9xME_args
68 |
69 | :win9xME_args
70 | @rem Slurp the command line arguments.
71 | set CMD_LINE_ARGS=
72 | set _SKIP=2
73 |
74 | :win9xME_args_slurp
75 | if "x%~1" == "x" goto execute
76 |
77 | set CMD_LINE_ARGS=%*
78 |
79 | :execute
80 | @rem Setup the command line
81 |
82 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
83 |
84 | @rem Execute Gradle
85 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
86 |
87 | :end
88 | @rem End local scope for the variables with windows NT shell
89 | if "%ERRORLEVEL%"=="0" goto mainEnd
90 |
91 | :fail
92 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
93 | rem the _cmd.exe /c_ return code!
94 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
95 | exit /b 1
96 |
97 | :mainEnd
98 | if "%OS%"=="Windows_NT" endlocal
99 |
100 | :omega
101 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'InstagramClone'
2 | include ':@react-native-community_blur'
3 | project(':@react-native-community_blur').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/blur/android')
4 | include ':@react-native-community_cameraroll'
5 | project(':@react-native-community_cameraroll').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/cameraroll/android')
6 | include ':react-native-camera'
7 | project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android')
8 | include ':react-native-gesture-handler'
9 | project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')
10 | include ':react-native-reanimated'
11 | project(':react-native-reanimated').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-reanimated/android')
12 | include ':react-native-linear-gradient'
13 | project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android')
14 | include ':react-native-svg'
15 | project(':react-native-svg').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-svg/android')
16 | include ':react-native-video'
17 | project(':react-native-video').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-video/android-exoplayer')
18 |
19 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
20 | include ':app'
21 |
--------------------------------------------------------------------------------
/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "InstagramClone",
3 | "displayName": "InstagramClone"
4 | }
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: ['module:metro-react-native-babel-preset'],
3 | plugins:[
4 | ["module-resolver",
5 | {
6 | alias: {
7 | "~": "./src"
8 | }
9 | }
10 | ],
11 | ]
12 | };
13 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @format
3 | */
4 |
5 | import {AppRegistry} from 'react-native';
6 | import App from './App';
7 | import {name as appName} from './app.json';
8 |
9 | AppRegistry.registerComponent(appName, () => App);
10 |
--------------------------------------------------------------------------------
/ios/InstagramClone-tvOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | NSAppTransportSecurity
26 |
27 | NSExceptionDomains
28 |
29 | localhost
30 |
31 | NSExceptionAllowsInsecureHTTPLoads
32 |
33 |
34 |
35 |
36 | NSLocationWhenInUseUsageDescription
37 |
38 | UILaunchStoryboardName
39 | LaunchScreen
40 | UIRequiredDeviceCapabilities
41 |
42 | armv7
43 |
44 | UISupportedInterfaceOrientations
45 |
46 | UIInterfaceOrientationPortrait
47 | UIInterfaceOrientationLandscapeLeft
48 | UIInterfaceOrientationLandscapeRight
49 |
50 | UIViewControllerBasedStatusBarAppearance
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/ios/InstagramClone-tvOSTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/ios/InstagramClone.xcodeproj/xcshareddata/xcschemes/InstagramClone-tvOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
43 |
49 |
50 |
51 |
52 |
53 |
58 |
59 |
61 |
67 |
68 |
69 |
70 |
71 |
77 |
78 |
79 |
80 |
81 |
82 |
92 |
94 |
100 |
101 |
102 |
103 |
104 |
105 |
111 |
113 |
119 |
120 |
121 |
122 |
124 |
125 |
128 |
129 |
130 |
--------------------------------------------------------------------------------
/ios/InstagramClone.xcodeproj/xcshareddata/xcschemes/InstagramClone.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
43 |
49 |
50 |
51 |
52 |
53 |
58 |
59 |
61 |
67 |
68 |
69 |
70 |
71 |
77 |
78 |
79 |
80 |
81 |
82 |
92 |
94 |
100 |
101 |
102 |
103 |
104 |
105 |
111 |
113 |
119 |
120 |
121 |
122 |
124 |
125 |
128 |
129 |
130 |
--------------------------------------------------------------------------------
/ios/InstagramClone.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/InstagramClone.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/InstagramClone.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildSystemType
6 | Original
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/InstagramClone/AppDelegate.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (nonatomic, strong) UIWindow *window;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/ios/InstagramClone/AppDelegate.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import "AppDelegate.h"
9 |
10 | #import
11 | #import
12 | #import
13 |
14 | @implementation AppDelegate
15 |
16 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
17 | {
18 | RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
19 | RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
20 | moduleName:@"InstagramClone"
21 | initialProperties:nil];
22 |
23 | rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
24 |
25 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
26 | UIViewController *rootViewController = [UIViewController new];
27 | rootViewController.view = rootView;
28 | self.window.rootViewController = rootViewController;
29 | [self.window makeKeyAndVisible];
30 | return YES;
31 | }
32 |
33 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
34 | {
35 | #if DEBUG
36 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
37 | #else
38 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
39 | #endif
40 | }
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/ios/InstagramClone/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/ios/InstagramClone/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ios-marketing",
45 | "size" : "1024x1024",
46 | "scale" : "1x"
47 | }
48 | ],
49 | "info" : {
50 | "version" : 1,
51 | "author" : "xcode"
52 | }
53 | }
--------------------------------------------------------------------------------
/ios/InstagramClone/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ios/InstagramClone/Images.xcassets/insta.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "insta.jpeg",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/ios/InstagramClone/Images.xcassets/insta.imageset/insta.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/ios/InstagramClone/Images.xcassets/insta.imageset/insta.jpeg
--------------------------------------------------------------------------------
/ios/InstagramClone/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | InstagramClone
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1
25 | LSRequiresIPhoneOS
26 |
27 | NSAppTransportSecurity
28 |
29 | NSAllowsArbitraryLoads
30 |
31 | NSExceptionDomains
32 |
33 | localhost
34 |
35 | NSExceptionAllowsInsecureHTTPLoads
36 |
37 |
38 |
39 |
40 | NSLocationWhenInUseUsageDescription
41 | $(PRODUCT_NAME) location use
42 | UIAppFonts
43 |
44 | AntDesign.ttf
45 | Entypo.ttf
46 | EvilIcons.ttf
47 | Feather.ttf
48 | FontAwesome.ttf
49 | FontAwesome5_Brands.ttf
50 | FontAwesome5_Regular.ttf
51 | FontAwesome5_Solid.ttf
52 | Fontisto.ttf
53 | Foundation.ttf
54 | Ionicons.ttf
55 | MaterialCommunityIcons.ttf
56 | MaterialIcons.ttf
57 | Octicons.ttf
58 | Roboto_medium.ttf
59 | Roboto.ttf
60 | rubicon-icon-font.ttf
61 | SimpleLineIcons.ttf
62 | Zocial.ttf
63 |
64 | UILaunchStoryboardName
65 | LaunchScreen
66 | UIRequiredDeviceCapabilities
67 |
68 | armv7
69 |
70 | UISupportedInterfaceOrientations
71 |
72 | UIInterfaceOrientationPortrait
73 | UIInterfaceOrientationLandscapeLeft
74 | UIInterfaceOrientationLandscapeRight
75 |
76 | UIViewControllerBasedStatusBarAppearance
77 |
78 | NSCalendarsUsageDescription
79 | $(PRODUCT_NAME) calendar events
80 | NSRemindersUsageDescription
81 | $(PRODUCT_NAME) reminder use
82 | NSCameraUsageDescription
83 | This app requires to access your photo library to show image on profile and send via chat
84 | NSMicrophoneUsageDescription
85 | This app requires to access your microphone to record video with your voice send via chat
86 | NSPhotoLibraryUsageDescription
87 | This app requires to access your photo library to show image on profile and send via chat
88 | NSContactsUsageDescription
89 | $(PRODUCT_NAME) contact use
90 | NSLocationAlwaysUsageDescription
91 | $(PRODUCT_NAME) location use
92 |
93 |
94 |
--------------------------------------------------------------------------------
/ios/InstagramClone/main.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import
9 |
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ios/InstagramCloneTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/ios/InstagramCloneTests/InstagramCloneTests.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import
9 | #import
10 |
11 | #import
12 | #import
13 |
14 | #define TIMEOUT_SECONDS 600
15 | #define TEXT_TO_LOOK_FOR @"Welcome to React"
16 |
17 | @interface InstagramCloneTests : XCTestCase
18 |
19 | @end
20 |
21 | @implementation InstagramCloneTests
22 |
23 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test
24 | {
25 | if (test(view)) {
26 | return YES;
27 | }
28 | for (UIView *subview in [view subviews]) {
29 | if ([self findSubviewInView:subview matching:test]) {
30 | return YES;
31 | }
32 | }
33 | return NO;
34 | }
35 |
36 | - (void)testRendersWelcomeScreen
37 | {
38 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
39 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
40 | BOOL foundElement = NO;
41 |
42 | __block NSString *redboxError = nil;
43 | #ifdef DEBUG
44 | RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
45 | if (level >= RCTLogLevelError) {
46 | redboxError = message;
47 | }
48 | });
49 | #endif
50 |
51 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
52 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
53 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
54 |
55 | foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {
56 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
57 | return YES;
58 | }
59 | return NO;
60 | }];
61 | }
62 |
63 | #ifdef DEBUG
64 | RCTSetLogFunction(RCTDefaultLogFunction);
65 | #endif
66 |
67 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
68 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
69 | }
70 |
71 |
72 | @end
73 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | platform :ios, '9.0'
2 | require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
3 |
4 | target 'InstagramClone' do
5 | # Pods for InstagramClone
6 | pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
7 | pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
8 | pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
9 | pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
10 | pod 'React', :path => '../node_modules/react-native/'
11 | pod 'React-Core', :path => '../node_modules/react-native/'
12 | pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
13 | pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
14 | pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
15 | pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
16 | pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
17 | pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
18 | pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
19 | pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
20 | pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
21 | pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
22 | pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
23 | pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'
24 |
25 | pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
26 | pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
27 | pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
28 | pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
29 | pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon"
30 | pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
31 | pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
32 |
33 | pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
34 | pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
35 | pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
36 |
37 |
38 |
39 | pod 'RNSVG', :path => '../node_modules/react-native-svg'
40 |
41 | pod 'BVLinearGradient', :path => '../node_modules/react-native-linear-gradient'
42 |
43 | pod 'RNReanimated', :path => '../node_modules/react-native-reanimated'
44 |
45 | pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
46 |
47 |
48 | pod 'react-native-camera', :path => '../node_modules/react-native-camera'
49 |
50 | pod 'react-native-cameraroll', :path => '../node_modules/@react-native-community/cameraroll'
51 |
52 |
53 | pod 'react-native-blur', :path => '../node_modules/@react-native-community/blur'
54 |
55 | target 'InstagramCloneTests' do
56 | inherit! :search_paths
57 | # Pods for testing
58 | end
59 |
60 | use_native_modules!
61 | end
62 |
63 | target 'InstagramClone-tvOS' do
64 | # Pods for InstagramClone-tvOS
65 |
66 | target 'InstagramClone-tvOSTests' do
67 | inherit! :search_paths
68 | # Pods for testing
69 | end
70 |
71 | end
72 |
--------------------------------------------------------------------------------
/metro.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Metro configuration for React Native
3 | * https://github.com/facebook/react-native
4 | *
5 | * @format
6 | */
7 |
8 | module.exports = {
9 | transformer: {
10 | getTransformOptions: async () => ({
11 | transform: {
12 | experimentalImportSupport: false,
13 | inlineRequires: false,
14 | },
15 | }),
16 | },
17 | };
18 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "InstagramClone",
3 | "version": "0.0.1",
4 | "private": true,
5 | "scripts": {
6 | "android": "react-native run-android",
7 | "ios": "react-native run-ios",
8 | "start": "react-native start",
9 | "test": "jest"
10 | },
11 | "dependencies": {
12 | "@appandflow/masonry-list": "^0.4.0",
13 | "@react-native-community/blur": "^3.3.1",
14 | "@react-native-community/cameraroll": "^1.2.1",
15 | "@types/react-native-fetch-blob": "^0.10.5",
16 | "@types/react-native-modalbox": "^1.4.8",
17 | "deprecated-react-native-listview": "0.0.6",
18 | "linkify-it": "^1.2.4",
19 | "native-base": "^2.13.8",
20 | "react": "16.8.6",
21 | "react-native": "^0.61.1",
22 | "react-native-animatable": "1.3.2",
23 | "react-native-camera": "^3.7.2",
24 | "react-native-elements": "^1.2.0",
25 | "react-native-fetch-blob": "^0.10.8",
26 | "react-native-gesture-handler": "^1.4.1",
27 | "react-native-hyperlink": "0.0.14",
28 | "react-native-image-progress": "^0.6.0",
29 | "react-native-linear-gradient": "^2.5.6",
30 | "react-native-modalbox": "^2.0.0",
31 | "react-native-parallax-scroll-view": "^0.21.3",
32 | "react-native-progress-bar-animated": "^1.0.6",
33 | "react-native-reanimated": "^1.3.0",
34 | "react-native-story": "^0.1.3",
35 | "react-native-svg": "^9.9.4",
36 | "react-native-svg-uri": "^1.2.3",
37 | "react-native-swiper": "^1.5.14",
38 | "react-native-tab-view": "^2.10.0",
39 | "react-native-vector-icons": "^6.6.0",
40 | "react-native-vertical-swipe": "^1.1.1",
41 | "react-native-video": "^5.0.2",
42 | "react-native-view-more-text": "^2.1.0",
43 | "react-navigation": "^4.0.5",
44 | "react-navigation-custom-bottom-tab-component": "^1.1.1",
45 | "react-navigation-stack": "^1.8.0",
46 | "react-navigation-tabs": "^2.5.5"
47 | },
48 | "devDependencies": {
49 | "@babel/core": "^7.5.0",
50 | "@babel/runtime": "^7.5.0",
51 | "@react-native-community/eslint-config": "^0.0.3",
52 | "@types/jest": "^24.0.18",
53 | "@types/react": "16.8.19",
54 | "@types/react-native": "0.60.15",
55 | "@types/react-test-renderer": "16.8.1",
56 | "babel-jest": "^24.1.0",
57 | "babel-plugin-module-resolver": "^4.0.0",
58 | "jest": "^24.1.0",
59 | "metro-react-native-babel-preset": "^0.51.1",
60 | "react-test-renderer": "16.8.1",
61 | "typescript": "^3.6.3"
62 | },
63 | "jest": {
64 | "preset": "react-native",
65 | "moduleFileExtensions": [
66 | "ts",
67 | "tsx",
68 | "js",
69 | "jsx",
70 | "json",
71 | "node"
72 | ]
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/assets/images/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/add.png
--------------------------------------------------------------------------------
/src/assets/images/camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/camera.png
--------------------------------------------------------------------------------
/src/assets/images/camera_take.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/camera_take.jpg
--------------------------------------------------------------------------------
/src/assets/images/chevron_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/chevron_left.png
--------------------------------------------------------------------------------
/src/assets/images/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/close.png
--------------------------------------------------------------------------------
/src/assets/images/collection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/collection.png
--------------------------------------------------------------------------------
/src/assets/images/comment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/comment.png
--------------------------------------------------------------------------------
/src/assets/images/direct.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/direct.png
--------------------------------------------------------------------------------
/src/assets/images/heart.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/heart.jpg
--------------------------------------------------------------------------------
/src/assets/images/heart_red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/heart_red.png
--------------------------------------------------------------------------------
/src/assets/images/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/home.png
--------------------------------------------------------------------------------
/src/assets/images/ic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic1.png
--------------------------------------------------------------------------------
/src/assets/images/ic10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic10.png
--------------------------------------------------------------------------------
/src/assets/images/ic11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic11.png
--------------------------------------------------------------------------------
/src/assets/images/ic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic2.png
--------------------------------------------------------------------------------
/src/assets/images/ic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic3.png
--------------------------------------------------------------------------------
/src/assets/images/ic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic4.png
--------------------------------------------------------------------------------
/src/assets/images/ic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic5.png
--------------------------------------------------------------------------------
/src/assets/images/ic6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic6.png
--------------------------------------------------------------------------------
/src/assets/images/ic7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic7.png
--------------------------------------------------------------------------------
/src/assets/images/ic8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic8.png
--------------------------------------------------------------------------------
/src/assets/images/ic_camera_front_white.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_camera_front_white.jpg
--------------------------------------------------------------------------------
/src/assets/images/ic_camera_front_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_camera_front_white.png
--------------------------------------------------------------------------------
/src/assets/images/ic_camera_front_white@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_camera_front_white@2x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_camera_front_white@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_camera_front_white@3x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_camera_rear_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_camera_rear_white.png
--------------------------------------------------------------------------------
/src/assets/images/ic_camera_rear_white@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_camera_rear_white@2x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_camera_rear_white@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_camera_rear_white@3x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_flash_auto_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_flash_auto_white.png
--------------------------------------------------------------------------------
/src/assets/images/ic_flash_auto_white@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_flash_auto_white@2x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_flash_auto_white@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_flash_auto_white@3x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_flash_off_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_flash_off_white.png
--------------------------------------------------------------------------------
/src/assets/images/ic_flash_off_white@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_flash_off_white@2x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_flash_off_white@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_flash_off_white@3x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_flash_on_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_flash_on_white.png
--------------------------------------------------------------------------------
/src/assets/images/ic_flash_on_white@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_flash_on_white@2x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_flash_on_white@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_flash_on_white@3x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_photo_camera_36pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_photo_camera_36pt.png
--------------------------------------------------------------------------------
/src/assets/images/ic_photo_camera_36pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_photo_camera_36pt@2x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_photo_camera_36pt@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_photo_camera_36pt@3x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_stop_36pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_stop_36pt.png
--------------------------------------------------------------------------------
/src/assets/images/ic_stop_36pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_stop_36pt@2x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_stop_36pt@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_stop_36pt@3x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_videocam_36pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_videocam_36pt.png
--------------------------------------------------------------------------------
/src/assets/images/ic_videocam_36pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_videocam_36pt@2x.png
--------------------------------------------------------------------------------
/src/assets/images/ic_videocam_36pt@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/ic_videocam_36pt@3x.png
--------------------------------------------------------------------------------
/src/assets/images/insta.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/insta.jpeg
--------------------------------------------------------------------------------
/src/assets/images/insta.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/insta.png
--------------------------------------------------------------------------------
/src/assets/images/live.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/live.png
--------------------------------------------------------------------------------
/src/assets/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/logo.png
--------------------------------------------------------------------------------
/src/assets/images/plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/plus.png
--------------------------------------------------------------------------------
/src/assets/images/post1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/post1.png
--------------------------------------------------------------------------------
/src/assets/images/post2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/post2.png
--------------------------------------------------------------------------------
/src/assets/images/post3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/post3.png
--------------------------------------------------------------------------------
/src/assets/images/post4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/post4.png
--------------------------------------------------------------------------------
/src/assets/images/post5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/post5.png
--------------------------------------------------------------------------------
/src/assets/images/post6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/post6.png
--------------------------------------------------------------------------------
/src/assets/images/post7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/post7.png
--------------------------------------------------------------------------------
/src/assets/images/post8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/post8.png
--------------------------------------------------------------------------------
/src/assets/images/post9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/post9.png
--------------------------------------------------------------------------------
/src/assets/images/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/search.png
--------------------------------------------------------------------------------
/src/assets/images/tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/tv.png
--------------------------------------------------------------------------------
/src/assets/images/up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/up.png
--------------------------------------------------------------------------------
/src/assets/images/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/assets/images/user.png
--------------------------------------------------------------------------------
/src/assets/svg/camera.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/svg/camera_black.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/svg/collection.svg:
--------------------------------------------------------------------------------
1 |
2 |
11 |
--------------------------------------------------------------------------------
/src/assets/svg/comment.svg:
--------------------------------------------------------------------------------
1 |
2 |
15 |
--------------------------------------------------------------------------------
/src/assets/svg/direct.svg:
--------------------------------------------------------------------------------
1 |
2 |
14 |
--------------------------------------------------------------------------------
/src/assets/svg/edit.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/svg/heart_red.svg:
--------------------------------------------------------------------------------
1 |
2 |
11 |
--------------------------------------------------------------------------------
/src/assets/svg/home.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/src/assets/svg/list.svg:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/src/assets/svg/live.svg:
--------------------------------------------------------------------------------
1 |
2 |
16 |
--------------------------------------------------------------------------------
/src/assets/svg/location.svg:
--------------------------------------------------------------------------------
1 |
2 |
17 |
--------------------------------------------------------------------------------
/src/assets/svg/more.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/svg/picture.svg:
--------------------------------------------------------------------------------
1 |
2 |
16 |
--------------------------------------------------------------------------------
/src/assets/svg/play.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/svg/play_video.svg:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/src/assets/svg/plus.svg:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/src/assets/svg/share.svg:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/src/assets/svg/thumb-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/src/components/GalleryView/GalleryView.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | View,
4 | Text,
5 | Image, Dimensions
6 | } from 'react-native'
7 | import CameraRollPicker from '~/components/cameraRollPicker/index';
8 | import ParallaxScrollView from 'react-native-parallax-scroll-view';
9 | import styles from "~/components/GalleryView/styles";
10 |
11 | export default class GalleryView extends React.PureComponent {
12 |
13 |
14 | constructor(props: any) {
15 | super(props);
16 | this.state = {
17 | galleryImagePath: false,
18 | }
19 | }
20 |
21 | getSelectedImages(image: any, current: any) {
22 | this.setState({galleryImagePath: current.uri});
23 | }
24 |
25 | render() {
26 |
27 | const {galleryImagePath, photos} = this.state;
28 | return (
29 |
30 | (
33 |
34 |
35 | {
36 | galleryImagePath
37 | &&
38 |
39 |
40 | }
41 |
42 |
43 | )}
44 | renderFixedHeader={() =>
45 | }
47 | parallaxHeaderHeight={350}
48 | stickyHeaderHeight={55}
49 | >
50 |
51 |
63 |
64 |
65 |
66 | )
67 | }
68 | }
69 |
70 |
--------------------------------------------------------------------------------
/src/components/GalleryView/styles.ts:
--------------------------------------------------------------------------------
1 | import {StyleSheet} from "react-native";
2 |
3 | const styles = StyleSheet.create({
4 | container: {
5 | flex: 1,
6 | backgroundColor: '#F6AE2D',
7 | },
8 | content: {
9 | marginTop: 15,
10 | height: 50,
11 | flexDirection: 'row',
12 | justifyContent: 'center',
13 | alignItems: 'center',
14 | flexWrap: 'wrap',
15 | },
16 | text: {
17 | fontSize: 16,
18 | alignItems: 'center',
19 | color: '#fff',
20 | },
21 | bold: {
22 | fontWeight: 'bold',
23 | },
24 | info: {
25 | fontSize: 12,
26 | },
27 | preview: {
28 | flex: 1,
29 | justifyContent: 'flex-end',
30 | alignItems: 'center',
31 | },
32 | galleryView: {},
33 | imagePreview: {}
34 | });
35 |
36 | export default styles;
37 |
--------------------------------------------------------------------------------
/src/components/StorySlide/SlideHearder/SlideHeader.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 | import {View, Image, Text, SafeAreaView, StyleSheet, Dimensions} from "react-native";
3 | import DEFAULT_AVATAR from "~/assets/images/ic1.png";
4 | import ProgressBarAnimated from 'react-native-progress-bar-animated'
5 | import {colors} from "~/utils/theme";
6 |
7 | export default class SlideHeader extends React.PureComponent {
8 | state = {
9 | progressValue: 0
10 | };
11 | constructor(props: any) {
12 | super(props);
13 |
14 | }
15 |
16 | componentDidMount() {
17 | this.updateLoader();
18 | }
19 |
20 | updateLoader = () => {
21 | setInterval(() => {
22 | this.setState({progressValue: this.state.progressValue + 2});
23 | if(this.state.progressValue==118){
24 | //alert("Fini");
25 | }
26 | }, 100)
27 |
28 | };
29 | render() {
30 | // @ts-ignore
31 | const {user} = this.props;
32 |
33 | const progressCustomStyles = {
34 | backgroundColor: colors.white,
35 | borderRadius: 1.5,
36 | height: 3,
37 | };
38 | return (
39 |
40 |
41 |
46 |
47 |
52 | {user}
53 |
54 |
55 |
56 | );
57 | }
58 | }
59 | const styles = StyleSheet.create({
60 | container: {
61 | flexDirection: "column",
62 | padding: 16
63 | },
64 | avatarContainer: {
65 | flexDirection: "row",
66 | alignItems: "center",
67 | marginTop: 20
68 | },
69 | avatar: {
70 | width: 36,
71 | height: 36,
72 | borderRadius: 36 / 2,
73 | marginRight: 16,
74 | },
75 | username: {
76 | color: "white",
77 | fontSize: 16
78 | }
79 | });
80 |
--------------------------------------------------------------------------------
/src/components/StorySlide/SlideItem/SlideItem.tsx:
--------------------------------------------------------------------------------
1 | import React, { Fragment, PureComponent } from "react";
2 | import {View, Image, Dimensions, StyleSheet} from "react-native";
3 | import SlideHeader from "~/components/StorySlide/SlideHearder/SlideHeader";
4 |
5 | export default class SlideItem extends PureComponent {
6 |
7 |
8 |
9 | render() {
10 | // @ts-ignore
11 | const {story: { source, user, avatar, id }, footerComponent} = this.props;
12 |
13 | return (
14 |
15 |
16 |
17 |
18 |
22 |
23 |
24 | {footerComponent && (
25 | {footerComponent}
26 | )}
27 |
28 | );
29 | }
30 | }
31 |
32 | const styles = StyleSheet.create({
33 | container: {
34 | flex: 1,
35 | },
36 | image: {
37 | ...StyleSheet.absoluteFillObject,
38 | width: null,
39 | height: Dimensions.get("window").height,
40 | },
41 | footer: {
42 | flexDirection: 'row',
43 | alignItems: 'center',
44 | justifyContent: 'space-between',
45 | padding: 16,
46 | },
47 | });
48 |
--------------------------------------------------------------------------------
/src/components/StorySlide/SlideView/SlideView.tsx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from "react";
2 | import {Dimensions, StyleSheet, TextInput} from "react-native";
3 | import Modal from "react-native-modalbox";
4 |
5 | import StoriesData from "~/components/StorySlide/StoriesData/StoriesData";
6 |
7 |
8 | export default class SlideView extends Component {
9 | constructor(props: any) {
10 | super(props);
11 | this.state = {
12 | isModalOpen: false,
13 | orderedStories: null,
14 | selectedStory: null
15 | };
16 | }
17 |
18 | // Component Life Cycles
19 |
20 | // Component Functions
21 | _handleStoryItemPress = (item: any, index: any) => {
22 |
23 | // @ts-ignore
24 | const {stories} = this.props;
25 |
26 | this.setState({selectedStory: item});
27 |
28 | const _stories = Array.from(stories);
29 |
30 | const rest = _stories.splice(index);
31 | const first = _stories;
32 |
33 | const orderedStories = rest.concat(first);
34 |
35 | this.setState({orderedStories});
36 | this.setState({isModalOpen: true});
37 | };
38 |
39 | render() {
40 |
41 | // @ts-ignore
42 | const {isModalOpen, orderedStories, selectedStory} = this.state;
43 |
44 | return (
45 |
46 | this.setState({isModalOpen: false})}
50 | position="center"
51 | swipeToClose
52 | swipeArea={250}
53 | backButtonClose
54 | >
55 |
63 | }
64 | />
65 |
66 |
67 | );
68 | }
69 | }
70 |
71 | const styles = StyleSheet.create({
72 | storyListContainer: {
73 | marginTop: 50
74 | },
75 | modal: {
76 | height: Dimensions.get("window").height,
77 | width: Dimensions.get("window").width,
78 | flex: 1
79 | }
80 | });
81 |
--------------------------------------------------------------------------------
/src/components/StorySlide/StoriesData/StoriesData.tsx:
--------------------------------------------------------------------------------
1 | import React, { PureComponent } from "react";
2 | import {
3 | StyleSheet,
4 | Animated,
5 | Dimensions,
6 | Platform,
7 | View,
8 | } from "react-native";
9 |
10 | import SlideItem from "~/components/StorySlide/SlideItem/SlideItem";
11 | import stories from '~/utils/datas/stories'
12 |
13 | const { width } = Dimensions.get("window");
14 | const perspective = width;
15 | const angle = Math.atan(perspective / (width / 2));
16 | const ratio = Platform.OS === "ios" ? 2 : 1.2;
17 |
18 | export default class StoriesData extends PureComponent {
19 | stories:any = [];
20 |
21 | state = {
22 | x: new Animated.Value(0),
23 | ready: true
24 | };
25 |
26 | constructor(props:any) {
27 | super(props);
28 | const _stories = stories;
29 | this.stories = _stories.map(() => React.createRef());
30 | }
31 |
32 | async componentDidMount() {
33 | const { x } = this.state;
34 | await x.addListener(() =>
35 | this.stories.forEach((story:any, index:any) => {
36 | const offset = index * width;
37 | const inputRange = [offset - width, offset + width];
38 | const translateX = x
39 | .interpolate({
40 | inputRange,
41 | outputRange: [width / ratio, -width / ratio],
42 | extrapolate: "clamp"
43 | }).__getValue();
44 |
45 | const rotateY = x
46 | .interpolate({
47 | inputRange,
48 | outputRange: [`${angle}rad`, `-${angle}rad`],
49 | extrapolate: "clamp"
50 | }).__getValue();
51 |
52 | const parsed = parseFloat(
53 | rotateY.substr(0, rotateY.indexOf("rad")),
54 | 10
55 | );
56 | const alpha = Math.abs(parsed);
57 | const gamma = angle - alpha;
58 | const beta = Math.PI - alpha - gamma;
59 | const w = width / 2 - ((width / 2) * Math.sin(gamma)) / Math.sin(beta);
60 | const translateX2 = parsed > 0 ? w : -w;
61 |
62 | const style = {
63 | transform: [
64 | { perspective },
65 | { translateX },
66 | { rotateY },
67 | { translateX: translateX2 }
68 | ]
69 | };
70 | story.current.setNativeProps({ style });
71 | })
72 | );
73 | }
74 |
75 |
76 | render() {
77 | const { x } = this.state;
78 | // @ts-ignore
79 | const {footerComponent } = this.props;
80 |
81 | return (
82 |
83 | {stories
84 | .map((story:any, i:any) => (
85 |
90 |
94 |
95 | ))
96 | .reverse()}
97 |
117 |
118 | );
119 | }
120 | }
121 | const styles = StyleSheet.create({
122 | container: {
123 | flex: 1,
124 | backgroundColor: "white"
125 | }
126 | });
127 |
--------------------------------------------------------------------------------
/src/components/avatarInput/index.tsx:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 | import {
3 | View,
4 | TextInput, TouchableOpacity, KeyboardAvoidingView,
5 | } from "react-native";
6 | import {Avatar, Text} from "react-native-elements";
7 | import {colors} from "~/utils/theme";
8 | import styles from "~/components/avatarInput/styles";
9 |
10 | export default class AvatarInput extends Component {
11 |
12 | render(){
13 | return (
14 |
15 |
16 |
17 |
22 |
23 |
26 |
27 | ❤️
28 |
29 |
30 |
31 | );
32 | }
33 | };
34 |
35 |
36 |
--------------------------------------------------------------------------------
/src/components/avatarInput/styles.ts:
--------------------------------------------------------------------------------
1 | import {StyleSheet} from "react-native";
2 |
3 | const styles = StyleSheet.create({
4 | mainContainer:{
5 | flex:1,
6 | flexDirection:'row',
7 | height: 40,
8 | borderRadius: 20,
9 | },
10 | inputZone:{
11 | flexDirection:'row',
12 | flex:10,
13 | justifyContent: 'center'
14 | },
15 | avatarStyle:{
16 | width:20,
17 | height:20,
18 | alignSelf:'center',
19 | borderRadius: 10,
20 | },
21 | inputStyle:{
22 | fontSize:13,
23 | fontWeight:"400",
24 | marginLeft:10, padding:3,
25 | flex:6
26 | },
27 | toggleEmojii:{
28 | alignContent:'center'
29 | }
30 | });
31 | export default styles;
32 |
--------------------------------------------------------------------------------
/src/components/cameraRollPicker/ImageItem.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | Image,
4 | StyleSheet,
5 | Dimensions,
6 | TouchableOpacity,
7 | } from 'react-native';
8 | import PropTypes from 'prop-types';
9 | import styles from "~/components/cameraRollPicker/styles";
10 |
11 | class ImageItem extends React.PureComponent {
12 | constructor(props:any) {
13 | super(props)
14 | }
15 |
16 | componentWillMount() {
17 | var { width } = Dimensions.get('window');
18 | var { imageMargin, imagesPerRow, containerWidth } = this.props;
19 |
20 | if (typeof containerWidth != "undefined") {
21 | width = containerWidth;
22 | }
23 | this._imageSize = (width - (imagesPerRow + 1) * imageMargin) / imagesPerRow;
24 | }
25 |
26 | render() {
27 | var { item, selected, selectedMarker, imageMargin } = this.props;
28 |
29 | var marker = selectedMarker ? selectedMarker :
30 | ;
34 |
35 | var image = item.node.image;
36 |
37 | return (
38 | this._handleClick(image)}>
41 |
44 | {(selected) ? marker : null}
45 |
46 | );
47 | }
48 |
49 | _handleClick(item:any) {
50 | this.props.onClick(item);
51 | }
52 | }
53 |
54 | ImageItem.defaultProps = {
55 | item: {},
56 | selected: false,
57 | };
58 |
59 | ImageItem.propTypes = {
60 | item: PropTypes.object,
61 | selected: PropTypes.bool,
62 | selectedMarker: PropTypes.element,
63 | imageMargin: PropTypes.number,
64 | imagesPerRow: PropTypes.number,
65 | onClick: PropTypes.func,
66 | };
67 |
68 | export default ImageItem;
69 |
--------------------------------------------------------------------------------
/src/components/cameraRollPicker/circle-check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/components/cameraRollPicker/circle-check.png
--------------------------------------------------------------------------------
/src/components/cameraRollPicker/styles.ts:
--------------------------------------------------------------------------------
1 | import {StyleSheet} from "react-native";
2 |
3 | const styles = StyleSheet.create({
4 | marker: {
5 | position: 'absolute',
6 | top: 5,
7 | right: 5,
8 | backgroundColor: 'transparent',
9 | },
10 | });
11 |
12 | export default styles;
13 |
--------------------------------------------------------------------------------
/src/components/cameraView/styles.ts:
--------------------------------------------------------------------------------
1 | import {Dimensions, StyleSheet} from "react-native";
2 | import {colors} from "~/utils/theme";
3 |
4 | const styles = StyleSheet.create({
5 | container: {
6 | flex: 1,
7 | flexDirection: 'row'
8 | },
9 | preview: {
10 | flex: 1,
11 | justifyContent: 'flex-end',
12 | alignItems: 'center',
13 | width: Dimensions.get("window").width,
14 | height: Dimensions.get("window").height
15 | },
16 | header: {
17 | height: 50,
18 | backgroundColor: colors.blackFilter70,
19 | flexDirection: 'row',
20 | justifyContent: 'space-between',
21 | alignItems: 'center',
22 | paddingLeft: 10,
23 | paddingRight: 10
24 | },
25 | cancleBtn: {
26 | padding: 20
27 | },
28 | doneBtn: {
29 | padding: 20
30 | },
31 | closeImage: {
32 | height: 30,
33 | width: 30,
34 | },
35 | imageView: {
36 | paddingTop: 15
37 | },
38 | image: {
39 | height: 500,
40 | width: null
41 | },
42 | doneText: {
43 | position: 'absolute',
44 | right: 10,
45 | },
46 | bottomOverlay: {
47 | position: 'absolute',
48 | right: 0,
49 | left: 0,
50 | backgroundColor: colors.black,
51 | bottom: 0,
52 | flexDirection: 'column',
53 | alignItems: 'stretch',
54 | },
55 | frontCameraOverlay: {
56 | padding: 10,
57 | flexDirection: 'row',
58 | backgroundColor: colors.transparent,
59 | justifyContent: 'space-between'
60 | },
61 | buttonOverlay: {
62 | height: 130,
63 | alignItems: 'center',
64 | backgroundColor: colors.black,
65 | justifyContent: 'center'
66 | },
67 | captureButton: {
68 | paddingLeft: 15,
69 | paddingRight: 15,
70 | marginTop: 20,
71 | },
72 | typeButton: {
73 | padding: 5,
74 | },
75 | flashButton: {
76 | padding: 5,
77 | },
78 | closeBtn: {
79 | height: 25,
80 | width: 25
81 | },
82 | outerCircle: {
83 | backgroundColor: '#ddd',
84 | height: 80,
85 | width: 80,
86 | borderRadius: 50,
87 | borderWidth: 1,
88 | borderColor: '#ccc'
89 | },
90 | innerCircle: {
91 | backgroundColor: '#fff',
92 | height: 50,
93 | width: 50,
94 | borderRadius: 50,
95 | margin: 14,
96 |
97 | },
98 | recOuterCircle: {
99 | backgroundColor: '#ddd',
100 | height: 80,
101 | width: 80,
102 | borderRadius: 50,
103 | borderWidth: 1,
104 | borderColor: '#918b8b'
105 | },
106 | recInnerCircle: {
107 | backgroundColor: '#e54242',
108 | height: 70,
109 | width: 70,
110 | borderRadius: 50,
111 | margin: 4
112 | },
113 | previewImage: {
114 | backgroundColor: 'red'
115 | }
116 | });
117 |
118 | export default styles;
119 |
--------------------------------------------------------------------------------
/src/components/card/CardComponent.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {Image, Text,TouchableOpacity } from 'react-native';
3 |
4 | import { Card, CardItem, Thumbnail, Body, Left, Right, Button, Icon, Title } from 'native-base';
5 |
6 | export default class CardCompnent extends React.PureComponent {
7 | render() {
8 |
9 | const { data, onPress } = this.props;
10 | const { image } = JSON.parse(data.json_metadata);
11 | return (
12 |
13 |
14 |
15 |
16 |
18 |
19 | {data.author}
20 | {new Date(data.created).toDateString()}
21 |
22 |
23 |
24 | {
25 | image && image.length ?
26 |
27 |
28 |
31 | : null
32 | }
33 |
34 |
35 | { data.title }
36 |
37 | {/* { data.body.replace(/\n/g,' ').slice(0, 200) } */}
38 | { data.summary }
39 |
40 |
41 |
42 |
43 |
44 |
48 |
52 |
55 |
56 |
57 | { data.pending_payout_value }
58 |
59 |
60 |
61 |
62 | );
63 | }
64 | }
65 |
66 |
--------------------------------------------------------------------------------
/src/components/commentItem/index.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import {View, StyleSheet, TouchableOpacity} from "react-native";
3 | import {Avatar, Text} from "react-native-elements";
4 | import {colors} from "~/utils/theme";
5 | import styles from "~/components/commentItem/styles";
6 |
7 | const CommentItem: React.StatelessComponent = (props: any) => {
8 | return (
9 |
10 |
17 | {props.context !== 'Home' ?
18 |
23 | : null}
24 | @{props.author}{` ${props.message}`}
27 |
28 |
29 |
30 | 7h
31 | {
32 | props.likeCount > 0 ? 12 Likes : null
33 | }
34 |
35 | Reply
36 |
37 |
38 |
39 | {
40 |
41 | props.context != 'Home' && props.canReply ? (
42 |
43 |
44 |
45 |
51 | Hide replies
56 |
57 |
58 |
59 |
65 | {props.context !== 'Home' ?
66 |
71 | : null}
72 | @{props.author}{` ${props.message}`}
75 |
76 |
77 |
78 | 7h
79 | 12 Likes
80 |
81 | Reply
82 |
83 |
84 |
85 |
86 |
87 | ) : null
88 | }
89 |
90 |
91 |
92 | );
93 | };
94 |
95 | export default CommentItem;
96 |
--------------------------------------------------------------------------------
/src/components/commentItem/styles.ts:
--------------------------------------------------------------------------------
1 | import {StyleSheet} from "react-native";
2 | import {colors} from "~/utils/theme";
3 |
4 | const styles = StyleSheet.create({
5 | commentRow: {
6 | lineHeight: 20,
7 | fontSize: 14,
8 | color: colors.black,
9 | },
10 | author: {
11 | fontWeight: 'bold',
12 | color: colors.black
13 | },
14 | flexStartAligned: {
15 | flex: 1,
16 | justifyContent: 'flex-start',
17 | flexDirection: 'row',
18 | alignItems: 'center'
19 | },
20 | avatarStyle: {
21 | position: 'absolute',
22 | top: 0,
23 | width: 30,
24 | height: 30,
25 | alignSelf: 'center',
26 | borderRadius: 15,
27 | },
28 | cardStatsCounter: {
29 | flexDirection: 'row',
30 | marginLeft: 40,
31 | marginTop: 5
32 | },
33 | hour: {
34 | fontSize: 13,
35 | fontWeight: 'bold',
36 | color: colors.dark_gray,
37 | },
38 | likes: {
39 | fontSize: 13,
40 | marginLeft: 10,
41 | fontWeight: 'bold',
42 | color: colors.dark_gray
43 | },
44 | commentCounter: {
45 | fontSize: 13,
46 | marginLeft: 10,
47 | fontWeight: 'bold',
48 | color: colors.dark_gray
49 | },
50 | replyContainer: {
51 | marginTop: 20,
52 | marginBottom: 20,
53 | marginLeft: 30,
54 | flexDirection: 'row'
55 | }
56 | });
57 |
58 | export default styles;
59 |
--------------------------------------------------------------------------------
/src/components/favoriteItem/index.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import {View,TouchableOpacity, Dimensions} from "react-native";
3 | import {Avatar, Text} from "react-native-elements";
4 | import {colors} from "~/utils/theme";
5 | import { Right, Button} from "native-base";
6 | import {generateHiperlinkTextWithTime} from "~/utils/methods";
7 | import styles from "~/components/favoriteItem/styles";
8 |
9 | const FavoriteItem: React.StatelessComponent = (props: any) => {
10 | const {type, text, time, avatar} = props;
11 | return (
12 |
13 |
14 |
15 |
22 |
23 |
28 |
29 | {generateHiperlinkTextWithTime(
30 |
32 | {text}
33 | , time
34 | )}
35 | {type !== 'other' ?
36 |
37 |
55 | :null}
56 |
57 |
58 |
59 | );
60 | };
61 |
62 |
63 | export default FavoriteItem;
64 |
--------------------------------------------------------------------------------
/src/components/favoriteItem/styles.ts:
--------------------------------------------------------------------------------
1 | import {StyleSheet} from "react-native";
2 | import {colors} from "~/utils/theme";
3 |
4 | const styles = StyleSheet.create({
5 | commentRow: {
6 | lineHeight: 20,
7 | fontSize: 14,
8 | color: colors.black,
9 | },
10 | author: {
11 | fontWeight: 'bold',
12 | color: colors.black
13 | },
14 | flexStartAligned: {
15 | flex: 1,
16 | justifyContent: 'flex-start',
17 | flexDirection: 'row',
18 | alignItems: 'center'
19 | },
20 | avatarStyle: {
21 | position: 'absolute',
22 | top: 0,
23 | width: 40,
24 | height: 40,
25 | borderColor: colors.light_gray,
26 | borderWidth: 1,
27 | alignSelf: 'center',
28 | borderRadius: 20,
29 | },
30 | cardStatsCounter: {
31 | flexDirection: 'row',
32 | marginLeft: 40,
33 | marginTop: 5
34 | },
35 | hour: {
36 | fontSize: 13,
37 | fontWeight: 'bold',
38 | color: colors.dark_gray,
39 | },
40 | likes: {
41 | fontSize: 13,
42 | marginLeft: 10,
43 | fontWeight: 'bold',
44 | color: colors.dark_gray
45 | },
46 | commentCounter: {
47 | fontSize: 13,
48 | marginLeft: 10,
49 | fontWeight: 'bold',
50 | color: colors.dark_gray
51 | },
52 | replyContainer: {
53 | marginTop: 20,
54 | marginBottom: 20,
55 | marginLeft: 30,
56 | flexDirection: 'row'
57 | }
58 | });
59 |
60 | export default styles;
61 |
--------------------------------------------------------------------------------
/src/components/nestedCell/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {PureComponent} from "react";
3 | import {View, StyleSheet, TouchableOpacity, Dimensions} from "react-native";
4 | import {Image} from "react-native-elements";
5 | import {colors} from "~/utils/theme";
6 |
7 |
8 | class NestedCell extends PureComponent {
9 | render() {
10 | const {item} = this.props;
11 | return (
12 |
18 |
19 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | const styles = StyleSheet.create({
28 | cell: {
29 | margin: 1,
30 | alignItems: 'center',
31 | justifyContent: 'center',
32 | minHeight: 40,
33 | },
34 | });
35 |
36 | export default NestedCell;
37 |
--------------------------------------------------------------------------------
/src/components/postItems/PostItem/styles.ts:
--------------------------------------------------------------------------------
1 | import {StyleSheet} from "react-native";
2 | import {colors} from "~/utils/theme";
3 |
4 | const styles = StyleSheet.create({
5 | container: {
6 | flexDirection: 'column',
7 | borderBottomColor: colors.exlight_gray,
8 | backgroundColor: colors.white,
9 | borderTopColor: colors.exlight_gray,
10 | borderBottomWidth: 1
11 | },
12 | animatedIcon: {
13 | position: 'absolute',
14 | justifyContent: 'center',
15 | alignItems: 'center',
16 | zIndex: 1200,
17 | borderRadius: 160,
18 | opacity:0
19 | },
20 | icon: {
21 | paddingHorizontal: 10,
22 | justifyContent: 'center',
23 | alignItems: 'center'
24 | },
25 | containerProfilePhoto: {
26 | height: 48,
27 | flexDirection: 'column',
28 | width: 48,
29 | borderRadius: 24,
30 | backgroundColor: colors.white,
31 | justifyContent: 'center',
32 | alignItems: 'center'
33 | },
34 | avatar: {
35 | height: 46,
36 | width: 46,
37 | position: 'relative',
38 | backgroundColor: colors.white,
39 | borderRadius: 23,
40 | zIndex: 100
41 | },
42 | flexStartAligned: {
43 | flex: 1,
44 | justifyContent: 'flex-start',
45 | alignItems: 'flex-start'
46 | },
47 | flexEndAligned: {
48 | flexDirection: 'row',
49 | flex: 3,
50 | alignItems: 'center',
51 | justifyContent: 'flex-end'
52 | },
53 | cardHeader: {
54 | flexDirection: 'row',
55 | padding: 20,
56 | height: 70
57 | },
58 | statContainer: {
59 | flexDirection: 'column',
60 | flex: 6,
61 | paddingLeft: 10,
62 | alignItems: 'flex-start',
63 | justifyContent: 'center'
64 | },
65 | cardStatsCounter: {
66 | flexDirection: 'row',
67 | paddingLeft: 15,
68 | paddingRight: 15,
69 | paddingBottom: 15
70 | },
71 | cardActionContainer: {
72 | flexDirection: 'row',
73 | padding: 15
74 | },
75 | postAuthor: {
76 | fontSize: 14,
77 | marginLeft: 5,
78 | fontWeight: 'bold'
79 | },
80 | postTime: {
81 | fontSize: 13,
82 | marginTop: 4,
83 | marginLeft: 5,
84 | color: colors.dark_gray
85 | },
86 | blueText: {
87 | color: colors.lightBlue
88 | },
89 | buttonMore: {
90 | alignSelf: 'flex-end',
91 | justifyContent: 'flex-end',
92 | alignContent: 'flex-end',
93 | flexGrow: 1
94 | },
95 | likeCounter: {
96 | fontSize: 15,
97 | fontWeight: '400',
98 | color: colors.black
99 | },
100 | viewMoreBtn: {
101 | fontSize: 14,
102 | fontWeight: '600',
103 | marginTop: 4,
104 | color: colors.dark_gray
105 | },
106 | commentCounter: {
107 | fontSize: 14,
108 | marginLeft: 5,
109 | marginTop: 13,
110 | color: colors.black
111 | }
112 | ,
113 | viewMoreText: {
114 | marginRight: 20,
115 | lineHeight: 20,
116 | fontSize: 14,
117 | marginTop: 10,
118 | color: colors.black
119 | }, videoView: {
120 | top: 0,
121 | left: 0,
122 | bottom: 0,
123 | right: 0,
124 | },
125 | });
126 |
127 | export default styles;
128 |
--------------------------------------------------------------------------------
/src/components/postItems/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {View} from "react-native";
3 | import PostItem from "./PostItem";
4 | import posts from "~/utils/datas/posts";
5 |
6 | const PostItems: React.StatelessComponent = (props: any) => {
7 | return (
8 |
9 | {
10 | posts.map(post => (
11 |
16 | ))
17 | }
18 |
19 | );
20 | };
21 | export default PostItems;
22 |
--------------------------------------------------------------------------------
/src/components/searchTag/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Text, TouchableOpacity, View} from "react-native";
3 | import {Image} from "react-native-elements";
4 | import styles from "~/components/searchTag/styles";
5 |
6 | const SearchTag = (props: any) => (
7 |
8 |
9 | {props.id == 0 ?
10 | : null}
11 | {props.title}
12 |
13 |
14 | );
15 |
16 | export default SearchTag;
17 |
--------------------------------------------------------------------------------
/src/components/searchTag/styles.ts:
--------------------------------------------------------------------------------
1 | import {StyleSheet} from "react-native";
2 | import {colors} from "~/utils/theme";
3 |
4 | const styles = StyleSheet.create({
5 | container: {
6 | flexDirection: 'row',
7 | backgroundColor: colors.white,
8 | borderColor: colors.exlight_gray,
9 | borderWidth: 2,
10 | borderRadius: 8,
11 | padding:8,
12 | alignItems: 'center',
13 | justifyContent: 'flex-start',
14 | height:40,
15 | maxHeight:40
16 | },
17 | tag: {
18 | fontWeight: 'bold'
19 | }
20 | });
21 |
22 | export default styles;
23 |
--------------------------------------------------------------------------------
/src/components/separator/index.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import {View, StyleSheet, Dimensions} from "react-native";
3 |
4 | const Separator: React.StatelessComponent = () => {
5 |
6 | return (
7 |
8 | );
9 | };
10 | const styles = StyleSheet.create({
11 | separator: {
12 | height: 1,
13 | width: Dimensions.get('window').width,
14 | backgroundColor: '#D8D8D8',
15 | marginTop:10
16 | }
17 | });
18 |
19 | export default Separator;
20 |
--------------------------------------------------------------------------------
/src/components/storyItems/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {ScrollView, TouchableOpacity, View, StyleSheet} from "react-native";
3 | import avatars from '~/utils/datas/avatars'
4 | import StoryItem from "./storyItem";
5 |
6 |
7 | const storyItems: React.StatelessComponent = (props: any) => {
8 |
9 | return (
10 |
14 |
15 | {
16 | avatars.map(avatar => (
17 | avatar.id == 0 ? :
19 |
20 | ))
21 | }
22 |
23 |
24 | );
25 | };
26 | const styles = StyleSheet.create({
27 | contactContainerStyle: {
28 | marginRight: 5
29 | },
30 | });
31 | export default storyItems;
32 |
--------------------------------------------------------------------------------
/src/components/storyItems/storyItem/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {StyleSheet, TouchableOpacity, View , Text} from "react-native";
3 | import {Avatar} from 'react-native-elements';
4 | import {colors} from "~/utils/theme";
5 | import LinearGradient from "react-native-linear-gradient";
6 | import SvgUri from "react-native-svg-uri";
7 | import styles from "~/components/storyItems/storyItem/styles";
8 |
9 | const StoryItem: React.StatelessComponent = (props:any) => {
10 |
11 | return (
12 | props.isBtnProfile ?
13 |
14 |
15 |
19 |
20 |
21 |
22 |
23 |
24 | {props.title}
25 |
26 | :
27 |
28 |
32 |
33 |
34 |
38 |
39 |
40 |
41 | {
42 | props.isLive ?
43 |
47 | LIVE
48 |
49 |
50 |
51 | : null
52 | }
53 | {props.name}
54 |
55 |
56 | );
57 |
58 | };
59 |
60 | export default StoryItem;
61 |
--------------------------------------------------------------------------------
/src/components/storyItems/storyItem/styles.ts:
--------------------------------------------------------------------------------
1 | import {StyleSheet} from "react-native";
2 | import {colors} from "~/utils/theme";
3 |
4 | const styles = StyleSheet.create({
5 | container: {
6 | height: 71,
7 | flexDirection: 'column',
8 | width: 71,
9 | borderRadius: 35.5,
10 | backgroundColor:colors.white,
11 | justifyContent: 'center',
12 | alignItems: 'center'
13 | },
14 | profileName:{
15 | marginTop:5,
16 | color: colors.black,
17 | fontWeight: "300",
18 | fontSize: 13,
19 | marginLeft:10
20 | },
21 | containerProfile: {
22 | height: 76,
23 | flexDirection: 'column',
24 | width: 76,
25 | borderRadius: 38,
26 | backgroundColor:colors.white,
27 | justifyContent: 'center',
28 | alignItems: 'center'
29 | },
30 | avatar: {
31 | height: 64,
32 | width: 64,
33 | position:'relative',
34 | backgroundColor:colors.white,
35 | borderRadius: 32,
36 | zIndex:100
37 | },
38 | avatarProfile: {
39 | height: 76,
40 | width: 76,
41 | backgroundColor:colors.white,
42 | borderRadius: 36,
43 | position:'relative',
44 | zIndex:200
45 | },
46 | btnPlusBg:{
47 | backgroundColor:colors.white,
48 | width:26,
49 | height:26,
50 | borderRadius:13,
51 | zIndex: 500,
52 | position:'absolute',
53 | alignItems:'center',
54 | justifyContent:'center',
55 | bottom:0,
56 | right:0
57 | },
58 | btnPlus:{
59 | width:34,
60 | height:34,
61 | marginLeft:10,
62 | marginTop:10,
63 | },
64 | btnLive:{
65 | height: 24,
66 | width: 38,
67 | alignItems: 'center',
68 | borderColor:colors.white,
69 | borderWidth:3,
70 | position:'absolute',
71 | justifyContent: 'center',
72 | borderRadius:6,
73 | padding:4,
74 | bottom: 0,
75 | margin:'auto',
76 | top:-16,
77 | marginLeft:30
78 |
79 | },
80 | textLive:{
81 | color:colors.white,
82 | fontSize:10,
83 | fontWeight:'bold'
84 | }
85 | });
86 | export default styles;
87 |
--------------------------------------------------------------------------------
/src/components/toolbar/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {StyleSheet, TouchableOpacity, View} from "react-native";
3 | import {Image, Text} from "react-native-elements";
4 | import {Button, Header, Icon, Left, Right, Title, Body} from 'native-base'
5 | import {colors} from "~/utils/theme";
6 |
7 | const HeaderToolbar: React.StatelessComponent = (props: any) => {
8 | return (
9 |
10 |
11 |
21 |
22 |
23 |
24 |
25 | {props.context == 'Home' ?
26 | :
27 | {props.context}}
28 |
29 |
30 |
31 | {props.context == 'Home' ?
32 |
33 | : null}
34 |
35 |
36 |
37 |
38 |
39 |
40 | );
41 | };
42 | export default HeaderToolbar;
43 |
--------------------------------------------------------------------------------
/src/containers/Aux/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | const AuxHOC = (props:any) => props.children;
3 | export default AuxHOC;
4 |
--------------------------------------------------------------------------------
/src/navigation/home.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {createBottomTabNavigator} from 'react-navigation-tabs';
3 | import {Image} from "react-native-elements";
4 | import Home from "~/screens/Home";
5 | import Search from "~/screens/Search";
6 | import Like from "~/screens/Favorite";
7 | import Profile from "~/screens/Profile";
8 | import Add from "~/screens/Add";
9 |
10 | export default (createBottomTabNavigator(
11 | {
12 | Home: {
13 | screen: Home,
14 | navigationOptions: {
15 | tabBarIcon: ({tintColor}) =>
17 | }
18 | },
19 | Search: {
20 | screen: Search,
21 | navigationOptions: {
22 | tabBarIcon: ({tintColor}) =>
24 | }
25 | },
26 | Add: {
27 | screen: Add,
28 | navigationOptions: {
29 | tabBarIcon: ({tintColor}) =>
31 | }
32 | },
33 | Like: {
34 | screen: Like,
35 | navigationOptions: {
36 | tabBarIcon: ({tintColor}) =>
38 | }
39 | },
40 | Profile: {
41 | screen: Profile,
42 | navigationOptions: {
43 | tabBarIcon: ({tintColor}) =>
45 | }
46 | }
47 | },
48 | {
49 | tabBarOptions: {
50 | showLabel: false,
51 | tabStyle: {
52 | padding: 20
53 | },
54 | },
55 | initialRouteName: 'Home',
56 |
57 | }
58 | ));
59 |
--------------------------------------------------------------------------------
/src/navigation/navigation.tsx:
--------------------------------------------------------------------------------
1 | import {createAppContainer, createSwitchNavigator} from 'react-navigation';
2 | import {createStackNavigator,} from 'react-navigation-stack';
3 | import Home from "./home";
4 | import Intro from "~/screens/Intro";
5 | import Comments from "~/screens/Comments";
6 | import PostDetail from "~/screens/Detail";
7 | import Root from "~/screens/Root";
8 |
9 | const appStack = createStackNavigator({
10 | Root: {
11 | screen: Root,
12 | navigationOptions: () => ({
13 | header: null,
14 | headerBackTitle: null,
15 | }),
16 |
17 | },
18 | Splash: {
19 | screen: Intro,
20 | navigationOptions: () => ({
21 | header: null,
22 | headerBackTitle: null
23 | })
24 | },
25 | Home: {
26 | screen: Home,
27 | navigationOptions: () => ({
28 | header: null,
29 | headerBackTitle: null
30 | })
31 | },
32 | Comments: {
33 | screen: Comments,
34 | navigationOptions: () => ({
35 | header: null,
36 | headerBackTitle: null
37 | })
38 | },
39 | PostDetail: {
40 | screen: PostDetail,
41 | navigationOptions: () => ({
42 | header: null,
43 | headerBackTitle: null
44 | })
45 | }
46 | }, {
47 | initialRouteName: 'Root'
48 | });
49 |
50 |
51 | // @ts-ignore
52 | export default createAppContainer(createSwitchNavigator(
53 | {
54 | Intro: Intro,
55 | Root: Root,
56 | App: appStack,
57 | },
58 | {
59 | initialRouteName: 'Intro'
60 | }
61 | ));
62 |
--------------------------------------------------------------------------------
/src/screens/Add/styles.ts:
--------------------------------------------------------------------------------
1 | import {Dimensions, StyleSheet} from "react-native";
2 | import {colors} from "~/utils/theme";
3 |
4 | const styles = StyleSheet.create({
5 | wrapper: {},
6 | paddingContainer: {
7 | flexDirection: 'column',
8 | padding: 16
9 | },
10 | btnActions: {
11 | fontWeight: 'bold',
12 | fontSize: 17,
13 | color:colors.white
14 | },
15 | marginContainer: {
16 | marginTop: 16
17 | },
18 | modal: {
19 | height: Dimensions.get("window").height,
20 | width: Dimensions.get("window").width,
21 | flex: 1
22 | },
23 | scene: {
24 | flex: 1,
25 | },
26 | slide1: {
27 | flex: 1,
28 | justifyContent: 'center',
29 | alignItems: 'center',
30 | backgroundColor: '#9DD6EB'
31 | },
32 | slide2: {
33 | flex: 1,
34 | justifyContent: 'center',
35 | alignItems: 'center',
36 | backgroundColor: '#97CAE5'
37 | },
38 | slide3: {
39 | flex: 1,
40 | justifyContent: 'center',
41 | alignItems: 'center',
42 | backgroundColor: '#92BBD9'
43 | },
44 | });
45 | export default styles;
46 |
--------------------------------------------------------------------------------
/src/screens/Comments/styles.ts:
--------------------------------------------------------------------------------
1 | import {Dimensions, StyleSheet} from "react-native";
2 | import {colors} from "~/utils/theme";
3 |
4 | const styles = StyleSheet.create({
5 | footer: {
6 | height: 110,
7 | padding: 10,
8 | backgroundColor: colors.white
9 | },
10 | paddingContainer: {
11 | flexDirection: 'column',
12 | paddingLeft: 20,
13 | paddingRight: 20,
14 | paddingTop: 10
15 | },
16 | marginContainer: {
17 | marginTop: 16
18 | },
19 | emoji: {
20 | marginLeft: 10,
21 | fontSize: 19
22 | },
23 | inputZone: {
24 | flexDirection: 'row',
25 | flex: 10,
26 | justifyContent: 'center',
27 | alignItems: 'center'
28 | },
29 | avatarStyle: {
30 | width: 45,
31 | height: 45,
32 | alignSelf: 'center',
33 | borderRadius: 22.5,
34 | },
35 | inputStyle: {
36 | fontSize: 13,
37 | height: 40,
38 | fontWeight: "400",
39 | marginLeft: 10, padding: 3,
40 | paddingLeft: 10,
41 | borderWidth: 1,
42 | borderColor: colors.light_gray,
43 | borderRadius: 20,
44 | flex: 6
45 | },
46 | scrollView: {},
47 | spinner:{
48 | marginLeft: (Dimensions.get("window").width / 2) - 20,
49 | marginTop: 30,
50 | marginRight: 'auto'
51 | },
52 | commentContainer:{
53 | paddingLeft: 10,
54 | paddingRight: 10,
55 | paddingTop: 15,
56 | paddingBottom: 15
57 | }
58 |
59 | });
60 |
61 | export default styles;
62 |
--------------------------------------------------------------------------------
/src/screens/Detail/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | View, RefreshControl, ScrollView
4 | } from "react-native";
5 | import {
6 | Button,
7 | Container, Icon, Header, Body, Content, Left, Right, Title
8 | } from "native-base";
9 | import {colors} from "~/utils/theme";
10 | import PostItems from "~/components/postItems/index";
11 | import {NavigationScreenProp} from "react-navigation";
12 | import styles from "~/screens/Detail/styles";
13 |
14 | interface IDetailProps {
15 | navigation: NavigationScreenProp
16 | }
17 |
18 | export default class PostDetail extends React.PureComponent {
19 |
20 |
21 | constructor(props: IDetailProps) {
22 | super(props);
23 | this.state = {
24 | refreshing: false,
25 | setRefreshing: false,
26 | isModalOpen: false,
27 | orderedStories: null,
28 | selectedStory: null
29 | };
30 | }
31 |
32 | onRefresh = () => {
33 | this.setState({setRefreshing: true});
34 | this.wait(2000).then(() => {
35 | this.setState({setRefreshing: false});
36 | });
37 | };
38 |
39 | goBack = () => {
40 | const {navigation} = this.props;
41 | navigation.goBack();
42 | };
43 |
44 | render() {
45 | const {refreshing} = this.state;
46 | const {navigation} = this.props;
47 | return (
48 |
49 |
50 |
51 |
56 |
57 |
58 | Posts
59 |
60 |
61 |
62 |
63 |
64 |
65 | this.onRefresh}/>
68 | }
69 | contentInsetAdjustmentBehavior="automatic"
70 | style={styles.scrollView}>
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 | );
79 | }
80 | }
81 |
82 |
--------------------------------------------------------------------------------
/src/screens/Detail/styles.ts:
--------------------------------------------------------------------------------
1 | import {StyleSheet} from "react-native";
2 |
3 | const styles = StyleSheet.create({
4 | paddingContainer: {
5 | flexDirection: 'column',
6 | paddingLeft: 20,
7 | paddingRight: 20,
8 | paddingTop: 10
9 | },
10 | marginContainer: {
11 | marginTop: 16
12 | },
13 | scrollView: {},
14 | });
15 |
16 | export default styles;
17 |
--------------------------------------------------------------------------------
/src/screens/Favorite/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | StyleSheet,
4 | View, RefreshControl, ScrollView
5 | } from "react-native";
6 |
7 | import {Button, Text, Container, Header, Body, Content, Left, Right, Title} from "native-base";
8 | import {colors} from "~/utils/theme";
9 | import FavoriteItem from "~/components/favoriteItem";
10 | import follows from "~/utils/datas/follows";
11 |
12 | export default class Comments extends React.Component {
13 |
14 |
15 | constructor(props: any) {
16 | super(props);
17 | this.state = {
18 | refreshing: false,
19 | setRefreshing: false,
20 | isModalOpen: false,
21 | orderedStories: null,
22 | selectedStory: null
23 | };
24 | }
25 |
26 | wait = (timeout: number) => {
27 | return new Promise(resolve => {
28 | setTimeout(resolve, timeout);
29 | });
30 | };
31 |
32 | onRefresh = () => {
33 | this.setState({setRefreshing: true});
34 | this.wait(2000).then(() => {
35 | this.setState({setRefreshing: false});
36 | });
37 | };
38 |
39 | goBack = () => {
40 | this.props.navigation.goBack();
41 | };
42 |
43 | render() {
44 |
45 | return (
46 |
47 |
48 |
49 |
50 | Activity
51 |
52 |
53 |
54 |
55 | this.onRefresh}/>
58 | }
59 | contentInsetAdjustmentBehavior="automatic"
60 | style={styles.scrollView}>
61 |
62 | {
63 | follows.map(item => (
64 |
65 |
67 |
68 | ))
69 | }
70 |
71 |
72 |
73 |
74 |
75 | );
76 | }
77 | }
78 | const styles = StyleSheet.create({
79 | paddingContainer: {
80 | flexDirection: 'column',
81 | paddingLeft: 20,
82 | paddingRight: 20,
83 | paddingTop: 10
84 | },
85 | marginContainer: {
86 | marginTop: 16
87 | },
88 | scrollView: {},
89 |
90 | });
91 |
--------------------------------------------------------------------------------
/src/screens/Home/index.tsx:
--------------------------------------------------------------------------------
1 | import React, {Fragment} from 'react';
2 | import {
3 | StyleSheet,
4 | View, RefreshControl, ScrollView, TextInput, Dimensions
5 | } from "react-native";
6 | import HeaderToolbar from '~/components/toolbar/index'
7 | import StoryItems from '~/components/storyItems/index'
8 | import Modal from "react-native-modalbox";
9 | import StoriesData from '~/components/StorySlide/StoriesData/StoriesData'
10 | import PostItems from "~/components/postItems";
11 | import Separator from "~/components/separator";
12 | import styles from "~/screens/Home/styles";
13 |
14 | export default class Home extends React.PureComponent {
15 |
16 |
17 | constructor(props: any) {
18 | super(props);
19 |
20 | this.state = {
21 | refreshing: false,
22 | setRefreshing: false,
23 | isModalOpen: false,
24 | isGalleryModalOpen: false,
25 | orderedStories: null,
26 | selectedStory: null
27 | };
28 | }
29 |
30 | componentDidMount(): void {
31 | const {nav} = this.props;
32 | }
33 |
34 | wait = (timeout: number) => {
35 | return new Promise(resolve => {
36 | setTimeout(resolve, timeout);
37 | });
38 | };
39 |
40 | onRefresh = () => {
41 | this.setState({setRefreshing: true});
42 | this.wait(2000).then(() => {
43 | this.setState({setRefreshing: false});
44 | });
45 | };
46 |
47 | _handleStoryItemPress = (item: any, index: any) => {
48 | this.setState({selectedStory: item});
49 | this.setState({isModalOpen: true});
50 | };
51 |
52 |
53 | render() {
54 | const {isModalOpen, refreshing} = this.state;
55 | const {navigation} = this.props;
56 |
57 | return (
58 |
59 |
60 | navigation.navigate('Root')} context="Home"/>
61 | this.onRefresh}/>
64 | }
65 | contentInsetAdjustmentBehavior="automatic"
66 | style={styles.scrollView}>
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | this.setState({isModalOpen: false})}
79 | position="center"
80 | swipeToClose
81 | swipeArea={250}
82 | backButtonClose
83 | >
84 |
90 | }
91 | />
92 |
93 |
94 |
95 | );
96 | }
97 | }
98 |
99 |
--------------------------------------------------------------------------------
/src/screens/Home/styles.ts:
--------------------------------------------------------------------------------
1 | import {Dimensions, StyleSheet} from "react-native";
2 |
3 | const styles = StyleSheet.create({
4 | paddingContainer: {
5 | flexDirection: 'column',
6 | paddingLeft: 20,
7 | paddingRight: 20,
8 | paddingTop: 10
9 | },
10 | marginContainer: {
11 | marginTop: 16
12 | },
13 | scrollView: {},
14 | storiesContainer: {
15 | flexDirection: 'row'
16 | },
17 | fragment: {
18 | flex: 1,
19 | flexDirection: 'column'
20 | },
21 | storyListContainer: {
22 | marginTop: 50
23 | },
24 | modal: {
25 | height: Dimensions.get("window").height,
26 | width: Dimensions.get("window").width,
27 | flex: 1
28 | }
29 | });
30 | export default styles;
31 |
--------------------------------------------------------------------------------
/src/screens/Intro/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {NavigationScreenProp, SafeAreaView} from 'react-navigation';
3 | import {View, StatusBar} from 'react-native';
4 | import {colors} from "~/utils/theme";
5 | import {Image} from "react-native-elements";
6 | import styles from "~/screens/Intro/styles";
7 |
8 |
9 | export interface NavigationProps {
10 | navigation: NavigationScreenProp
11 | }
12 |
13 | interface IProps extends NavigationProps {
14 | }
15 |
16 | export default class Intro extends React.PureComponent {
17 |
18 | constructor(props: IProps) {
19 | super(props)
20 | }
21 | performTimeConsumingTask = async () => {
22 | return new Promise((resolve) =>
23 | setTimeout(
24 | () => {
25 | resolve('finish');
26 | },
27 | 2000
28 | )
29 | )
30 | };
31 |
32 | async componentDidMount() {
33 | const data = await this.performTimeConsumingTask();
34 | if (data !== null) {
35 | this.props.navigation.navigate('Home');
36 | }
37 | }
38 |
39 | render() {
40 | return (
41 |
42 |
43 |
44 |
45 |
49 |
50 |
51 | );
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/screens/Intro/styles.ts:
--------------------------------------------------------------------------------
1 | import {StyleSheet} from "react-native";
2 | import {colors} from "~/utils/theme";
3 |
4 | const styles = StyleSheet.create({
5 | container: {
6 | flex: 1,
7 | backgroundColor: colors.darkBlue
8 | },
9 | logo:{
10 | width:200,
11 | height:200
12 | },
13 | imageContainer:{
14 | flex:1,
15 | flexDirection: 'column',
16 | justifyContent: 'center',
17 | alignItems:'center'
18 | }
19 | });
20 | export default styles;
21 |
--------------------------------------------------------------------------------
/src/screens/Root/styles.ts:
--------------------------------------------------------------------------------
1 | import {Dimensions, StyleSheet} from "react-native";
2 | import {colors} from "~/utils/theme";
3 | const {width} = Dimensions.get("window");
4 | const styles = StyleSheet.create({
5 | container: {
6 | flex: 1,
7 | },
8 | multipleSelect: {
9 | height: 35,
10 | borderRadius: 17.5,
11 | backgroundColor: "#404040",
12 | borderColor: colors.white,
13 | padding: 8,
14 | flexDirection: 'row',
15 | borderWidth: 2
16 | },
17 | absolute: {
18 | position: "absolute",
19 | top: 0,
20 | left: 0,
21 | bottom: 0,
22 | right: 0
23 | },
24 | dragContainer: {
25 | flex: 1,
26 | alignItems: "center",
27 | justifyContent: "center",
28 | },
29 | innerContainer: {},
30 | modal: {
31 | height: Dimensions.get("window").height,
32 | width: Dimensions.get("window").width,
33 | flex: 1
34 | },
35 | bottomOverlay: {
36 | position: 'absolute',
37 | right: 0,
38 | left: 0,
39 | backgroundColor: colors.black,
40 | bottom: 0,
41 | flexDirection: 'column',
42 | alignItems: 'stretch',
43 | },
44 | frontCameraOverlay: {
45 | padding: 10,
46 | flexDirection: 'row',
47 | backgroundColor: colors.transparent,
48 | justifyContent: 'space-between'
49 | },
50 | buttonOverlay: {
51 | height: 130,
52 | alignItems: 'center',
53 | backgroundColor: colors.black,
54 | justifyContent: 'center'
55 | },
56 | captureButton: {
57 | paddingLeft: 15,
58 | paddingRight: 15,
59 | marginTop: 20,
60 | },
61 | typeButton: {
62 | padding: 5,
63 | },
64 | flashButton: {
65 | padding: 5,
66 | },
67 | closeBtn: {
68 | height: 25,
69 | width: 25
70 | },
71 | outerCircle: {
72 | backgroundColor: colors.transparent,
73 | height: 80,
74 | width: 80,
75 | justifyContent: 'center',
76 | alignItems: 'center',
77 | borderRadius: 40,
78 | borderWidth: 3,
79 | borderColor: '#ccc'
80 | },
81 | innerCircle: {
82 | backgroundColor: '#fff',
83 | height: 70,
84 | width: 70,
85 | alignSelf: 'center',
86 | borderRadius: 35,
87 | margin: 14,
88 |
89 | },
90 | recOuterCircle: {
91 | backgroundColor: '#ddd',
92 | height: 80,
93 | width: 80,
94 | borderRadius: 50,
95 | borderWidth: 1,
96 | borderColor: '#918b8b'
97 | },
98 | recInnerCircle: {
99 | backgroundColor: '#e54242',
100 | height: 70,
101 | width: 70,
102 | borderRadius: 50,
103 | margin: 4
104 | },
105 | previewImage: {
106 | backgroundColor: 'red'
107 | }, headerCamera: {
108 | borderRadius: 8,
109 | backgroundColor: colors.transparent,
110 | borderBottomWidth: 0,
111 | paddingLeft: 8
112 | },
113 | footerCamera: {
114 | flex: 20,
115 | backgroundColor: colors.transparent,
116 | borderTopWidth: 0,
117 | marginLeft: 20,
118 | marginRight: 20
119 | },
120 | imageBtnFooter: {
121 | width: 30,
122 | height: 30,
123 | borderRadius: 8,
124 | borderColor: colors.white,
125 | borderWidth: 2,
126 | overflow: "hidden"
127 | }, textFilter: {
128 | color: colors.white,
129 | fontWeight: 'bold',
130 | marginLeft: 10,
131 | fontSize: 13
132 | },
133 | absoluteFillBlur: {
134 | position: 'absolute',
135 | left: 0,
136 | right: 0,
137 | top: 0,
138 | bottom: 0,
139 | zIndex: 100
140 | },
141 | absoluteFillView:{
142 | position: 'absolute',
143 | left: 0,
144 | right: 0,
145 | top: 0,
146 | bottom: 0,
147 | zIndex: 400
148 | },
149 | headerBlur:{
150 | height: 100,
151 | marginLeft: 5,
152 | marginRight: 5,
153 | borderBottomWidth: 0,
154 | backgroundColor: colors.transparent
155 | },
156 | leftBtnBlur:{
157 | flex: 1,
158 | flexDirection: 'row',
159 | alignItems: 'center',
160 | justifyContent: 'center'
161 | },
162 | blurImageStyle:{
163 | width: ((width / 3) - 4),
164 | marginLeft: 2,
165 | marginTop: 2,
166 | height: 200
167 | }
168 |
169 |
170 | });
171 | export default styles;
172 |
--------------------------------------------------------------------------------
/src/screens/Search/styles.ts:
--------------------------------------------------------------------------------
1 | import {Dimensions, StyleSheet} from "react-native";
2 | import {colors} from "~/utils/theme";
3 | import {exp} from "react-native-reanimated";
4 |
5 | const styles = StyleSheet.create({
6 | paddingContainer: {
7 | flexDirection: 'column',
8 | paddingLeft: 20,
9 | paddingRight: 20,
10 | paddingTop: 10
11 | },
12 | marginContainer: {
13 | marginTop: 16
14 | },
15 | modal: {
16 | height: Dimensions.get("window").height,
17 | width: Dimensions.get("window").width,
18 | flex: 1
19 | },
20 | headerSearch: {
21 | borderRadius: 8,
22 | backgroundColor: colors.white,
23 | borderBottomWidth: 0,
24 | paddingLeft: 8
25 | },
26 | headerCamera:{
27 | borderRadius: 8,
28 | backgroundColor: colors.transparent,
29 | borderBottomWidth: 0,
30 | paddingLeft: 8
31 | },
32 | textUsername:{
33 | fontWeight: 'bold',
34 | marginTop: 9,
35 | color: colors.dark_gray,
36 | textTransform: 'uppercase',
37 | fontSize: 32
38 | },
39 | footer:{
40 | height: 20,
41 | backgroundColor: colors.transparent,
42 | borderTopWidth: 0
43 | },
44 | footerView:{
45 | alignItems: 'center',
46 | flexDirection: 'row',
47 | justifyContent: 'center',
48 | flex: 1
49 | },
50 | nameTag:{color: colors.white, fontWeight: 'bold', marginLeft: 10},
51 | });
52 |
53 | export default styles;
54 |
--------------------------------------------------------------------------------
/src/screenshots/Demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/screenshots/Demo.gif
--------------------------------------------------------------------------------
/src/screenshots/Demo1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/screenshots/Demo1.png
--------------------------------------------------------------------------------
/src/screenshots/Demo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/screenshots/Demo2.png
--------------------------------------------------------------------------------
/src/screenshots/Demo3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/screenshots/Demo3.png
--------------------------------------------------------------------------------
/src/screenshots/Demo4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/screenshots/Demo4.png
--------------------------------------------------------------------------------
/src/screenshots/Demo5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/screenshots/Demo5.png
--------------------------------------------------------------------------------
/src/screenshots/Demo6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/screenshots/Demo6.png
--------------------------------------------------------------------------------
/src/screenshots/Demo7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/screenshots/Demo7.png
--------------------------------------------------------------------------------
/src/screenshots/Demo8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doha26/Instagram-clone/05c30985c838ed08d23fec7a42d7b800bcf9a071/src/screenshots/Demo8.png
--------------------------------------------------------------------------------
/src/utils/Layout.ts:
--------------------------------------------------------------------------------
1 | import { Dimensions } from "react-native";
2 |
3 | const { width, height } = Dimensions.get("screen");
4 |
5 | export default {
6 | width,
7 | height
8 | };
--------------------------------------------------------------------------------
/src/utils/datas/avatars.ts:
--------------------------------------------------------------------------------
1 | const avatars: Array = [
2 | {
3 | id: 0,
4 | live: false,
5 | name: "Your story",
6 | src: require('~/assets/images/ic1.png')
7 | },
8 | {
9 | id: 1,
10 | live: true,
11 | name: "Cheppard",
12 | src: require('~/assets/images/ic1.png')
13 | },
14 | {
15 | id: 2,
16 | live: false,
17 | name: "Duke",
18 | src: require('~/assets/images/ic2.png')
19 | },
20 | {
21 | id: 3,
22 | live: false,
23 | name: "Pavel",
24 | src: require('~/assets/images/ic3.png')
25 | },
26 | {
27 | id: 4,
28 | live: false,
29 | name: "Steeve",
30 | src: require('~/assets/images/ic4.png')
31 | },
32 | {
33 | id: 5,
34 | live: false,
35 | name: "Reenessis",
36 | src: require('~/assets/images/ic5.png')
37 | },
38 | {
39 | id: 6,
40 | live: false,
41 | name: "Aria",
42 | src: require('~/assets/images/ic6.png')
43 | },
44 | {
45 | id: 7,
46 | live: false,
47 | name: "Tyrion",
48 | src: require('~/assets/images/ic7.png')
49 | },
50 | ];
51 | export default avatars;
52 |
--------------------------------------------------------------------------------
/src/utils/datas/emojis.ts:
--------------------------------------------------------------------------------
1 | const CommentsEmojis: Array = [
2 | {
3 | id: 0,
4 | text: `❤`
5 | },
6 | {
7 | id: 1,
8 | text: `🤣`
9 | },
10 | {
11 | id: 2,
12 | text: `🙌`
13 | },
14 | {
15 | id: 3,
16 | text: `🔥`
17 | },
18 | {
19 | id: 4,
20 | text: `👏`
21 | },
22 | {
23 | id: 5,
24 | text: `😥`
25 | },
26 | {
27 | id: 6,
28 | text: `😍`
29 | },
30 | {
31 | id: 7,
32 | text: `😲`
33 | },
34 | {
35 | id: 8,
36 | text: `😎`
37 | },
38 | {
39 | id: 9,
40 | text: `😤`
41 | },
42 | {
43 | id: 10,
44 | text: `😈`
45 | },
46 |
47 | ];
48 | export default CommentsEmojis;
49 |
--------------------------------------------------------------------------------
/src/utils/datas/filers.ts:
--------------------------------------------------------------------------------
1 | const filter = [
2 | {id: 0, name: "Live"},
3 | {id: 1, name: "Create"},
4 | {id: 2, name: "Normal"},
5 | {id: 3, name: "Boomerang"},
6 | {id: 4, name: "Superzoom"},
7 | {id: 5, name: "Hands-free"}
8 | ];
9 | export default filter;
10 |
--------------------------------------------------------------------------------
/src/utils/datas/follows.ts:
--------------------------------------------------------------------------------
1 | const follows = [
2 | {
3 | "id": 0,
4 | "type": "following",
5 | "text": "@Pachel started following you",
6 | "time": "1w",
7 | "avatar":require('~/assets/images/post1.png'),
8 | "category":"week"
9 |
10 |
11 | },
12 | {
13 | "id": 1,
14 | "type": "follow",
15 | "text": "@cedvit and @Melvich followed @Pavel on instagram. see their post",
16 | "time": "2w",
17 | "avatar":require('~/assets/images/post2.png'),
18 | "category":"week"
19 | },
20 | {
21 | "id": 2,
22 | "type": "other",
23 | "text": "Follow @Eric and @Bill to watch their photos and videos",
24 | "time": "3w",
25 | "avatar":require('~/assets/images/post3.png')
26 | },
27 | {
28 | "id": 3,
29 | "type": "other",
30 | "text": "Follow @GTCx , @Fsys_mi and @Polyc to watch their photos and videos",
31 | "time": "3w",
32 | "avatar":require('~/assets/images/post4.png'),
33 | "category":"week"
34 | },
35 | {
36 | "id": 4,
37 | "type": "follow",
38 | "text": "Follow @Eric and @Bill to watch their photos and videos",
39 | "time": "3w",
40 | "avatar":require('~/assets/images/post5.png'),
41 | "category":"month"
42 | },
43 | {
44 | "id": 5,
45 | "type": "follow",
46 | "text": "Follow @GTCx , @Fsys_mi and @Polyc to watch their photos and videos",
47 | "time": "3w",
48 | "avatar":require('~/assets/images/post6.png'),
49 | "category":"month"
50 | },
51 |
52 | //
53 |
54 | {
55 | "id": 6,
56 | "type": "follow",
57 | "text": "Follow @Eric and @Bill to watch their photos and videos",
58 | "time": "3w",
59 | "avatar":require('~/assets/images/post3.png'),
60 | "category":"month"
61 | },
62 | {
63 | "id": 7,
64 | "type": "following",
65 | "text": "Follow @GTCx , @Fsys_mi and @Polyc to watch their photos and videos",
66 | "time": "3w",
67 | "avatar":require('~/assets/images/post4.png'),
68 | "category":"month"
69 | },
70 | {
71 | "id": 8,
72 | "type": "other",
73 | "text": "Follow @Eric and @Bill to watch their photos and videos",
74 | "time": "3w",
75 | "avatar":require('~/assets/images/post5.png'),
76 | "category":"early"
77 | },
78 | {
79 | "id": 9,
80 | "type": "follow",
81 | "text": "Follow @GTCx , @Fsys_mi and @Polyc to watch their photos and videos",
82 | "time": "3w",
83 | "avatar":require('~/assets/images/post6.png'),
84 | "category":"early"
85 | },
86 | {
87 | "id": 8,
88 | "type": "other",
89 | "text": "Follow @Eric and @Bill to watch their photos and videos",
90 | "time": "3w",
91 | "avatar":require('~/assets/images/post5.png'),
92 | "category":"early"
93 | },
94 | {
95 | "id": 9,
96 | "type": "other",
97 | "text": "Follow @GTCx , @Fsys_mi and @Polyc to watch their photos and videos",
98 | "time": "3w",
99 | "avatar":require('~/assets/images/post6.png'),
100 | "category":"early"
101 | },
102 |
103 |
104 | //:xx
105 |
106 | {
107 | "id": 10,
108 | "type": "following",
109 | "text": "@Pachel started following you",
110 | "time": "1w",
111 | "avatar":require('~/assets/images/post1.png'),
112 | "category":"week"
113 |
114 |
115 | },
116 | {
117 | "id": 11,
118 | "type": "follow",
119 | "text": "@cedvit and @Melvich followed @Pavel on instagram. see their post",
120 | "time": "2w",
121 | "avatar":require('~/assets/images/post2.png'),
122 | "category":"week"
123 | },
124 | {
125 | "id": 12,
126 | "type": "other",
127 | "text": "Follow @Eric and @Bill to watch their photos and videos",
128 | "time": "3w",
129 | "avatar":require('~/assets/images/post3.png')
130 | },
131 | {
132 | "id": 13,
133 | "type": "other",
134 | "text": "Follow @GTCx , @Fsys_mi and @Polyc to watch their photos and videos",
135 | "time": "3w",
136 | "avatar":require('~/assets/images/post4.png'),
137 | "category":"week"
138 | },
139 | {
140 | "id": 14,
141 | "type": "follow",
142 | "text": "Follow @Eric and @Bill to watch their photos and videos",
143 | "time": "3w",
144 | "avatar":require('~/assets/images/post5.png'),
145 | "category":"month"
146 | },
147 | {
148 | "id": 15,
149 | "type": "follow",
150 | "text": "Follow @GTCx , @Fsys_mi and @Polyc to watch their photos and videos",
151 | "time": "3w",
152 | "avatar":require('~/assets/images/post6.png'),
153 | "category":"month"
154 | },
155 |
156 | //
157 |
158 | {
159 | "id": 16,
160 | "type": "follow",
161 | "text": "Follow @Eric and @Bill to watch their photos and videos",
162 | "time": "3w",
163 | "avatar":require('~/assets/images/post3.png'),
164 | "category":"month"
165 | },
166 | ];
167 | export default follows;
168 |
--------------------------------------------------------------------------------
/src/utils/datas/postComments.ts:
--------------------------------------------------------------------------------
1 | const PostComments : Array = [
2 | {id:0,avatar:true,canReply:true, author:"Davila Ruise",message:`❤️ I miss you honney. keep working✨`},
3 | {id:1,avatar:true,canReply:false, author:"Jenny Scofield",message:`Hi sir , can you please suggest me some ressourses please :)`},
4 | {id:2,avatar:true,canReply:false, author:"Abela Menson",message:`Lol. Instagram is a very great app. Keep moving and learning huys`},
5 | {id:3,avatar:true,canReply:false, author:"Daniel Jee",message:`Hi. I'm new here, where to start ? can i found some friends here , please ?`},
6 | {id:4,avatar:true,canReply:true, author:"Davila Ruise",message:`❤️ I miss you honney. keep working✨`},
7 | {id:5,avatar:true,canReply:false, author:"Jenny Scofield",message:`Hi sir , can you please suggest me some ressourses please :)`},
8 | {id:6,avatar:true,canReply:false, author:"Abela Menson",message:`Lol. Instagram is a very great app. Keep moving and learning huys`},
9 | {id:7,avatar:true,canReply:false, author:"Daniel Jee",message:`Hi. I'm new here, where to start ? can i found some friends here , please ?`}
10 | ];
11 | export default PostComments;
12 |
--------------------------------------------------------------------------------
/src/utils/datas/postImages.ts:
--------------------------------------------------------------------------------
1 | const PostImages: Array = [
2 | "https://cdn.pixabay.com/photo/2018/11/29/21/19/hamburg-3846525__480.jpg",
3 | "https://cdn.pixabay.com/photo/2018/11/11/16/51/ibis-3809147__480.jpg",
4 | "https://cdn.pixabay.com/photo/2018/11/23/14/19/forest-3833973__480.jpg",
5 | "https://cdn.pixabay.com/photo/2019/01/05/17/05/man-3915438__480.jpg",
6 | "https://cdn.pixabay.com/photo/2018/12/04/22/38/road-3856796__480.jpg",
7 | "https://cdn.pixabay.com/photo/2018/11/04/20/21/harley-davidson-3794909__480.jpg",
8 | "https://cdn.pixabay.com/photo/2018/12/25/21/45/crystal-ball-photography-3894871__480.jpg",
9 | "https://cdn.pixabay.com/photo/2018/12/29/23/49/rays-3902368__480.jpg",
10 | "https://cdn.pixabay.com/photo/2017/05/05/16/57/buzzard-2287699__480.jpg",
11 | "https://cdn.pixabay.com/photo/2018/08/06/16/30/mushroom-3587888__480.jpg",
12 | "https://cdn.pixabay.com/photo/2018/12/15/02/53/flower-3876195__480.jpg",
13 | "https://cdn.pixabay.com/photo/2018/12/16/18/12/open-fire-3879031__480.jpg",
14 | "https://cdn.pixabay.com/photo/2018/11/24/02/05/lichterkette-3834926__480.jpg",
15 | "https://cdn.pixabay.com/photo/2018/11/29/19/29/autumn-3846345__480.jpg"
16 | ];
17 | export default PostImages;
18 |
--------------------------------------------------------------------------------
/src/utils/datas/stories.ts:
--------------------------------------------------------------------------------
1 | const stories = [
2 |
3 | {
4 | "id": 0,
5 | "isText": true,
6 | "avatar": "http://placehold.it/32x32",
7 | "source": "https://cdn.pixabay.com/photo/2018/11/11/16/51/ibis-3809147__480.jpg",
8 | "user": "Rutledge Harris"
9 | },
10 |
11 | {
12 | "id": 1,
13 | "isText": false,
14 | "avatar": "http://placehold.it/32x32",
15 | "source": "https://cdn.pixabay.com/photo/2018/11/11/16/51/ibis-3809147__480.jpg",
16 | "user": "Guadalupe Grant"
17 | },
18 | {
19 | "id": 2,
20 | "isText": false,
21 | "avatar": "http://placehold.it/32x32",
22 | "source": "https://picsum.photos/id/202/900/900",
23 | "user": "Dunlap Sheppard"
24 | },
25 | {
26 | "id": 3,
27 | "isText": true,
28 | "avatar": "http://placehold.it/32x32",
29 | "source": "https://cdn.pixabay.com/photo/2018/11/29/21/19/hamburg-3846525__480.jpg",
30 | "user": "Bray Oliver"
31 | },
32 | {
33 | "id": 4,
34 | "isText": true,
35 | "avatar": "http://placehold.it/32x32",
36 | "source": "https://picsum.photos/id/208/900/900",
37 | "user": "Nona Weber"
38 | },
39 | {
40 | "id": 5,
41 | "isText": true,
42 | "avatar": "http://placehold.it/32x32",
43 | "source": "https://picsum.photos/id/220/900/900",
44 | "user": "Freida Mann"
45 | }
46 | ];
47 | export default stories;
48 |
--------------------------------------------------------------------------------
/src/utils/datas/tags.ts:
--------------------------------------------------------------------------------
1 | const tags = [
2 | {
3 | "id": 0,
4 | "withIcon": true,
5 | "text": "IGTV"
6 | },
7 | {
8 | "id": 1,
9 | "withIcon": true,
10 | "text": "Shop"
11 | },
12 | {
13 | "id": 2,
14 | "withIcon": false,
15 | "text": "Style"
16 | },
17 | {
18 | "id": 3,
19 | "withIcon": true,
20 | "text": "Decor"
21 | },
22 | {
23 | "id": 4,
24 | "withIcon": false,
25 | "text": "Science"
26 | },
27 | {
28 | "id": 5,
29 | "withIcon": false,
30 | "text": "Science & Tech"
31 | },
32 | {
33 | "id": 6,
34 | "withIcon": false,
35 | "text": "Beauty"
36 | }
37 | ];
38 | export default tags;
39 |
--------------------------------------------------------------------------------
/src/utils/methods.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // @ts-ignore
3 | import Hyperlink from "react-native-hyperlink";
4 | import {colors} from "./theme";
5 |
6 | const first_linkify = require("linkify-it")()
7 | .add("@", {
8 | validate: function(text:any, pos:any, self:any) {
9 | var tail = text.slice(pos);
10 |
11 | if (!self.re.twitter) {
12 | self.re.twitter = new RegExp(
13 | "^([a-zA-Z0-9_]){1,15}(?!_)(?=$|" + self.re.src_ZPCc + ")"
14 | );
15 | }
16 | if (self.re.twitter.test(tail)) {
17 |
18 | if (pos >= 2 && tail[pos - 2] === "@") {
19 | return false;
20 | }
21 | return tail.match(self.re.twitter)[0].length;
22 | }
23 | return 0;
24 | },
25 | normalize: () => {}
26 | })
27 | .add("#", {
28 | validate: function(text:any, pos:any, self:any) {
29 | var tail = text.slice(pos);
30 |
31 | if (!self.re.twitter) {
32 | self.re.twitter = new RegExp(
33 | "^([a-zA-Z0-9_]){1,30}(?!_)(?=$|" + self.re.src_ZPCc + ")"
34 | );
35 | }
36 | if (self.re.twitter.test(tail)) {
37 | // Linkifier allows punctuation chars before prefix,
38 | // but we additionally disable `@` ("@@mention" is invalid)
39 | if (pos >= 2 && tail[pos - 2] === "#") {
40 | return false;
41 | }
42 | return tail.match(self.re.twitter)[0].length;
43 | }
44 | return 0;
45 | },
46 | normalize: () => {}
47 | });
48 |
49 | export function generateHiperlinkText(text:any) {
50 | return (
51 |
55 | {text}
56 |
57 | );
58 | }
59 |
60 | export function generateHiperlinkTextWithTime(text:any,time:string) {
61 | return (
62 |
66 | {text}
67 |
68 | );
69 | }
70 |
--------------------------------------------------------------------------------
/src/utils/theme.ts:
--------------------------------------------------------------------------------
1 | export const colors = {
2 | darkBlue: "#3897f0",
3 | fullDarkBlue: "#15568b",
4 | lightBlue: "#5851DB",
5 | turkois: "#833AB4",
6 | lightRed: "#E1306C",
7 | extraLightRed: "#C13584",
8 | extraLightRedFiltered: `rgba(193,53,132,0.2)`,
9 | orangeDark: "#F56040",
10 | orangeLight: "#F77737",
11 | yellowDark: "#FCAF45",
12 | yellowLight: "#FFDC80",
13 | transparent:'`rgba(100, 100, 100,0)`',
14 | extraLightBlue: `rgba(53,120,229,0.08)`,
15 | dark_gray: "#657786",
16 | light_gray: "#AAB8C2",
17 | exlight_gray: "#E1E8ED",
18 | exexlight_gray: "#F5F8FA",
19 | white: "#FFF",
20 | darkRed: '#e92f3c',
21 | black: "#000000",
22 | blackFilter70: `rgba(0,0,0,0.8)`,
23 | blackFilter90: `rgba(0,0,0,0.3)`
24 | };
25 |
26 |
27 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Basic Options */
4 | // "incremental": true, /* Enable incremental compilation */
5 | "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
6 | "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
7 | "lib": ["dom", "esnext"], /* Specify library files to be included in the compilation. */
8 | // "allowJs": true, /* Allow javascript files to be compiled. */
9 | // "checkJs": true, /* Report errors in .js files. */
10 | "jsx": "react-native", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
11 | // "declaration": true, /* Generates corresponding '.d.ts' file. */
12 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
13 | // "sourceMap": true, /* Generates corresponding '.map' file. */
14 | // "outFile": "./", /* Concatenate and emit output to single file. */
15 | // "outDir": "./", /* Redirect output structure to the directory. */
16 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
17 | // "composite": true, /* Enable project compilation */
18 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
19 | // "removeComments": true, /* Do not emit comments to output. */
20 | // "noEmit": true, /* Do not emit outputs. */
21 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */
22 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
23 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
24 |
25 | /* Strict Type-Checking Options */
26 | "strict": true, /* Enable all strict type-checking options. */
27 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
28 | // "strictNullChecks": true, /* Enable strict null checks. */
29 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */
30 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
31 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
32 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
33 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
34 |
35 | /* Additional Checks */
36 | // "noUnusedLocals": true, /* Report errors on unused locals. */
37 | // "noUnusedParameters": true, /* Report errors on unused parameters. */
38 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
39 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
40 |
41 | /* Module Resolution Options */
42 | "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
43 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
44 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
45 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
46 | // "typeRoots": [], /* List of folders to include type definitions from. */
47 | // "types": [], /* Type declaration files to be included in compilation. */
48 | "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
49 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
50 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
51 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
52 |
53 | /* Source Map Options */
54 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
55 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
56 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
57 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
58 |
59 | /* Experimental Options */
60 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
61 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
62 | "baseUrl": ".",
63 | "paths": {
64 | "~/*": [
65 | "./src/*"
66 | ]
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------