diff --git a/ios/Podfile b/ios/Podfile index ed8f1f3dc..8752203dd 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -25,6 +25,7 @@ target 'JitsiMeet' do :path => '../node_modules/react-native-keep-awake' pod 'react-native-webrtc', :path => '../node_modules/react-native-webrtc' pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons' + pod 'RNWatch', :path => '../node_modules/react-native-watch-connectivity' end post_install do |installer| diff --git a/ios/sdk/sdk.xcodeproj/project.pbxproj b/ios/sdk/sdk.xcodeproj/project.pbxproj index 742297b16..eea39aad1 100644 --- a/ios/sdk/sdk.xcodeproj/project.pbxproj +++ b/ios/sdk/sdk.xcodeproj/project.pbxproj @@ -236,13 +236,16 @@ files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-JitsiMeet-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; C7BC10B338C94EEB98048E64 /* [CP] Copy Pods Resources */ = { @@ -251,9 +254,21 @@ files = ( ); inputPaths = ( + "${SRCROOT}/../Pods/Target Support Files/Pods-JitsiMeet/Pods-JitsiMeet-resources.sh", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", ); name = "[CP] Copy Pods Resources"; outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; diff --git a/package.json b/package.json index 1f748b2a4..cf1f24182 100644 --- a/package.json +++ b/package.json @@ -38,11 +38,11 @@ "i18next": "8.4.3", "i18next-browser-languagedetector": "2.0.0", "i18next-xhr-backend": "1.4.2", + "jQuery-Impromptu": "trentrichardson/jQuery-Impromptu#v6.0.0", "jitsi-meet-logger": "jitsi/jitsi-meet-logger", "jquery": "2.1.4", "jquery-contextmenu": "2.4.5", "jquery-i18next": "1.2.0", - "jQuery-Impromptu": "trentrichardson/jQuery-Impromptu#v6.0.0", "jquery-ui": "1.10.5", "jssha": "2.2.0", "jwt-decode": "2.2.0", @@ -64,6 +64,7 @@ "react-native-locale-detector": "1.0.1", "react-native-prompt": "1.0.0", "react-native-vector-icons": "4.3.0", + "react-native-watch-connectivity": "saghul/react-native-watch-connectivity#podspec-module", "react-native-webrtc": "jitsi/react-native-webrtc", "react-redux": "5.0.6", "redux": "3.7.2", diff --git a/react/features/mobile/watchos/index.js b/react/features/mobile/watchos/index.js new file mode 100644 index 000000000..d43689289 --- /dev/null +++ b/react/features/mobile/watchos/index.js @@ -0,0 +1 @@ +import './middleware'; diff --git a/react/features/mobile/watchos/middleware.js b/react/features/mobile/watchos/middleware.js new file mode 100644 index 000000000..a42cfc4a8 --- /dev/null +++ b/react/features/mobile/watchos/middleware.js @@ -0,0 +1,51 @@ +/* @flow */ + +import { Platform } from 'react-native'; +import * as watch from 'react-native-watch-connectivity'; + +import { APP_WILL_MOUNT, APP_WILL_UNMOUNT } from '../../app'; +import { + CONFERENCE_FAILED, + CONFERENCE_LEFT, + CONFERENCE_WILL_JOIN, +} from '../../base/conference'; +import { MiddlewareRegistry } from '../../base/redux'; + + +/** + * Middleware that captures conference actions and sets the correct audio mode + * based on the type of conference. Audio-only conferences don't use the speaker + * by default, and video conferences do. + * + * @param {Store} store - The redux store. + * @returns {Function} + */ +MiddlewareRegistry.register(({ getState }) => next => action => { + const result = next(action); + + if (Platform.OS !== 'ios') { + return result; + } + + switch (action.type) { + case APP_WILL_MOUNT: { + watch.subscribeToWatchState((err, watchState) => { + if (!err) { + console.log('watchState', watchState); + } else { + console.log('ERROR getting watchState'); + } + }); + break; + } + case APP_WILL_UNMOUNT: + break; + case CONFERENCE_FAILED: + case CONFERENCE_LEFT: + break; + case CONFERENCE_WILL_JOIN: + break; + } + + return result; +});