diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..46c45b1 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,12 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "plugins": [ + "@typescript-eslint" + ], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended" + ] +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index c5464d9..0b76e55 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,5 @@ local.properties buck-out/ \.buckd/ *.keystore + +dist \ No newline at end of file diff --git a/README.md b/README.md index 0c09f04..04fc5e1 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,13 @@ Alarm clock functionality for react native ios and android built using [react-na ## Installing (React Native >= 0.60.0) -`npm install --save react-native-simple-alarm` +Under the hood this library is using react-native-push-notification, @react-native-community/async-storage, and @react-native-community/push-notification-ios. These libraries will need to be installed as well. + +`npm install --save react-native-simple-alarm @react-native-community/async-storage @react-native-community/push-notification-ios react-native-push-notification moment prop-types` or -`yarn add react-native-simple-alarm` +`yarn add react-native-simple-alarm @react-native-community/async-storage @react-native-community/push-notification-ios react-native-push-notification moment prop-types` For `iOS` using `cocoapods`, run: @@ -19,11 +21,11 @@ $ cd ios/ && pod install ## Installing (React Native <= 0.59.x) -`npm install --save react-native-simple-alarm` +`npm install --save react-native-simple-alarm @react-native-community/async-storage @react-native-community/push-notification-ios react-native-push-notification moment prop-types` or -`yarn add react-native-simple-alarm` +`yarn add react-native-simple-alarm @react-native-community/async-storage @react-native-community/push-notification-ios react-native-push-notification moment prop-types` Use `react-native link` to add the library to your project: diff --git a/android/README.md b/android/README.md deleted file mode 100644 index ac2fbda..0000000 --- a/android/README.md +++ /dev/null @@ -1,14 +0,0 @@ -README -====== - -If you want to publish the lib as a maven dependency, follow these steps before publishing a new version to npm: - -1. Be sure to have the Android [SDK](https://developer.android.com/studio/index.html) and [NDK](https://developer.android.com/ndk/guides/index.html) installed -2. Be sure to have a `local.properties` file in this folder that points to the Android SDK and NDK -``` -ndk.dir=/Users/{username}/Library/Android/sdk/ndk-bundle -sdk.dir=/Users/{username}/Library/Android/sdk -``` -3. Delete the `maven` folder -4. Run `./gradlew installArchives` -5. Verify that latest set of generated files is in the maven folder with the correct version number diff --git a/android/build.gradle b/android/build.gradle deleted file mode 100644 index 5dd382b..0000000 --- a/android/build.gradle +++ /dev/null @@ -1,149 +0,0 @@ -// android/build.gradle - -// based on: -// -// * https://github.com/facebook/react-native/blob/0.60-stable/template/android/build.gradle -// original location: -// - https://github.com/facebook/react-native/blob/0.58-stable/local-cli/templates/HelloWorld/android/build.gradle -// -// * https://github.com/facebook/react-native/blob/0.60-stable/template/android/app/build.gradle -// original location: -// - https://github.com/facebook/react-native/blob/0.58-stable/local-cli/templates/HelloWorld/android/app/build.gradle - -def DEFAULT_COMPILE_SDK_VERSION = 28 -def DEFAULT_BUILD_TOOLS_VERSION = '28.0.3' -def DEFAULT_MIN_SDK_VERSION = 16 -def DEFAULT_TARGET_SDK_VERSION = 28 - -def safeExtGet(prop, fallback) { - rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback -} - -apply plugin: 'com.android.library' -apply plugin: 'maven' - -buildscript { - // The Android Gradle plugin is only required when opening the android folder stand-alone. - // This avoids unnecessary downloads and potential conflicts when the library is included as a - // module dependency in an application project. - // ref: https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:build_script_external_dependencies - if (project == rootProject) { - repositories { - google() - jcenter() - } - dependencies { - classpath 'com.android.tools.build:gradle:3.4.1' - } - } -} - -apply plugin: 'com.android.library' -apply plugin: 'maven' - -android { - compileSdkVersion safeExtGet('compileSdkVersion', DEFAULT_COMPILE_SDK_VERSION) - buildToolsVersion safeExtGet('buildToolsVersion', DEFAULT_BUILD_TOOLS_VERSION) - defaultConfig { - minSdkVersion safeExtGet('minSdkVersion', DEFAULT_MIN_SDK_VERSION) - targetSdkVersion safeExtGet('targetSdkVersion', DEFAULT_TARGET_SDK_VERSION) - versionCode 1 - versionName "1.0" - } - lintOptions { - abortOnError false - } -} - -repositories { - // ref: https://www.baeldung.com/maven-local-repository - mavenLocal() - maven { - // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm - url "$rootDir/../node_modules/react-native/android" - } - maven { - // Android JSC is installed from npm - url "$rootDir/../node_modules/jsc-android/dist" - } - google() - jcenter() -} - -dependencies { - //noinspection GradleDynamicVersion - implementation 'com.facebook.react:react-native:+' // From node_modules -} - -def configureReactNativePom(def pom) { - def packageJson = new groovy.json.JsonSlurper().parseText(file('../package.json').text) - - pom.project { - name packageJson.title - artifactId packageJson.name - version = packageJson.version - group = "com.reactlibrary" - description packageJson.description - url packageJson.repository.baseUrl - - licenses { - license { - name packageJson.license - url packageJson.repository.baseUrl + '/blob/master/' + packageJson.licenseFilename - distribution 'repo' - } - } - - developers { - developer { - id packageJson.author.username - name packageJson.author.name - } - } - } -} - -afterEvaluate { project -> - // some Gradle build hooks ref: - // https://www.oreilly.com/library/view/gradle-beyond-the/9781449373801/ch03.html - task androidJavadoc(type: Javadoc) { - source = android.sourceSets.main.java.srcDirs - classpath += files(android.bootClasspath) - classpath += files(project.getConfigurations().getByName('compile').asList()) - include '**/*.java' - } - - task androidJavadocJar(type: Jar, dependsOn: androidJavadoc) { - classifier = 'javadoc' - from androidJavadoc.destinationDir - } - - task androidSourcesJar(type: Jar) { - classifier = 'sources' - from android.sourceSets.main.java.srcDirs - include '**/*.java' - } - - android.libraryVariants.all { variant -> - def name = variant.name.capitalize() - def javaCompileTask = variant.javaCompileProvider.get() - - task "jar${name}"(type: Jar, dependsOn: javaCompileTask) { - from javaCompileTask.destinationDir - } - } - - artifacts { - archives androidSourcesJar - archives androidJavadocJar - } - - task installArchives(type: Upload) { - configuration = configurations.archives - repositories.mavenDeployer { - // Deploy to react-native-event-bridge/maven, ready to publish to npm - repository url: "file://${projectDir}/../android/maven" - configureReactNativePom pom - } - } -} diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml deleted file mode 100644 index 20c90c4..0000000 --- a/android/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/android/src/main/java/com/reactlibrary/SimpleAlarmManager.java b/android/src/main/java/com/reactlibrary/SimpleAlarmManager.java deleted file mode 100644 index 2807250..0000000 --- a/android/src/main/java/com/reactlibrary/SimpleAlarmManager.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.reactlibrary; - -import android.view.View; - -import androidx.appcompat.widget.AppCompatCheckBox; - -import com.facebook.react.uimanager.SimpleViewManager; -import com.facebook.react.uimanager.ThemedReactContext; - -public class SimpleAlarmManager extends SimpleViewManager { - - public static final String REACT_CLASS = "SimpleAlarm"; - - @Override - public String getName() { - return REACT_CLASS; - } - - @Override - public View createViewInstance(ThemedReactContext c) { - // TODO: Implement some actually useful functionality - AppCompatCheckBox cb = new AppCompatCheckBox(c); - cb.setChecked(true); - return cb; - } -} diff --git a/android/src/main/java/com/reactlibrary/SimpleAlarmPackage.java b/android/src/main/java/com/reactlibrary/SimpleAlarmPackage.java deleted file mode 100644 index 7c4e330..0000000 --- a/android/src/main/java/com/reactlibrary/SimpleAlarmPackage.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.reactlibrary; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import com.facebook.react.ReactPackage; -import com.facebook.react.bridge.NativeModule; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.uimanager.ViewManager; -import com.facebook.react.bridge.JavaScriptModule; - -public class SimpleAlarmPackage implements ReactPackage { - @Override - public List createNativeModules(ReactApplicationContext reactContext) { - return Collections.emptyList(); - } - - @Override - public List createViewManagers(ReactApplicationContext reactContext) { - return Arrays.asList(new SimpleAlarmManager()); - } -} diff --git a/example/ios/File.swift b/example/ios/File.swift new file mode 100644 index 0000000..732b1c7 --- /dev/null +++ b/example/ios/File.swift @@ -0,0 +1,8 @@ +// +// File.swift +// example +// +// Created by Jordan Daniels on 1/21/22. +// + +import Foundation diff --git a/example/ios/Podfile b/example/ios/Podfile index 34dcfbb..8721c8e 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -1,4 +1,4 @@ -platform :ios, '9.0' +platform :ios, '11.0' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' def add_flipper_pods!(versions = {}) @@ -33,17 +33,6 @@ def add_flipper_pods!(versions = {}) pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configuration => 'Debug' end -# Post Install processing for Flipper -def flipper_post_install(installer) - installer.pods_project.targets.each do |target| - if target.name == 'YogaKit' - target.build_configurations.each do |config| - config.build_settings['SWIFT_VERSION'] = '4.1' - end - end - end -end - target 'example' do # Pods for example pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector" @@ -69,7 +58,7 @@ target 'example' do pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi' pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor' pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector' - pod 'ReactCommon/callinvoker', :path => "../node_modules/react-native/ReactCommon" + pod 'React-callinvoker', :path => "../node_modules/react-native/ReactCommon/callinvoker" pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon" pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga', :modular_headers => true @@ -88,13 +77,30 @@ target 'example' do use_native_modules! # Enables Flipper. - # - # Note that if you have use_frameworks! enabled, Flipper will not work and - # you should disable these next few lines. - add_flipper_pods! - post_install do |installer| - flipper_post_install(installer) +add_flipper_pods!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' }) + +# Post Install processing for Flipper +post_install do |installer| + ## Fix for XCode 12.5 + find_and_replace("../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm", + "_initializeModules:(NSArray> *)modules", "_initializeModules:(NSArray *)modules") + find_and_replace("../node_modules/react-native/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm", + "RCTBridgeModuleNameForClass(strongModule))", "RCTBridgeModuleNameForClass(Class(strongModule)))") + end + +def find_and_replace(dir, findstr, replacestr) + Dir[dir].each do |name| + text = File.read(name) + replace = text.gsub(findstr,replacestr) + if text != replace + puts "Fix: " + name + File.open(name, "w") { |file| file.puts replace } + STDOUT.flush + end end + Dir[dir + '*/'].each(&method(:find_and_replace)) +end + end target 'example-tvOS' do diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index ffea859..7190f1e 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,305 +1,316 @@ PODS: - boost-for-react-native (1.63.0) - - CocoaAsyncSocket (7.6.4) - - CocoaLibEvent (1.0.0) + - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) - - FBLazyVector (0.62.2) - - FBReactNativeSpec (0.62.2): - - Folly (= 2018.10.22.00) - - RCTRequired (= 0.62.2) - - RCTTypeSafety (= 0.62.2) - - React-Core (= 0.62.2) - - React-jsi (= 0.62.2) - - ReactCommon/turbomodule/core (= 0.62.2) - - Flipper (0.33.1): - - Flipper-Folly (~> 2.1) - - Flipper-RSocket (~> 1.0) + - FBLazyVector (0.63.4) + - FBReactNativeSpec (0.63.4): + - Folly (= 2020.01.13.00) + - RCTRequired (= 0.63.4) + - RCTTypeSafety (= 0.63.4) + - React-Core (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - Flipper (0.87.0): + - Flipper-Folly (~> 2.5) + - Flipper-RSocket (~> 1.3) - Flipper-DoubleConversion (1.1.7) - - Flipper-Folly (2.2.0): + - Flipper-Folly (2.5.3): - boost-for-react-native - - CocoaLibEvent (~> 1.0) - Flipper-DoubleConversion - Flipper-Glog - - OpenSSL-Universal (= 1.0.2.19) + - libevent (~> 2.1.12) + - OpenSSL-Universal (= 1.1.180) - Flipper-Glog (0.3.6) - Flipper-PeerTalk (0.0.4) - - Flipper-RSocket (1.1.0): - - Flipper-Folly (~> 2.2) - - FlipperKit (0.33.1): - - FlipperKit/Core (= 0.33.1) - - FlipperKit/Core (0.33.1): - - Flipper (~> 0.33.1) + - Flipper-RSocket (1.3.1): + - Flipper-Folly (~> 2.5) + - FlipperKit (0.87.0): + - FlipperKit/Core (= 0.87.0) + - FlipperKit/Core (0.87.0): + - Flipper (~> 0.87.0) - FlipperKit/CppBridge - FlipperKit/FBCxxFollyDynamicConvert - FlipperKit/FBDefines - FlipperKit/FKPortForwarding - - FlipperKit/CppBridge (0.33.1): - - Flipper (~> 0.33.1) - - FlipperKit/FBCxxFollyDynamicConvert (0.33.1): - - Flipper-Folly (~> 2.1) - - FlipperKit/FBDefines (0.33.1) - - FlipperKit/FKPortForwarding (0.33.1): + - FlipperKit/CppBridge (0.87.0): + - Flipper (~> 0.87.0) + - FlipperKit/FBCxxFollyDynamicConvert (0.87.0): + - Flipper-Folly (~> 2.5) + - FlipperKit/FBDefines (0.87.0) + - FlipperKit/FKPortForwarding (0.87.0): - CocoaAsyncSocket (~> 7.6) - Flipper-PeerTalk (~> 0.0.4) - - FlipperKit/FlipperKitHighlightOverlay (0.33.1) - - FlipperKit/FlipperKitLayoutPlugin (0.33.1): + - FlipperKit/FlipperKitHighlightOverlay (0.87.0) + - FlipperKit/FlipperKitLayoutHelpers (0.87.0): - FlipperKit/Core - FlipperKit/FlipperKitHighlightOverlay - FlipperKit/FlipperKitLayoutTextSearchable + - FlipperKit/FlipperKitLayoutIOSDescriptors (0.87.0): + - FlipperKit/Core + - FlipperKit/FlipperKitHighlightOverlay + - FlipperKit/FlipperKitLayoutHelpers + - YogaKit (~> 1.18) + - FlipperKit/FlipperKitLayoutPlugin (0.87.0): + - FlipperKit/Core + - FlipperKit/FlipperKitHighlightOverlay + - FlipperKit/FlipperKitLayoutHelpers + - FlipperKit/FlipperKitLayoutIOSDescriptors + - FlipperKit/FlipperKitLayoutTextSearchable - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutTextSearchable (0.33.1) - - FlipperKit/FlipperKitNetworkPlugin (0.33.1): + - FlipperKit/FlipperKitLayoutTextSearchable (0.87.0) + - FlipperKit/FlipperKitNetworkPlugin (0.87.0): - FlipperKit/Core - - FlipperKit/FlipperKitReactPlugin (0.33.1): + - FlipperKit/FlipperKitReactPlugin (0.87.0): - FlipperKit/Core - - FlipperKit/FlipperKitUserDefaultsPlugin (0.33.1): + - FlipperKit/FlipperKitUserDefaultsPlugin (0.87.0): - FlipperKit/Core - - FlipperKit/SKIOSNetworkPlugin (0.33.1): + - FlipperKit/SKIOSNetworkPlugin (0.87.0): - FlipperKit/Core - FlipperKit/FlipperKitNetworkPlugin - - Folly (2018.10.22.00): + - Folly (2020.01.13.00): - boost-for-react-native - DoubleConversion - - Folly/Default (= 2018.10.22.00) + - Folly/Default (= 2020.01.13.00) - glog - - Folly/Default (2018.10.22.00): + - Folly/Default (2020.01.13.00): - boost-for-react-native - DoubleConversion - glog - glog (0.3.5) - - OpenSSL-Universal (1.0.2.19): - - OpenSSL-Universal/Static (= 1.0.2.19) - - OpenSSL-Universal/Static (1.0.2.19) - - RCTRequired (0.62.2) - - RCTTypeSafety (0.62.2): - - FBLazyVector (= 0.62.2) - - Folly (= 2018.10.22.00) - - RCTRequired (= 0.62.2) - - React-Core (= 0.62.2) - - React (0.62.2): - - React-Core (= 0.62.2) - - React-Core/DevSupport (= 0.62.2) - - React-Core/RCTWebSocket (= 0.62.2) - - React-RCTActionSheet (= 0.62.2) - - React-RCTAnimation (= 0.62.2) - - React-RCTBlob (= 0.62.2) - - React-RCTImage (= 0.62.2) - - React-RCTLinking (= 0.62.2) - - React-RCTNetwork (= 0.62.2) - - React-RCTSettings (= 0.62.2) - - React-RCTText (= 0.62.2) - - React-RCTVibration (= 0.62.2) - - React-Core (0.62.2): - - Folly (= 2018.10.22.00) + - libevent (2.1.12) + - OpenSSL-Universal (1.1.180) + - RCTRequired (0.63.4) + - RCTTypeSafety (0.63.4): + - FBLazyVector (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTRequired (= 0.63.4) + - React-Core (= 0.63.4) + - React (0.63.4): + - React-Core (= 0.63.4) + - React-Core/DevSupport (= 0.63.4) + - React-Core/RCTWebSocket (= 0.63.4) + - React-RCTActionSheet (= 0.63.4) + - React-RCTAnimation (= 0.63.4) + - React-RCTBlob (= 0.63.4) + - React-RCTImage (= 0.63.4) + - React-RCTLinking (= 0.63.4) + - React-RCTNetwork (= 0.63.4) + - React-RCTSettings (= 0.63.4) + - React-RCTText (= 0.63.4) + - React-RCTVibration (= 0.63.4) + - React-callinvoker (0.63.4) + - React-Core (0.63.4): + - Folly (= 2020.01.13.00) - glog - - React-Core/Default (= 0.62.2) - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-Core/Default (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/CoreModulesHeaders (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/CoreModulesHeaders (0.63.4): + - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/Default (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/Default (0.63.4): + - Folly (= 2020.01.13.00) - glog - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/DevSupport (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/DevSupport (0.63.4): + - Folly (= 2020.01.13.00) - glog - - React-Core/Default (= 0.62.2) - - React-Core/RCTWebSocket (= 0.62.2) - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) - - React-jsinspector (= 0.62.2) + - React-Core/Default (= 0.63.4) + - React-Core/RCTWebSocket (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - React-jsinspector (= 0.63.4) - Yoga - - React-Core/RCTActionSheetHeaders (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/RCTActionSheetHeaders (0.63.4): + - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTAnimationHeaders (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/RCTAnimationHeaders (0.63.4): + - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTBlobHeaders (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/RCTBlobHeaders (0.63.4): + - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTImageHeaders (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/RCTImageHeaders (0.63.4): + - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTLinkingHeaders (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/RCTLinkingHeaders (0.63.4): + - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTNetworkHeaders (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/RCTNetworkHeaders (0.63.4): + - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTSettingsHeaders (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/RCTSettingsHeaders (0.63.4): + - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTTextHeaders (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/RCTTextHeaders (0.63.4): + - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTVibrationHeaders (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/RCTVibrationHeaders (0.63.4): + - Folly (= 2020.01.13.00) - glog - React-Core/Default - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-Core/RCTWebSocket (0.62.2): - - Folly (= 2018.10.22.00) + - React-Core/RCTWebSocket (0.63.4): + - Folly (= 2020.01.13.00) - glog - - React-Core/Default (= 0.62.2) - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsiexecutor (= 0.62.2) + - React-Core/Default (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) - Yoga - - React-CoreModules (0.62.2): - - FBReactNativeSpec (= 0.62.2) - - Folly (= 2018.10.22.00) - - RCTTypeSafety (= 0.62.2) - - React-Core/CoreModulesHeaders (= 0.62.2) - - React-RCTImage (= 0.62.2) - - ReactCommon/turbomodule/core (= 0.62.2) - - React-cxxreact (0.62.2): + - React-CoreModules (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/CoreModulesHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - React-RCTImage (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-cxxreact (0.63.4): - boost-for-react-native (= 1.63.0) - DoubleConversion - - Folly (= 2018.10.22.00) + - Folly (= 2020.01.13.00) - glog - - React-jsinspector (= 0.62.2) - - React-jsi (0.62.2): + - React-callinvoker (= 0.63.4) + - React-jsinspector (= 0.63.4) + - React-jsi (0.63.4): - boost-for-react-native (= 1.63.0) - DoubleConversion - - Folly (= 2018.10.22.00) + - Folly (= 2020.01.13.00) - glog - - React-jsi/Default (= 0.62.2) - - React-jsi/Default (0.62.2): + - React-jsi/Default (= 0.63.4) + - React-jsi/Default (0.63.4): - boost-for-react-native (= 1.63.0) - DoubleConversion - - Folly (= 2018.10.22.00) + - Folly (= 2020.01.13.00) - glog - - React-jsiexecutor (0.62.2): + - React-jsiexecutor (0.63.4): - DoubleConversion - - Folly (= 2018.10.22.00) + - Folly (= 2020.01.13.00) - glog - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - React-jsinspector (0.62.2) - - react-native-simple-alarm (1.0.4): - - React - - React-RCTActionSheet (0.62.2): - - React-Core/RCTActionSheetHeaders (= 0.62.2) - - React-RCTAnimation (0.62.2): - - FBReactNativeSpec (= 0.62.2) - - Folly (= 2018.10.22.00) - - RCTTypeSafety (= 0.62.2) - - React-Core/RCTAnimationHeaders (= 0.62.2) - - ReactCommon/turbomodule/core (= 0.62.2) - - React-RCTBlob (0.62.2): - - FBReactNativeSpec (= 0.62.2) - - Folly (= 2018.10.22.00) - - React-Core/RCTBlobHeaders (= 0.62.2) - - React-Core/RCTWebSocket (= 0.62.2) - - React-jsi (= 0.62.2) - - React-RCTNetwork (= 0.62.2) - - ReactCommon/turbomodule/core (= 0.62.2) - - React-RCTImage (0.62.2): - - FBReactNativeSpec (= 0.62.2) - - Folly (= 2018.10.22.00) - - RCTTypeSafety (= 0.62.2) - - React-Core/RCTImageHeaders (= 0.62.2) - - React-RCTNetwork (= 0.62.2) - - ReactCommon/turbomodule/core (= 0.62.2) - - React-RCTLinking (0.62.2): - - FBReactNativeSpec (= 0.62.2) - - React-Core/RCTLinkingHeaders (= 0.62.2) - - ReactCommon/turbomodule/core (= 0.62.2) - - React-RCTNetwork (0.62.2): - - FBReactNativeSpec (= 0.62.2) - - Folly (= 2018.10.22.00) - - RCTTypeSafety (= 0.62.2) - - React-Core/RCTNetworkHeaders (= 0.62.2) - - ReactCommon/turbomodule/core (= 0.62.2) - - React-RCTSettings (0.62.2): - - FBReactNativeSpec (= 0.62.2) - - Folly (= 2018.10.22.00) - - RCTTypeSafety (= 0.62.2) - - React-Core/RCTSettingsHeaders (= 0.62.2) - - ReactCommon/turbomodule/core (= 0.62.2) - - React-RCTText (0.62.2): - - React-Core/RCTTextHeaders (= 0.62.2) - - React-RCTVibration (0.62.2): - - FBReactNativeSpec (= 0.62.2) - - Folly (= 2018.10.22.00) - - React-Core/RCTVibrationHeaders (= 0.62.2) - - ReactCommon/turbomodule/core (= 0.62.2) - - ReactCommon/callinvoker (0.62.2): - - DoubleConversion - - Folly (= 2018.10.22.00) - - glog - - React-cxxreact (= 0.62.2) - - ReactCommon/turbomodule/core (0.62.2): + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsinspector (0.63.4) + - React-RCTActionSheet (0.63.4): + - React-Core/RCTActionSheetHeaders (= 0.63.4) + - React-RCTAnimation (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTAnimationHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTBlob (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - React-Core/RCTBlobHeaders (= 0.63.4) + - React-Core/RCTWebSocket (= 0.63.4) + - React-jsi (= 0.63.4) + - React-RCTNetwork (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTImage (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTImageHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - React-RCTNetwork (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTLinking (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - React-Core/RCTLinkingHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTNetwork (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTNetworkHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTSettings (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTSettingsHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTText (0.63.4): + - React-Core/RCTTextHeaders (= 0.63.4) + - React-RCTVibration (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - React-Core/RCTVibrationHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - ReactCommon/turbomodule/core (0.63.4): - DoubleConversion - - Folly (= 2018.10.22.00) + - Folly (= 2020.01.13.00) - glog - - React-Core (= 0.62.2) - - React-cxxreact (= 0.62.2) - - React-jsi (= 0.62.2) - - ReactCommon/callinvoker (= 0.62.2) - - RNCAsyncStorage (1.9.0): - - React - - RNCPushNotificationIOS (1.1.1): - - React - - RNDateTimePicker (2.3.2): - - React + - React-callinvoker (= 0.63.4) + - React-Core (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - RNCAsyncStorage (1.12.1): + - React-Core + - RNCPushNotificationIOS (1.10.1): + - React-Core + - RNDateTimePicker (5.1.0): + - React-Core - RNGestureHandler (1.6.1): - React - RNReanimated (1.8.0): @@ -316,30 +327,31 @@ DEPENDENCIES: - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) - - Flipper (~> 0.33.1) + - Flipper (= 0.87.0) - Flipper-DoubleConversion (= 1.1.7) - - Flipper-Folly (~> 2.1) + - Flipper-Folly (= 2.5.3) - Flipper-Glog (= 0.3.6) - Flipper-PeerTalk (~> 0.0.4) - - Flipper-RSocket (~> 1.0) - - FlipperKit (~> 0.33.1) - - FlipperKit/Core (~> 0.33.1) - - FlipperKit/CppBridge (~> 0.33.1) - - FlipperKit/FBCxxFollyDynamicConvert (~> 0.33.1) - - FlipperKit/FBDefines (~> 0.33.1) - - FlipperKit/FKPortForwarding (~> 0.33.1) - - FlipperKit/FlipperKitHighlightOverlay (~> 0.33.1) - - FlipperKit/FlipperKitLayoutPlugin (~> 0.33.1) - - FlipperKit/FlipperKitLayoutTextSearchable (~> 0.33.1) - - FlipperKit/FlipperKitNetworkPlugin (~> 0.33.1) - - FlipperKit/FlipperKitReactPlugin (~> 0.33.1) - - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.33.1) - - FlipperKit/SKIOSNetworkPlugin (~> 0.33.1) + - Flipper-RSocket (= 1.3.1) + - FlipperKit (= 0.87.0) + - FlipperKit/Core (= 0.87.0) + - FlipperKit/CppBridge (= 0.87.0) + - FlipperKit/FBCxxFollyDynamicConvert (= 0.87.0) + - FlipperKit/FBDefines (= 0.87.0) + - FlipperKit/FKPortForwarding (= 0.87.0) + - FlipperKit/FlipperKitHighlightOverlay (= 0.87.0) + - FlipperKit/FlipperKitLayoutPlugin (= 0.87.0) + - FlipperKit/FlipperKitLayoutTextSearchable (= 0.87.0) + - FlipperKit/FlipperKitNetworkPlugin (= 0.87.0) + - FlipperKit/FlipperKitReactPlugin (= 0.87.0) + - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.87.0) + - FlipperKit/SKIOSNetworkPlugin (= 0.87.0) - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) + - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - React-Core (from `../node_modules/react-native/`) - React-Core/DevSupport (from `../node_modules/react-native/`) - React-Core/RCTWebSocket (from `../node_modules/react-native/`) @@ -348,7 +360,6 @@ DEPENDENCIES: - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - - react-native-simple-alarm (from `../..`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) @@ -358,7 +369,6 @@ DEPENDENCIES: - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) - - ReactCommon/callinvoker (from `../node_modules/react-native/ReactCommon`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)" - "RNCPushNotificationIOS (from `../node_modules/@react-native-community/push-notification-ios`)" @@ -373,7 +383,6 @@ SPEC REPOS: trunk: - boost-for-react-native - CocoaAsyncSocket - - CocoaLibEvent - Flipper - Flipper-DoubleConversion - Flipper-Folly @@ -381,6 +390,7 @@ SPEC REPOS: - Flipper-PeerTalk - Flipper-RSocket - FlipperKit + - libevent - OpenSSL-Universal - YogaKit @@ -401,6 +411,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/TypeSafety" React: :path: "../node_modules/react-native/" + React-callinvoker: + :path: "../node_modules/react-native/ReactCommon/callinvoker" React-Core: :path: "../node_modules/react-native/" React-CoreModules: @@ -413,8 +425,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: :path: "../node_modules/react-native/ReactCommon/jsinspector" - react-native-simple-alarm: - :path: "../.." React-RCTActionSheet: :path: "../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: @@ -454,51 +464,51 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c - CocoaAsyncSocket: 694058e7c0ed05a9e217d1b3c7ded962f4180845 - CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f - DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2 - FBLazyVector: 4aab18c93cd9546e4bfed752b4084585eca8b245 - FBReactNativeSpec: 5465d51ccfeecb7faa12f9ae0024f2044ce4044e - Flipper: 6c1f484f9a88d30ab3e272800d53688439e50f69 + CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 + DoubleConversion: cde416483dac037923206447da6e1454df403714 + FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e + FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e + Flipper: 1bd2db48dcc31e4b167b9a33ec1df01c2ded4893 Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 - Flipper-Folly: c12092ea368353b58e992843a990a3225d4533c3 + Flipper-Folly: 755929a4f851b2fb2c347d533a23f191b008554c Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 - Flipper-RSocket: 64e7431a55835eb953b0bf984ef3b90ae9fdddd7 - FlipperKit: 6dc9b8f4ef60d9e5ded7f0264db299c91f18832e - Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 - glog: 1f3da668190260b06b429bb211bfbee5cd790c28 - OpenSSL-Universal: 8b48cc0d10c1b2923617dfe5c178aa9ed2689355 - RCTRequired: cec6a34b3ac8a9915c37e7e4ad3aa74726ce4035 - RCTTypeSafety: 93006131180074cffa227a1075802c89a49dd4ce - React: 29a8b1a02bd764fb7644ef04019270849b9a7ac3 - React-Core: b12bffb3f567fdf99510acb716ef1abd426e0e05 - React-CoreModules: 4a9b87bbe669d6c3173c0132c3328e3b000783d0 - React-cxxreact: e65f9c2ba0ac5be946f53548c1aaaee5873a8103 - React-jsi: b6dc94a6a12ff98e8877287a0b7620d365201161 - React-jsiexecutor: 1540d1c01bb493ae3124ed83351b1b6a155db7da - React-jsinspector: 512e560d0e985d0e8c479a54a4e5c147a9c83493 - react-native-simple-alarm: baf2ea0c4a56c3e56839be0846b07d684496eef6 - React-RCTActionSheet: f41ea8a811aac770e0cc6e0ad6b270c644ea8b7c - React-RCTAnimation: 49ab98b1c1ff4445148b72a3d61554138565bad0 - React-RCTBlob: a332773f0ebc413a0ce85942a55b064471587a71 - React-RCTImage: e70be9b9c74fe4e42d0005f42cace7981c994ac3 - React-RCTLinking: c1b9739a88d56ecbec23b7f63650e44672ab2ad2 - React-RCTNetwork: 73138b6f45e5a2768ad93f3d57873c2a18d14b44 - React-RCTSettings: 6e3738a87e21b39a8cb08d627e68c44acf1e325a - React-RCTText: fae545b10cfdb3d247c36c56f61a94cfd6dba41d - React-RCTVibration: 4356114dbcba4ce66991096e51a66e61eda51256 - ReactCommon: ed4e11d27609d571e7eee8b65548efc191116eb3 - RNCAsyncStorage: 453cd7c335ec9ba3b877e27d02238956b76f3268 - RNCPushNotificationIOS: a0b6894f4ad9b93d9dac467fdf4d055660ac8a0d - RNDateTimePicker: 4bd49e09f91ca73d69119a9e1173b0d43b82f5e5 + Flipper-RSocket: 127954abe8b162fcaf68d2134d34dc2bd7076154 + FlipperKit: 651f50a42eb95c01b3e89a60996dd6aded529eeb + Folly: b73c3869541e86821df3c387eb0af5f65addfab4 + glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 + libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 + OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b + RCTRequired: 082f10cd3f905d6c124597fd1c14f6f2655ff65e + RCTTypeSafety: 8c9c544ecbf20337d069e4ae7fd9a377aadf504b + React: b0a957a2c44da4113b0c4c9853d8387f8e64e615 + React-callinvoker: c3f44dd3cb195b6aa46621fff95ded79d59043fe + React-Core: d3b2a1ac9a2c13c3bcde712d9281fc1c8a5b315b + React-CoreModules: 0581ff36cb797da0943d424f69e7098e43e9be60 + React-cxxreact: c1480d4fda5720086c90df537ee7d285d4c57ac3 + React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31 + React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949 + React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a + React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336 + React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b + React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0 + React-RCTImage: c1b1f2d3f43a4a528c8946d6092384b5c880d2f0 + React-RCTLinking: 35ae4ab9dc0410d1fcbdce4d7623194a27214fb2 + React-RCTNetwork: 29ec2696f8d8cfff7331fac83d3e893c95ef43ae + React-RCTSettings: 60f0691bba2074ef394f95d4c2265ec284e0a46a + React-RCTText: 5c51df3f08cb9dedc6e790161195d12bac06101c + React-RCTVibration: ae4f914cfe8de7d4de95ae1ea6cc8f6315d73d9d + ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b + RNCAsyncStorage: b03032fdbdb725bea0bd9e5ec5a7272865ae7398 + RNCPushNotificationIOS: 87b8d16d3ede4532745e05b03c42cff33a36cc45 + RNDateTimePicker: 1dd15d7ed1ab7d999056bc77879a42920d139c12 RNGestureHandler: 8f09cd560f8d533eb36da5a6c5a843af9f056b38 RNReanimated: 955cf4068714003d2f1a6e2bae3fb1118f359aff RNScreens: b5c0e1b2b04512919e78bd3898e144a157ce2363 RNVectorIcons: 13bc7efe562ac45b79aa7cdd937ec1ef2588b0d2 - Yoga: 3ebccbdd559724312790e7742142d062476b698e + Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: c896b2b6c0ff4d85704649402c39ac665bbc6049 +PODFILE CHECKSUM: dc30c67d81f2d8a01e61b7188244ccb5fd4e9bab -COCOAPODS: 1.9.1 +COCOAPODS: 1.10.1 diff --git a/example/ios/example-Bridging-Header.h b/example/ios/example-Bridging-Header.h new file mode 100644 index 0000000..1b2cb5d --- /dev/null +++ b/example/ios/example-Bridging-Header.h @@ -0,0 +1,4 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + diff --git a/example/ios/example.xcodeproj/project.pbxproj b/example/ios/example.xcodeproj/project.pbxproj index 1e562fc..92aa31a 100644 --- a/example/ios/example.xcodeproj/project.pbxproj +++ b/example/ios/example.xcodeproj/project.pbxproj @@ -15,6 +15,7 @@ 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 2DCD954D1E0B4F2C00145EB5 /* exampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exampleTests.m */; }; 644958F65153298D7653A5C0 /* libPods-example-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F78DCF16BBF1581868E1B871 /* libPods-example-tvOSTests.a */; }; + 6F5C7284279B92ED009FFACA /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F5C7283279B92ED009FFACA /* File.swift */; }; B4D4B4AD84E687251A851899 /* libPods-example-exampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 46176A44E662D676601E7D5D /* libPods-example-exampleTests.a */; }; D1414EB346C8F81AED0EE63B /* libPods-example-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C61FFCD8E29DAE50C42B3664 /* libPods-example-tvOS.a */; }; F79C1037C199B94F8D8ED1E2 /* libPods-example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DC6E4FB8CD6AD20877999DBF /* libPods-example.a */; }; @@ -60,6 +61,8 @@ 46176A44E662D676601E7D5D /* libPods-example-exampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-example-exampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 5441B5901C22F07351FC2255 /* Pods-example-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-tvOS.release.xcconfig"; path = "Target Support Files/Pods-example-tvOS/Pods-example-tvOS.release.xcconfig"; sourceTree = ""; }; 610318094EF8842F3ED2894D /* Pods-example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.release.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.release.xcconfig"; sourceTree = ""; }; + 6F5C7282279B92EC009FFACA /* example-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "example-Bridging-Header.h"; sourceTree = ""; }; + 6F5C7283279B92ED009FFACA /* File.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = ""; }; 746CF9CBD86640E9B554BB6F /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = ""; }; 79BBBDE294C4460C9FB6E5AE /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = ""; }; 7E6D66E279C448649DC9A2DE /* AntDesign.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = AntDesign.ttf; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = ""; }; @@ -188,6 +191,7 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( + 6F5C7283279B92ED009FFACA /* File.swift */, 13B07FAE1A68108700A75B9A /* example */, 832341AE1AAA6A7D00B99B32 /* Libraries */, 00E356EF1AD99517003FC87E /* exampleTests */, @@ -195,6 +199,7 @@ 2D16E6871FA4F8E400B85C8A /* Frameworks */, 11C62C26718168C11CBA2A0E /* Pods */, 8E83837210324F2194ED56B9 /* Resources */, + 6F5C7282279B92EC009FFACA /* example-Bridging-Header.h */, ); indentWidth = 2; sourceTree = ""; @@ -247,6 +252,7 @@ 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, 6750797C002725B335B3CC2E /* [CP] Copy Pods Resources */, + 749B950961F57A159A163D19 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -268,6 +274,7 @@ 13B07F8C1A680F5B00A75B9A /* Frameworks */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, CC2D8FFFD9043D96F7982276 /* [CP] Copy Pods Resources */, + 88D55139695C9D5FEE76DA90 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -330,7 +337,7 @@ TestTargetID = 13B07F861A680F5B00A75B9A; }; 13B07F861A680F5B00A75B9A = { - LastSwiftMigration = 1120; + LastSwiftMigration = 1320; }; 2D02E47A1E0B4A5D006451C7 = { CreatedOnToolsVersion = 8.2.1; @@ -484,6 +491,7 @@ "${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", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( @@ -502,12 +510,31 @@ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; + 749B950961F57A159A163D19 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 7F9B5C151EE45BAE1A9C3C31 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -530,6 +557,24 @@ 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; }; + 88D55139695C9D5FEE76DA90 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; B3A985DFF1E86F42C4ABAD93 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -574,6 +619,7 @@ "${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", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( @@ -592,6 +638,7 @@ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -652,6 +699,7 @@ buildActionMask = 2147483647; files = ( 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 6F5C7284279B92ED009FFACA /* File.swift in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -705,6 +753,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = F9DCDB9C8B9B3CD1569115D3 /* Pods-example-exampleTests.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -728,6 +777,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 3B419549B222EE36ECFE88E9 /* Pods-example-exampleTests.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; INFOPLIST_FILE = exampleTests/Info.plist; @@ -757,14 +807,17 @@ "FB_SONARKIT_ENABLED=1", ); INFOPLIST_FILE = example/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); + PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES; PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = example; + SWIFT_OBJC_BRIDGING_HEADER = "example-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; @@ -779,14 +832,17 @@ CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; INFOPLIST_FILE = example/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); + PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES; PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = example; + SWIFT_OBJC_BRIDGING_HEADER = "example-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; @@ -956,8 +1012,10 @@ "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", "\"$(inherited)\"", ); + LINKER_DISPLAYS_MANGLED_NAMES = NO; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; + PRESERVE_DEAD_CODE_INITS_AND_TERMS = NO; SDKROOT = iphoneos; }; name = Debug; @@ -1009,7 +1067,9 @@ "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", "\"$(inherited)\"", ); + LINKER_DISPLAYS_MANGLED_NAMES = NO; MTL_ENABLE_DEBUG_INFO = NO; + PRESERVE_DEAD_CODE_INITS_AND_TERMS = NO; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; diff --git a/example/package.json b/example/package.json index 4208f43..8c44976 100644 --- a/example/package.json +++ b/example/package.json @@ -1,6 +1,6 @@ { "name": "react-native-simple-alarm-example", - "version": "0.0.2", + "version": "0.0.3", "private": true, "scripts": { "android": "react-native run-android", @@ -10,17 +10,19 @@ "lint": "eslint ." }, "dependencies": { - "@react-native-community/async-storage": "^1.9.0", - "@react-native-community/datetimepicker": "2.3.2", + "@react-native-community/async-storage": "1.12.1", + "@react-native-community/datetimepicker": "5.1.0", "@react-native-community/eslint-config": "^1.0.0", - "@react-native-community/push-notification-ios": "^1.1.1", - "lodash": "4.17.15", + "@react-native-community/push-notification-ios": "1.10.1", + "lodash": "4.17.21", + "moment": "2.29.1", "react": "16.11.0", - "react-native": "0.62.2", + "react-native": "0.63.4", "react-native-gesture-handler": "1.6.1", - "react-native-modal-datetime-picker": "8.5.4", + "react-native-modal-datetime-picker": "13.0.1", "react-native-modal-selector": "2.0.0", "react-native-picker-select": "7.0.0", + "react-native-push-notification": "3.1.9", "react-native-reanimated": "1.8.0", "react-native-router-flux": "4.2.0", "react-native-screens": "2.4.0", @@ -28,8 +30,6 @@ "react-native-simple-radio-button": "2.7.4", "react-native-swipe-list-view": "2.5.0", "react-native-vector-icons": "6.0.1", - "moment": "2.24.0", - "react-native-push-notification": "3.1.9", "react-test-renderer": "16.11.0" }, "devDependencies": { diff --git a/example/src/Common/Arrow.js b/example/src/Common/Arrow.js index e15e87d..200d8d9 100644 --- a/example/src/Common/Arrow.js +++ b/example/src/Common/Arrow.js @@ -1,43 +1,46 @@ -"use strict"; +import React, {useMemo} from 'react'; +import {View, StyleSheet} from 'react-native'; -import React from "react"; -import { View } from "react-native"; +const Arrow = React.memo((props) => { + const {height, direction, color, style} = props; -const Arrow = props => { - const { height, direction, color, style } = props; + const width = (8.8 / 16.7) * height; + const sideLength = Math.sqrt(width * width + (height / 2) * (height / 2)); - let width = (8.8 / 16.7) * height; - let sideLength = Math.sqrt(width * width + (height / 2) * (height / 2)); - - let angle; - if (direction === "left") { - angle = "-45deg"; - } else if (direction === "right") { - angle = "135deg"; - } + const angle = useMemo(() => { + if (direction === 'left') { + return '-45deg'; + } else if (direction === 'right') { + return '135deg'; + } + }, [direction]); return ( ); -}; +}); -export { Arrow }; +const styles = StyleSheet.create({ + arrow: { + backgroundColor: 'transparent', + borderStyle: 'solid', + borderTopWidth: 1, + borderLeftWidth: 1, + }, +}); +export {Arrow}; export default Arrow; diff --git a/example/src/Common/Button.js b/example/src/Common/Button.js index 6402955..815c25b 100644 --- a/example/src/Common/Button.js +++ b/example/src/Common/Button.js @@ -1,9 +1,7 @@ -"use strict"; +import React from 'react'; +import {View, TouchableOpacity} from 'react-native'; -import React from "react"; -import { View, TouchableOpacity } from "react-native"; - -const Button = props => { +const Button = React.memo((props) => { const { accessible, accessibilityLabel, @@ -12,7 +10,7 @@ const Button = props => { style, onLayout, noAnimation, - hitSlop + hitSlop, } = props; if (noAnimation) { @@ -24,8 +22,7 @@ const Button = props => { onResponderGrant={onPress} style={style} onLayout={onLayout} - hitSlop={hitSlop} - > + hitSlop={hitSlop}> {props.children} ); @@ -39,12 +36,11 @@ const Button = props => { onPress={onPress} style={[style]} onLayout={onLayout} - hitSlop={hitSlop} - > + hitSlop={hitSlop}> {props.children} ); -}; +}); -export { Button }; +export {Button}; export default Button; diff --git a/example/src/Common/NavBar.js b/example/src/Common/NavBar.js index 936c0e5..e66779a 100644 --- a/example/src/Common/NavBar.js +++ b/example/src/Common/NavBar.js @@ -36,11 +36,7 @@ export default class NavBar extends Component { icon = ( ); } @@ -123,15 +119,7 @@ export default class NavBar extends Component { accessibilityLabel={ rightButtonTitle || rightButtonIcon || 'right nav button' }> - + {rightButtonTitle} {icon} @@ -141,16 +129,7 @@ export default class NavBar extends Component { renderTitle = () => { const {title} = this.props; - return ( - - {title} - - ); + return {title}; }; render() { @@ -171,17 +150,18 @@ export default class NavBar extends Component { } : {}; - if (this) + if (this) { return ( {(leftButtonTitle || leftButtonIcon) && this.renderLeftButton()} @@ -192,6 +172,7 @@ export default class NavBar extends Component { ); + } } } @@ -252,4 +233,19 @@ const styles = StyleSheet.create({ textAlign: 'center', color: 'black', }, + menu: { + marginRight: Convert(8), + height: Convert(16), + resizeMode: 'contain', + }, + rightButtonText: { + fontSize: Convert(16), + letterSpacing: -0.4, + top: Convert(1), + }, + title: { + fontSize: Convert(21.3), + letterSpacing: Convert(-0.5), + textAlign: 'center', + }, }); diff --git a/example/src/Common/SuperText.js b/example/src/Common/SuperText.js index df6e09b..58fee0d 100644 --- a/example/src/Common/SuperText.js +++ b/example/src/Common/SuperText.js @@ -1,50 +1,43 @@ -"use strict"; +'use strict'; -import React from "react"; -import { Text, StyleSheet } from "react-native"; +import React, {useMemo} from 'react'; +import {Text, StyleSheet} from 'react-native'; -import _ from "lodash"; -import { Styles } from "../styles"; +import {Styles} from '../styles'; -const SuperText = props => { - const { - style, - type, - color, - fontSize, - numberOfLines, - textAlign - } = props; +const SuperText = React.memo((props) => { + const {style, type, color, fontSize, numberOfLines, textAlign} = props; - let family = Styles.mainFamily; - if (type === "regular") { - family = Styles.mainFamily; - } else if (type === "medium") { - family = Styles.mediumFamily; - } else if (type === "thin" || type === "light") { - family = Styles.thinFamily; - } else if (type === "bold") { - family = Styles.boldFamily; - } else if (type === "italic") { - family = Styles.italicFamily; - } + const family = useMemo(() => { + if (type === 'regular') { + return Styles.mainFamily; + } else if (type === 'medium') { + return Styles.mediumFamily; + } else if (type === 'thin' || type === 'light') { + return Styles.thinFamily; + } else if (type === 'bold') { + return Styles.boldFamily; + } else if (type === 'italic') { + return Styles.italicFamily; + } + return Styles.mainFamily; + }, [type]); return ( + allowFontScaling={false}> {props.children} ); -}; +}); const styles = StyleSheet.create({ main: { - backgroundColor: "transparent" - } + backgroundColor: 'transparent', + }, }); -export { SuperText }; +export {SuperText}; export default SuperText; diff --git a/example/src/Home/AddAlarms.js b/example/src/Home/AddAlarms.js index 0c3c088..500fa7d 100644 --- a/example/src/Home/AddAlarms.js +++ b/example/src/Home/AddAlarms.js @@ -8,6 +8,7 @@ import { Button, TouchableHighlight, StyleSheet, + Alert, } from 'react-native'; import {Actions} from 'react-native-router-flux'; import DateTimePicker from 'react-native-modal-datetime-picker'; @@ -43,7 +44,7 @@ class AddAlarm extends Component { componentDidMount() { PushNotification.checkPermissions((permissions) => { if (!permissions.alert) { - alert('Please enable push notifications for the alarm to work'); + Alert.alert('Please enable push notifications for the alarm to work'); } }); } @@ -71,7 +72,7 @@ class AddAlarm extends Component { let {time, date, message, snooze} = this.state; if (!time) { - alert('Please enter a time for the alarm'); + Alert.alert('Please enter a time for the alarm'); } else { let newDate = date; if (moment(date).isBefore(moment().startOf('minute'))) { @@ -82,7 +83,7 @@ class AddAlarm extends Component { active: true, date: newDate, message, - snooze + snooze, }); Actions.Home(); @@ -94,7 +95,7 @@ class AddAlarm extends Component { let {time, date, message, snooze} = this.state; if (!time) { - alert('Please enter a time for the alarm'); + Alert.alert('Please enter a time for the alarm'); } else { let id = edit.id; let newDate = date; @@ -135,20 +136,14 @@ class AddAlarm extends Component { accessible={true} scrollViewAccessibilityLabel={'Scrollable options'} cancelButtonAccessibilityLabel={'Cancel Button'} - style={{flex: 1}} + style={styles.snoozeModal} onChange={({label}) => { this.setState({snooze: label}); }}> - - Snooze + + Snooze - + {snooze} minute{snooze > 1 ? 's' : null} @@ -162,34 +157,20 @@ class AddAlarm extends Component { let {edit} = this.props; return ( - + Actions.Home()} /> - - + + {time} - +