├── Readme.md ├── f8app ├── .atom-build.json ├── .babelrc ├── .eslintrc ├── .flowconfig ├── .github │ ├── screenshot-app@2x.png │ └── screenshot-server@2x.png ├── .gitignore ├── .watchmanconfig ├── LICENSE ├── README.md ├── android │ ├── app │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── com │ │ │ │ └── facebook │ │ │ │ └── f8 │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_notification.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_notification.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_notification.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_notification.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_notification.png │ │ │ ├── raw │ │ │ └── third_party_notices.html │ │ │ └── values │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── index.android.js ├── index.ios.js ├── ios │ ├── Default-568h@2x.png │ ├── F8Scrolling.h │ ├── F8Scrolling.m │ ├── F8v2.xcodeproj │ │ ├── project.pbxproj │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── F8v2.xcscheme │ ├── F8v2 │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Base.lproj │ │ │ └── LaunchScreen.xib │ │ ├── Images.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── AppIcon@2x.png │ │ │ │ ├── AppIcon@3x.png │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Info.plist │ │ └── main.m │ ├── F8v2Tests │ │ └── Info.plist │ ├── PodFile │ ├── Podfile.lock │ ├── Settings.bundle │ │ ├── About.plist │ │ ├── Root.plist │ │ └── en.lproj │ │ │ └── Root.strings │ └── Splash@2x.png ├── js │ ├── F8App.js │ ├── F8Navigator.js │ ├── FacebookSDK.js │ ├── Playground.js │ ├── PushNotificationsController.js │ ├── actions │ │ ├── config.js │ │ ├── filter.js │ │ ├── index.js │ │ ├── installation.js │ │ ├── login.js │ │ ├── navigation.js │ │ ├── notifications.js │ │ ├── parse.js │ │ ├── schedule.js │ │ ├── surveys.js │ │ ├── test.js │ │ └── types.js │ ├── common │ │ ├── BackButtonIcon.js │ │ ├── Carousel.js │ │ ├── F8Button.js │ │ ├── F8Colors.js │ │ ├── F8DrawerLayout.js │ │ ├── F8Header.js │ │ ├── F8PageControl.js │ │ ├── F8SegmentedControl.js │ │ ├── F8StyleSheet.js │ │ ├── F8Text.js │ │ ├── F8Touchable.js │ │ ├── ItemsWithSeparator.js │ │ ├── ListContainer.js │ │ ├── LoginButton.js │ │ ├── MapView.js │ │ ├── ParallaxBackground.js │ │ ├── ProfilePicture.js │ │ ├── PureListView.js │ │ ├── ViewPager.js │ │ └── img │ │ │ ├── back.android.png │ │ │ ├── back.ios.png │ │ │ ├── back@2x.android.png │ │ │ ├── back@2x.ios.png │ │ │ ├── back@3x.android.png │ │ │ ├── back@3x.ios.png │ │ │ ├── back_white.android.png │ │ │ ├── back_white.ios.png │ │ │ ├── back_white@2x.android.png │ │ │ ├── back_white@2x.ios.png │ │ │ ├── back_white@3x.android.png │ │ │ ├── back_white@3x.ios.png │ │ │ ├── disclosure.png │ │ │ ├── disclosure@2x.png │ │ │ ├── disclosure@3x.png │ │ │ ├── f8-logo.png │ │ │ ├── f8-logo@2x.png │ │ │ ├── f8-logo@3x.png │ │ │ ├── filter.png │ │ │ ├── filter@2x.png │ │ │ ├── filter@3x.png │ │ │ ├── hamburger-unread.png │ │ │ ├── hamburger-unread@2x.png │ │ │ ├── hamburger-unread@3x.png │ │ │ ├── hamburger.png │ │ │ ├── hamburger@2x.png │ │ │ ├── hamburger@3x.png │ │ │ ├── x-white@2x.png │ │ │ └── x-white@3x.png │ ├── env.js │ ├── filter │ │ ├── FilterScreen.js │ │ ├── FriendsList.js │ │ ├── Header.js │ │ ├── Section.js │ │ └── TopicItem.js │ ├── flow-lib.js │ ├── login │ │ ├── LoginModal.js │ │ ├── LoginScreen.js │ │ └── img │ │ │ ├── devconf-logo.png │ │ │ ├── devconf-logo@2x.png │ │ │ ├── devconf-logo@3x.png │ │ │ ├── f-logo@2x.png │ │ │ ├── f-logo@3x.png │ │ │ ├── login-background.png │ │ │ ├── login-background@2x.png │ │ │ ├── login-background@3x.png │ │ │ ├── x@2x.png │ │ │ └── x@3x.png │ ├── rating │ │ ├── Header.js │ │ ├── RatingCard.js │ │ ├── RatingQuestion.js │ │ ├── RatingScreen.js │ │ └── img │ │ │ ├── empty-star.png │ │ │ ├── empty-star@2x.png │ │ │ ├── empty-star@3x.png │ │ │ ├── full-star.png │ │ │ ├── full-star@2x.png │ │ │ ├── full-star@3x.png │ │ │ ├── header.png │ │ │ ├── header@2x.png │ │ │ └── header@3x.png │ ├── reducers │ │ ├── __mocks__ │ │ │ └── parse.js │ │ ├── __tests__ │ │ │ ├── maps-test.js │ │ │ ├── notifications-test.js │ │ │ └── schedule-test.js │ │ ├── config.js │ │ ├── createParseReducer.js │ │ ├── filter.js │ │ ├── friendsSchedules.js │ │ ├── index.js │ │ ├── maps.js │ │ ├── navigation.js │ │ ├── notifications.js │ │ ├── schedule.js │ │ ├── sessions.js │ │ ├── surveys.js │ │ ├── topics.js │ │ └── user.js │ ├── setup.js │ ├── store │ │ ├── analytics.js │ │ ├── array.js │ │ ├── configureStore.js │ │ ├── promise.js │ │ └── track.js │ └── tabs │ │ ├── F8TabsView.android.js │ │ ├── F8TabsView.ios.js │ │ ├── MenuItem.js │ │ ├── img │ │ ├── drawer-header.png │ │ ├── drawer-header@2x.png │ │ ├── logo.png │ │ ├── logo@2x.png │ │ └── logo@3x.png │ │ ├── info │ │ ├── CommonQuestions.js │ │ ├── F8InfoView.js │ │ ├── LinksList.js │ │ ├── Section.js │ │ ├── ThirdPartyNotices.js │ │ ├── WiFiDetails.js │ │ └── img │ │ │ ├── info-background.png │ │ │ ├── info-background@2x.png │ │ │ ├── info-icon-active.png │ │ │ ├── info-icon-active@2x.png │ │ │ ├── info-icon-active@3x.png │ │ │ ├── info-icon.png │ │ │ ├── info-icon@2x.png │ │ │ └── info-icon@3x.png │ │ ├── maps │ │ ├── F8MapView.js │ │ ├── ZoomableImage.js │ │ └── img │ │ │ ├── directions.png │ │ │ ├── directions@2x.png │ │ │ ├── directions@3x.png │ │ │ ├── maps-background.png │ │ │ ├── maps-background@2x.png │ │ │ ├── maps-icon-active.png │ │ │ ├── maps-icon-active@2x.png │ │ │ ├── maps-icon-active@3x.png │ │ │ ├── maps-icon.png │ │ │ ├── maps-icon@2x.png │ │ │ └── maps-icon@3x.png │ │ ├── notifications │ │ ├── F8NotificationsView.js │ │ ├── NotificationCell.js │ │ ├── PushNUXModal.js │ │ ├── RateSessionsCell.js │ │ ├── allNotifications.js │ │ ├── findSessionByURI.js │ │ ├── img │ │ │ ├── notifications-background.png │ │ │ ├── notifications-background@2x.png │ │ │ ├── notifications-icon-active.png │ │ │ ├── notifications-icon-active@2x.png │ │ │ ├── notifications-icon-active@3x.png │ │ │ ├── notifications-icon.png │ │ │ ├── notifications-icon@2x.png │ │ │ ├── notifications-icon@3x.png │ │ │ ├── push-nux.png │ │ │ ├── push-nux@2x.png │ │ │ ├── push-nux@3x.png │ │ │ ├── smiley-face.png │ │ │ ├── smiley-face@2x.png │ │ │ └── smiley-face@3x.png │ │ └── unseenNotificationsCount.js │ │ └── schedule │ │ ├── AddToScheduleButton.js │ │ ├── EmptySchedule.js │ │ ├── F8FriendGoing.js │ │ ├── F8SessionCell.js │ │ ├── F8SessionDetails.js │ │ ├── F8SpeakerProfile.js │ │ ├── FilterHeader.js │ │ ├── FriendCell.js │ │ ├── FriendsListView.js │ │ ├── FriendsScheduleView.js │ │ ├── FriendsUsingApp.js │ │ ├── GeneralScheduleView.js │ │ ├── InviteFriendsButton.js │ │ ├── MyScheduleView.js │ │ ├── ProfileButton.js │ │ ├── ScheduleListView.js │ │ ├── SessionsCarousel.js │ │ ├── SessionsSectionHeader.js │ │ ├── SharingSettingsCommon.js │ │ ├── SharingSettingsModal.js │ │ ├── SharingSettingsScreen.js │ │ ├── __tests__ │ │ ├── formatDuration-test.js │ │ └── formatTime-test.js │ │ ├── filterSessions.js │ │ ├── formatDuration.js │ │ ├── formatTime.js │ │ ├── groupSessions.js │ │ └── img │ │ ├── add.png │ │ ├── add@2x.png │ │ ├── add@3x.png │ │ ├── added-cell.png │ │ ├── added-cell@2x.png │ │ ├── added-cell@3x.png │ │ ├── added-react.png │ │ ├── added-react@2x.png │ │ ├── added-react@3x.png │ │ ├── added.png │ │ ├── added@2x.png │ │ ├── added@3x.png │ │ ├── filter.png │ │ ├── filter@2x.png │ │ ├── filter@3x.png │ │ ├── hacker-way@2x.png │ │ ├── hacker-way@3x.png │ │ ├── logout.png │ │ ├── logout@2x.png │ │ ├── logout@3x.png │ │ ├── my-f8-background.png │ │ ├── my-f8-background@2x.png │ │ ├── my-schedule-icon-active.png │ │ ├── my-schedule-icon-active@2x.png │ │ ├── my-schedule-icon-active@3x.png │ │ ├── my-schedule-icon.png │ │ ├── my-schedule-icon@2x.png │ │ ├── my-schedule-icon@3x.png │ │ ├── no-friends-found.png │ │ ├── no-friends-found@2x.png │ │ ├── no-friends-found@3x.png │ │ ├── no-sessions-added.png │ │ ├── no-sessions-added@2x.png │ │ ├── no-sessions-added@3x.png │ │ ├── profile.png │ │ ├── profile@2x.png │ │ ├── profile@3x.png │ │ ├── schedule-background.png │ │ ├── schedule-background@2x.png │ │ ├── schedule-icon-1-active.png │ │ ├── schedule-icon-1-active@2x.png │ │ ├── schedule-icon-1-active@3x.png │ │ ├── schedule-icon-1.png │ │ ├── schedule-icon-1@2x.png │ │ ├── schedule-icon-1@3x.png │ │ ├── schedule-icon-2-active.png │ │ ├── schedule-icon-2-active@2x.png │ │ ├── schedule-icon-2-active@3x.png │ │ ├── schedule-icon-2.png │ │ ├── schedule-icon-2@2x.png │ │ ├── schedule-icon-2@3x.png │ │ ├── settings.png │ │ ├── settings@2x.png │ │ ├── settings@3x.png │ │ ├── share.android.png │ │ ├── share.ios.png │ │ ├── share@2x.android.png │ │ ├── share@2x.ios.png │ │ ├── share@3x.android.png │ │ ├── share@3x.ios.png │ │ ├── sharing-nux.png │ │ ├── sharing-nux@2x.png │ │ └── sharing-nux@3x.png ├── npm-shrinkwrap.json ├── package.json ├── scripts │ ├── import-data-from-parse.js │ ├── optimize-images.sh │ └── store-ip.sh └── server │ ├── cloud.js │ ├── cloud │ ├── friends.js │ ├── main.js │ ├── surveys.js │ └── tests.js │ ├── schema │ ├── babelRelayPlugin.js │ ├── schema.graphql │ ├── schema.js │ ├── schema.json │ └── updateSchema.js │ └── server.js └── f8app_coverage_middleware ├── .gitignore ├── index.js ├── instrument_js.sh ├── js ├── F8App.js ├── F8Navigator.js ├── FacebookSDK.js ├── Playground.js ├── PushNotificationsController.js ├── actions │ ├── config.js │ ├── filter.js │ ├── index.js │ ├── installation.js │ ├── login.js │ ├── navigation.js │ ├── notifications.js │ ├── parse.js │ ├── schedule.js │ ├── surveys.js │ ├── test.js │ └── types.js ├── common │ ├── BackButtonIcon.js │ ├── Carousel.js │ ├── F8Button.js │ ├── F8Colors.js │ ├── F8DrawerLayout.js │ ├── F8Header.js │ ├── F8PageControl.js │ ├── F8SegmentedControl.js │ ├── F8StyleSheet.js │ ├── F8Text.js │ ├── F8Touchable.js │ ├── ItemsWithSeparator.js │ ├── ListContainer.js │ ├── LoginButton.js │ ├── MapView.js │ ├── ParallaxBackground.js │ ├── ProfilePicture.js │ ├── PureListView.js │ ├── ViewPager.js │ └── img │ │ ├── back.android.png │ │ ├── back.ios.png │ │ ├── back@2x.android.png │ │ ├── back@2x.ios.png │ │ ├── back@3x.android.png │ │ ├── back@3x.ios.png │ │ ├── back_white.android.png │ │ ├── back_white.ios.png │ │ ├── back_white@2x.android.png │ │ ├── back_white@2x.ios.png │ │ ├── back_white@3x.android.png │ │ ├── back_white@3x.ios.png │ │ ├── disclosure.png │ │ ├── disclosure@2x.png │ │ ├── disclosure@3x.png │ │ ├── f8-logo.png │ │ ├── f8-logo@2x.png │ │ ├── f8-logo@3x.png │ │ ├── filter.png │ │ ├── filter@2x.png │ │ ├── filter@3x.png │ │ ├── hamburger-unread.png │ │ ├── hamburger-unread@2x.png │ │ ├── hamburger-unread@3x.png │ │ ├── hamburger.png │ │ ├── hamburger@2x.png │ │ ├── hamburger@3x.png │ │ ├── x-white@2x.png │ │ └── x-white@3x.png ├── env.js ├── filter │ ├── FilterScreen.js │ ├── FriendsList.js │ ├── Header.js │ ├── Section.js │ └── TopicItem.js ├── flow-lib.js ├── login │ ├── LoginModal.js │ ├── LoginScreen.js │ └── img │ │ ├── devconf-logo.png │ │ ├── devconf-logo@2x.png │ │ ├── devconf-logo@3x.png │ │ ├── f-logo@2x.png │ │ ├── f-logo@3x.png │ │ ├── login-background.png │ │ ├── login-background@2x.png │ │ ├── login-background@3x.png │ │ ├── x@2x.png │ │ └── x@3x.png ├── rating │ ├── Header.js │ ├── RatingCard.js │ ├── RatingQuestion.js │ ├── RatingScreen.js │ └── img │ │ ├── empty-star.png │ │ ├── empty-star@2x.png │ │ ├── empty-star@3x.png │ │ ├── full-star.png │ │ ├── full-star@2x.png │ │ ├── full-star@3x.png │ │ ├── header.png │ │ ├── header@2x.png │ │ └── header@3x.png ├── reducers │ ├── __mocks__ │ │ └── parse.js │ ├── __tests__ │ │ ├── maps-test.js │ │ ├── notifications-test.js │ │ └── schedule-test.js │ ├── config.js │ ├── createParseReducer.js │ ├── filter.js │ ├── friendsSchedules.js │ ├── index.js │ ├── maps.js │ ├── navigation.js │ ├── notifications.js │ ├── schedule.js │ ├── sessions.js │ ├── surveys.js │ ├── topics.js │ └── user.js ├── setup.js ├── store │ ├── analytics.js │ ├── array.js │ ├── configureStore.js │ ├── promise.js │ └── track.js └── tabs │ ├── F8TabsView.android.js │ ├── F8TabsView.ios.js │ ├── MenuItem.js │ ├── img │ ├── drawer-header.png │ ├── drawer-header@2x.png │ ├── logo.png │ ├── logo@2x.png │ └── logo@3x.png │ ├── info │ ├── CommonQuestions.js │ ├── F8InfoView.js │ ├── LinksList.js │ ├── Section.js │ ├── ThirdPartyNotices.js │ ├── WiFiDetails.js │ └── img │ │ ├── info-background.png │ │ ├── info-background@2x.png │ │ ├── info-icon-active.png │ │ ├── info-icon-active@2x.png │ │ ├── info-icon-active@3x.png │ │ ├── info-icon.png │ │ ├── info-icon@2x.png │ │ └── info-icon@3x.png │ ├── maps │ ├── F8MapView.js │ ├── ZoomableImage.js │ └── img │ │ ├── directions.png │ │ ├── directions@2x.png │ │ ├── directions@3x.png │ │ ├── maps-background.png │ │ ├── maps-background@2x.png │ │ ├── maps-icon-active.png │ │ ├── maps-icon-active@2x.png │ │ ├── maps-icon-active@3x.png │ │ ├── maps-icon.png │ │ ├── maps-icon@2x.png │ │ └── maps-icon@3x.png │ ├── notifications │ ├── F8NotificationsView.js │ ├── NotificationCell.js │ ├── PushNUXModal.js │ ├── RateSessionsCell.js │ ├── allNotifications.js │ ├── findSessionByURI.js │ ├── img │ │ ├── notifications-background.png │ │ ├── notifications-background@2x.png │ │ ├── notifications-icon-active.png │ │ ├── notifications-icon-active@2x.png │ │ ├── notifications-icon-active@3x.png │ │ ├── notifications-icon.png │ │ ├── notifications-icon@2x.png │ │ ├── notifications-icon@3x.png │ │ ├── push-nux.png │ │ ├── push-nux@2x.png │ │ ├── push-nux@3x.png │ │ ├── smiley-face.png │ │ ├── smiley-face@2x.png │ │ └── smiley-face@3x.png │ └── unseenNotificationsCount.js │ └── schedule │ ├── AddToScheduleButton.js │ ├── EmptySchedule.js │ ├── F8FriendGoing.js │ ├── F8SessionCell.js │ ├── F8SessionDetails.js │ ├── F8SpeakerProfile.js │ ├── FilterHeader.js │ ├── FriendCell.js │ ├── FriendsListView.js │ ├── FriendsScheduleView.js │ ├── FriendsUsingApp.js │ ├── GeneralScheduleView.js │ ├── InviteFriendsButton.js │ ├── MyScheduleView.js │ ├── ProfileButton.js │ ├── ScheduleListView.js │ ├── SessionsCarousel.js │ ├── SessionsSectionHeader.js │ ├── SharingSettingsCommon.js │ ├── SharingSettingsModal.js │ ├── SharingSettingsScreen.js │ ├── __tests__ │ ├── formatDuration-test.js │ └── formatTime-test.js │ ├── filterSessions.js │ ├── formatDuration.js │ ├── formatTime.js │ ├── groupSessions.js │ └── img │ ├── add.png │ ├── add@2x.png │ ├── add@3x.png │ ├── added-cell.png │ ├── added-cell@2x.png │ ├── added-cell@3x.png │ ├── added-react.png │ ├── added-react@2x.png │ ├── added-react@3x.png │ ├── added.png │ ├── added@2x.png │ ├── added@3x.png │ ├── filter.png │ ├── filter@2x.png │ ├── filter@3x.png │ ├── hacker-way@2x.png │ ├── hacker-way@3x.png │ ├── logout.png │ ├── logout@2x.png │ ├── logout@3x.png │ ├── my-f8-background.png │ ├── my-f8-background@2x.png │ ├── my-schedule-icon-active.png │ ├── my-schedule-icon-active@2x.png │ ├── my-schedule-icon-active@3x.png │ ├── my-schedule-icon.png │ ├── my-schedule-icon@2x.png │ ├── my-schedule-icon@3x.png │ ├── no-friends-found.png │ ├── no-friends-found@2x.png │ ├── no-friends-found@3x.png │ ├── no-sessions-added.png │ ├── no-sessions-added@2x.png │ ├── no-sessions-added@3x.png │ ├── profile.png │ ├── profile@2x.png │ ├── profile@3x.png │ ├── schedule-background.png │ ├── schedule-background@2x.png │ ├── schedule-icon-1-active.png │ ├── schedule-icon-1-active@2x.png │ ├── schedule-icon-1-active@3x.png │ ├── schedule-icon-1.png │ ├── schedule-icon-1@2x.png │ ├── schedule-icon-1@3x.png │ ├── schedule-icon-2-active.png │ ├── schedule-icon-2-active@2x.png │ ├── schedule-icon-2-active@3x.png │ ├── schedule-icon-2.png │ ├── schedule-icon-2@2x.png │ ├── schedule-icon-2@3x.png │ ├── settings.png │ ├── settings@2x.png │ ├── settings@3x.png │ ├── share.android.png │ ├── share.ios.png │ ├── share@2x.android.png │ ├── share@2x.ios.png │ ├── share@3x.android.png │ ├── share@3x.ios.png │ ├── sharing-nux.png │ ├── sharing-nux@2x.png │ └── sharing-nux@3x.png ├── package.json └── start_middleware.sh /Readme.md: -------------------------------------------------------------------------------- 1 | # React-Native Instegration Test Coverage Collector Demo 2 | 3 | React-Native 集成测试覆盖率收集 Demo 4 | 5 | # 用法 6 | 7 | 1. 把代码仓库 clone 到本地 8 | 2. 参照 [React Native 代码覆盖率获取探索 (一)](https://testerhome.com/topics/8230) 的步骤,搭建好 f8app 的开发环境。 9 | 3. 启动 middleware 服务: 10 | 11 | ``` 12 | $ cd f8app_coverage_middleware && npm install &&./start_middleware.sh 13 | ``` 14 | 15 | 4. 启动 rn 应用(以 ios 为例) 16 | 17 | ``` 18 | $ cd f8app && react-native run-ios 19 | ``` 20 | 21 | 启动后,等待约5秒,然后打开 即可查看覆盖率报告。覆盖率报告每隔2秒会自动更新。 22 | 23 | # 添加覆盖率的关键步骤 24 | 25 | 请查看 [React Native 代码覆盖率获取探索 (二)](https://testerhome.com/topics/8919) 26 | 27 | # 已知问题 28 | 29 | 由于 middleware 默认识别相对路径,会造成查看具体文件行级别覆盖率时报类似如下的错误: 30 | 31 | ``` 32 | Error: ENOENT: no such file or directory, open 'actions/installation.js' 33 | at Error (native) 34 | at Object.fs.openSync (fs.js:549:18) 35 | at Object.fs.readFileSync (fs.js:397:15) 36 | ... 37 | ``` 38 | 39 | 原因:middleware 文件解析是根据 url 中的 p 参数值进行解析的。由于 client 只会回传相对路径,因此 middleware 会找不到对应文件。将其生成 html 页面时使用的路径改为绝对路径即可。 40 | 41 | 解决方法: 42 | 打开 `f8app_coverage_middleware/node_modules/istanbul-middleware/lib/core.js` ,添加下面 + 号开头的代码(实际添加时不需要加上这个 + 号): 43 | 44 | ``` 45 | fileCoverage = coverage[outputNode.fullPath()]; 46 | 47 | + // 临时修复 `no such file or directory` 报错问题 48 | + var path = require('path'); 49 | + fileCoverage.path = path.resolve(__dirname, '..', '..', '..', 'js', fileCoverage.path); 50 | 51 | utils.addDerivedInfoForFile(fileCoverage); 52 | report.writeDetailPage(res, outputNode, fileCoverage); 53 | ``` -------------------------------------------------------------------------------- /f8app/.atom-build.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Parse", 3 | "cmd": "parse deploy" 4 | } 5 | -------------------------------------------------------------------------------- /f8app/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "passPerPreset": true, 3 | "presets": [ 4 | { 5 | "plugins": [ 6 | "./server/schema/babelRelayPlugin" 7 | ] 8 | }, 9 | "react-native" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /f8app/.github/screenshot-app@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/.github/screenshot-app@2x.png -------------------------------------------------------------------------------- /f8app/.github/screenshot-server@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/.github/screenshot-server@2x.png -------------------------------------------------------------------------------- /f8app/.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 | ios/Pods 25 | ios/F8v2.xcworkspace 26 | 27 | # Android/IJ 28 | # 29 | .idea 30 | .gradle 31 | local.properties 32 | *.iml 33 | 34 | # node.js 35 | # 36 | node_modules/ 37 | npm-debug.log 38 | 39 | # F8 40 | # 41 | /release 42 | /logs 43 | -------------------------------------------------------------------------------- /f8app/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /f8app/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2016 Facebook, Inc. 2 | 3 | You are hereby granted a non-exclusive, worldwide, royalty-free license to 4 | use, copy, modify, and distribute this software in source code or binary 5 | form for use in connection with the web services and APIs provided by 6 | Facebook. 7 | 8 | As with any software that integrates with the Facebook platform, your use 9 | of this software is subject to the Facebook Developer Principles and 10 | Policies [http://developers.facebook.com/policy/]. This copyright notice 11 | shall be included in all copies or substantial portions of the software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 16 | THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 19 | DEALINGS IN THE SOFTWARE 20 | -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/mipmap-hdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/android/app/src/main/res/mipmap-hdpi/ic_notification.png -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/mipmap-mdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/android/app/src/main/res/mipmap-mdpi/ic_notification.png -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/mipmap-xhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/android/app/src/main/res/mipmap-xhdpi/ic_notification.png -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/mipmap-xxhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/android/app/src/main/res/mipmap-xxhdpi/ic_notification.png -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/mipmap-xxxhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/android/app/src/main/res/mipmap-xxxhdpi/ic_notification.png -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/raw/third_party_notices.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/android/app/src/main/res/raw/third_party_notices.html -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | F8 3 | 619048868222429 4 | 5 | -------------------------------------------------------------------------------- /f8app/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /f8app/android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:1.3.1' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | mavenLocal() 18 | jcenter() 19 | maven { 20 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 21 | url "$projectDir/../../node_modules/react-native/android" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /f8app/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.useDeprecatedNdk=true 21 | -------------------------------------------------------------------------------- /f8app/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /f8app/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip 6 | -------------------------------------------------------------------------------- /f8app/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'F8v2' 2 | 3 | include ':app', ':react-native-linear-gradient' 4 | include ':app', ':react-native-code-push' 5 | include ':react-native-push-notification' 6 | include ':react-native-share', ':app' 7 | include ':react-native-fbsdk' 8 | include ':react-native-send-intent', ':app' 9 | project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android') 10 | project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app') 11 | project(':react-native-push-notification').projectDir = file('../node_modules/react-native-push-notification/RNPushNotificationAndroid') 12 | project(':react-native-share').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-share/android') 13 | project(':react-native-fbsdk').projectDir = new File(settingsDir, '../node_modules/react-native-fbsdk/Android') 14 | project(':react-native-send-intent').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-send-intent/android') 15 | -------------------------------------------------------------------------------- /f8app/index.android.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | */ 23 | 'use strict'; 24 | 25 | const {AppRegistry} = require('react-native'); 26 | const setup = require('./js/setup'); 27 | 28 | AppRegistry.registerComponent('F8v2', setup); 29 | -------------------------------------------------------------------------------- /f8app/index.ios.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | */ 23 | 'use strict'; 24 | 25 | const {AppRegistry} = require('react-native'); 26 | const setup = require('./js/setup'); 27 | 28 | AppRegistry.registerComponent('F8v2', setup); 29 | -------------------------------------------------------------------------------- /f8app/ios/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/ios/Default-568h@2x.png -------------------------------------------------------------------------------- /f8app/ios/F8Scrolling.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | #import "RCTBridgeModule.h" 12 | 13 | @interface F8Scrolling : NSObject 14 | 15 | @end -------------------------------------------------------------------------------- /f8app/ios/F8v2/AppDelegate.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | */ 22 | 23 | #import 24 | 25 | @interface AppDelegate : UIResponder 26 | 27 | @property (nonatomic, strong) UIWindow *window; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /f8app/ios/F8v2/Images.xcassets/AppIcon.appiconset/AppIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/ios/F8v2/Images.xcassets/AppIcon.appiconset/AppIcon@2x.png -------------------------------------------------------------------------------- /f8app/ios/F8v2/Images.xcassets/AppIcon.appiconset/AppIcon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/ios/F8v2/Images.xcassets/AppIcon.appiconset/AppIcon@3x.png -------------------------------------------------------------------------------- /f8app/ios/F8v2/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "size" : "60x60", 25 | "idiom" : "iphone", 26 | "filename" : "AppIcon@2x.png", 27 | "scale" : "2x" 28 | }, 29 | { 30 | "size" : "60x60", 31 | "idiom" : "iphone", 32 | "filename" : "AppIcon@3x.png", 33 | "scale" : "3x" 34 | } 35 | ], 36 | "info" : { 37 | "version" : 1, 38 | "author" : "xcode" 39 | } 40 | } -------------------------------------------------------------------------------- /f8app/ios/F8v2/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /f8app/ios/F8v2/main.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | */ 22 | 23 | #import 24 | 25 | #import "AppDelegate.h" 26 | 27 | int main(int argc, char * argv[]) { 28 | @autoreleasepool { 29 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /f8app/ios/F8v2Tests/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 | -------------------------------------------------------------------------------- /f8app/ios/PodFile: -------------------------------------------------------------------------------- 1 | source 'https://github.com/CocoaPods/Specs.git' 2 | 3 | target 'F8v2' do 4 | pod 'React', :subspecs => [ 5 | 'Core', 6 | 'RCTActionSheet', 7 | 'RCTImage', 8 | 'RCTNetwork', 9 | 'RCTText', 10 | 'RCTWebSocket', 11 | 'RCTPushNotification', 12 | 'RCTLinkingIOS', 13 | 'RCTVibration', 14 | ], :path => '../node_modules/react-native' 15 | pod 'react-native-fbsdk', :subspecs => [ 16 | 'Core', 17 | 'Login', 18 | 'Share', 19 | ], :path => '../node_modules/react-native-fbsdk/iOS' 20 | pod 'CodePush', :path => '../node_modules/react-native-code-push' 21 | end 22 | 23 | # Start the React Native JS packager server when running the project in Xcode. 24 | 25 | start_packager = %q( 26 | if nc -w 5 -z localhost 8081 ; then 27 | if ! curl -s "http://localhost:8081/status" | grep -q "packager-status:running" ; then 28 | echo "Port 8081 already in use, packager is either not running or not running correctly" 29 | exit 2 30 | fi 31 | else 32 | open $SRCROOT/../../node_modules/react-native/packager/launchPackager.command || echo "Can't start packager automatically" 33 | fi 34 | ) 35 | 36 | post_install do |installer| 37 | target = installer.pods_project.targets.select{|t| 'React' == t.name}.first 38 | phase = target.new_shell_script_build_phase('Run Script') 39 | phase.shell_script = start_packager 40 | end 41 | -------------------------------------------------------------------------------- /f8app/ios/Settings.bundle/About.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | Type 9 | PSGroupSpecifier 10 | Title 11 | ----- 12 | DoNotLocalize 13 | 14 | 15 | 16 | Type 17 | PSGroupSpecifier 18 | DoNotLocalize 19 | YES 20 | FooterText 21 | ----- 22 | 23 | 24 | StringsTable 25 | Root 26 | Title 27 | About 28 | 29 | 30 | -------------------------------------------------------------------------------- /f8app/ios/Settings.bundle/Root.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | Type 9 | PSChildPaneSpecifier 10 | Title 11 | About 12 | File 13 | About 14 | 15 | 16 | StringsTable 17 | Root 18 | Title 19 | F8 20 | 21 | 22 | -------------------------------------------------------------------------------- /f8app/ios/Settings.bundle/en.lproj/Root.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/ios/Settings.bundle/en.lproj/Root.strings -------------------------------------------------------------------------------- /f8app/ios/Splash@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/ios/Splash@2x.png -------------------------------------------------------------------------------- /f8app/js/actions/config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | const Parse = require('parse/react-native'); 28 | const InteractionManager = require('InteractionManager'); 29 | 30 | import type { Action } from './types'; 31 | 32 | async function loadConfig(): Promise { 33 | const config = await Parse.Config.get(); 34 | await InteractionManager.runAfterInteractions(); 35 | return { 36 | type: 'LOADED_CONFIG', 37 | config, 38 | }; 39 | } 40 | 41 | module.exports = {loadConfig}; 42 | -------------------------------------------------------------------------------- /f8app/js/actions/filter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | import type { Action } from './types'; 28 | 29 | type Schedule = {[key: string]: boolean}; 30 | 31 | function applyTopicsFilter(topics: Schedule): Action { 32 | return { 33 | type: 'APPLY_TOPICS_FILTER', 34 | topics, 35 | }; 36 | } 37 | 38 | function clearFilter(): Action { 39 | return { 40 | type: 'CLEAR_FILTER', 41 | }; 42 | } 43 | 44 | module.exports = {applyTopicsFilter, clearFilter}; 45 | -------------------------------------------------------------------------------- /f8app/js/actions/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | const parseActions = require('./parse'); 28 | const navigationActions = require('./navigation'); 29 | const loginActions = require('./login'); 30 | const scheduleActions = require('./schedule'); 31 | const filterActions = require('./filter'); 32 | const notificationActions = require('./notifications'); 33 | const configActions = require('./config'); 34 | const surveyActions = require('./surveys'); 35 | const testActions = require('./test'); 36 | const installationActions = require('./installation'); 37 | 38 | module.exports = { 39 | ...loginActions, 40 | ...scheduleActions, 41 | ...filterActions, 42 | ...notificationActions, 43 | ...configActions, 44 | ...surveyActions, 45 | ...testActions, 46 | ...parseActions, 47 | ...navigationActions, 48 | ...installationActions, 49 | }; 50 | -------------------------------------------------------------------------------- /f8app/js/actions/navigation.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | import type { Action } from './types'; 28 | 29 | type Tab = 'schedule' | 'my-schedule' | 'map' | 'notifications' | 'info'; 30 | 31 | module.exports = { 32 | switchTab: (tab: Tab): Action => ({ 33 | type: 'SWITCH_TAB', 34 | tab, 35 | }), 36 | 37 | switchDay: (day: 1 | 2): Action => ({ 38 | type: 'SWITCH_DAY', 39 | day, 40 | }), 41 | }; 42 | -------------------------------------------------------------------------------- /f8app/js/actions/surveys.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | const Parse = require('parse/react-native'); 28 | 29 | import type { Action } from './types'; 30 | 31 | async function loadSurveys(): Promise { 32 | const list = await Parse.Cloud.run('surveys'); 33 | return { 34 | type: 'LOADED_SURVEYS', 35 | list, 36 | }; 37 | } 38 | 39 | async function submitSurveyAnswers(id: string, answers: Array): Promise { 40 | await Parse.Cloud.run('submit_survey', {id, answers}); 41 | return { 42 | type: 'SUBMITTED_SURVEY_ANSWERS', 43 | id, 44 | }; 45 | } 46 | 47 | module.exports = { 48 | loadSurveys, 49 | submitSurveyAnswers, 50 | }; 51 | -------------------------------------------------------------------------------- /f8app/js/common/F8StyleSheet.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @providesModule F8StyleSheet 23 | * @flow 24 | */ 25 | 26 | 'use strict'; 27 | 28 | import {StyleSheet, Platform} from 'react-native'; 29 | 30 | export function create(styles: Object): {[name: string]: number} { 31 | const platformStyles = {}; 32 | Object.keys(styles).forEach((name) => { 33 | let {ios, android, ...style} = {...styles[name]}; 34 | if (ios && Platform.OS === 'ios') { 35 | style = {...style, ...ios}; 36 | } 37 | if (android && Platform.OS === 'android') { 38 | style = {...style, ...android}; 39 | } 40 | platformStyles[name] = style; 41 | }); 42 | return StyleSheet.create(platformStyles); 43 | } 44 | -------------------------------------------------------------------------------- /f8app/js/common/F8Touchable.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @providesModule F8Touchable 23 | * @flow 24 | */ 25 | 26 | 'use strict'; 27 | 28 | import React from 'react'; 29 | import { 30 | TouchableHighlight, 31 | TouchableNativeFeedback, 32 | Platform, 33 | } from 'react-native'; 34 | 35 | function F8TouchableIOS(props: Object): ReactElement { 36 | return ( 37 | 42 | ); 43 | } 44 | 45 | const F8Touchable = Platform.OS === 'android' 46 | ? TouchableNativeFeedback 47 | : F8TouchableIOS; 48 | 49 | module.exports = F8Touchable; 50 | -------------------------------------------------------------------------------- /f8app/js/common/img/back.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/back.android.png -------------------------------------------------------------------------------- /f8app/js/common/img/back.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/back.ios.png -------------------------------------------------------------------------------- /f8app/js/common/img/back@2x.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/back@2x.android.png -------------------------------------------------------------------------------- /f8app/js/common/img/back@2x.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/back@2x.ios.png -------------------------------------------------------------------------------- /f8app/js/common/img/back@3x.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/back@3x.android.png -------------------------------------------------------------------------------- /f8app/js/common/img/back@3x.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/back@3x.ios.png -------------------------------------------------------------------------------- /f8app/js/common/img/back_white.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/back_white.android.png -------------------------------------------------------------------------------- /f8app/js/common/img/back_white.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/back_white.ios.png -------------------------------------------------------------------------------- /f8app/js/common/img/back_white@2x.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/back_white@2x.android.png -------------------------------------------------------------------------------- /f8app/js/common/img/back_white@2x.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/back_white@2x.ios.png -------------------------------------------------------------------------------- /f8app/js/common/img/back_white@3x.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/back_white@3x.android.png -------------------------------------------------------------------------------- /f8app/js/common/img/back_white@3x.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/back_white@3x.ios.png -------------------------------------------------------------------------------- /f8app/js/common/img/disclosure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/disclosure.png -------------------------------------------------------------------------------- /f8app/js/common/img/disclosure@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/disclosure@2x.png -------------------------------------------------------------------------------- /f8app/js/common/img/disclosure@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/disclosure@3x.png -------------------------------------------------------------------------------- /f8app/js/common/img/f8-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/f8-logo.png -------------------------------------------------------------------------------- /f8app/js/common/img/f8-logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/f8-logo@2x.png -------------------------------------------------------------------------------- /f8app/js/common/img/f8-logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/f8-logo@3x.png -------------------------------------------------------------------------------- /f8app/js/common/img/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/filter.png -------------------------------------------------------------------------------- /f8app/js/common/img/filter@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/filter@2x.png -------------------------------------------------------------------------------- /f8app/js/common/img/filter@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/filter@3x.png -------------------------------------------------------------------------------- /f8app/js/common/img/hamburger-unread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/hamburger-unread.png -------------------------------------------------------------------------------- /f8app/js/common/img/hamburger-unread@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/hamburger-unread@2x.png -------------------------------------------------------------------------------- /f8app/js/common/img/hamburger-unread@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/hamburger-unread@3x.png -------------------------------------------------------------------------------- /f8app/js/common/img/hamburger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/hamburger.png -------------------------------------------------------------------------------- /f8app/js/common/img/hamburger@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/hamburger@2x.png -------------------------------------------------------------------------------- /f8app/js/common/img/hamburger@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/hamburger@3x.png -------------------------------------------------------------------------------- /f8app/js/common/img/x-white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/x-white@2x.png -------------------------------------------------------------------------------- /f8app/js/common/img/x-white@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/common/img/x-white@3x.png -------------------------------------------------------------------------------- /f8app/js/env.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */'use strict';var cov_nhuagpt34=function(){var path='env.js',hash='17512ccaca42b634bfad558147df0b1142f78d2a',global=new Function('return this')(),gcv='__coverage__',coverageData={path:'env.js',statementMap:{'0':{start:{line:27,column:0},end:{line:32,column:2}}},fnMap:{},branchMap:{},s:{'0':0},f:{},b:{},_coverageSchema:'332fd63041d2c1bcb487cc26dd0d5f7d97098a6c'},coverage=global[gcv]||(global[gcv]={});if(coverage[path]&&coverage[path].hash===hash){return coverage[path];}coverageData.hash=hash;return coverage[path]=coverageData;}();++cov_nhuagpt34.s[0];module.exports={testMenuEnabled:true,serverURL:'http://localhost:8080',version:323,fontFamily:undefined}; -------------------------------------------------------------------------------- /f8app/js/login/img/devconf-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/login/img/devconf-logo.png -------------------------------------------------------------------------------- /f8app/js/login/img/devconf-logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/login/img/devconf-logo@2x.png -------------------------------------------------------------------------------- /f8app/js/login/img/devconf-logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/login/img/devconf-logo@3x.png -------------------------------------------------------------------------------- /f8app/js/login/img/f-logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/login/img/f-logo@2x.png -------------------------------------------------------------------------------- /f8app/js/login/img/f-logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/login/img/f-logo@3x.png -------------------------------------------------------------------------------- /f8app/js/login/img/login-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/login/img/login-background.png -------------------------------------------------------------------------------- /f8app/js/login/img/login-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/login/img/login-background@2x.png -------------------------------------------------------------------------------- /f8app/js/login/img/login-background@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/login/img/login-background@3x.png -------------------------------------------------------------------------------- /f8app/js/login/img/x@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/login/img/x@2x.png -------------------------------------------------------------------------------- /f8app/js/login/img/x@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/login/img/x@3x.png -------------------------------------------------------------------------------- /f8app/js/rating/img/empty-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/rating/img/empty-star.png -------------------------------------------------------------------------------- /f8app/js/rating/img/empty-star@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/rating/img/empty-star@2x.png -------------------------------------------------------------------------------- /f8app/js/rating/img/empty-star@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/rating/img/empty-star@3x.png -------------------------------------------------------------------------------- /f8app/js/rating/img/full-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/rating/img/full-star.png -------------------------------------------------------------------------------- /f8app/js/rating/img/full-star@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/rating/img/full-star@2x.png -------------------------------------------------------------------------------- /f8app/js/rating/img/full-star@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/rating/img/full-star@3x.png -------------------------------------------------------------------------------- /f8app/js/rating/img/header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/rating/img/header.png -------------------------------------------------------------------------------- /f8app/js/rating/img/header@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/rating/img/header@2x.png -------------------------------------------------------------------------------- /f8app/js/rating/img/header@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/rating/img/header@3x.png -------------------------------------------------------------------------------- /f8app/js/reducers/createParseReducer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | import type { Action } from '../actions/types'; 28 | 29 | type Convert = (object: Object) => T; 30 | type Reducer = (state: ?Array, action: any) => Array; 31 | 32 | function createParseReducer( 33 | type: string, 34 | convert: Convert 35 | ): Reducer { 36 | return function(state: ?Array, action: Action): Array { 37 | if (action.type === type) { 38 | // Flow can't guarantee {type, list} is a valid action 39 | return (action: any).list.map(convert); 40 | } 41 | return state || []; 42 | }; 43 | } 44 | 45 | module.exports = createParseReducer; 46 | -------------------------------------------------------------------------------- /f8app/js/reducers/filter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | import type {Action} from '../actions/types'; 28 | 29 | export type FriendFilter = { 30 | id: string; 31 | name: string; 32 | schedule: {[key: string]: boolean}; 33 | }; 34 | 35 | export type TopicsFilter = { 36 | [key: string]: boolean; 37 | }; 38 | 39 | type State = TopicsFilter; 40 | 41 | function filter(state: State = {}, action: Action): State { 42 | if (action.type === 'APPLY_TOPICS_FILTER') { 43 | return action.topics; 44 | } 45 | if (action.type === 'CLEAR_FILTER') { 46 | return {}; 47 | } 48 | return state; 49 | } 50 | 51 | module.exports = filter; 52 | -------------------------------------------------------------------------------- /f8app/js/reducers/friendsSchedules.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | import type {Action} from '../actions/types'; 28 | 29 | export type FriendsSchedule = { 30 | id: string; 31 | name: string; 32 | schedule: {[key: string]: boolean}; 33 | }; 34 | 35 | type State = Array; 36 | 37 | function friendsSchedules(state: State = [], action: Action): State { 38 | if (action.type === 'LOADED_FRIENDS_SCHEDULES') { 39 | return action.list; 40 | } 41 | if (action.type === 'LOGGED_OUT') { 42 | return []; 43 | } 44 | return state; 45 | } 46 | 47 | module.exports = friendsSchedules; 48 | -------------------------------------------------------------------------------- /f8app/js/reducers/maps.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | const createParseReducer = require('./createParseReducer'); 28 | 29 | export type Map = { 30 | id: string; 31 | name: string; 32 | x1url: string; 33 | x2url: string; 34 | x3url: string; 35 | }; 36 | 37 | function fromParseObject(map: Object): Map { 38 | return { 39 | id: map.id, 40 | name: map.get('name'), 41 | x1url: map.get('x1') && map.get('x1').url(), 42 | x2url: map.get('x2') && map.get('x2').url(), 43 | x3url: map.get('x3') && map.get('x3').url(), 44 | }; 45 | } 46 | 47 | module.exports = createParseReducer('LOADED_MAPS', fromParseObject); 48 | -------------------------------------------------------------------------------- /f8app/js/reducers/navigation.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | import type {Action} from '../actions/types'; 28 | 29 | export type Tab = 30 | 'schedule' 31 | | 'my-schedule' 32 | | 'map' 33 | | 'notifications' 34 | | 'info' 35 | ; 36 | 37 | export type Day = 1 | 2; 38 | 39 | type State = { 40 | tab: Tab; 41 | day: Day; 42 | }; 43 | 44 | const initialState: State = { tab: 'schedule', day: 1 }; 45 | 46 | function navigation(state: State = initialState, action: Action): State { 47 | if (action.type === 'SWITCH_TAB') { 48 | return {...state, tab: action.tab}; 49 | } 50 | if (action.type === 'SWITCH_DAY') { 51 | return {...state, day: action.day}; 52 | } 53 | if (action.type === 'LOGGED_OUT') { 54 | return initialState; 55 | } 56 | return state; 57 | } 58 | 59 | module.exports = navigation; 60 | -------------------------------------------------------------------------------- /f8app/js/reducers/surveys.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | import type {Action} from '../actions/types'; 28 | 29 | export type Question = { 30 | text: string; 31 | lowLabel: string; 32 | highLabel: string; 33 | }; 34 | 35 | export type Survey = { 36 | id: string; 37 | sessionId: string; 38 | questions: Array; 39 | }; 40 | 41 | type State = Array; 42 | 43 | function surveys(state: State = [], action: Action): State { 44 | if (action.type === 'LOADED_SURVEYS') { 45 | return action.list; 46 | } 47 | if (action.type === 'SUBMITTED_SURVEY_ANSWERS') { 48 | const submittedSurveyId = action.id; 49 | return state.filter((survey) => survey.id !== submittedSurveyId); 50 | } 51 | if (action.type === 'LOGGED_OUT') { 52 | return []; 53 | } 54 | return state; 55 | } 56 | 57 | module.exports = surveys; 58 | -------------------------------------------------------------------------------- /f8app/js/tabs/img/drawer-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/img/drawer-header.png -------------------------------------------------------------------------------- /f8app/js/tabs/img/drawer-header@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/img/drawer-header@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/img/logo.png -------------------------------------------------------------------------------- /f8app/js/tabs/img/logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/img/logo@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/img/logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/img/logo@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/info/img/info-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/info/img/info-background.png -------------------------------------------------------------------------------- /f8app/js/tabs/info/img/info-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/info/img/info-background@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/info/img/info-icon-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/info/img/info-icon-active.png -------------------------------------------------------------------------------- /f8app/js/tabs/info/img/info-icon-active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/info/img/info-icon-active@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/info/img/info-icon-active@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/info/img/info-icon-active@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/info/img/info-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/info/img/info-icon.png -------------------------------------------------------------------------------- /f8app/js/tabs/info/img/info-icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/info/img/info-icon@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/info/img/info-icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/info/img/info-icon@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/maps/img/directions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/maps/img/directions.png -------------------------------------------------------------------------------- /f8app/js/tabs/maps/img/directions@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/maps/img/directions@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/maps/img/directions@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/maps/img/directions@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/maps/img/maps-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/maps/img/maps-background.png -------------------------------------------------------------------------------- /f8app/js/tabs/maps/img/maps-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/maps/img/maps-background@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/maps/img/maps-icon-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/maps/img/maps-icon-active.png -------------------------------------------------------------------------------- /f8app/js/tabs/maps/img/maps-icon-active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/maps/img/maps-icon-active@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/maps/img/maps-icon-active@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/maps/img/maps-icon-active@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/maps/img/maps-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/maps/img/maps-icon.png -------------------------------------------------------------------------------- /f8app/js/tabs/maps/img/maps-icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/maps/img/maps-icon@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/maps/img/maps-icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/maps/img/maps-icon@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/findSessionByURI.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @providesModule findSessionByURI 23 | * @flow 24 | */ 25 | 'use strict'; 26 | 27 | import type { Session } from '../../reducers/sessions'; 28 | 29 | function findSessionByURI(sessions: Array, uri: ?string): ?Session { 30 | if (!uri) { 31 | return null; 32 | } 33 | var slug = uri.replace('f8://', ''); 34 | for (var i = 0; i < sessions.length; i++) { 35 | var session = sessions[i]; 36 | if (session.slug === slug || session.id === slug) { 37 | return session; 38 | } 39 | } 40 | return null; 41 | } 42 | 43 | module.exports = findSessionByURI; 44 | -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/notifications-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/notifications-background.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/notifications-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/notifications-background@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/notifications-icon-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/notifications-icon-active.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/notifications-icon-active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/notifications-icon-active@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/notifications-icon-active@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/notifications-icon-active@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/notifications-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/notifications-icon.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/notifications-icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/notifications-icon@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/notifications-icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/notifications-icon@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/push-nux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/push-nux.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/push-nux@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/push-nux@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/push-nux@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/push-nux@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/smiley-face.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/smiley-face.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/smiley-face@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/smiley-face@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/img/smiley-face@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/notifications/img/smiley-face@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/notifications/unseenNotificationsCount.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 'use strict'; 25 | 26 | var allNotifications = require('./allNotifications'); 27 | var { createSelector } = require('reselect'); 28 | 29 | import type {Notification, SeenNotifications} from '../../reducers/notifications'; 30 | 31 | function unseenNotificationsCount(notifications: Array, seen: SeenNotifications): number { 32 | return notifications.filter((notification) => !seen[notification.id]).length; 33 | } 34 | 35 | module.exports = createSelector( 36 | allNotifications, 37 | (store) => store.notifications.seen, 38 | unseenNotificationsCount, 39 | ); 40 | -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/__tests__/formatDuration-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | jest.autoMockOff(); 28 | const formatDuration = require('../formatDuration'); 29 | 30 | describe('formatDuration', () => { 31 | it('formats duration', () => { 32 | expect(formatDuration(0, 3600000)).toEqual('1 hour'); 33 | expect(formatDuration(0, 7200000)).toEqual('2 hours'); 34 | expect(formatDuration(0, 1800000)).toEqual('30 min'); 35 | expect(formatDuration(0, 3601000)).toEqual('1 hour 1 min'); 36 | expect(formatDuration(0, 1427371200000)).toEqual('Until 12:00 pm'); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/__tests__/formatTime-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | jest.dontMock('../formatTime'); 28 | const formatTime = require('../formatTime'); 29 | 30 | describe('formatTime', () => { 31 | it('formats time', () => { 32 | expect(formatTime(1427371200000)).toEqual('12:00 PM'); 33 | expect(formatTime(1427373900000)).toEqual('12:45 PM'); 34 | }); 35 | }); 36 | -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/groupSessions.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 'use strict'; 25 | 26 | import type {Session} from '../../reducers/sessions'; 27 | 28 | const formatTime = require('./formatTime'); 29 | 30 | export type SessionsListData = { 31 | [time: string]: { 32 | [sessionID: string]: Session; 33 | }; 34 | }; 35 | 36 | function groupSessions(sessions: Array): SessionsListData { 37 | var data = {}; 38 | sessions.forEach((session) => { 39 | var timeSectionKey = session.allDay ? 'All Day' : formatTime(session.startTime); 40 | data[timeSectionKey] = data[timeSectionKey] || {}; 41 | data[timeSectionKey][session.id] = session; 42 | }); 43 | 44 | return data; 45 | } 46 | 47 | module.exports = groupSessions; 48 | -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/add.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/add@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/add@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/add@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/add@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/added-cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/added-cell.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/added-cell@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/added-cell@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/added-cell@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/added-cell@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/added-react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/added-react.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/added-react@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/added-react@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/added-react@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/added-react@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/added.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/added.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/added@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/added@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/added@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/added@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/filter.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/filter@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/filter@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/filter@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/filter@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/hacker-way@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/hacker-way@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/hacker-way@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/hacker-way@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/logout.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/logout@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/logout@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/logout@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/logout@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/my-f8-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/my-f8-background.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/my-f8-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/my-f8-background@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/my-schedule-icon-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/my-schedule-icon-active.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/my-schedule-icon-active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/my-schedule-icon-active@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/my-schedule-icon-active@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/my-schedule-icon-active@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/my-schedule-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/my-schedule-icon.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/my-schedule-icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/my-schedule-icon@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/my-schedule-icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/my-schedule-icon@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/no-friends-found.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/no-friends-found.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/no-friends-found@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/no-friends-found@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/no-friends-found@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/no-friends-found@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/no-sessions-added.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/no-sessions-added.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/no-sessions-added@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/no-sessions-added@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/no-sessions-added@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/no-sessions-added@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/profile.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/profile@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/profile@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/profile@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/profile@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-background.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-background@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-icon-1-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-icon-1-active.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-icon-1-active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-icon-1-active@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-icon-1-active@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-icon-1-active@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-icon-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-icon-1.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-icon-1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-icon-1@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-icon-1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-icon-1@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-icon-2-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-icon-2-active.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-icon-2-active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-icon-2-active@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-icon-2-active@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-icon-2-active@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-icon-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-icon-2.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-icon-2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-icon-2@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/schedule-icon-2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/schedule-icon-2@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/settings.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/settings@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/settings@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/settings@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/settings@3x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/share.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/share.android.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/share.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/share.ios.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/share@2x.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/share@2x.android.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/share@2x.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/share@2x.ios.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/share@3x.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/share@3x.android.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/share@3x.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/share@3x.ios.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/sharing-nux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/sharing-nux.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/sharing-nux@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/sharing-nux@2x.png -------------------------------------------------------------------------------- /f8app/js/tabs/schedule/img/sharing-nux@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app/js/tabs/schedule/img/sharing-nux@3x.png -------------------------------------------------------------------------------- /f8app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "F8v2", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "babel-node ./server/server.js", 7 | "import-data": "babel-node ./scripts/import-data-from-parse.js", 8 | "update-schema": "babel-node ./server/schema/updateSchema.js", 9 | "test": "jest", 10 | "lint": "eslint ." 11 | }, 12 | "dependencies": { 13 | "art": "~0.10.1", 14 | "babel-cli": "~6.10.1", 15 | "babel-relay-plugin": "~0.9.1", 16 | "crc32": "~0.2.2", 17 | "express": "~4.14.0", 18 | "express-graphql": "~0.5.3", 19 | "graphql-relay": "~0.4.2", 20 | "moment": "~2.13.0", 21 | "parse": "~1.8.2", 22 | "parse-dashboard": "~1.0.8", 23 | "parse-server": "~2.2.6", 24 | "react": "~15.1.0", 25 | "react-native": "0.28.0", 26 | "react-native-code-push": "~1.12.2-beta", 27 | "react-native-fbsdk": "^0.3.0", 28 | "react-native-linear-gradient": "~1.5.0", 29 | "react-native-push-notification": "frantic/react-native-push-notification#7142da7", 30 | "react-native-send-intent": "~1.0.7", 31 | "react-native-share": "frantic/react-native-share#674df947b3", 32 | "react-redux": "~4.4.5", 33 | "react-relay": "~0.9.1", 34 | "react-timer-mixin": "~0.13.3", 35 | "redux": "~3.5.2", 36 | "redux-logger": "~2.6.1", 37 | "redux-persist": "~3.2.2", 38 | "redux-thunk": "~2.1.0", 39 | "reselect": "~2.5.1" 40 | }, 41 | "devDependencies": { 42 | "babel-eslint": "~6.1.0", 43 | "babel-jest": "~13.0.0", 44 | "babel-polyfill": "~6.9.1", 45 | "eslint": "~2.13.1", 46 | "eslint-plugin-react": "~5.2.2", 47 | "jest-cli": "~13.0.0" 48 | }, 49 | "jest": { 50 | "haste": { 51 | "defaultPlatform": "ios", 52 | "platforms": [ 53 | "ios", 54 | "android" 55 | ], 56 | "providesModuleNodeModules": [ 57 | "react-native" 58 | ] 59 | } 60 | }, 61 | "engines": { 62 | "node": ">=5.0", 63 | "npm": ">=3.0" 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /f8app/scripts/optimize-images.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2016 Facebook, Inc. 4 | # 5 | # You are hereby granted a non-exclusive, worldwide, royalty-free license to 6 | # use, copy, modify, and distribute this software in source code or binary 7 | # form for use in connection with the web services and APIs provided by 8 | # Facebook. 9 | # 10 | # As with any software that integrates with the Facebook platform, your use 11 | # of this software is subject to the Facebook Developer Principles and 12 | # Policies [http://developers.facebook.com/policy/]. This copyright notice 13 | # shall be included in all 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 18 | # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 | # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 | # DEALINGS IN THE SOFTWARE 22 | 23 | find js -name '*.png' -exec pngcrush -ow {} \; 24 | -------------------------------------------------------------------------------- /f8app/scripts/store-ip.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2016 Facebook, Inc. 4 | # 5 | # You are hereby granted a non-exclusive, worldwide, royalty-free license to 6 | # use, copy, modify, and distribute this software in source code or binary 7 | # form for use in connection with the web services and APIs provided by 8 | # Facebook. 9 | # 10 | # As with any software that integrates with the Facebook platform, your use 11 | # of this software is subject to the Facebook Developer Principles and 12 | # Policies [http://developers.facebook.com/policy/]. This copyright notice 13 | # shall be included in all 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 18 | # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 | # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 | # DEALINGS IN THE SOFTWARE 22 | 23 | DEST="$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH" 24 | 25 | if [[ "$CONFIGURATION" = "Debug" ]]; then 26 | if [[ "$PLATFORM_NAME" != "iphonesimulator" ]]; then 27 | ipconfig getifaddr en0 > "$DEST/ip.txt" 28 | fi 29 | fi 30 | -------------------------------------------------------------------------------- /f8app/server/cloud.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | */ 22 | 23 | require('./cloud/friends'); 24 | require('./cloud/surveys'); 25 | require('./cloud/tests'); 26 | -------------------------------------------------------------------------------- /f8app/server/cloud/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | */ 22 | 23 | 'use strict'; 24 | 25 | require('cloud/surveys.js'); 26 | require('cloud/friends.js'); 27 | require('cloud/tests.js'); 28 | -------------------------------------------------------------------------------- /f8app/server/schema/babelRelayPlugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | */ 23 | 24 | 'use strict'; 25 | 26 | const getBabelRelayPlugin = require('babel-relay-plugin'); 27 | const schema = require('./schema.json'); 28 | 29 | module.exports = getBabelRelayPlugin(schema.data); 30 | -------------------------------------------------------------------------------- /f8app/server/schema/schema.graphql: -------------------------------------------------------------------------------- 1 | input AddToScheduleInput { 2 | sessionId: ID! 3 | clientMutationId: String! 4 | } 5 | 6 | type AddToSchedulePayload { 7 | session: Session 8 | clientMutationId: String! 9 | } 10 | 11 | type Config { 12 | wifiNetwork: String 13 | wifiPassword: String 14 | } 15 | 16 | type FAQ implements Node { 17 | id: ID! 18 | question: String 19 | answer: String 20 | } 21 | 22 | type Friend { 23 | id: ID 24 | name: String 25 | picture: String 26 | schedule: [Session] 27 | } 28 | 29 | type Map { 30 | id: ID! 31 | name: String 32 | map: String 33 | } 34 | 35 | type Mutation { 36 | addToSchedule(input: AddToScheduleInput!): AddToSchedulePayload 37 | } 38 | 39 | interface Node { 40 | id: ID! 41 | } 42 | 43 | type Notification { 44 | id: ID! 45 | text: String 46 | url: String 47 | time: Float 48 | } 49 | 50 | type Page implements Node { 51 | id: ID! 52 | title: String 53 | url: String 54 | logo: String 55 | } 56 | 57 | type Query { 58 | node(id: ID!): Node 59 | viewer: User 60 | schedule: [Session] 61 | } 62 | 63 | type Session implements Node { 64 | id: ID! 65 | title: String 66 | slug: String 67 | day: Int 68 | startTime: Float 69 | endTime: Float 70 | location: Map 71 | description: String 72 | speakers: [Speaker] 73 | isAdded: Boolean 74 | friends: [Friend] 75 | } 76 | 77 | type Speaker implements Node { 78 | id: ID! 79 | name: String 80 | title: String 81 | picture: String 82 | } 83 | 84 | type User implements Node { 85 | id: ID! 86 | name: String 87 | friends: [Friend] 88 | notifications: [Notification] 89 | faqs: [FAQ] 90 | pages: [Page] 91 | config: Config 92 | } 93 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .idea 3 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/index.js: -------------------------------------------------------------------------------- 1 | var express = require('express'), 2 | im = require('istanbul-middleware'), 3 | isCoverageEnabled = true, 4 | app = express(), 5 | port = 8889; 6 | 7 | // add the coverage handler 8 | console.log('Coverage reporting at /coverage'); 9 | app.use('/coverage', im.createHandler({ verbose: true, resetOnGet: true })); 10 | 11 | console.log('Starting server at: http://localhost:' + port); 12 | app.listen(port); 13 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/instrument_js.sh: -------------------------------------------------------------------------------- 1 | ORIGIN_DIR="js" 2 | INSTRUMENTED_DIR="../f8app/js" 3 | 4 | echo "Instrumenting js files from ${ORIGIN_DIR} to ${INSTRUMENTED_DIR}" 5 | nyc instrument ${ORIGIN_DIR} ${INSTRUMENTED_DIR} 6 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/actions/config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | const Parse = require('parse/react-native'); 28 | const InteractionManager = require('InteractionManager'); 29 | 30 | import type { Action } from './types'; 31 | 32 | async function loadConfig(): Promise { 33 | const config = await Parse.Config.get(); 34 | await InteractionManager.runAfterInteractions(); 35 | return { 36 | type: 'LOADED_CONFIG', 37 | config, 38 | }; 39 | } 40 | 41 | module.exports = {loadConfig}; 42 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/actions/filter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | import type { Action } from './types'; 28 | 29 | type Schedule = {[key: string]: boolean}; 30 | 31 | function applyTopicsFilter(topics: Schedule): Action { 32 | return { 33 | type: 'APPLY_TOPICS_FILTER', 34 | topics, 35 | }; 36 | } 37 | 38 | function clearFilter(): Action { 39 | return { 40 | type: 'CLEAR_FILTER', 41 | }; 42 | } 43 | 44 | module.exports = {applyTopicsFilter, clearFilter}; 45 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/actions/navigation.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | import type { Action } from './types'; 28 | 29 | type Tab = 'schedule' | 'my-schedule' | 'map' | 'notifications' | 'info'; 30 | 31 | module.exports = { 32 | switchTab: (tab: Tab): Action => ({ 33 | type: 'SWITCH_TAB', 34 | tab, 35 | }), 36 | 37 | switchDay: (day: 1 | 2): Action => ({ 38 | type: 'SWITCH_DAY', 39 | day, 40 | }), 41 | }; 42 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/actions/surveys.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | const Parse = require('parse/react-native'); 28 | 29 | import type { Action } from './types'; 30 | 31 | async function loadSurveys(): Promise { 32 | const list = await Parse.Cloud.run('surveys'); 33 | return { 34 | type: 'LOADED_SURVEYS', 35 | list, 36 | }; 37 | } 38 | 39 | async function submitSurveyAnswers(id: string, answers: Array): Promise { 40 | await Parse.Cloud.run('submit_survey', {id, answers}); 41 | return { 42 | type: 'SUBMITTED_SURVEY_ANSWERS', 43 | id, 44 | }; 45 | } 46 | 47 | module.exports = { 48 | loadSurveys, 49 | submitSurveyAnswers, 50 | }; 51 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/BackButtonIcon.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | var Platform = require('Platform'); 28 | 29 | if (Platform.OS === 'ios') { 30 | module.exports = require('./img/x-white.png'); 31 | } else { 32 | module.exports = require('./img/back_white.png'); 33 | } 34 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/F8StyleSheet.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @providesModule F8StyleSheet 23 | * @flow 24 | */ 25 | 26 | 'use strict'; 27 | 28 | import {StyleSheet, Platform} from 'react-native'; 29 | 30 | export function create(styles: Object): {[name: string]: number} { 31 | const platformStyles = {}; 32 | Object.keys(styles).forEach((name) => { 33 | let {ios, android, ...style} = {...styles[name]}; 34 | if (ios && Platform.OS === 'ios') { 35 | style = {...style, ...ios}; 36 | } 37 | if (android && Platform.OS === 'android') { 38 | style = {...style, ...android}; 39 | } 40 | platformStyles[name] = style; 41 | }); 42 | return StyleSheet.create(platformStyles); 43 | } 44 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/F8Touchable.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @providesModule F8Touchable 23 | * @flow 24 | */ 25 | 26 | 'use strict'; 27 | 28 | import React from 'react'; 29 | import { 30 | TouchableHighlight, 31 | TouchableNativeFeedback, 32 | Platform, 33 | } from 'react-native'; 34 | 35 | function F8TouchableIOS(props: Object): ReactElement { 36 | return ( 37 | 42 | ); 43 | } 44 | 45 | const F8Touchable = Platform.OS === 'android' 46 | ? TouchableNativeFeedback 47 | : F8TouchableIOS; 48 | 49 | module.exports = F8Touchable; 50 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/ProfilePicture.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 'use strict'; 25 | 26 | var Image = require('Image'); 27 | var React = require('React'); 28 | var PixelRatio = require('PixelRatio'); 29 | 30 | class ProfilePicture extends React.Component { 31 | props: { 32 | userID: string; 33 | size: number; 34 | }; 35 | 36 | render() { 37 | const {userID, size} = this.props; 38 | const scaledSize = size * PixelRatio.get(); 39 | const uri = `http://graph.facebook.com/${userID}/picture?width=${scaledSize}&height=${scaledSize}`; 40 | return ( 41 | 49 | ); 50 | } 51 | } 52 | 53 | module.exports = ProfilePicture; 54 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/back.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/back.android.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/back.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/back.ios.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/back@2x.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/back@2x.android.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/back@2x.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/back@2x.ios.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/back@3x.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/back@3x.android.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/back@3x.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/back@3x.ios.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/back_white.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/back_white.android.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/back_white.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/back_white.ios.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/back_white@2x.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/back_white@2x.android.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/back_white@2x.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/back_white@2x.ios.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/back_white@3x.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/back_white@3x.android.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/back_white@3x.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/back_white@3x.ios.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/disclosure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/disclosure.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/disclosure@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/disclosure@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/disclosure@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/disclosure@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/f8-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/f8-logo.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/f8-logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/f8-logo@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/f8-logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/f8-logo@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/filter.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/filter@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/filter@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/filter@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/filter@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/hamburger-unread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/hamburger-unread.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/hamburger-unread@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/hamburger-unread@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/hamburger-unread@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/hamburger-unread@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/hamburger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/hamburger.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/hamburger@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/hamburger@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/hamburger@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/hamburger@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/x-white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/x-white@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/common/img/x-white@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/common/img/x-white@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/env.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | module.exports = { 28 | testMenuEnabled: true, 29 | serverURL: 'http://localhost:8080', 30 | version: 323, 31 | fontFamily: undefined, 32 | }; 33 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/flow-lib.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | /* eslint no-unused-vars:0 */ 28 | declare var jest: any; 29 | declare var jasmine: any; 30 | declare var describe: (name: string, callback: () => void) => void; 31 | declare var it: (name: string, callback: () => void) => void; 32 | declare var expect: any; 33 | 34 | declare module 'react-native-linear-gradient' { 35 | declare var exports: any; 36 | } 37 | 38 | declare module 'react-native-push-notification' { 39 | declare var exports: any; 40 | } 41 | 42 | declare var requestAnimationFrame: (callback: () => void) => number; 43 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/login/img/devconf-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/login/img/devconf-logo.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/login/img/devconf-logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/login/img/devconf-logo@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/login/img/devconf-logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/login/img/devconf-logo@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/login/img/f-logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/login/img/f-logo@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/login/img/f-logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/login/img/f-logo@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/login/img/login-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/login/img/login-background.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/login/img/login-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/login/img/login-background@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/login/img/login-background@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/login/img/login-background@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/login/img/x@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/login/img/x@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/login/img/x@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/login/img/x@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/rating/img/empty-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/rating/img/empty-star.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/rating/img/empty-star@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/rating/img/empty-star@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/rating/img/empty-star@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/rating/img/empty-star@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/rating/img/full-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/rating/img/full-star.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/rating/img/full-star@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/rating/img/full-star@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/rating/img/full-star@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/rating/img/full-star@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/rating/img/header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/rating/img/header.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/rating/img/header@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/rating/img/header@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/rating/img/header@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/rating/img/header@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/reducers/__mocks__/parse.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | class ParseObjectMock { 28 | id: string; 29 | createdAt: Date; 30 | _fields: Object; 31 | 32 | constructor(fields: Object) { 33 | this._fields = fields; 34 | this.id = Math.ceil(Math.random() * 0xFFFFFF).toString(16); 35 | this.createdAt = new Date(); 36 | } 37 | 38 | get(name: string): any { 39 | return this._fields[name]; 40 | } 41 | } 42 | 43 | class ParseFileMock { 44 | _url: string; 45 | 46 | constructor(url: string) { 47 | this._url = url; 48 | } 49 | 50 | url(): string { 51 | return this._url; 52 | } 53 | } 54 | 55 | module.exports = { 56 | Object: ParseObjectMock, 57 | File: ParseFileMock, 58 | }; 59 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/reducers/createParseReducer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | import type { Action } from '../actions/types'; 28 | 29 | type Convert = (object: Object) => T; 30 | type Reducer = (state: ?Array, action: any) => Array; 31 | 32 | function createParseReducer( 33 | type: string, 34 | convert: Convert 35 | ): Reducer { 36 | return function(state: ?Array, action: Action): Array { 37 | if (action.type === type) { 38 | // Flow can't guarantee {type, list} is a valid action 39 | return (action: any).list.map(convert); 40 | } 41 | return state || []; 42 | }; 43 | } 44 | 45 | module.exports = createParseReducer; 46 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/reducers/filter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | import type {Action} from '../actions/types'; 28 | 29 | export type FriendFilter = { 30 | id: string; 31 | name: string; 32 | schedule: {[key: string]: boolean}; 33 | }; 34 | 35 | export type TopicsFilter = { 36 | [key: string]: boolean; 37 | }; 38 | 39 | type State = TopicsFilter; 40 | 41 | function filter(state: State = {}, action: Action): State { 42 | if (action.type === 'APPLY_TOPICS_FILTER') { 43 | return action.topics; 44 | } 45 | if (action.type === 'CLEAR_FILTER') { 46 | return {}; 47 | } 48 | return state; 49 | } 50 | 51 | module.exports = filter; 52 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/reducers/friendsSchedules.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | import type {Action} from '../actions/types'; 28 | 29 | export type FriendsSchedule = { 30 | id: string; 31 | name: string; 32 | schedule: {[key: string]: boolean}; 33 | }; 34 | 35 | type State = Array; 36 | 37 | function friendsSchedules(state: State = [], action: Action): State { 38 | if (action.type === 'LOADED_FRIENDS_SCHEDULES') { 39 | return action.list; 40 | } 41 | if (action.type === 'LOGGED_OUT') { 42 | return []; 43 | } 44 | return state; 45 | } 46 | 47 | module.exports = friendsSchedules; 48 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/reducers/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | var { combineReducers } = require('redux'); 28 | 29 | module.exports = combineReducers({ 30 | config: require('./config'), 31 | notifications: require('./notifications'), 32 | maps: require('./maps'), 33 | sessions: require('./sessions'), 34 | user: require('./user'), 35 | schedule: require('./schedule'), 36 | topics: require('./topics'), 37 | filter: require('./filter'), 38 | navigation: require('./navigation'), 39 | friendsSchedules: require('./friendsSchedules'), 40 | surveys: require('./surveys'), 41 | }); 42 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/reducers/maps.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | const createParseReducer = require('./createParseReducer'); 28 | 29 | export type Map = { 30 | id: string; 31 | name: string; 32 | x1url: string; 33 | x2url: string; 34 | x3url: string; 35 | }; 36 | 37 | function fromParseObject(map: Object): Map { 38 | return { 39 | id: map.id, 40 | name: map.get('name'), 41 | x1url: map.get('x1') && map.get('x1').url(), 42 | x2url: map.get('x2') && map.get('x2').url(), 43 | x3url: map.get('x3') && map.get('x3').url(), 44 | }; 45 | } 46 | 47 | module.exports = createParseReducer('LOADED_MAPS', fromParseObject); 48 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/reducers/topics.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | type State = Array; 28 | type Action = { type: string; list: Array; }; 29 | 30 | function topics(state: State = [], action: Action): State { 31 | if (action.type === 'LOADED_SESSIONS') { 32 | var topicsMap = Object.create(null); 33 | action.list.forEach((session) => { 34 | var tags = session.get('tags') || []; 35 | tags.forEach((tag) => { 36 | topicsMap[tag] = true; 37 | }); 38 | }); 39 | return Object.keys(topicsMap).sort(); 40 | } 41 | return state; 42 | } 43 | 44 | module.exports = topics; 45 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/store/analytics.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | */ 22 | 23 | 'use strict'; 24 | 25 | const track = require('./track'); 26 | 27 | module.exports = store => next => action => { 28 | track(action); 29 | return next(action); 30 | }; 31 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/store/array.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | */ 22 | 23 | 'use strict'; 24 | 25 | module.exports = store => next => action => 26 | Array.isArray(action) 27 | ? action.map(next) 28 | : next(action); 29 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/store/promise.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | */ 22 | 23 | 'use strict'; 24 | 25 | function warn(error) { 26 | console.warn(error.message || error); 27 | throw error; // To let the caller handle the rejection 28 | } 29 | 30 | module.exports = store => next => action => 31 | typeof action.then === 'function' 32 | ? Promise.resolve(action).then(next, warn) 33 | : next(action); 34 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/img/drawer-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/img/drawer-header.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/img/drawer-header@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/img/drawer-header@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/img/logo.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/img/logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/img/logo@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/img/logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/img/logo@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/info/img/info-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/info/img/info-background.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/info/img/info-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/info/img/info-background@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/info/img/info-icon-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/info/img/info-icon-active.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/info/img/info-icon-active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/info/img/info-icon-active@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/info/img/info-icon-active@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/info/img/info-icon-active@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/info/img/info-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/info/img/info-icon.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/info/img/info-icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/info/img/info-icon@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/info/img/info-icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/info/img/info-icon@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/maps/img/directions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/maps/img/directions.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/maps/img/directions@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/maps/img/directions@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/maps/img/directions@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/maps/img/directions@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/maps/img/maps-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/maps/img/maps-background.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/maps/img/maps-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/maps/img/maps-background@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/maps/img/maps-icon-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/maps/img/maps-icon-active.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/maps/img/maps-icon-active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/maps/img/maps-icon-active@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/maps/img/maps-icon-active@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/maps/img/maps-icon-active@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/maps/img/maps-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/maps/img/maps-icon.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/maps/img/maps-icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/maps/img/maps-icon@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/maps/img/maps-icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/maps/img/maps-icon@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/findSessionByURI.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @providesModule findSessionByURI 23 | * @flow 24 | */ 25 | 'use strict'; 26 | 27 | import type { Session } from '../../reducers/sessions'; 28 | 29 | function findSessionByURI(sessions: Array, uri: ?string): ?Session { 30 | if (!uri) { 31 | return null; 32 | } 33 | var slug = uri.replace('f8://', ''); 34 | for (var i = 0; i < sessions.length; i++) { 35 | var session = sessions[i]; 36 | if (session.slug === slug || session.id === slug) { 37 | return session; 38 | } 39 | } 40 | return null; 41 | } 42 | 43 | module.exports = findSessionByURI; 44 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/notifications-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/notifications-background.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/notifications-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/notifications-background@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/notifications-icon-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/notifications-icon-active.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/notifications-icon-active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/notifications-icon-active@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/notifications-icon-active@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/notifications-icon-active@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/notifications-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/notifications-icon.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/notifications-icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/notifications-icon@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/notifications-icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/notifications-icon@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/push-nux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/push-nux.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/push-nux@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/push-nux@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/push-nux@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/push-nux@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/smiley-face.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/smiley-face.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/smiley-face@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/smiley-face@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/img/smiley-face@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/notifications/img/smiley-face@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/notifications/unseenNotificationsCount.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 'use strict'; 25 | 26 | var allNotifications = require('./allNotifications'); 27 | var { createSelector } = require('reselect'); 28 | 29 | import type {Notification, SeenNotifications} from '../../reducers/notifications'; 30 | 31 | function unseenNotificationsCount(notifications: Array, seen: SeenNotifications): number { 32 | return notifications.filter((notification) => !seen[notification.id]).length; 33 | } 34 | 35 | module.exports = createSelector( 36 | allNotifications, 37 | (store) => store.notifications.seen, 38 | unseenNotificationsCount, 39 | ); 40 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/ProfileButton.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 'use strict'; 25 | 26 | const React = require('react'); 27 | const { 28 | Image, 29 | StyleSheet, 30 | } = require('react-native'); 31 | 32 | 33 | class ProfileButton extends React.Component { 34 | render() { 35 | return ( 36 | 40 | ); 41 | } 42 | } 43 | 44 | var styles = StyleSheet.create({ 45 | profilePic: { 46 | width: 30, 47 | height: 30, 48 | borderRadius: 15, 49 | }, 50 | }); 51 | 52 | module.exports = ProfileButton; 53 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/__tests__/formatDuration-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | jest.autoMockOff(); 28 | const formatDuration = require('../formatDuration'); 29 | 30 | describe('formatDuration', () => { 31 | it('formats duration', () => { 32 | expect(formatDuration(0, 3600000)).toEqual('1 hour'); 33 | expect(formatDuration(0, 7200000)).toEqual('2 hours'); 34 | expect(formatDuration(0, 1800000)).toEqual('30 min'); 35 | expect(formatDuration(0, 3601000)).toEqual('1 hour 1 min'); 36 | expect(formatDuration(0, 1427371200000)).toEqual('Until 12:00 pm'); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/__tests__/formatTime-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 25 | 'use strict'; 26 | 27 | jest.dontMock('../formatTime'); 28 | const formatTime = require('../formatTime'); 29 | 30 | describe('formatTime', () => { 31 | it('formats time', () => { 32 | expect(formatTime(1427371200000)).toEqual('12:00 PM'); 33 | expect(formatTime(1427373900000)).toEqual('12:45 PM'); 34 | }); 35 | }); 36 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/formatTime.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 'use strict'; 25 | 26 | function formatTime(unix: number): string { 27 | var date = new Date(unix); 28 | var hours = date.getUTCHours(); 29 | var minutes = date.getUTCMinutes(); 30 | var ampm = hours >= 12 ? 'PM' : 'AM'; 31 | hours = hours % 12; 32 | hours = hours ? hours : 12; 33 | minutes = minutes < 10 ? '0' + minutes : minutes; 34 | var strTime = hours + ':' + minutes; 35 | 36 | return strTime + ' ' + ampm; 37 | } 38 | 39 | module.exports = formatTime; 40 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/groupSessions.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 Facebook, Inc. 3 | * 4 | * You are hereby granted a non-exclusive, worldwide, royalty-free license to 5 | * use, copy, modify, and distribute this software in source code or binary 6 | * form for use in connection with the web services and APIs provided by 7 | * Facebook. 8 | * 9 | * As with any software that integrates with the Facebook platform, your use 10 | * of this software is subject to the Facebook Developer Principles and 11 | * Policies [http://developers.facebook.com/policy/]. This copyright notice 12 | * shall be included in all copies or substantial portions of the software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | * DEALINGS IN THE SOFTWARE 21 | * 22 | * @flow 23 | */ 24 | 'use strict'; 25 | 26 | import type {Session} from '../../reducers/sessions'; 27 | 28 | const formatTime = require('./formatTime'); 29 | 30 | export type SessionsListData = { 31 | [time: string]: { 32 | [sessionID: string]: Session; 33 | }; 34 | }; 35 | 36 | function groupSessions(sessions: Array): SessionsListData { 37 | var data = {}; 38 | sessions.forEach((session) => { 39 | var timeSectionKey = session.allDay ? 'All Day' : formatTime(session.startTime); 40 | data[timeSectionKey] = data[timeSectionKey] || {}; 41 | data[timeSectionKey][session.id] = session; 42 | }); 43 | 44 | return data; 45 | } 46 | 47 | module.exports = groupSessions; 48 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/add.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/add@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/add@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/add@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/add@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/added-cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/added-cell.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/added-cell@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/added-cell@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/added-cell@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/added-cell@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/added-react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/added-react.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/added-react@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/added-react@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/added-react@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/added-react@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/added.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/added.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/added@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/added@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/added@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/added@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/filter.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/filter@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/filter@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/filter@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/filter@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/hacker-way@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/hacker-way@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/hacker-way@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/hacker-way@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/logout.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/logout@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/logout@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/logout@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/logout@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/my-f8-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/my-f8-background.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/my-f8-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/my-f8-background@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/my-schedule-icon-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/my-schedule-icon-active.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/my-schedule-icon-active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/my-schedule-icon-active@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/my-schedule-icon-active@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/my-schedule-icon-active@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/my-schedule-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/my-schedule-icon.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/my-schedule-icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/my-schedule-icon@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/my-schedule-icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/my-schedule-icon@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/no-friends-found.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/no-friends-found.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/no-friends-found@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/no-friends-found@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/no-friends-found@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/no-friends-found@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/no-sessions-added.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/no-sessions-added.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/no-sessions-added@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/no-sessions-added@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/no-sessions-added@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/no-sessions-added@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/profile.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/profile@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/profile@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/profile@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/profile@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-background.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-background@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-1-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-1-active.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-1-active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-1-active@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-1-active@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-1-active@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-1.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-1@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-1@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-2-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-2-active.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-2-active@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-2-active@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-2-active@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-2-active@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-2.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-2@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-2@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/schedule-icon-2@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/settings.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/settings@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/settings@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/settings@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/settings@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/share.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/share.android.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/share.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/share.ios.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/share@2x.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/share@2x.android.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/share@2x.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/share@2x.ios.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/share@3x.android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/share@3x.android.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/share@3x.ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/share@3x.ios.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/sharing-nux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/sharing-nux.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/sharing-nux@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/sharing-nux@2x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/js/tabs/schedule/img/sharing-nux@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenhengjie123/f8app_coverage_demo/f5bb440b7f827197450616e06e3274afd2b03e9c/f8app_coverage_middleware/js/tabs/schedule/img/sharing-nux@3x.png -------------------------------------------------------------------------------- /f8app_coverage_middleware/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "app", 3 | "version": "0.0.1", 4 | "description": "Test app for istanbul middleware with react-native", 5 | "dependencies": { 6 | "express": "4.x", 7 | "body-parser": "~1.4.3", 8 | "istanbul-middleware": "*" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /f8app_coverage_middleware/start_middleware.sh: -------------------------------------------------------------------------------- 1 | node index 2 | --------------------------------------------------------------------------------