Compare commits
45 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ff52bbc13d | |||
| d395ba9be4 | |||
| 91c05e79c0 | |||
| 1e56f4e3f4 | |||
| 5e55a2e2ef | |||
| 20af120498 | |||
| 4e8e92b0d5 | |||
| f337272933 | |||
| d7e9bae558 | |||
| 27274aa994 | |||
| 28fd610e9d | |||
| 26d971a8b2 | |||
| 40af118563 | |||
| 750bfa58c3 | |||
| c645c48d31 | |||
| 62e3328113 | |||
| db93aa74bb | |||
| b53be31868 | |||
| 974a9735c5 | |||
| 5787e96e53 | |||
| 5d62cbfffe | |||
| 791c0d345f | |||
| c7c905fd5f | |||
| 9800b663fb | |||
| 4d7895b9f2 | |||
| 7977be6f3f | |||
| bb8338c842 | |||
| 31e87db23f | |||
| 09f0a0f11d | |||
| dd9ad9e393 | |||
| e18eedd4e7 | |||
| 3e50991d12 | |||
| bda09438ee | |||
| eb804fe6c8 | |||
| f0750cd45f | |||
| c6662e02bf | |||
| f3aa5b4d68 | |||
| b2f277eb12 | |||
| 3bdf660c27 | |||
| a0ee200149 | |||
| 79ab093584 | |||
| 7418fc2cce | |||
| e297903468 | |||
| 4f54d19f78 | |||
| 0579897fc1 |
@@ -9,7 +9,6 @@ cache:
|
|||||||
test_async:
|
test_async:
|
||||||
script:
|
script:
|
||||||
- npm install npm@7.0.1 -g
|
- npm install npm@7.0.1 -g
|
||||||
- npm install
|
|
||||||
- npm test
|
- npm test
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
|
|||||||
@@ -2,7 +2,42 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
## v1.2311.14
|
## v1.2401.17 iOS
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
|
||||||
|
- Updating React Native to 0.68.3
|
||||||
|
- Minor changes in temperature chart
|
||||||
|
|
||||||
|
### Adds
|
||||||
|
|
||||||
|
- Temperature scale slider
|
||||||
|
- out of range warning messages for temperature values
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Order of import buttons
|
||||||
|
|
||||||
|
## v1.2312.11 iOS
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
|
||||||
|
- Chart: Improved readability
|
||||||
|
- Finer temperature lines and dots
|
||||||
|
- Enlarge screen space for temperature chart
|
||||||
|
- A very light grey background color for weekend days on the whole chart screen
|
||||||
|
- Homescreen: date displayed in new format
|
||||||
|
- Minor changes in "about" section
|
||||||
|
|
||||||
|
See more under v1.2311.14 Android
|
||||||
|
|
||||||
|
### Adds
|
||||||
|
|
||||||
|
- Stats: Show period details, including cycle start, cycle length and amount of days with bleeding
|
||||||
|
- Stats: Explainer text for standard deviation
|
||||||
|
- App asks for permissions for notifications right at the start, which allows you to set reminders (this is a new requirement for Android 13)
|
||||||
|
|
||||||
|
## v1.2311.14 Android
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|
||||||
@@ -64,11 +99,22 @@ All notable changes to this project will be documented in this file.
|
|||||||
- Chart: Grid for symptoms
|
- Chart: Grid for symptoms
|
||||||
- Chart: Horizontal lines in temperature chart
|
- Chart: Horizontal lines in temperature chart
|
||||||
|
|
||||||
## Unreleased
|
### Unreleased
|
||||||
|
|
||||||
- Partially implemented translations with react-i18next
|
- Partially implemented translations with react-i18next
|
||||||
|
|
||||||
## v1.2102.28
|
## v1.2208.11 iOS
|
||||||
|
|
||||||
|
### Adds
|
||||||
|
|
||||||
|
- first iOS Release
|
||||||
|
|
||||||
|
### Unreleased
|
||||||
|
|
||||||
|
- Temperature scale slider
|
||||||
|
- Warning message for out of scope temperature values
|
||||||
|
|
||||||
|
## v1.2102.28 Android
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|
||||||
@@ -81,7 +127,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
- Phase text on home screen for last fertile day
|
- Phase text on home screen for last fertile day
|
||||||
- Styling improvements
|
- Styling improvements
|
||||||
|
|
||||||
## v1.2101.9
|
## v1.2101.9 Android
|
||||||
|
|
||||||
### Adds
|
### Adds
|
||||||
|
|
||||||
@@ -124,7 +170,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
- Fixed react-native-vector-icon
|
- Fixed react-native-vector-icon
|
||||||
- Fixed AppLoadingView component centering
|
- Fixed AppLoadingView component centering
|
||||||
|
|
||||||
## v0.2007-12.beta
|
## v0.2007-12.beta Android
|
||||||
|
|
||||||
### Adds
|
### Adds
|
||||||
|
|
||||||
@@ -159,7 +205,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
- Updates of node.js to fix security issue
|
- Updates of node.js to fix security issue
|
||||||
|
|
||||||
## v0.2005.3-beta
|
## v0.2005.3-beta Android
|
||||||
|
|
||||||
- Adds arm64-v8a and x86_64 for supporting 64-bit architecture
|
- Adds arm64-v8a and x86_64 for supporting 64-bit architecture
|
||||||
- Adds Mariya & Sofiya as contributors <3
|
- Adds Mariya & Sofiya as contributors <3
|
||||||
@@ -259,7 +305,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
- Adds release wizard
|
- Adds release wizard
|
||||||
- Updates nodejs-mobile to fix security issue
|
- Updates nodejs-mobile to fix security issue
|
||||||
|
|
||||||
## v0.1905.29-beta
|
## v0.1905.29-beta Android
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|
||||||
@@ -280,7 +326,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
- Line width in chart
|
- Line width in chart
|
||||||
- Prediction range in drop on homescreen
|
- Prediction range in drop on homescreen
|
||||||
|
|
||||||
## v0.1905.28-beta
|
## v0.1905.28-beta Android
|
||||||
|
|
||||||
- Displays all the text for Home Elements; Shortens margin btw Home Elements; Adds missing "visit" to text
|
- Displays all the text for Home Elements; Shortens margin btw Home Elements; Adds missing "visit" to text
|
||||||
- Adds donation section to about
|
- Adds donation section to about
|
||||||
@@ -355,7 +401,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
- Nicer formatting for past bleeding prediction
|
- Nicer formatting for past bleeding prediction
|
||||||
- Fixed prediction range in drop on homescreen
|
- Fixed prediction range in drop on homescreen
|
||||||
|
|
||||||
## v0.1905.10-beta
|
## v0.1905.10-beta Android
|
||||||
|
|
||||||
- Filter release commits from changelog
|
- Filter release commits from changelog
|
||||||
- Adds update-changelog script
|
- Adds update-changelog script
|
||||||
@@ -380,7 +426,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
- Delete password button bug fix
|
- Delete password button bug fix
|
||||||
- temperature screen styling update
|
- temperature screen styling update
|
||||||
|
|
||||||
## v0.0.3 - 2019-04-17
|
## v0.0.3 - 2019-04-17 Android
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|
||||||
@@ -390,9 +436,9 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
- Button functionality in settings for password
|
- Button functionality in settings for password
|
||||||
|
|
||||||
## v0.0.2 - 2019-04-09
|
## v0.0.2 - 2019-04-09 Android
|
||||||
|
|
||||||
## Second updated beta release version
|
## Second updated beta release version Android
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|
||||||
@@ -406,9 +452,9 @@ All notable changes to this project will be documented in this file.
|
|||||||
- Delete button for sex, pain and mood
|
- Delete button for sex, pain and mood
|
||||||
- Dates on chart
|
- Dates on chart
|
||||||
|
|
||||||
## v0.0.1 - 2019-02-15
|
## v0.0.1 - 2019-02-15 Android
|
||||||
|
|
||||||
## First beta release version
|
## First beta release version Android
|
||||||
|
|
||||||
### Added (list of core functionality)
|
### Added (list of core functionality)
|
||||||
|
|
||||||
|
|||||||
@@ -1,96 +0,0 @@
|
|||||||
GEM
|
|
||||||
remote: https://rubygems.org/
|
|
||||||
specs:
|
|
||||||
CFPropertyList (3.0.5)
|
|
||||||
rexml
|
|
||||||
activesupport (6.1.5)
|
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
||||||
i18n (>= 1.6, < 2)
|
|
||||||
minitest (>= 5.1)
|
|
||||||
tzinfo (~> 2.0)
|
|
||||||
zeitwerk (~> 2.3)
|
|
||||||
addressable (2.8.0)
|
|
||||||
public_suffix (>= 2.0.2, < 5.0)
|
|
||||||
algoliasearch (1.27.5)
|
|
||||||
httpclient (~> 2.8, >= 2.8.3)
|
|
||||||
json (>= 1.5.1)
|
|
||||||
atomos (0.1.3)
|
|
||||||
claide (1.1.0)
|
|
||||||
cocoapods (1.11.3)
|
|
||||||
addressable (~> 2.8)
|
|
||||||
claide (>= 1.0.2, < 2.0)
|
|
||||||
cocoapods-core (= 1.11.3)
|
|
||||||
cocoapods-deintegrate (>= 1.0.3, < 2.0)
|
|
||||||
cocoapods-downloader (>= 1.4.0, < 2.0)
|
|
||||||
cocoapods-plugins (>= 1.0.0, < 2.0)
|
|
||||||
cocoapods-search (>= 1.0.0, < 2.0)
|
|
||||||
cocoapods-trunk (>= 1.4.0, < 2.0)
|
|
||||||
cocoapods-try (>= 1.1.0, < 2.0)
|
|
||||||
colored2 (~> 3.1)
|
|
||||||
escape (~> 0.0.4)
|
|
||||||
fourflusher (>= 2.3.0, < 3.0)
|
|
||||||
gh_inspector (~> 1.0)
|
|
||||||
molinillo (~> 0.8.0)
|
|
||||||
nap (~> 1.0)
|
|
||||||
ruby-macho (>= 1.0, < 3.0)
|
|
||||||
xcodeproj (>= 1.21.0, < 2.0)
|
|
||||||
cocoapods-core (1.11.3)
|
|
||||||
activesupport (>= 5.0, < 7)
|
|
||||||
addressable (~> 2.8)
|
|
||||||
algoliasearch (~> 1.0)
|
|
||||||
concurrent-ruby (~> 1.1)
|
|
||||||
fuzzy_match (~> 2.0.4)
|
|
||||||
nap (~> 1.0)
|
|
||||||
netrc (~> 0.11)
|
|
||||||
public_suffix (~> 4.0)
|
|
||||||
typhoeus (~> 1.0)
|
|
||||||
cocoapods-deintegrate (1.0.5)
|
|
||||||
cocoapods-downloader (1.5.1)
|
|
||||||
cocoapods-plugins (1.0.0)
|
|
||||||
nap
|
|
||||||
cocoapods-search (1.0.1)
|
|
||||||
cocoapods-trunk (1.6.0)
|
|
||||||
nap (>= 0.8, < 2.0)
|
|
||||||
netrc (~> 0.11)
|
|
||||||
cocoapods-try (1.2.0)
|
|
||||||
colored2 (3.1.2)
|
|
||||||
concurrent-ruby (1.1.9)
|
|
||||||
escape (0.0.4)
|
|
||||||
ethon (0.15.0)
|
|
||||||
ffi (>= 1.15.0)
|
|
||||||
ffi (1.15.5)
|
|
||||||
fourflusher (2.3.1)
|
|
||||||
fuzzy_match (2.0.4)
|
|
||||||
gh_inspector (1.1.3)
|
|
||||||
httpclient (2.8.3)
|
|
||||||
i18n (1.10.0)
|
|
||||||
concurrent-ruby (~> 1.0)
|
|
||||||
json (2.6.1)
|
|
||||||
minitest (5.15.0)
|
|
||||||
molinillo (0.8.0)
|
|
||||||
nanaimo (0.3.0)
|
|
||||||
nap (1.1.0)
|
|
||||||
netrc (0.11.0)
|
|
||||||
public_suffix (4.0.6)
|
|
||||||
rexml (3.2.5)
|
|
||||||
ruby-macho (2.5.1)
|
|
||||||
typhoeus (1.4.0)
|
|
||||||
ethon (>= 0.9.0)
|
|
||||||
tzinfo (2.0.4)
|
|
||||||
concurrent-ruby (~> 1.0)
|
|
||||||
xcodeproj (1.21.0)
|
|
||||||
CFPropertyList (>= 2.3.3, < 4.0)
|
|
||||||
atomos (~> 0.1.3)
|
|
||||||
claide (>= 1.0.2, < 2.0)
|
|
||||||
colored2 (~> 3.1)
|
|
||||||
nanaimo (~> 0.3.0)
|
|
||||||
rexml (~> 3.2.4)
|
|
||||||
zeitwerk (2.5.4)
|
|
||||||
PLATFORMS
|
|
||||||
ruby
|
|
||||||
DEPENDENCIES
|
|
||||||
cocoapods (~> 1.11, >= 1.11.2)
|
|
||||||
RUBY VERSION
|
|
||||||
ruby 2.7.4p191
|
|
||||||
BUNDLED WITH
|
|
||||||
2.2.27
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
#Wed Oct 11 14:45:21 CEST 2023
|
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/sh
|
||||||
|
|
||||||
#
|
#
|
||||||
# Copyright 2015 the original author or authors.
|
# Copyright © 2015-2021 the original authors.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
@@ -17,70 +17,103 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
##
|
#
|
||||||
## Gradle start up script for UN*X
|
# Gradle start up script for POSIX generated by Gradle.
|
||||||
##
|
#
|
||||||
|
# Important for running:
|
||||||
|
#
|
||||||
|
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||||
|
# noncompliant, but you have some other compliant shell such as ksh or
|
||||||
|
# bash, then to run this script, type that shell name before the whole
|
||||||
|
# command line, like:
|
||||||
|
#
|
||||||
|
# ksh Gradle
|
||||||
|
#
|
||||||
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
|
# requires all of these POSIX shell features:
|
||||||
|
# * functions;
|
||||||
|
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||||
|
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||||
|
# * compound commands having a testable exit status, especially «case»;
|
||||||
|
# * various built-in commands including «command», «set», and «ulimit».
|
||||||
|
#
|
||||||
|
# Important for patching:
|
||||||
|
#
|
||||||
|
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||||
|
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||||
|
#
|
||||||
|
# The "traditional" practice of packing multiple parameters into a
|
||||||
|
# space-separated string is a well documented source of bugs and security
|
||||||
|
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||||
|
# options in "$@", and eventually passing that to Java.
|
||||||
|
#
|
||||||
|
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||||
|
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||||
|
# see the in-line comments for details.
|
||||||
|
#
|
||||||
|
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||||
|
# Darwin, MinGW, and NonStop.
|
||||||
|
#
|
||||||
|
# (3) This script is generated from the Groovy template
|
||||||
|
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
|
# within the Gradle project.
|
||||||
|
#
|
||||||
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
# Attempt to set APP_HOME
|
||||||
|
|
||||||
|
# Resolve links: $0 may be a link
|
||||||
|
app_path=$0
|
||||||
|
|
||||||
|
# Need this for daisy-chained symlinks.
|
||||||
|
while
|
||||||
|
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||||
|
[ -h "$app_path" ]
|
||||||
|
do
|
||||||
|
ls=$( ls -ld "$app_path" )
|
||||||
|
link=${ls#*' -> '}
|
||||||
|
case $link in #(
|
||||||
|
/*) app_path=$link ;; #(
|
||||||
|
*) app_path=$APP_HOME$link ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||||
|
|
||||||
|
APP_NAME="Gradle"
|
||||||
|
APP_BASE_NAME=${0##*/}
|
||||||
|
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
APP_NAME="Gradle"
|
|
||||||
APP_BASE_NAME=`basename "$0"`
|
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
MAX_FD="maximum"
|
MAX_FD=maximum
|
||||||
|
|
||||||
warn ( ) {
|
warn () {
|
||||||
echo "$*"
|
echo "$*"
|
||||||
}
|
} >&2
|
||||||
|
|
||||||
die ( ) {
|
die () {
|
||||||
echo
|
echo
|
||||||
echo "$*"
|
echo "$*"
|
||||||
echo
|
echo
|
||||||
exit 1
|
exit 1
|
||||||
}
|
} >&2
|
||||||
|
|
||||||
# OS specific support (must be 'true' or 'false').
|
# OS specific support (must be 'true' or 'false').
|
||||||
cygwin=false
|
cygwin=false
|
||||||
msys=false
|
msys=false
|
||||||
darwin=false
|
darwin=false
|
||||||
case "`uname`" in
|
nonstop=false
|
||||||
CYGWIN* )
|
case "$( uname )" in #(
|
||||||
cygwin=true
|
CYGWIN* ) cygwin=true ;; #(
|
||||||
;;
|
Darwin* ) darwin=true ;; #(
|
||||||
Darwin* )
|
MSYS* | MINGW* ) msys=true ;; #(
|
||||||
darwin=true
|
NONSTOP* ) nonstop=true ;;
|
||||||
;;
|
|
||||||
MINGW* )
|
|
||||||
msys=true
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# For Cygwin, ensure paths are in UNIX format before anything is touched.
|
|
||||||
if $cygwin ; then
|
|
||||||
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Attempt to set APP_HOME
|
|
||||||
# Resolve links: $0 may be a link
|
|
||||||
PRG="$0"
|
|
||||||
# Need this for relative symlinks.
|
|
||||||
while [ -h "$PRG" ] ; do
|
|
||||||
ls=`ls -ld "$PRG"`
|
|
||||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
|
||||||
if expr "$link" : '/.*' > /dev/null; then
|
|
||||||
PRG="$link"
|
|
||||||
else
|
|
||||||
PRG=`dirname "$PRG"`"/$link"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
SAVED="`pwd`"
|
|
||||||
cd "`dirname \"$PRG\"`/" >&-
|
|
||||||
APP_HOME="`pwd -P`"
|
|
||||||
cd "$SAVED" >&-
|
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
@@ -88,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
|||||||
if [ -n "$JAVA_HOME" ] ; then
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
# IBM's JDK on AIX uses strange locations for the executables
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||||
else
|
else
|
||||||
JAVACMD="$JAVA_HOME/bin/java"
|
JAVACMD=$JAVA_HOME/bin/java
|
||||||
fi
|
fi
|
||||||
if [ ! -x "$JAVACMD" ] ; then
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
@@ -99,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
|
|||||||
location of your Java installation."
|
location of your Java installation."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
JAVACMD="java"
|
JAVACMD=java
|
||||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
@@ -107,80 +140,95 @@ location of your Java installation."
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
# Increase the maximum file descriptors if we can.
|
||||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||||
MAX_FD_LIMIT=`ulimit -H -n`
|
case $MAX_FD in #(
|
||||||
if [ $? -eq 0 ] ; then
|
max*)
|
||||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
MAX_FD="$MAX_FD_LIMIT"
|
warn "Could not query maximum file descriptor limit"
|
||||||
fi
|
esac
|
||||||
ulimit -n $MAX_FD
|
case $MAX_FD in #(
|
||||||
if [ $? -ne 0 ] ; then
|
'' | soft) :;; #(
|
||||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
*)
|
||||||
fi
|
ulimit -n "$MAX_FD" ||
|
||||||
else
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Darwin, add options to specify how the application appears in the dock
|
|
||||||
if $darwin; then
|
|
||||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
|
||||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
|
||||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
|
||||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
|
||||||
|
|
||||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
|
||||||
|
|
||||||
# We build the pattern for arguments to be converted via cygpath
|
|
||||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
|
||||||
SEP=""
|
|
||||||
for dir in $ROOTDIRSRAW ; do
|
|
||||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
|
||||||
SEP="|"
|
|
||||||
done
|
|
||||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
|
||||||
# Add a user-defined pattern to the cygpath arguments
|
|
||||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
|
||||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
|
||||||
fi
|
|
||||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
|
||||||
i=0
|
|
||||||
for arg in "$@" ; do
|
|
||||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
|
||||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
|
||||||
|
|
||||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
|
||||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
|
||||||
else
|
|
||||||
eval `echo args$i`="\"$arg\""
|
|
||||||
fi
|
|
||||||
i=`expr $i + 1`
|
|
||||||
done
|
|
||||||
case $i in
|
|
||||||
0) set -- ;;
|
|
||||||
1) set -- "$args0" ;;
|
|
||||||
2) set -- "$args0" "$args1" ;;
|
|
||||||
3) set -- "$args0" "$args1" "$args2" ;;
|
|
||||||
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
|
||||||
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
|
||||||
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
|
||||||
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
|
||||||
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
|
||||||
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Escape application args
|
# Collect all arguments for the java command, stacking in reverse order:
|
||||||
save () {
|
# * args from the command line
|
||||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
# * the main class name
|
||||||
echo " "
|
# * -classpath
|
||||||
}
|
# * -D...appname settings
|
||||||
APP_ARGS=`save "$@"`
|
# * --module-path (only if needed)
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||||
|
|
||||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
if "$cygwin" || "$msys" ; then
|
||||||
|
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||||
|
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||||
|
|
||||||
|
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||||
|
|
||||||
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
|
for arg do
|
||||||
|
if
|
||||||
|
case $arg in #(
|
||||||
|
-*) false ;; # don't mess with options #(
|
||||||
|
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||||
|
[ -e "$t" ] ;; #(
|
||||||
|
*) false ;;
|
||||||
|
esac
|
||||||
|
then
|
||||||
|
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||||
|
fi
|
||||||
|
# Roll the args list around exactly as many times as the number of
|
||||||
|
# args, so each arg winds up back in the position where it started, but
|
||||||
|
# possibly modified.
|
||||||
|
#
|
||||||
|
# NB: a `for` loop captures its iteration list before it begins, so
|
||||||
|
# changing the positional parameters here affects neither the number of
|
||||||
|
# iterations, nor the values presented in `arg`.
|
||||||
|
shift # remove old arg
|
||||||
|
set -- "$@" "$arg" # push replacement arg
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Collect all arguments for the java command;
|
||||||
|
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||||
|
# shell script including quotes and variable substitutions, so put them in
|
||||||
|
# double quotes to make sure that they get re-expanded; and
|
||||||
|
# * put everything else in single quotes, so that it's not re-expanded.
|
||||||
|
|
||||||
|
set -- \
|
||||||
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
org.gradle.wrapper.GradleWrapperMain \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
# Use "xargs" to parse quoted args.
|
||||||
|
#
|
||||||
|
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||||
|
#
|
||||||
|
# In Bash we could simply go:
|
||||||
|
#
|
||||||
|
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||||
|
# set -- "${ARGS[@]}" "$@"
|
||||||
|
#
|
||||||
|
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||||
|
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||||
|
# character that might be a shell metacharacter, then use eval to reverse
|
||||||
|
# that process (while maintaining the separation between arguments), and wrap
|
||||||
|
# the whole thing up as a single "set" statement.
|
||||||
|
#
|
||||||
|
# This will of course break if any of these variables contains a newline or
|
||||||
|
# an unmatched quote.
|
||||||
|
#
|
||||||
|
|
||||||
|
eval "set -- $(
|
||||||
|
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||||
|
xargs -n1 |
|
||||||
|
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||||
|
tr '\n' ' '
|
||||||
|
)" '"$@"'
|
||||||
|
|
||||||
exec "$JAVACMD" "$@"
|
exec "$JAVACMD" "$@"
|
||||||
|
|||||||
@@ -3,3 +3,10 @@ rootProject.name = 'drip'
|
|||||||
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
|
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
|
||||||
|
|
||||||
include ':app'
|
include ':app'
|
||||||
|
|
||||||
|
includeBuild('../node_modules/react-native-gradle-plugin')
|
||||||
|
|
||||||
|
if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") {
|
||||||
|
include(":ReactAndroid")
|
||||||
|
project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid')
|
||||||
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import {
|
|||||||
determinePredictionText,
|
determinePredictionText,
|
||||||
formatWithOrdinalSuffix,
|
formatWithOrdinalSuffix,
|
||||||
} from './helpers/home'
|
} from './helpers/home'
|
||||||
|
import { periodPredictionObservable } from '../local-storage'
|
||||||
|
|
||||||
import { Colors, Fonts, Sizes, Spacing } from '../styles'
|
import { Colors, Fonts, Sizes, Spacing } from '../styles'
|
||||||
import { LocalDate } from '@js-joda/core'
|
import { LocalDate } from '@js-joda/core'
|
||||||
@@ -32,6 +33,7 @@ const Home = ({ navigate, setDate }) => {
|
|||||||
const cycleDayNumber = getCycleDayNumber(todayDateString)
|
const cycleDayNumber = getCycleDayNumber(todayDateString)
|
||||||
const { status, phase, statusText } =
|
const { status, phase, statusText } =
|
||||||
getFertilityStatusForDay(todayDateString)
|
getFertilityStatusForDay(todayDateString)
|
||||||
|
const isPeriodPredictionEnabled = periodPredictionObservable.value
|
||||||
const prediction = determinePredictionText(getPredictedMenses(), t)
|
const prediction = determinePredictionText(getPredictedMenses(), t)
|
||||||
|
|
||||||
const cycleDayText = cycleDayNumber
|
const cycleDayText = cycleDayNumber
|
||||||
@@ -65,9 +67,11 @@ const Home = ({ navigate, setDate }) => {
|
|||||||
<Asterisk />
|
<Asterisk />
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
<View style={styles.line}>
|
{isPeriodPredictionEnabled && (
|
||||||
<AppText style={styles.turquoiseText}>{prediction}</AppText>
|
<View style={styles.line}>
|
||||||
</View>
|
<AppText style={styles.turquoiseText}>{prediction}</AppText>
|
||||||
|
</View>
|
||||||
|
)}
|
||||||
<Button isCTA isSmall={false} onPress={navigateToCycleDayView}>
|
<Button isCTA isSmall={false} onPress={navigateToCycleDayView}>
|
||||||
{t('labels.home.addDataForToday')}
|
{t('labels.home.addDataForToday')}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -13,7 +13,15 @@ import Tutorial from './Tutorial'
|
|||||||
import YAxis from './y-axis'
|
import YAxis from './y-axis'
|
||||||
|
|
||||||
import { getCycleDaysSortedByDate } from '../../db'
|
import { getCycleDaysSortedByDate } from '../../db'
|
||||||
import { getChartFlag, setChartFlag } from '../../local-storage'
|
import {
|
||||||
|
getChartFlag,
|
||||||
|
setChartFlag,
|
||||||
|
desireTrackingCategoryObservable,
|
||||||
|
moodTrackingCategoryObservable,
|
||||||
|
noteTrackingCategoryObservable,
|
||||||
|
painTrackingCategoryObservable,
|
||||||
|
sexTrackingCategoryObservable,
|
||||||
|
} from '../../local-storage'
|
||||||
import { makeColumnInfo } from '../helpers/chart'
|
import { makeColumnInfo } from '../helpers/chart'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@@ -60,6 +68,22 @@ const CycleChart = ({ navigate, setDate }) => {
|
|||||||
(symptom) => symptom !== 'temperature'
|
(symptom) => symptom !== 'temperature'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const symptomRowEnabledSymptoms = symptomRowSymptoms.filter((symptom) => {
|
||||||
|
if (symptom === 'sex') {
|
||||||
|
return sexTrackingCategoryObservable.value ? symptom : null
|
||||||
|
} else if (symptom === 'desire') {
|
||||||
|
return desireTrackingCategoryObservable.value ? symptom : null
|
||||||
|
} else if (symptom === 'pain') {
|
||||||
|
return painTrackingCategoryObservable.value ? symptom : null
|
||||||
|
} else if (symptom === 'mood') {
|
||||||
|
return moodTrackingCategoryObservable.value ? symptom : null
|
||||||
|
} else if (symptom === 'note') {
|
||||||
|
return noteTrackingCategoryObservable.value ? symptom : null
|
||||||
|
} else {
|
||||||
|
return symptom
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
const shouldShowTemperatureColumn = chartSymptoms.indexOf('temperature') > -1
|
const shouldShowTemperatureColumn = chartSymptoms.indexOf('temperature') > -1
|
||||||
|
|
||||||
const { width, height } = Dimensions.get('window')
|
const { width, height } = Dimensions.get('window')
|
||||||
@@ -71,8 +95,9 @@ const CycleChart = ({ navigate, setDate }) => {
|
|||||||
remainingHeight * CHART_SYMPTOM_HEIGHT_RATIO
|
remainingHeight * CHART_SYMPTOM_HEIGHT_RATIO
|
||||||
)
|
)
|
||||||
const symptomRowHeight =
|
const symptomRowHeight =
|
||||||
PixelRatio.roundToNearestPixel(symptomRowSymptoms.length * symptomHeight) +
|
PixelRatio.roundToNearestPixel(
|
||||||
CHART_GRID_LINE_HORIZONTAL_WIDTH
|
symptomRowEnabledSymptoms.length * symptomHeight
|
||||||
|
) + CHART_GRID_LINE_HORIZONTAL_WIDTH
|
||||||
const columnHeight = remainingHeight - symptomRowHeight
|
const columnHeight = remainingHeight - symptomRowHeight
|
||||||
|
|
||||||
const chartHeight = shouldShowTemperatureColumn
|
const chartHeight = shouldShowTemperatureColumn
|
||||||
@@ -89,7 +114,7 @@ const CycleChart = ({ navigate, setDate }) => {
|
|||||||
navigate={navigate}
|
navigate={navigate}
|
||||||
symptomHeight={symptomHeight}
|
symptomHeight={symptomHeight}
|
||||||
columnHeight={columnHeight}
|
columnHeight={columnHeight}
|
||||||
symptomRowSymptoms={symptomRowSymptoms}
|
symptomRowSymptoms={symptomRowEnabledSymptoms}
|
||||||
chartSymptoms={chartSymptoms}
|
chartSymptoms={chartSymptoms}
|
||||||
shouldShowTemperatureColumn={shouldShowTemperatureColumn}
|
shouldShowTemperatureColumn={shouldShowTemperatureColumn}
|
||||||
xAxisHeight={xAxisHeight}
|
xAxisHeight={xAxisHeight}
|
||||||
@@ -114,7 +139,7 @@ const CycleChart = ({ navigate, setDate }) => {
|
|||||||
<View style={styles.chartArea}>
|
<View style={styles.chartArea}>
|
||||||
<YAxis
|
<YAxis
|
||||||
height={columnHeight}
|
height={columnHeight}
|
||||||
symptomsToDisplay={symptomRowSymptoms}
|
symptomsToDisplay={symptomRowEnabledSymptoms}
|
||||||
symptomsSectionHeight={symptomRowHeight}
|
symptomsSectionHeight={symptomRowHeight}
|
||||||
shouldShowTemperatureColumn={shouldShowTemperatureColumn}
|
shouldShowTemperatureColumn={shouldShowTemperatureColumn}
|
||||||
xAxisHeight={xAxisHeight}
|
xAxisHeight={xAxisHeight}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ const DotAndLine = ({
|
|||||||
d={dot}
|
d={dot}
|
||||||
stroke={dotColor}
|
stroke={dotColor}
|
||||||
strokeWidth={CHART_STROKE_WIDTH}
|
strokeWidth={CHART_STROKE_WIDTH}
|
||||||
fill={Colors.turquoiseDark}
|
fill={dotColor}
|
||||||
key="dot"
|
key="dot"
|
||||||
/>
|
/>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
|
|||||||
@@ -6,13 +6,19 @@ import AppText from './app-text'
|
|||||||
|
|
||||||
import { Containers } from '../../styles'
|
import { Containers } from '../../styles'
|
||||||
|
|
||||||
const AppSwitch = ({ onToggle, text, value }) => {
|
const AppSwitch = ({ onToggle, text, value, trackColor, disabled }) => {
|
||||||
return (
|
return (
|
||||||
<View style={styles.container}>
|
<View style={styles.container}>
|
||||||
<View style={styles.textContainer}>
|
<View style={styles.textContainer}>
|
||||||
<AppText>{text}</AppText>
|
<AppText>{text}</AppText>
|
||||||
</View>
|
</View>
|
||||||
<Switch onValueChange={onToggle} style={styles.switch} value={value} />
|
<Switch
|
||||||
|
onValueChange={onToggle}
|
||||||
|
style={styles.switch}
|
||||||
|
value={value}
|
||||||
|
trackColor={trackColor}
|
||||||
|
disabled={disabled}
|
||||||
|
/>
|
||||||
</View>
|
</View>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -21,6 +27,8 @@ AppSwitch.propTypes = {
|
|||||||
onToggle: PropTypes.func.isRequired,
|
onToggle: PropTypes.func.isRequired,
|
||||||
text: PropTypes.string,
|
text: PropTypes.string,
|
||||||
value: PropTypes.bool,
|
value: PropTypes.bool,
|
||||||
|
trackColor: PropTypes.string,
|
||||||
|
disabled: PropTypes.bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
const styles = StyleSheet.create({
|
||||||
|
|||||||
@@ -9,6 +9,13 @@ import SymptomPageTitle from './symptom-page-title'
|
|||||||
import { getCycleDay } from '../../db'
|
import { getCycleDay } from '../../db'
|
||||||
import { getData, nextDate, prevDate } from '../helpers/cycle-day'
|
import { getData, nextDate, prevDate } from '../helpers/cycle-day'
|
||||||
|
|
||||||
|
import {
|
||||||
|
desireTrackingCategoryObservable,
|
||||||
|
moodTrackingCategoryObservable,
|
||||||
|
noteTrackingCategoryObservable,
|
||||||
|
painTrackingCategoryObservable,
|
||||||
|
sexTrackingCategoryObservable,
|
||||||
|
} from '../../local-storage'
|
||||||
import { Spacing } from '../../styles'
|
import { Spacing } from '../../styles'
|
||||||
import { SYMPTOMS } from '../../config'
|
import { SYMPTOMS } from '../../config'
|
||||||
|
|
||||||
@@ -27,6 +34,23 @@ const CycleDayOverView = ({ date, setDate, isTemperatureEditView }) => {
|
|||||||
setDate(prevDate(date))
|
setDate(prevDate(date))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const allEnabledSymptoms = SYMPTOMS.map((symptom) => {
|
||||||
|
if (symptom === 'sex') {
|
||||||
|
return sexTrackingCategoryObservable.value ? symptom : null
|
||||||
|
} else if (symptom === 'desire') {
|
||||||
|
return desireTrackingCategoryObservable.value ? symptom : null
|
||||||
|
} else if (symptom === 'pain') {
|
||||||
|
return painTrackingCategoryObservable.value ? symptom : null
|
||||||
|
} else if (symptom === 'mood') {
|
||||||
|
return moodTrackingCategoryObservable.value ? symptom : null
|
||||||
|
} else if (symptom === 'note') {
|
||||||
|
return noteTrackingCategoryObservable.value ? symptom : null
|
||||||
|
} else {
|
||||||
|
return symptom
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const cleanSymptoms = allEnabledSymptoms.filter(Boolean)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AppPage>
|
<AppPage>
|
||||||
<SymptomPageTitle
|
<SymptomPageTitle
|
||||||
@@ -35,7 +59,7 @@ const CycleDayOverView = ({ date, setDate, isTemperatureEditView }) => {
|
|||||||
onPrevCycleDay={showPrevCycleDay}
|
onPrevCycleDay={showPrevCycleDay}
|
||||||
/>
|
/>
|
||||||
<View style={styles.container}>
|
<View style={styles.container}>
|
||||||
{SYMPTOMS.map((symptom) => {
|
{cleanSymptoms.map((symptom) => {
|
||||||
const symptomData =
|
const symptomData =
|
||||||
cycleDay && cycleDay[symptom] ? cycleDay[symptom] : null
|
cycleDay && cycleDay[symptom] ? cycleDay[symptom] : null
|
||||||
|
|
||||||
|
|||||||
@@ -102,8 +102,7 @@ const SymptomEditView = ({ date, onClose, symptom, symptomData }) => {
|
|||||||
const onSelectTab = (group, value) => {
|
const onSelectTab = (group, value) => {
|
||||||
const parsedData = getParsedData()
|
const parsedData = getParsedData()
|
||||||
|
|
||||||
Object.assign(parsedData, { [group.key]: value })
|
parsedData[group.key] = parsedData[group.key] !== value ? value : null
|
||||||
|
|
||||||
setData(parsedData)
|
setData(parsedData)
|
||||||
}
|
}
|
||||||
const iconName = shouldShowInfo ? 'chevron-up' : 'chevron-down'
|
const iconName = shouldShowInfo ? 'chevron-up' : 'chevron-down'
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ const styles = StyleSheet.create({
|
|||||||
hint: {
|
hint: {
|
||||||
fontStyle: 'italic',
|
fontStyle: 'italic',
|
||||||
fontSize: Sizes.small,
|
fontSize: Sizes.small,
|
||||||
|
color: Colors.orange,
|
||||||
},
|
},
|
||||||
hintContainer: {
|
hintContainer: {
|
||||||
marginVertical: Spacing.tiny,
|
marginVertical: Spacing.tiny,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { LocalDate } from '@js-joda/core'
|
|||||||
import { verticalScale } from 'react-native-size-matters'
|
import { verticalScale } from 'react-native-size-matters'
|
||||||
|
|
||||||
import { Colors, Fonts, Sizes } from '../../styles'
|
import { Colors, Fonts, Sizes } from '../../styles'
|
||||||
|
import { periodPredictionObservable } from '../../local-storage'
|
||||||
|
|
||||||
const { shades } = Colors.iconColors.bleeding
|
const { shades } = Colors.iconColors.bleeding
|
||||||
|
|
||||||
@@ -26,6 +27,7 @@ export const toCalFormat = (bleedingDaysSortedByDate) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const predictionToCalFormat = (predictedDays) => {
|
export const predictionToCalFormat = (predictedDays) => {
|
||||||
|
if (!periodPredictionObservable.value) return {}
|
||||||
if (!predictedDays.length) return {}
|
if (!predictedDays.length) return {}
|
||||||
const todayDateString = LocalDate.now().toString()
|
const todayDateString = LocalDate.now().toString()
|
||||||
const middleIndex = (predictedDays[0].length - 1) / 2
|
const middleIndex = (predictedDays[0].length - 1) / 2
|
||||||
|
|||||||
@@ -34,6 +34,10 @@ export const formatTemperature = (temperature) =>
|
|||||||
? temperature
|
? temperature
|
||||||
: Number.parseFloat(temperature.toString()).toFixed(2)
|
: Number.parseFloat(temperature.toString()).toFixed(2)
|
||||||
|
|
||||||
|
//maximum of precision digits after decimal point, but no x.0
|
||||||
|
export const formatDecimal = (num, precision) =>
|
||||||
|
+parseFloat(Number.parseFloat(num).toFixed(precision))
|
||||||
|
|
||||||
export const getPreviousTemperature = (date) => {
|
export const getPreviousTemperature = (date) => {
|
||||||
const previousTemperature = getPreviousTemperatureForDate(date)
|
const previousTemperature = getPreviousTemperatureForDate(date)
|
||||||
return formatTemperature(previousTemperature)
|
return formatTemperature(previousTemperature)
|
||||||
|
|||||||
@@ -37,13 +37,17 @@ export const pages = [
|
|||||||
parent: 'SettingsMenu',
|
parent: 'SettingsMenu',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
component: 'NfpSettings',
|
component: 'Customization',
|
||||||
parent: 'SettingsMenu',
|
parent: 'SettingsMenu',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
component: 'DataManagement',
|
component: 'DataManagement',
|
||||||
parent: 'SettingsMenu',
|
parent: 'SettingsMenu',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
component: 'Info',
|
||||||
|
parent: 'SettingsMenu',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
component: 'Password',
|
component: 'Password',
|
||||||
parent: 'SettingsMenu',
|
parent: 'SettingsMenu',
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
import React from 'react'
|
||||||
|
import { StyleSheet, View } from 'react-native'
|
||||||
|
import PropTypes from 'prop-types'
|
||||||
|
import { useTranslation } from 'react-i18next'
|
||||||
|
|
||||||
|
import AppIcon from '../common/app-icon'
|
||||||
|
import AppPage from '../common/app-page'
|
||||||
|
import AppText from '../common/app-text'
|
||||||
|
import Segment from '../common/segment'
|
||||||
|
|
||||||
|
import { Colors, Spacing, Typography } from '../../styles'
|
||||||
|
import labels from '../../i18n/en/settings'
|
||||||
|
|
||||||
|
const Info = () => {
|
||||||
|
const { t } = useTranslation(null, { keyPrefix: 'hamburgerMenu.info' })
|
||||||
|
return (
|
||||||
|
<AppPage title={t('title')}>
|
||||||
|
<Segment last>
|
||||||
|
<View style={styles.line}>
|
||||||
|
<AppIcon
|
||||||
|
color={Colors.purple}
|
||||||
|
name="info-with-circle"
|
||||||
|
style={styles.icon}
|
||||||
|
/>
|
||||||
|
<AppText style={styles.title}>{labels.preOvu.title}</AppText>
|
||||||
|
</View>
|
||||||
|
<AppText>{labels.preOvu.note}</AppText>
|
||||||
|
</Segment>
|
||||||
|
</AppPage>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
Info.propTypes = {
|
||||||
|
children: PropTypes.node,
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Info
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
icon: {
|
||||||
|
marginRight: Spacing.base,
|
||||||
|
},
|
||||||
|
line: {
|
||||||
|
flexDirection: 'row',
|
||||||
|
alignItems: 'center',
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
...Typography.subtitle,
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -1,18 +1,20 @@
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
import { StyleSheet } from 'react-native'
|
||||||
|
|
||||||
import AppPage from '../common/app-page'
|
import AppPage from '../common/app-page'
|
||||||
import AppText from '../common/app-text'
|
import AppText from '../common/app-text'
|
||||||
import AppLink from '../common/AppLink'
|
import AppLink from '../common/AppLink'
|
||||||
import Segment from '../common/segment'
|
import Segment from '../common/segment'
|
||||||
|
import { Spacing } from '../../styles'
|
||||||
|
|
||||||
const License = ({ children }) => {
|
const License = ({ children }) => {
|
||||||
const { t } = useTranslation(null, { keyPrefix: 'hamburgerMenu.license' })
|
const { t } = useTranslation(null, { keyPrefix: 'hamburgerMenu.license' })
|
||||||
const currentYear = new Date().getFullYear()
|
const currentYear = new Date().getFullYear()
|
||||||
const link = 'https://www.gnu.org/licenses/gpl-3.0.html'
|
const link = 'https://www.gnu.org/licenses/gpl-3.0.html'
|
||||||
return (
|
return (
|
||||||
<AppPage title={t('title')}>
|
<AppPage title={t('title')} contentContainerStyle={styles.contentContainer}>
|
||||||
<Segment last>
|
<Segment last>
|
||||||
<AppText>{t('text', { currentYear })}</AppText>
|
<AppText>{t('text', { currentYear })}</AppText>
|
||||||
<AppLink url={link}>{link}</AppLink>
|
<AppLink url={link}>{link}</AppLink>
|
||||||
@@ -26,4 +28,10 @@ License.propTypes = {
|
|||||||
children: PropTypes.node,
|
children: PropTypes.node,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
contentContainer: {
|
||||||
|
marginTop: Spacing.large,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
export default License
|
export default License
|
||||||
|
|||||||
@@ -0,0 +1,170 @@
|
|||||||
|
import React, { useState } from 'react'
|
||||||
|
|
||||||
|
import AppPage from '../../common/app-page'
|
||||||
|
import AppSwitch from '../../common/app-switch'
|
||||||
|
import AppText from '../../common/app-text'
|
||||||
|
import TemperatureSlider from './temperature-slider'
|
||||||
|
import Segment from '../../common/segment'
|
||||||
|
|
||||||
|
import {
|
||||||
|
desireTrackingCategoryObservable,
|
||||||
|
moodTrackingCategoryObservable,
|
||||||
|
noteTrackingCategoryObservable,
|
||||||
|
painTrackingCategoryObservable,
|
||||||
|
sexTrackingCategoryObservable,
|
||||||
|
saveDesireTrackingCategory,
|
||||||
|
saveMoodTrackingCategory,
|
||||||
|
saveNoteTrackingCategory,
|
||||||
|
savePainTrackingCategory,
|
||||||
|
savePeriodPrediction,
|
||||||
|
saveSexTrackingCategory,
|
||||||
|
saveUseCervix,
|
||||||
|
periodPredictionObservable,
|
||||||
|
useCervixObservable,
|
||||||
|
} from '../../../local-storage'
|
||||||
|
import { Colors } from '../../../styles'
|
||||||
|
import labels from '../../../i18n/en/settings'
|
||||||
|
|
||||||
|
const Settings = () => {
|
||||||
|
const [shouldUseCervix, setShouldUseCervix] = useState(
|
||||||
|
useCervixObservable.value
|
||||||
|
)
|
||||||
|
|
||||||
|
const [isPeriodPredictionEnabled, setPeriodPrediction] = useState(
|
||||||
|
periodPredictionObservable.value
|
||||||
|
)
|
||||||
|
|
||||||
|
const [isSexTrackingCategoryEnabled, setSexTrackingCategory] = useState(
|
||||||
|
sexTrackingCategoryObservable.value
|
||||||
|
)
|
||||||
|
|
||||||
|
const [isDesireTrackingCategoryEnabled, setDesireTrackingCategory] = useState(
|
||||||
|
desireTrackingCategoryObservable.value
|
||||||
|
)
|
||||||
|
|
||||||
|
const [isPainTrackingCategoryEnabled, setPainTrackingCategory] = useState(
|
||||||
|
painTrackingCategoryObservable.value
|
||||||
|
)
|
||||||
|
|
||||||
|
const [isMoodTrackingCategoryEnabled, setMoodTrackingCategory] = useState(
|
||||||
|
moodTrackingCategoryObservable.value
|
||||||
|
)
|
||||||
|
|
||||||
|
const [isNoteTrackingCategoryEnabled, setNoteTrackingCategory] = useState(
|
||||||
|
noteTrackingCategoryObservable.value
|
||||||
|
)
|
||||||
|
|
||||||
|
const [isEnabled, setIsEnabled] = useState(false)
|
||||||
|
const toggleSwitch = () => setIsEnabled((previousState) => !previousState)
|
||||||
|
|
||||||
|
const sexTrackingCategoryToggle = (value) => {
|
||||||
|
setSexTrackingCategory(value)
|
||||||
|
saveSexTrackingCategory(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
const desireTrackingCategoryToggle = (value) => {
|
||||||
|
setDesireTrackingCategory(value)
|
||||||
|
saveDesireTrackingCategory(value)
|
||||||
|
}
|
||||||
|
const painTrackingCategoryToggle = (value) => {
|
||||||
|
setPainTrackingCategory(value)
|
||||||
|
savePainTrackingCategory(value)
|
||||||
|
}
|
||||||
|
const moodTrackingCategoryToggle = (value) => {
|
||||||
|
setMoodTrackingCategory(value)
|
||||||
|
saveMoodTrackingCategory(value)
|
||||||
|
}
|
||||||
|
const noteTrackingCategoryToggle = (value) => {
|
||||||
|
setNoteTrackingCategory(value)
|
||||||
|
saveNoteTrackingCategory(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
const onPeriodPredictionToggle = (value) => {
|
||||||
|
setPeriodPrediction(value)
|
||||||
|
savePeriodPrediction(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
const periodPredictionText = isPeriodPredictionEnabled
|
||||||
|
? labels.periodPrediction.on
|
||||||
|
: labels.periodPrediction.off
|
||||||
|
|
||||||
|
const onCervixToggle = (value) => {
|
||||||
|
setShouldUseCervix(value)
|
||||||
|
saveUseCervix(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
const cervixText = shouldUseCervix
|
||||||
|
? labels.useCervix.cervixModeOn
|
||||||
|
: labels.useCervix.cervixModeOff
|
||||||
|
|
||||||
|
return (
|
||||||
|
<AppPage title={'Customization'}>
|
||||||
|
<Segment title={'Tracking categories'}>
|
||||||
|
<AppSwitch
|
||||||
|
onToggle={sexTrackingCategoryToggle}
|
||||||
|
text={"sex: when turned off it won't show"}
|
||||||
|
value={isSexTrackingCategoryEnabled}
|
||||||
|
trackColor={{ true: Colors.turquoiseDark }}
|
||||||
|
/>
|
||||||
|
<AppSwitch
|
||||||
|
onToggle={desireTrackingCategoryToggle}
|
||||||
|
text={"desire: when turned off it won't show"}
|
||||||
|
value={isDesireTrackingCategoryEnabled}
|
||||||
|
trackColor={{ true: Colors.turquoiseDark }}
|
||||||
|
/>
|
||||||
|
<AppSwitch
|
||||||
|
onToggle={painTrackingCategoryToggle}
|
||||||
|
text={"pain: when turned off it won't show"}
|
||||||
|
value={isPainTrackingCategoryEnabled}
|
||||||
|
trackColor={{ true: Colors.turquoiseDark }}
|
||||||
|
/>
|
||||||
|
<AppSwitch
|
||||||
|
onToggle={moodTrackingCategoryToggle}
|
||||||
|
text={"mood: when turned off it won't show"}
|
||||||
|
value={isMoodTrackingCategoryEnabled}
|
||||||
|
trackColor={{ true: Colors.turquoiseDark }}
|
||||||
|
/>
|
||||||
|
<AppSwitch
|
||||||
|
onToggle={noteTrackingCategoryToggle}
|
||||||
|
text={"note: when turned off it won't show"}
|
||||||
|
value={isNoteTrackingCategoryEnabled}
|
||||||
|
trackColor={{ true: Colors.turquoiseDark }}
|
||||||
|
/>
|
||||||
|
</Segment>
|
||||||
|
|
||||||
|
<Segment title={'Fertility feature'}>
|
||||||
|
<AppSwitch
|
||||||
|
onToggle={toggleSwitch}
|
||||||
|
text={'If turned on ...'}
|
||||||
|
value={isEnabled}
|
||||||
|
trackColor={{ true: Colors.turquoiseDark }}
|
||||||
|
/>
|
||||||
|
</Segment>
|
||||||
|
|
||||||
|
<Segment title={labels.tempScale.segmentTitle}>
|
||||||
|
<AppText>{labels.tempScale.segmentExplainer}</AppText>
|
||||||
|
<TemperatureSlider />
|
||||||
|
</Segment>
|
||||||
|
|
||||||
|
<Segment title={labels.useCervix.title}>
|
||||||
|
<AppSwitch
|
||||||
|
onToggle={onCervixToggle}
|
||||||
|
text={cervixText}
|
||||||
|
value={shouldUseCervix}
|
||||||
|
trackColor={{ true: Colors.turquoiseDark }}
|
||||||
|
/>
|
||||||
|
</Segment>
|
||||||
|
|
||||||
|
<Segment title={labels.periodPrediction.title} last>
|
||||||
|
<AppSwitch
|
||||||
|
onToggle={onPeriodPredictionToggle}
|
||||||
|
text={periodPredictionText}
|
||||||
|
value={isPeriodPredictionEnabled}
|
||||||
|
trackColor={{ true: Colors.turquoiseDark }}
|
||||||
|
/>
|
||||||
|
</Segment>
|
||||||
|
</AppPage>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Settings
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
import { Alert } from 'react-native'
|
import { Alert, Platform } from 'react-native'
|
||||||
import DocumentPicker from 'react-native-document-picker'
|
import DocumentPicker from 'react-native-document-picker'
|
||||||
import rnfs from 'react-native-fs'
|
import rnfs from 'react-native-fs'
|
||||||
import importCsv from '../../../lib/import-export/import-from-csv'
|
import importCsv from '../../../lib/import-export/import-from-csv'
|
||||||
@@ -59,21 +59,28 @@ export default function ImportData({ resetIsDeletingData, setIsLoading }) {
|
|||||||
|
|
||||||
function openImportDialog() {
|
function openImportDialog() {
|
||||||
resetIsDeletingData()
|
resetIsDeletingData()
|
||||||
Alert.alert(t('dialog.title'), t('dialog.message'), [
|
|
||||||
|
let buttons = [
|
||||||
{
|
{
|
||||||
text: t('dialog.cancel'),
|
text: t('dialog.cancel'),
|
||||||
style: 'cancel',
|
style: 'cancel',
|
||||||
onPress: () => {},
|
onPress: () => {},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
text: t('dialog.delete'),
|
|
||||||
onPress: () => startImport(true),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
text: t('dialog.replace'),
|
text: t('dialog.replace'),
|
||||||
onPress: () => startImport(false),
|
onPress: () => startImport(false),
|
||||||
},
|
},
|
||||||
])
|
{
|
||||||
|
text: t('dialog.delete'),
|
||||||
|
onPress: () => startImport(true),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
if (Platform.OS === 'android') {
|
||||||
|
buttons = [buttons[0], buttons[2], buttons[1]]
|
||||||
|
}
|
||||||
|
|
||||||
|
Alert.alert(t('dialog.title'), t('dialog.message'), buttons)
|
||||||
}
|
}
|
||||||
|
|
||||||
function showImportErrorAlert(message) {
|
function showImportErrorAlert(message) {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import Reminders from './reminders/reminders'
|
import Reminders from './reminders/reminders'
|
||||||
import NfpSettings from './nfp-settings'
|
import Customization from './customization'
|
||||||
import DataManagement from './data-management/DataManagement'
|
import DataManagement from './data-management/DataManagement'
|
||||||
|
import Info from './Info'
|
||||||
import Password from './password'
|
import Password from './password'
|
||||||
import About from './About'
|
import About from './About'
|
||||||
import License from './License'
|
import License from './License'
|
||||||
@@ -8,8 +9,9 @@ import PrivacyPolicy from './privacy-policy'
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
Reminders,
|
Reminders,
|
||||||
NfpSettings,
|
Customization,
|
||||||
DataManagement,
|
DataManagement,
|
||||||
|
Info,
|
||||||
Password,
|
Password,
|
||||||
About,
|
About,
|
||||||
License,
|
License,
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
import React, { useState } from 'react'
|
|
||||||
import { Platform, StyleSheet, View } from 'react-native'
|
|
||||||
|
|
||||||
import AppIcon from '../../common/app-icon'
|
|
||||||
import AppPage from '../../common/app-page'
|
|
||||||
import AppSwitch from '../../common/app-switch'
|
|
||||||
import AppText from '../../common/app-text'
|
|
||||||
import TemperatureSlider from './temperature-slider'
|
|
||||||
import Segment from '../../common/segment'
|
|
||||||
|
|
||||||
import { useCervixObservable, saveUseCervix } from '../../../local-storage'
|
|
||||||
import { Colors, Spacing, Typography } from '../../../styles'
|
|
||||||
import labels from '../../../i18n/en/settings'
|
|
||||||
|
|
||||||
const Settings = () => {
|
|
||||||
const [shouldUseCervix, setShouldUseCervix] = useState(
|
|
||||||
useCervixObservable.value
|
|
||||||
)
|
|
||||||
|
|
||||||
const onCervixToggle = (value) => {
|
|
||||||
setShouldUseCervix(value)
|
|
||||||
saveUseCervix(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
const cervixText = shouldUseCervix
|
|
||||||
? labels.useCervix.cervixModeOn
|
|
||||||
: labels.useCervix.cervixModeOff
|
|
||||||
|
|
||||||
return (
|
|
||||||
<AppPage>
|
|
||||||
<Segment title={labels.useCervix.title}>
|
|
||||||
<AppSwitch
|
|
||||||
onToggle={onCervixToggle}
|
|
||||||
text={cervixText}
|
|
||||||
value={shouldUseCervix}
|
|
||||||
/>
|
|
||||||
</Segment>
|
|
||||||
{/* for iOS disabled temporarily, TODO https://gitlab.com/bloodyhealth/drip/-/issues/545 */}
|
|
||||||
{Platform.OS !== 'ios' && (
|
|
||||||
<Segment title={labels.tempScale.segmentTitle}>
|
|
||||||
<AppText>{labels.tempScale.segmentExplainer}</AppText>
|
|
||||||
<TemperatureSlider />
|
|
||||||
</Segment>
|
|
||||||
)}
|
|
||||||
<Segment last>
|
|
||||||
<View style={styles.line}>
|
|
||||||
<AppIcon
|
|
||||||
color={Colors.purple}
|
|
||||||
name="info-with-circle"
|
|
||||||
style={styles.icon}
|
|
||||||
/>
|
|
||||||
<AppText style={styles.title}>{labels.preOvu.title}</AppText>
|
|
||||||
</View>
|
|
||||||
<AppText>{labels.preOvu.note}</AppText>
|
|
||||||
</Segment>
|
|
||||||
</AppPage>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Settings
|
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
|
||||||
icon: {
|
|
||||||
marginRight: Spacing.base,
|
|
||||||
},
|
|
||||||
line: {
|
|
||||||
flexDirection: 'row',
|
|
||||||
alignItems: 'center',
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
...Typography.subtitle,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
@@ -8,11 +8,15 @@ import TemperatureReminder from './temperature-reminder'
|
|||||||
import {
|
import {
|
||||||
periodReminderObservable,
|
periodReminderObservable,
|
||||||
savePeriodReminder,
|
savePeriodReminder,
|
||||||
|
periodPredictionObservable,
|
||||||
} from '../../../local-storage'
|
} from '../../../local-storage'
|
||||||
|
|
||||||
import labels from '../../../i18n/en/settings'
|
import labels from '../../../i18n/en/settings'
|
||||||
|
import { Alert, Pressable } from 'react-native'
|
||||||
|
|
||||||
const Reminders = () => {
|
const Reminders = () => {
|
||||||
|
const isPeriodPredictionDisabled = !periodPredictionObservable.value
|
||||||
|
|
||||||
const [isPeriodReminderEnabled, setIsPeriodReminderEnabled] = useState(
|
const [isPeriodReminderEnabled, setIsPeriodReminderEnabled] = useState(
|
||||||
periodReminderObservable.value.enabled
|
periodReminderObservable.value.enabled
|
||||||
)
|
)
|
||||||
@@ -21,18 +25,30 @@ const Reminders = () => {
|
|||||||
savePeriodReminder({ enabled: isEnabled })
|
savePeriodReminder({ enabled: isEnabled })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const reminderDisabledPrompt = () => {
|
||||||
|
if (!periodPredictionObservable.value) {
|
||||||
|
Alert.alert(
|
||||||
|
labels.periodReminder.alertNoPeriodReminder.title,
|
||||||
|
labels.periodReminder.alertNoPeriodReminder.message
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AppPage>
|
<AppPage>
|
||||||
<Segment title={labels.tempReminder.title}>
|
<Pressable onPress={reminderDisabledPrompt}>
|
||||||
|
<Segment title={labels.periodReminder.title}>
|
||||||
|
<AppSwitch
|
||||||
|
onToggle={periodReminderToggle}
|
||||||
|
text={labels.periodReminder.reminderText}
|
||||||
|
value={isPeriodReminderEnabled}
|
||||||
|
disabled={isPeriodPredictionDisabled}
|
||||||
|
/>
|
||||||
|
</Segment>
|
||||||
|
</Pressable>
|
||||||
|
<Segment title={labels.tempReminder.title} last>
|
||||||
<TemperatureReminder />
|
<TemperatureReminder />
|
||||||
</Segment>
|
</Segment>
|
||||||
<Segment title={labels.periodReminder.title} last>
|
|
||||||
<AppSwitch
|
|
||||||
onToggle={periodReminderToggle}
|
|
||||||
text={labels.periodReminder.reminderText}
|
|
||||||
value={isPeriodReminderEnabled}
|
|
||||||
/>
|
|
||||||
</Segment>
|
|
||||||
</AppPage>
|
</AppPage>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,10 +7,11 @@ import MenuItem from './menu-item'
|
|||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
|
||||||
const menuItems = [
|
const menuItems = [
|
||||||
|
{ label: 'customization', componentName: 'Customization' },
|
||||||
{ label: 'reminders', componentName: 'Reminders' },
|
{ label: 'reminders', componentName: 'Reminders' },
|
||||||
{ label: 'nfpSettings', componentName: 'NfpSettings' },
|
|
||||||
{ label: 'dataManagement', componentName: 'DataManagement' },
|
{ label: 'dataManagement', componentName: 'DataManagement' },
|
||||||
{ label: 'password', componentName: 'Password' },
|
{ label: 'password', componentName: 'Password' },
|
||||||
|
{ label: 'info', componentName: 'Info' },
|
||||||
]
|
]
|
||||||
|
|
||||||
const SettingsMenu = ({ navigate }) => {
|
const SettingsMenu = ({ navigate }) => {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { StyleSheet, View } from 'react-native'
|
|||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
|
|
||||||
import AppText from '../common/app-text'
|
import AppText from '../common/app-text'
|
||||||
|
import { formatDecimal } from '../helpers/cycle-day'
|
||||||
import { Sizes, Spacing, Typography } from '../../styles'
|
import { Sizes, Spacing, Typography } from '../../styles'
|
||||||
|
|
||||||
const StatsOverview = ({ data }) => {
|
const StatsOverview = ({ data }) => {
|
||||||
@@ -16,7 +16,9 @@ StatsOverview.propTypes = {
|
|||||||
|
|
||||||
const Row = ({ rowContent }) => {
|
const Row = ({ rowContent }) => {
|
||||||
const isStandardDeviation = rowContent[1].includes('deviation')
|
const isStandardDeviation = rowContent[1].includes('deviation')
|
||||||
|
if (isStandardDeviation && rowContent[0] !== '—') {
|
||||||
|
rowContent[0] = formatDecimal(rowContent[0], 1)
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<View style={styles.row}>
|
<View style={styles.row}>
|
||||||
<Cell content={rowContent[0]} isLeft />
|
<Cell content={rowContent[0]} isLeft />
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import PeriodDetailsModal from './PeriodDetailsModal'
|
|||||||
|
|
||||||
import cycleModule from '../../lib/cycle'
|
import cycleModule from '../../lib/cycle'
|
||||||
import { getCycleLengthStats as getCycleInfo } from '../../lib/cycle-length'
|
import { getCycleLengthStats as getCycleInfo } from '../../lib/cycle-length'
|
||||||
|
import { formatDecimal } from '../helpers/cycle-day'
|
||||||
|
|
||||||
import { Containers, Sizes, Spacing, Typography } from '../../styles'
|
import { Containers, Sizes, Spacing, Typography } from '../../styles'
|
||||||
|
|
||||||
@@ -27,6 +28,7 @@ const Stats = () => {
|
|||||||
numberOfCycles > 0
|
numberOfCycles > 0
|
||||||
? getCycleInfo(cycleLengths)
|
? getCycleInfo(cycleLengths)
|
||||||
: { minimum: '—', maximum: '—', stdDeviation: '—' }
|
: { minimum: '—', maximum: '—', stdDeviation: '—' }
|
||||||
|
|
||||||
const standardDeviation = cycleData.stdDeviation
|
const standardDeviation = cycleData.stdDeviation
|
||||||
? cycleData.stdDeviation
|
? cycleData.stdDeviation
|
||||||
: '—'
|
: '—'
|
||||||
@@ -37,6 +39,10 @@ const Stats = () => {
|
|||||||
[numberOfCycles, t('overview.completedCycles')],
|
[numberOfCycles, t('overview.completedCycles')],
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if (cycleData.mean) {
|
||||||
|
cycleData.mean = formatDecimal(cycleData.mean, 1)
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SafeAreaView style={styles.pageContainer}>
|
<SafeAreaView style={styles.pageContainer}>
|
||||||
<ScrollView contentContainerStyle={styles.overviewContainer}>
|
<ScrollView contentContainerStyle={styles.overviewContainer}>
|
||||||
|
|||||||
@@ -116,9 +116,9 @@
|
|||||||
"name": "Data",
|
"name": "Data",
|
||||||
"text": "import, export or delete your data"
|
"text": "import, export or delete your data"
|
||||||
},
|
},
|
||||||
"nfpSettings": {
|
"customization": {
|
||||||
"name": "NFP settings",
|
"name": "Customization",
|
||||||
"text": "define how you want to use NFP"
|
"text": "define how you want to use drip"
|
||||||
},
|
},
|
||||||
"password": {
|
"password": {
|
||||||
"name": "Password",
|
"name": "Password",
|
||||||
@@ -127,9 +127,16 @@
|
|||||||
"reminders": {
|
"reminders": {
|
||||||
"name": "Reminders",
|
"name": "Reminders",
|
||||||
"text": "turn on/off reminders"
|
"text": "turn on/off reminders"
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"name": "Info",
|
||||||
|
"text": "Learn more about how drip works"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"title": "Settings"
|
"title": "Settings"
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"title": "info"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
|
|||||||
@@ -113,11 +113,8 @@ export const mood = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const temperature = {
|
export const temperature = {
|
||||||
// disabled temporarily, TODO https://gitlab.com/bloodyhealth/drip/-/issues/545 */}
|
outOfRangeWarning: 'This temperature value is out of the current range for the temperature chart. You can change the range in the settings.',
|
||||||
// outOfRangeWarning: 'This temperature value is out of the current range for the temperature chart. You can change the range in the settings.',
|
|
||||||
outOfRangeWarning: 'This temperature value is too high or low to be shown on the temperature chart.',
|
|
||||||
outOfAbsoluteRangeWarning: 'This temperature value is too high or low to be shown on the temperature chart.',
|
outOfAbsoluteRangeWarning: 'This temperature value is too high or low to be shown on the temperature chart.',
|
||||||
saveAnyway: 'Save anyway',
|
|
||||||
temperature: {
|
temperature: {
|
||||||
header: "Temperature",
|
header: "Temperature",
|
||||||
explainer: 'Take your temperature right after waking up, before getting out of bed'
|
explainer: 'Take your temperature right after waking up, before getting out of bed'
|
||||||
|
|||||||
@@ -50,6 +50,11 @@ export default {
|
|||||||
'Get a notification 3 days before your next period is likely to start.',
|
'Get a notification 3 days before your next period is likely to start.',
|
||||||
notification: (daysToEndOfPrediction) =>
|
notification: (daysToEndOfPrediction) =>
|
||||||
`Your next period is likely to start in 3 to ${daysToEndOfPrediction} days.`,
|
`Your next period is likely to start in 3 to ${daysToEndOfPrediction} days.`,
|
||||||
|
alertNoPeriodReminder: {
|
||||||
|
title: 'Period predictions turned off',
|
||||||
|
message:
|
||||||
|
'To use the period reminder please first enable period predictions in the customization settings.',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
useCervix: {
|
useCervix: {
|
||||||
title: 'Secondary symptom',
|
title: 'Secondary symptom',
|
||||||
@@ -58,6 +63,11 @@ export default {
|
|||||||
cervixModeOff:
|
cervixModeOff:
|
||||||
'By default, cervical mucus values are being used for symptothermal fertility detection. You can switch here to use cervix values for symptothermal fertility detection',
|
'By default, cervical mucus values are being used for symptothermal fertility detection. You can switch here to use cervix values for symptothermal fertility detection',
|
||||||
},
|
},
|
||||||
|
periodPrediction: {
|
||||||
|
title: 'Period predictions',
|
||||||
|
on: 'drip predicts your 3 next menstrual bleedings based on the statistics of your previously tracked cycles, min 3 complete cycles.',
|
||||||
|
off: 'There are no predictions for menstrual cycles displayed. If turned on the calendar and the home screen will display period predictions.',
|
||||||
|
},
|
||||||
passwordSettings: {
|
passwordSettings: {
|
||||||
title: 'App password',
|
title: 'App password',
|
||||||
explainerDisabled:
|
explainerDisabled:
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ After tracking at least 3 menstrual cycles, drip. will give you an overview of
|
|||||||
· whether the length of your cycles varied significantly (in "stats" and in bleeding predictions)
|
· whether the length of your cycles varied significantly (in "stats" and in bleeding predictions)
|
||||||
· and predict your next 3 cycles with a range of 3 or 5 days (on home screen and "calendar").
|
· and predict your next 3 cycles with a range of 3 or 5 days (on home screen and "calendar").
|
||||||
|
|
||||||
The app allows you to track different intensities of bleeding. On the chart and on the calendar, bleeding values are colored in different shades of red. The darker, the more intense your bleeding. Every bleeding value that is not excluded is taken into account for fertility calculation and prediction for the start of next cycles.
|
The app allows you to track different intensities of bleeding. On the chart and on the calendar, bleeding values are colored in different shades of red. The darker, the more intense your bleeding. Every bleeding value that is not excluded is taken into account for fertility calculation and period predictions.
|
||||||
|
|
||||||
Excluding bleeding values is for tracking bleeding when it's not marking the start of a new cycle or the continuation of menstrual bleeding the day(s) before, e.g. bleeding caused by ovulation or a miscarriage.
|
Excluding bleeding values is for tracking bleeding when it's not marking the start of a new cycle or the continuation of menstrual bleeding the day(s) before, e.g. bleeding caused by ovulation or a miscarriage.
|
||||||
|
|
||||||
|
|||||||
@@ -2,23 +2,36 @@ require_relative '../node_modules/react-native/scripts/react_native_pods'
|
|||||||
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
|
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
|
||||||
|
|
||||||
platform :ios, '11.0'
|
platform :ios, '11.0'
|
||||||
|
install! 'cocoapods', :deterministic_uuids => false
|
||||||
|
|
||||||
target 'drip' do
|
target 'drip' do
|
||||||
config = use_native_modules!
|
config = use_native_modules!
|
||||||
|
|
||||||
|
# Flags change depending on the env values.
|
||||||
|
flags = get_default_flags()
|
||||||
|
|
||||||
use_react_native!(
|
use_react_native!(
|
||||||
:path => config[:reactNativePath],
|
:path => config[:reactNativePath],
|
||||||
# to enable hermes on iOS, change `false` to `true` and then install pods
|
# to enable hermes on iOS, change `false` to `true` and then install pods
|
||||||
:hermes_enabled => false
|
:hermes_enabled => flags[:hermes_enabled],
|
||||||
|
:fabric_enabled => flags[:fabric_enabled],
|
||||||
|
# An absolute path to your application root.
|
||||||
|
:app_path => "#{Pod::Config.instance.installation_root}/.."
|
||||||
)
|
)
|
||||||
|
|
||||||
target 'dripTests' do
|
target 'dripTests' do
|
||||||
inherit! :complete
|
inherit! :complete
|
||||||
# Pods for testing
|
# Pods for testing
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Enables Flipper.
|
||||||
|
#
|
||||||
|
# Note that if you have use_frameworks! enabled, Flipper will not work and
|
||||||
|
# you should disable the next line.
|
||||||
|
use_flipper!()
|
||||||
|
|
||||||
post_install do |installer|
|
post_install do |installer|
|
||||||
react_native_post_install(installer)
|
react_native_post_install(installer)
|
||||||
__apply_Xcode_12_5_M1_post_install_workaround(installer)
|
__apply_Xcode_12_5_M1_post_install_workaround(installer)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,12 +3,13 @@
|
|||||||
archiveVersion = 1;
|
archiveVersion = 1;
|
||||||
classes = {
|
classes = {
|
||||||
};
|
};
|
||||||
objectVersion = 46;
|
objectVersion = 54;
|
||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
00E356F31AD99517003FC87E /* dripTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* dripTests.m */; };
|
00E356F31AD99517003FC87E /* dripTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* dripTests.m */; };
|
||||||
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
|
0C80B921A6F3F58F76C31292 /* libPods-drip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-drip.a */; };
|
||||||
|
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
|
||||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||||
540918B325AB726000086AE1 /* OpenSans-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 540918A325AB725F00086AE1 /* OpenSans-Light.ttf */; };
|
540918B325AB726000086AE1 /* OpenSans-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 540918A325AB725F00086AE1 /* OpenSans-Light.ttf */; };
|
||||||
@@ -30,17 +31,16 @@
|
|||||||
5472A45A25BB7807005E81DE /* drip-icon-font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5472A44925BB7806005E81DE /* drip-icon-font.ttf */; };
|
5472A45A25BB7807005E81DE /* drip-icon-font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5472A44925BB7806005E81DE /* drip-icon-font.ttf */; };
|
||||||
5472A45B25BB7807005E81DE /* drip-icon-font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5472A44925BB7806005E81DE /* drip-icon-font.ttf */; };
|
5472A45B25BB7807005E81DE /* drip-icon-font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5472A44925BB7806005E81DE /* drip-icon-font.ttf */; };
|
||||||
5472A45E25BB7C43005E81DE /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5472A45C25BB7C42005E81DE /* Entypo.ttf */; };
|
5472A45E25BB7C43005E81DE /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5472A45C25BB7C42005E81DE /* Entypo.ttf */; };
|
||||||
5488D8D728ABF478008DD66D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5488D8D628ABF478008DD66D /* LaunchScreen.storyboard */; };
|
|
||||||
54DFE73A25D94D6E0025C3FC /* swipe.png in Resources */ = {isa = PBXBuildFile; fileRef = 54DFE73925D94D6E0025C3FC /* swipe.png */; };
|
54DFE73A25D94D6E0025C3FC /* swipe.png in Resources */ = {isa = PBXBuildFile; fileRef = 54DFE73925D94D6E0025C3FC /* swipe.png */; };
|
||||||
54DFE73B25D94D6E0025C3FC /* swipe.png in Resources */ = {isa = PBXBuildFile; fileRef = 54DFE73925D94D6E0025C3FC /* swipe.png */; };
|
54DFE73B25D94D6E0025C3FC /* swipe.png in Resources */ = {isa = PBXBuildFile; fileRef = 54DFE73925D94D6E0025C3FC /* swipe.png */; };
|
||||||
54DFE73D25D94DED0025C3FC /* cycle-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 54DFE73C25D94DED0025C3FC /* cycle-icon.png */; };
|
54DFE73D25D94DED0025C3FC /* cycle-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 54DFE73C25D94DED0025C3FC /* cycle-icon.png */; };
|
||||||
54DFE73E25D94DED0025C3FC /* cycle-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 54DFE73C25D94DED0025C3FC /* cycle-icon.png */; };
|
54DFE73E25D94DED0025C3FC /* cycle-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 54DFE73C25D94DED0025C3FC /* cycle-icon.png */; };
|
||||||
54E1D49923E7588F003FA37B /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54E1D49823E7588F003FA37B /* JavaScriptCore.framework */; };
|
54E1D49923E7588F003FA37B /* (null) in Frameworks */ = {isa = PBXBuildFile; };
|
||||||
62F2A4645AC84CDC9506FF27 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AEBF0735214455AAEDF56D5 /* libc++.tbd */; };
|
62F2A4645AC84CDC9506FF27 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AEBF0735214455AAEDF56D5 /* libc++.tbd */; };
|
||||||
|
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
|
||||||
BD7041F2826E4A2CBE6CB87D /* RealmJSTests.xctest in Frameworks */ = {isa = PBXBuildFile; fileRef = F79F72C5390646E0A06AAE68 /* RealmJSTests.xctest */; };
|
BD7041F2826E4A2CBE6CB87D /* RealmJSTests.xctest in Frameworks */ = {isa = PBXBuildFile; fileRef = F79F72C5390646E0A06AAE68 /* RealmJSTests.xctest */; };
|
||||||
D91133DCE120440893E2FD2E /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = CD8C8B91E0A747B3883A0D56 /* libz.tbd */; };
|
D91133DCE120440893E2FD2E /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = CD8C8B91E0A747B3883A0D56 /* libz.tbd */; };
|
||||||
E545887DBE87912F11770AB9 /* libPods-drip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 699D3B3789FC2E5185CB9894 /* libPods-drip.a */; };
|
DFCB30DF40F45C00CFBBE07E /* libPods-drip-dripTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-drip-dripTests.a */; };
|
||||||
FAC423E577F555F66C9891E4 /* libPods-drip-dripTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F33CCAAB670FD0D98C5C72DF /* libPods-drip-dripTests.a */; };
|
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
@@ -54,27 +54,23 @@
|
|||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
|
|
||||||
00E356EE1AD99517003FC87E /* dripTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = dripTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
00E356EE1AD99517003FC87E /* dripTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = dripTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
00E356F21AD99517003FC87E /* dripTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = dripTests.m; sourceTree = "<group>"; };
|
00E356F21AD99517003FC87E /* dripTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = dripTests.m; sourceTree = "<group>"; };
|
||||||
13B07F961A680F5B00A75B9A /* drip.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = drip.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
13B07F961A680F5B00A75B9A /* drip.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = drip.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = drip/AppDelegate.h; sourceTree = "<group>"; };
|
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = drip/AppDelegate.h; sourceTree = "<group>"; };
|
||||||
13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = drip/AppDelegate.m; sourceTree = "<group>"; };
|
13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = drip/AppDelegate.mm; sourceTree = "<group>"; };
|
||||||
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = drip/Images.xcassets; sourceTree = "<group>"; };
|
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = drip/Images.xcassets; sourceTree = "<group>"; };
|
||||||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = drip/Info.plist; sourceTree = "<group>"; };
|
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = drip/Info.plist; sourceTree = "<group>"; };
|
||||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = drip/main.m; sourceTree = "<group>"; };
|
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = drip/main.m; sourceTree = "<group>"; };
|
||||||
2B1578D5817F46EE9BFC9BAF /* Pods-drip.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-drip.debug.xcconfig"; path = "Target Support Files/Pods-drip/Pods-drip.debug.xcconfig"; sourceTree = "<group>"; };
|
19F6CBCC0A4E27FBF8BF4A61 /* libPods-drip-dripTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-drip-dripTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
4A9B2D77CAC90DFEB5C4565A /* Pods-dripTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dripTests.debug.xcconfig"; path = "Target Support Files/Pods-dripTests/Pods-dripTests.debug.xcconfig"; sourceTree = "<group>"; };
|
3B4392A12AC88292D35C810B /* Pods-drip.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-drip.debug.xcconfig"; path = "Target Support Files/Pods-drip/Pods-drip.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
5409189625AB725F00086AE1 /* OpenSans-LightItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "OpenSans-LightItalic.ttf"; path = "../../assets/fonts/OpenSans-LightItalic.ttf"; sourceTree = "<group>"; };
|
|
||||||
540918A225AB725F00086AE1 /* Prompt-ExtraLight.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "Prompt-ExtraLight.ttf"; path = "../../assets/fonts/Prompt-ExtraLight.ttf"; sourceTree = "<group>"; };
|
|
||||||
540918A325AB725F00086AE1 /* OpenSans-Light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "OpenSans-Light.ttf"; path = "../../assets/fonts/OpenSans-Light.ttf"; sourceTree = "<group>"; };
|
540918A325AB725F00086AE1 /* OpenSans-Light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "OpenSans-Light.ttf"; path = "../../assets/fonts/OpenSans-Light.ttf"; sourceTree = "<group>"; };
|
||||||
540918A425AB725F00086AE1 /* Jost-700-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "Jost-700-Bold.otf"; path = "../../assets/fonts/Jost-700-Bold.otf"; sourceTree = "<group>"; };
|
540918A425AB725F00086AE1 /* Jost-700-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "Jost-700-Bold.otf"; path = "../../assets/fonts/Jost-700-Bold.otf"; sourceTree = "<group>"; };
|
||||||
540918A525AB725F00086AE1 /* Menu.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Menu.ttf; path = ../../assets/fonts/Menu.ttf; sourceTree = "<group>"; };
|
540918A525AB725F00086AE1 /* Menu.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Menu.ttf; path = ../../assets/fonts/Menu.ttf; sourceTree = "<group>"; };
|
||||||
540918A625AB726000086AE1 /* drip-home-icons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "drip-home-icons.ttf"; path = "../../assets/fonts/drip-home-icons.ttf"; sourceTree = "<group>"; };
|
540918A625AB726000086AE1 /* drip-home-icons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "drip-home-icons.ttf"; path = "../../assets/fonts/drip-home-icons.ttf"; sourceTree = "<group>"; };
|
||||||
540918A725AB726000086AE1 /* Jost-400-Book.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "Jost-400-Book.otf"; path = "../../assets/fonts/Jost-400-Book.otf"; sourceTree = "<group>"; };
|
540918A725AB726000086AE1 /* Jost-400-Book.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "Jost-400-Book.otf"; path = "../../assets/fonts/Jost-400-Book.otf"; sourceTree = "<group>"; };
|
||||||
540918A825AB726000086AE1 /* drip-icon-font.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "drip-icon-font.ttf"; path = "../../assets/fonts/drip-icon-font.ttf"; sourceTree = "<group>"; };
|
|
||||||
540918A925AB726000086AE1 /* OpenSans-SemiBold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "OpenSans-SemiBold.ttf"; path = "../../assets/fonts/OpenSans-SemiBold.ttf"; sourceTree = "<group>"; };
|
540918A925AB726000086AE1 /* OpenSans-SemiBold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "OpenSans-SemiBold.ttf"; path = "../../assets/fonts/OpenSans-SemiBold.ttf"; sourceTree = "<group>"; };
|
||||||
5472A44125BB7806005E81DE /* drip-home-icons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "drip-home-icons.ttf"; path = "../assets/fonts/drip-home-icons.ttf"; sourceTree = "<group>"; };
|
5472A44125BB7806005E81DE /* drip-home-icons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "drip-home-icons.ttf"; path = "../assets/fonts/drip-home-icons.ttf"; sourceTree = "<group>"; };
|
||||||
5472A44225BB7806005E81DE /* OpenSans-Light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "OpenSans-Light.ttf"; path = "../assets/fonts/OpenSans-Light.ttf"; sourceTree = "<group>"; };
|
5472A44225BB7806005E81DE /* OpenSans-Light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "OpenSans-Light.ttf"; path = "../assets/fonts/OpenSans-Light.ttf"; sourceTree = "<group>"; };
|
||||||
@@ -86,28 +82,24 @@
|
|||||||
5472A44825BB7806005E81DE /* OpenSans-LightItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "OpenSans-LightItalic.ttf"; path = "../assets/fonts/OpenSans-LightItalic.ttf"; sourceTree = "<group>"; };
|
5472A44825BB7806005E81DE /* OpenSans-LightItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "OpenSans-LightItalic.ttf"; path = "../assets/fonts/OpenSans-LightItalic.ttf"; sourceTree = "<group>"; };
|
||||||
5472A44925BB7806005E81DE /* drip-icon-font.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "drip-icon-font.ttf"; path = "../assets/fonts/drip-icon-font.ttf"; sourceTree = "<group>"; };
|
5472A44925BB7806005E81DE /* drip-icon-font.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "drip-icon-font.ttf"; path = "../assets/fonts/drip-icon-font.ttf"; sourceTree = "<group>"; };
|
||||||
5472A45C25BB7C42005E81DE /* Entypo.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; };
|
5472A45C25BB7C42005E81DE /* Entypo.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; };
|
||||||
5488D8D628ABF478008DD66D /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = drip/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
|
||||||
548C3D3A2898FB0600013449 /* drip-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "drip-Bridging-Header.h"; sourceTree = "<group>"; };
|
548C3D3A2898FB0600013449 /* drip-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "drip-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
54DFE73925D94D6E0025C3FC /* swipe.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = swipe.png; path = ../assets/swipe.png; sourceTree = "<group>"; };
|
54DFE73925D94D6E0025C3FC /* swipe.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = swipe.png; path = ../assets/swipe.png; sourceTree = "<group>"; };
|
||||||
54DFE73C25D94DED0025C3FC /* cycle-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cycle-icon.png"; path = "../assets/cycle-icon.png"; sourceTree = "<group>"; };
|
54DFE73C25D94DED0025C3FC /* cycle-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cycle-icon.png"; path = "../assets/cycle-icon.png"; sourceTree = "<group>"; };
|
||||||
54E1D49823E7588F003FA37B /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
5709B34CF0A7D63546082F79 /* Pods-drip.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-drip.release.xcconfig"; path = "Target Support Files/Pods-drip/Pods-drip.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
5ABC2C1190B4D25AC0398D09 /* Pods-dripTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dripTests.release.xcconfig"; path = "Target Support Files/Pods-dripTests/Pods-dripTests.release.xcconfig"; sourceTree = "<group>"; };
|
5B7EB9410499542E8C5724F5 /* Pods-drip-dripTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-drip-dripTests.debug.xcconfig"; path = "Target Support Files/Pods-drip-dripTests/Pods-drip-dripTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
5C649EDC281151BC005FED46 /* dripRelease.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = dripRelease.entitlements; path = drip/dripRelease.entitlements; sourceTree = "<group>"; };
|
5C649EDC281151BC005FED46 /* dripRelease.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = dripRelease.entitlements; path = drip/dripRelease.entitlements; sourceTree = "<group>"; };
|
||||||
699D3B3789FC2E5185CB9894 /* libPods-drip.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-drip.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
5DCACB8F33CDC322A6C60F78 /* libPods-drip.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-drip.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
6B7C2A0A7AAA83BBEFBD0B6A /* libPods-drip-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-drip-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
72DDDE8D34518ED64FD7EBBA /* Pods-drip-dripTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-drip-dripTests.release.xcconfig"; path = "Target Support Files/Pods-drip-dripTests/Pods-drip-dripTests.release.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
7A5827160B914D2B99C47381 /* libRealmReact.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRealmReact.a; sourceTree = "<group>"; };
|
7A5827160B914D2B99C47381 /* libRealmReact.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRealmReact.a; sourceTree = "<group>"; };
|
||||||
|
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = drip/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
84CCEBD3B2C44758853BC941 /* libRNFS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNFS.a; sourceTree = "<group>"; };
|
84CCEBD3B2C44758853BC941 /* libRNFS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNFS.a; sourceTree = "<group>"; };
|
||||||
|
89C6BE57DB24E9ADA2F236DE /* Pods-drip-dripTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-drip-dripTests.release.xcconfig"; path = "Target Support Files/Pods-drip-dripTests/Pods-drip-dripTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
90224CB4571D41C4969E9722 /* libGCDWebServers.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libGCDWebServers.a; sourceTree = "<group>"; };
|
90224CB4571D41C4969E9722 /* libGCDWebServers.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libGCDWebServers.a; sourceTree = "<group>"; };
|
||||||
9AEBF0735214455AAEDF56D5 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
9AEBF0735214455AAEDF56D5 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
||||||
A8B59389C2FC4F19BD30ABC3 /* libRNShare.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNShare.a; sourceTree = "<group>"; };
|
A8B59389C2FC4F19BD30ABC3 /* libRNShare.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNShare.a; sourceTree = "<group>"; };
|
||||||
AB636AA0286D45CE9B23B2C3 /* libRCTRestart.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTRestart.a; sourceTree = "<group>"; };
|
AB636AA0286D45CE9B23B2C3 /* libRCTRestart.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTRestart.a; sourceTree = "<group>"; };
|
||||||
B6FD0A300273E09D74C14C19 /* Pods-drip-dripTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-drip-dripTests.debug.xcconfig"; path = "Target Support Files/Pods-drip-dripTests/Pods-drip-dripTests.debug.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
CD8C8B91E0A747B3883A0D56 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
CD8C8B91E0A747B3883A0D56 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
||||||
D211D71BE5A8436A978770A9 /* libRNDocumentPicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNDocumentPicker.a; sourceTree = "<group>"; };
|
D211D71BE5A8436A978770A9 /* libRNDocumentPicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNDocumentPicker.a; sourceTree = "<group>"; };
|
||||||
E086AB579387F878A2CBCFEB /* libPods-drip-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-drip-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||||
E1C5175D0AEA2ABCC690D6E2 /* Pods-drip.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-drip.release.xcconfig"; path = "Target Support Files/Pods-drip/Pods-drip.release.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
F33CCAAB670FD0D98C5C72DF /* libPods-drip-dripTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-drip-dripTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
F5039D0A572B4BBCB7995891 /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = "<group>"; };
|
F5039D0A572B4BBCB7995891 /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = "<group>"; };
|
||||||
F710D85E391D4094816E1B62 /* libRealmJS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRealmJS.a; sourceTree = "<group>"; };
|
F710D85E391D4094816E1B62 /* libRealmJS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRealmJS.a; sourceTree = "<group>"; };
|
||||||
F79F72C5390646E0A06AAE68 /* RealmJSTests.xctest */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = RealmJSTests.xctest; sourceTree = "<group>"; };
|
F79F72C5390646E0A06AAE68 /* RealmJSTests.xctest */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = RealmJSTests.xctest; sourceTree = "<group>"; };
|
||||||
@@ -118,7 +110,7 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
FAC423E577F555F66C9891E4 /* libPods-drip-dripTests.a in Frameworks */,
|
DFCB30DF40F45C00CFBBE07E /* libPods-drip-dripTests.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -126,11 +118,11 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
54E1D49923E7588F003FA37B /* JavaScriptCore.framework in Frameworks */,
|
54E1D49923E7588F003FA37B /* (null) in Frameworks */,
|
||||||
62F2A4645AC84CDC9506FF27 /* libc++.tbd in Frameworks */,
|
62F2A4645AC84CDC9506FF27 /* libc++.tbd in Frameworks */,
|
||||||
D91133DCE120440893E2FD2E /* libz.tbd in Frameworks */,
|
D91133DCE120440893E2FD2E /* libz.tbd in Frameworks */,
|
||||||
BD7041F2826E4A2CBE6CB87D /* RealmJSTests.xctest in Frameworks */,
|
BD7041F2826E4A2CBE6CB87D /* RealmJSTests.xctest in Frameworks */,
|
||||||
E545887DBE87912F11770AB9 /* libPods-drip.a in Frameworks */,
|
0C80B921A6F3F58F76C31292 /* libPods-drip.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -176,13 +168,12 @@
|
|||||||
13B07FAE1A68108700A75B9A /* drip */ = {
|
13B07FAE1A68108700A75B9A /* drip */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
5488D8D628ABF478008DD66D /* LaunchScreen.storyboard */,
|
|
||||||
5C649EDC281151BC005FED46 /* dripRelease.entitlements */,
|
5C649EDC281151BC005FED46 /* dripRelease.entitlements */,
|
||||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
|
|
||||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
||||||
13B07FB01A68108700A75B9A /* AppDelegate.m */,
|
13B07FB01A68108700A75B9A /* AppDelegate.mm */,
|
||||||
13B07FB51A68108700A75B9A /* Images.xcassets */,
|
13B07FB51A68108700A75B9A /* Images.xcassets */,
|
||||||
13B07FB61A68108700A75B9A /* Info.plist */,
|
13B07FB61A68108700A75B9A /* Info.plist */,
|
||||||
|
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
|
||||||
13B07FB71A68108700A75B9A /* main.m */,
|
13B07FB71A68108700A75B9A /* main.m */,
|
||||||
548C3D3A2898FB0600013449 /* drip-Bridging-Header.h */,
|
548C3D3A2898FB0600013449 /* drip-Bridging-Header.h */,
|
||||||
);
|
);
|
||||||
@@ -192,14 +183,12 @@
|
|||||||
2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
|
2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
54E1D49823E7588F003FA37B /* JavaScriptCore.framework */,
|
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
|
||||||
2D16E6891FA4F8E400B85C8A /* libReact.a */,
|
2D16E6891FA4F8E400B85C8A /* libReact.a */,
|
||||||
9AEBF0735214455AAEDF56D5 /* libc++.tbd */,
|
9AEBF0735214455AAEDF56D5 /* libc++.tbd */,
|
||||||
CD8C8B91E0A747B3883A0D56 /* libz.tbd */,
|
CD8C8B91E0A747B3883A0D56 /* libz.tbd */,
|
||||||
6B7C2A0A7AAA83BBEFBD0B6A /* libPods-drip-tvOS.a */,
|
5DCACB8F33CDC322A6C60F78 /* libPods-drip.a */,
|
||||||
E086AB579387F878A2CBCFEB /* libPods-drip-tvOSTests.a */,
|
19F6CBCC0A4E27FBF8BF4A61 /* libPods-drip-dripTests.a */,
|
||||||
699D3B3789FC2E5185CB9894 /* libPods-drip.a */,
|
|
||||||
F33CCAAB670FD0D98C5C72DF /* libPods-drip-dripTests.a */,
|
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -216,32 +205,16 @@
|
|||||||
90224CB4571D41C4969E9722 /* libGCDWebServers.a */,
|
90224CB4571D41C4969E9722 /* libGCDWebServers.a */,
|
||||||
F710D85E391D4094816E1B62 /* libRealmJS.a */,
|
F710D85E391D4094816E1B62 /* libRealmJS.a */,
|
||||||
F79F72C5390646E0A06AAE68 /* RealmJSTests.xctest */,
|
F79F72C5390646E0A06AAE68 /* RealmJSTests.xctest */,
|
||||||
|
540918A325AB725F00086AE1 /* OpenSans-Light.ttf */,
|
||||||
|
540918A925AB726000086AE1 /* OpenSans-SemiBold.ttf */,
|
||||||
|
540918A725AB726000086AE1 /* Jost-400-Book.otf */,
|
||||||
|
540918A525AB725F00086AE1 /* Menu.ttf */,
|
||||||
|
540918A625AB726000086AE1 /* drip-home-icons.ttf */,
|
||||||
|
540918A425AB725F00086AE1 /* Jost-700-Bold.otf */,
|
||||||
);
|
);
|
||||||
name = "Recovered References";
|
name = "Recovered References";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
6817ABC38854EEB6D3EE933A /* Pods */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
540918A625AB726000086AE1 /* drip-home-icons.ttf */,
|
|
||||||
540918A825AB726000086AE1 /* drip-icon-font.ttf */,
|
|
||||||
540918A725AB726000086AE1 /* Jost-400-Book.otf */,
|
|
||||||
540918A425AB725F00086AE1 /* Jost-700-Bold.otf */,
|
|
||||||
540918A525AB725F00086AE1 /* Menu.ttf */,
|
|
||||||
540918A325AB725F00086AE1 /* OpenSans-Light.ttf */,
|
|
||||||
5409189625AB725F00086AE1 /* OpenSans-LightItalic.ttf */,
|
|
||||||
540918A925AB726000086AE1 /* OpenSans-SemiBold.ttf */,
|
|
||||||
540918A225AB725F00086AE1 /* Prompt-ExtraLight.ttf */,
|
|
||||||
2B1578D5817F46EE9BFC9BAF /* Pods-drip.debug.xcconfig */,
|
|
||||||
E1C5175D0AEA2ABCC690D6E2 /* Pods-drip.release.xcconfig */,
|
|
||||||
4A9B2D77CAC90DFEB5C4565A /* Pods-dripTests.debug.xcconfig */,
|
|
||||||
5ABC2C1190B4D25AC0398D09 /* Pods-dripTests.release.xcconfig */,
|
|
||||||
B6FD0A300273E09D74C14C19 /* Pods-drip-dripTests.debug.xcconfig */,
|
|
||||||
72DDDE8D34518ED64FD7EBBA /* Pods-drip-dripTests.release.xcconfig */,
|
|
||||||
);
|
|
||||||
path = Pods;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
|
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -258,7 +231,7 @@
|
|||||||
83CBBA001A601CBA00E9B192 /* Products */,
|
83CBBA001A601CBA00E9B192 /* Products */,
|
||||||
2D16E6871FA4F8E400B85C8A /* Frameworks */,
|
2D16E6871FA4F8E400B85C8A /* Frameworks */,
|
||||||
42C7F9942202468200F22656 /* Recovered References */,
|
42C7F9942202468200F22656 /* Recovered References */,
|
||||||
6817ABC38854EEB6D3EE933A /* Pods */,
|
BBD78D7AC51CEA395F1C20DB /* Pods */,
|
||||||
006C39A0B9774387BC5ACA43 /* Resources */,
|
006C39A0B9774387BC5ACA43 /* Resources */,
|
||||||
);
|
);
|
||||||
indentWidth = 2;
|
indentWidth = 2;
|
||||||
@@ -275,6 +248,17 @@
|
|||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
BBD78D7AC51CEA395F1C20DB /* Pods */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
3B4392A12AC88292D35C810B /* Pods-drip.debug.xcconfig */,
|
||||||
|
5709B34CF0A7D63546082F79 /* Pods-drip.release.xcconfig */,
|
||||||
|
5B7EB9410499542E8C5724F5 /* Pods-drip-dripTests.debug.xcconfig */,
|
||||||
|
89C6BE57DB24E9ADA2F236DE /* Pods-drip-dripTests.release.xcconfig */,
|
||||||
|
);
|
||||||
|
path = Pods;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
@@ -282,11 +266,12 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "dripTests" */;
|
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "dripTests" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
CD68B565C5F4A7A674494D02 /* [CP] Check Pods Manifest.lock */,
|
A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */,
|
||||||
00E356EA1AD99517003FC87E /* Sources */,
|
00E356EA1AD99517003FC87E /* Sources */,
|
||||||
00E356EB1AD99517003FC87E /* Frameworks */,
|
00E356EB1AD99517003FC87E /* Frameworks */,
|
||||||
00E356EC1AD99517003FC87E /* Resources */,
|
00E356EC1AD99517003FC87E /* Resources */,
|
||||||
46313D848A7A3E69E5ED05E7 /* [CP] Copy Pods Resources */,
|
C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */,
|
||||||
|
F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@@ -302,19 +287,21 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "drip" */;
|
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "drip" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
852A2E0CD5D0F561CE2927A3 /* [CP] Check Pods Manifest.lock */,
|
C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
|
||||||
|
FD10A7F022414F080027D42C /* Start Packager */,
|
||||||
13B07F871A680F5B00A75B9A /* Sources */,
|
13B07F871A680F5B00A75B9A /* Sources */,
|
||||||
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
||||||
13B07F8E1A680F5B00A75B9A /* Resources */,
|
13B07F8E1A680F5B00A75B9A /* Resources */,
|
||||||
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
||||||
616E70055A3365D214C7B201 /* [CP] Copy Pods Resources */,
|
00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
|
||||||
|
E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
);
|
);
|
||||||
name = drip;
|
name = drip;
|
||||||
productName = "Hello World";
|
productName = drip;
|
||||||
productReference = 13B07F961A680F5B00A75B9A /* drip.app */;
|
productReference = 13B07F961A680F5B00A75B9A /* drip.app */;
|
||||||
productType = "com.apple.product-type.application";
|
productType = "com.apple.product-type.application";
|
||||||
};
|
};
|
||||||
@@ -324,7 +311,7 @@
|
|||||||
83CBB9F71A601CBA00E9B192 /* Project object */ = {
|
83CBB9F71A601CBA00E9B192 /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastUpgradeCheck = 1340;
|
LastUpgradeCheck = 1430;
|
||||||
ORGANIZATIONNAME = "";
|
ORGANIZATIONNAME = "";
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
00E356ED1AD99517003FC87E = {
|
00E356ED1AD99517003FC87E = {
|
||||||
@@ -332,13 +319,12 @@
|
|||||||
TestTargetID = 13B07F861A680F5B00A75B9A;
|
TestTargetID = 13B07F861A680F5B00A75B9A;
|
||||||
};
|
};
|
||||||
13B07F861A680F5B00A75B9A = {
|
13B07F861A680F5B00A75B9A = {
|
||||||
DevelopmentTeam = 6AD72X6W26;
|
LastSwiftMigration = 1120;
|
||||||
LastSwiftMigration = 1340;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "drip" */;
|
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "drip" */;
|
||||||
compatibilityVersion = "Xcode 3.2";
|
compatibilityVersion = "Xcode 12.0";
|
||||||
developmentRegion = en;
|
developmentRegion = en;
|
||||||
hasScannedForEncodings = 0;
|
hasScannedForEncodings = 0;
|
||||||
knownRegions = (
|
knownRegions = (
|
||||||
@@ -383,7 +369,7 @@
|
|||||||
5472A44C25BB7807005E81DE /* OpenSans-Light.ttf in Resources */,
|
5472A44C25BB7807005E81DE /* OpenSans-Light.ttf in Resources */,
|
||||||
5472A45425BB7807005E81DE /* Menu.ttf in Resources */,
|
5472A45425BB7807005E81DE /* Menu.ttf in Resources */,
|
||||||
5472A45A25BB7807005E81DE /* drip-icon-font.ttf in Resources */,
|
5472A45A25BB7807005E81DE /* drip-icon-font.ttf in Resources */,
|
||||||
5488D8D728ABF478008DD66D /* LaunchScreen.storyboard in Resources */,
|
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
|
||||||
5472A45825BB7807005E81DE /* OpenSans-LightItalic.ttf in Resources */,
|
5472A45825BB7807005E81DE /* OpenSans-LightItalic.ttf in Resources */,
|
||||||
5472A45625BB7807005E81DE /* OpenSans-SemiBold.ttf in Resources */,
|
5472A45625BB7807005E81DE /* OpenSans-SemiBold.ttf in Resources */,
|
||||||
5472A45025BB7807005E81DE /* Jost-400-Book.otf in Resources */,
|
5472A45025BB7807005E81DE /* Jost-400-Book.otf in Resources */,
|
||||||
@@ -405,137 +391,34 @@
|
|||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
|
"$(SRCROOT)/.xcode.env.local",
|
||||||
|
"$(SRCROOT)/.xcode.env",
|
||||||
);
|
);
|
||||||
name = "Bundle React Native code and images";
|
name = "Bundle React Native code and images";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
|
shellScript = "set -e\n\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
|
||||||
};
|
};
|
||||||
46313D848A7A3E69E5ED05E7 /* [CP] Copy Pods Resources */ = {
|
00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-drip-dripTests/Pods-drip-dripTests-resources.sh",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
|
||||||
"${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/Feather.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.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",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
|
||||||
);
|
|
||||||
name = "[CP] Copy Pods Resources";
|
|
||||||
outputPaths = (
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
|
||||||
"${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-drip-dripTests/Pods-drip-dripTests-resources.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
616E70055A3365D214C7B201 /* [CP] Copy Pods Resources */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-drip/Pods-drip-resources.sh",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
|
||||||
"${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/Feather.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.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",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
|
||||||
);
|
|
||||||
name = "[CP] Copy Pods Resources";
|
|
||||||
outputPaths = (
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
|
||||||
"${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-drip/Pods-drip-resources.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
852A2E0CD5D0F561CE2927A3 /* [CP] Check Pods Manifest.lock */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputFileListPaths = (
|
inputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-drip/Pods-drip-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
);
|
);
|
||||||
inputPaths = (
|
name = "[CP] Embed Pods Frameworks";
|
||||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
|
||||||
"${PODS_ROOT}/Manifest.lock",
|
|
||||||
);
|
|
||||||
name = "[CP] Check Pods Manifest.lock";
|
|
||||||
outputFileListPaths = (
|
outputFileListPaths = (
|
||||||
);
|
"${PODS_ROOT}/Target Support Files/Pods-drip/Pods-drip-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
outputPaths = (
|
|
||||||
"$(DERIVED_FILE_DIR)/Pods-drip-checkManifestLockResult.txt",
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
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# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-drip/Pods-drip-frameworks.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
CD68B565C5F4A7A674494D02 /* [CP] Check Pods Manifest.lock */ = {
|
A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
@@ -557,6 +440,98 @@
|
|||||||
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";
|
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;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
|
C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||||
|
"${PODS_ROOT}/Manifest.lock",
|
||||||
|
);
|
||||||
|
name = "[CP] Check Pods Manifest.lock";
|
||||||
|
outputFileListPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
"$(DERIVED_FILE_DIR)/Pods-drip-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# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-drip-dripTests/Pods-drip-dripTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
|
);
|
||||||
|
name = "[CP] Embed Pods Frameworks";
|
||||||
|
outputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-drip-dripTests/Pods-drip-dripTests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-drip-dripTests/Pods-drip-dripTests-frameworks.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-drip/Pods-drip-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
|
);
|
||||||
|
name = "[CP] Copy Pods Resources";
|
||||||
|
outputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-drip/Pods-drip-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-drip/Pods-drip-resources.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-drip-dripTests/Pods-drip-dripTests-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
|
);
|
||||||
|
name = "[CP] Copy Pods Resources";
|
||||||
|
outputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-drip-dripTests/Pods-drip-dripTests-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-drip-dripTests/Pods-drip-dripTests-resources.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
FD10A7F022414F080027D42C /* Start Packager */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
name = "Start Packager";
|
||||||
|
outputFileListPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
@@ -572,7 +547,7 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
|
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */,
|
||||||
13B07FC11A68108700A75B9A /* main.m in Sources */,
|
13B07FC11A68108700A75B9A /* main.m in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@@ -590,36 +565,20 @@
|
|||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
00E356F61AD99517003FC87E /* Debug */ = {
|
00E356F61AD99517003FC87E /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = B6FD0A300273E09D74C14C19 /* Pods-drip-dripTests.debug.xcconfig */;
|
baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-drip-dripTests.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
ENABLE_BITCODE = "$(inherited)";
|
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
|
|
||||||
);
|
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"DEBUG=1",
|
"DEBUG=1",
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
);
|
);
|
||||||
HEADER_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
"$(SRCROOT)/../node_modules/realm/src/**",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-share/ios",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-document-picker/ios/RNDocumentPicker",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-fs/**",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
|
|
||||||
"$(SRCROOT)/../node_modules/realm/src/**",
|
|
||||||
);
|
|
||||||
INFOPLIST_FILE = dripTests/Info.plist;
|
INFOPLIST_FILE = dripTests/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
LIBRARY_SEARCH_PATHS = (
|
|
||||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
|
||||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
|
||||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
"-ObjC",
|
"-ObjC",
|
||||||
@@ -634,33 +593,17 @@
|
|||||||
};
|
};
|
||||||
00E356F71AD99517003FC87E /* Release */ = {
|
00E356F71AD99517003FC87E /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 72DDDE8D34518ED64FD7EBBA /* Pods-drip-dripTests.release.xcconfig */;
|
baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-drip-dripTests.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
ENABLE_BITCODE = "$(inherited)";
|
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
|
|
||||||
);
|
|
||||||
HEADER_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
"$(SRCROOT)/../node_modules/realm/src/**",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-share/ios",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-document-picker/ios/RNDocumentPicker",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-fs/**",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
|
|
||||||
"$(SRCROOT)/../node_modules/realm/src/**",
|
|
||||||
);
|
|
||||||
INFOPLIST_FILE = dripTests/Info.plist;
|
INFOPLIST_FILE = dripTests/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
LIBRARY_SEARCH_PATHS = (
|
|
||||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
|
||||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
|
||||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
"-ObjC",
|
"-ObjC",
|
||||||
@@ -675,77 +618,25 @@
|
|||||||
};
|
};
|
||||||
13B07F941A680F5B00A75B9A /* Debug */ = {
|
13B07F941A680F5B00A75B9A /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 2B1578D5817F46EE9BFC9BAF /* Pods-drip.debug.xcconfig */;
|
baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-drip.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEAD_CODE_STRIPPING = NO;
|
|
||||||
DEVELOPMENT_TEAM = 6AD72X6W26;
|
DEVELOPMENT_TEAM = 6AD72X6W26;
|
||||||
ENABLE_BITCODE = "$(inherited)";
|
ENABLE_BITCODE = NO;
|
||||||
EXCLUDED_ARCHS = "";
|
|
||||||
"EXCLUDED_ARCHS[sdk=*]" = "";
|
|
||||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
||||||
"COCOAPODS=1",
|
|
||||||
"$(inherited)",
|
|
||||||
);
|
|
||||||
HEADER_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
"$(SRCROOT)/../node_modules/realm/src/**",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-share/ios",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-document-picker/ios/RNDocumentPicker",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-fs/**",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
|
|
||||||
"$(SRCROOT)/../node_modules/@react-native-community/push-notification-ios/ios",
|
|
||||||
"$(SRCROOT)/../node_modules/realm/src/**",
|
|
||||||
);
|
|
||||||
INFOPLIST_FILE = drip/Info.plist;
|
INFOPLIST_FILE = drip/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
|
||||||
LIBRARY_SEARCH_PATHS = (
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/Folly\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/GCDWebServer\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/RNFS\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/RNShare\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/RNVectorIcons\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-Core\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsi\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/RealmJS\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/Yoga\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/glog\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-restart\"",
|
|
||||||
"\"${PODS_ROOT}/../../node_modules/realm/vendor/realm-ios\"",
|
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.2208.11;
|
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
|
"$(inherited)",
|
||||||
"-ObjC",
|
"-ObjC",
|
||||||
"-lc++",
|
"-lc++",
|
||||||
"$(inherited)",
|
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.heartofcode.drip.cycle.tracking;
|
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
|
||||||
PRODUCT_NAME = drip;
|
PRODUCT_NAME = drip;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "drip-Bridging-Header.h";
|
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
@@ -754,76 +645,24 @@
|
|||||||
};
|
};
|
||||||
13B07F951A680F5B00A75B9A /* Release */ = {
|
13B07F951A680F5B00A75B9A /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = E1C5175D0AEA2ABCC690D6E2 /* Pods-drip.release.xcconfig */;
|
baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-drip.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = drip/dripRelease.entitlements;
|
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = 6AD72X6W26;
|
DEVELOPMENT_TEAM = 6AD72X6W26;
|
||||||
ENABLE_BITCODE = "$(inherited)";
|
|
||||||
EXCLUDED_ARCHS = "";
|
|
||||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
||||||
"COCOAPODS=1",
|
|
||||||
"$(inherited)",
|
|
||||||
);
|
|
||||||
HEADER_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
"$(SRCROOT)/../node_modules/realm/src/**",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-share/ios",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-document-picker/ios/RNDocumentPicker",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-fs/**",
|
|
||||||
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
|
|
||||||
"$(SRCROOT)/../node_modules/@react-native-community/push-notification-ios/ios",
|
|
||||||
"$(SRCROOT)/../node_modules/realm/src/**",
|
|
||||||
);
|
|
||||||
INFOPLIST_FILE = drip/Info.plist;
|
INFOPLIST_FILE = drip/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
|
||||||
LIBRARY_SEARCH_PATHS = (
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/Folly\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/GCDWebServer\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/RNFS\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/RNShare\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/RNVectorIcons\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-Core\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsi\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/RealmJS\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/Yoga\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/glog\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker\"",
|
|
||||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/react-native-restart\"",
|
|
||||||
"\"${PODS_ROOT}/../../node_modules/realm/vendor/realm-ios\"",
|
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.2208.11;
|
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
|
"$(inherited)",
|
||||||
"-ObjC",
|
"-ObjC",
|
||||||
"-lc++",
|
"-lc++",
|
||||||
"$(inherited)",
|
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.heartofcode.drip.cycle.tracking;
|
PRODUCT_BUNDLE_IDENTIFIER = org.heartofcode.drip.cycle.tracking;
|
||||||
PRODUCT_NAME = drip;
|
PRODUCT_NAME = drip;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "drip-Bridging-Header.h";
|
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
};
|
};
|
||||||
@@ -834,7 +673,7 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
@@ -860,7 +699,6 @@
|
|||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
ENABLE_BITCODE = "$(inherited)";
|
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
|
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
|
||||||
@@ -880,15 +718,24 @@
|
|||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
/usr/lib/swift,
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
LIBRARY_SEARCH_PATHS = (
|
LIBRARY_SEARCH_PATHS = (
|
||||||
"$(SDKROOT)/usr/lib/swift",
|
"\"$(SDKROOT)/usr/lib/swift\"",
|
||||||
"\"$(inherited)\"",
|
|
||||||
"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
|
"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
|
||||||
|
"\"$(inherited)\"",
|
||||||
);
|
);
|
||||||
MTL_ENABLE_DEBUG_INFO = YES;
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
OTHER_CPLUSPLUSFLAGS = (
|
||||||
|
"$(OTHER_CFLAGS)",
|
||||||
|
"-DFOLLY_NO_CONFIG",
|
||||||
|
"-DFOLLY_MOBILE=1",
|
||||||
|
"-DFOLLY_USE_LIBCPP=1",
|
||||||
|
);
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
VALIDATE_WORKSPACE = YES;
|
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
@@ -897,7 +744,7 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
@@ -923,7 +770,6 @@
|
|||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
COPY_PHASE_STRIP = YES;
|
COPY_PHASE_STRIP = YES;
|
||||||
ENABLE_BITCODE = "$(inherited)";
|
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
|
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
|
||||||
@@ -936,15 +782,24 @@
|
|||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
/usr/lib/swift,
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
LIBRARY_SEARCH_PATHS = (
|
LIBRARY_SEARCH_PATHS = (
|
||||||
"$(SDKROOT)/usr/lib/swift",
|
"\"$(SDKROOT)/usr/lib/swift\"",
|
||||||
"\"$(inherited)\"",
|
|
||||||
"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
|
"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
|
||||||
|
"\"$(inherited)\"",
|
||||||
);
|
);
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
|
OTHER_CPLUSPLUSFLAGS = (
|
||||||
|
"$(OTHER_CFLAGS)",
|
||||||
|
"-DFOLLY_NO_CONFIG",
|
||||||
|
"-DFOLLY_MOBILE=1",
|
||||||
|
"-DFOLLY_USE_LIBCPP=1",
|
||||||
|
);
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
VALIDATE_PRODUCT = YES;
|
VALIDATE_PRODUCT = YES;
|
||||||
VALIDATE_WORKSPACE = YES;
|
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "1210"
|
LastUpgradeVersion = "1430"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
#import <React/RCTBridgeDelegate.h>
|
||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
#import <UserNotifications/UNUserNotificationCenter.h>
|
#import <UserNotifications/UNUserNotificationCenter.h>
|
||||||
|
|
||||||
@interface AppDelegate : UIResponder <UIApplicationDelegate, UNUserNotificationCenterDelegate>
|
@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate, UNUserNotificationCenterDelegate>
|
||||||
|
|
||||||
@property (nonatomic, strong) UIWindow *window;
|
@property (nonatomic, strong) UIWindow *window;
|
||||||
|
|
||||||
|
|||||||
@@ -1,100 +0,0 @@
|
|||||||
#import <AppDelegate.h>
|
|
||||||
|
|
||||||
#import <React/RCTBridge.h>
|
|
||||||
#import <React/RCTBundleURLProvider.h>
|
|
||||||
#import <React/RCTRootView.h>
|
|
||||||
#import <UserNotifications/UserNotifications.h>
|
|
||||||
#import <RNCPushNotificationIOS.h>
|
|
||||||
|
|
||||||
// #ifdef FB_SONARKIT_ENABLED
|
|
||||||
// #import <FlipperKit/FlipperClient.h>
|
|
||||||
// #import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
|
|
||||||
// #import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h>
|
|
||||||
// #import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h>
|
|
||||||
// #import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h>
|
|
||||||
// #import <FlipperKitReactPlugin/FlipperKitReactPlugin.h>
|
|
||||||
// static void InitializeFlipper(UIApplication *application) {
|
|
||||||
// FlipperClient *client = [FlipperClient sharedClient];
|
|
||||||
// SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults];
|
|
||||||
// [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]];
|
|
||||||
// [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]];
|
|
||||||
// [client addPlugin:[FlipperKitReactPlugin new]];
|
|
||||||
// [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]];
|
|
||||||
// [client start];
|
|
||||||
// }
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
@implementation AppDelegate
|
|
||||||
|
|
||||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
|
||||||
{
|
|
||||||
// #ifdef FB_SONARKIT_ENABLED
|
|
||||||
// InitializeFlipper(application);
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
|
|
||||||
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
|
|
||||||
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
|
|
||||||
moduleName:@"drip"
|
|
||||||
initialProperties:nil];
|
|
||||||
|
|
||||||
if (@available(iOS 13.0, *)) {
|
|
||||||
rootView.backgroundColor = [UIColor systemBackgroundColor];
|
|
||||||
} else {
|
|
||||||
rootView.backgroundColor = [UIColor whiteColor];
|
|
||||||
}
|
|
||||||
|
|
||||||
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
|
||||||
UIViewController *rootViewController = [UIViewController new];
|
|
||||||
rootViewController.view = rootView;
|
|
||||||
self.window.rootViewController = rootViewController;
|
|
||||||
[self.window makeKeyAndVisible];
|
|
||||||
|
|
||||||
// Define UNUserNotificationCenter
|
|
||||||
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
|
|
||||||
center.delegate = self;
|
|
||||||
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Called when a notification is delivered to a foreground app.
|
|
||||||
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler
|
|
||||||
{
|
|
||||||
completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert | UNNotificationPresentationOptionBadge);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Required for the register event.
|
|
||||||
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
|
|
||||||
{
|
|
||||||
[RNCPushNotificationIOS didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
|
|
||||||
}
|
|
||||||
// Required for the notification event. You must call the completion handler after handling the remote notification.
|
|
||||||
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
|
|
||||||
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
|
|
||||||
{
|
|
||||||
[RNCPushNotificationIOS didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
|
|
||||||
}
|
|
||||||
// Required for the registrationError event.
|
|
||||||
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
|
|
||||||
{
|
|
||||||
[RNCPushNotificationIOS didFailToRegisterForRemoteNotificationsWithError:error];
|
|
||||||
}
|
|
||||||
// Required for localNotification event
|
|
||||||
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
|
|
||||||
didReceiveNotificationResponse:(UNNotificationResponse *)response
|
|
||||||
withCompletionHandler:(void (^)(void))completionHandler
|
|
||||||
{
|
|
||||||
[RNCPushNotificationIOS didReceiveNotificationResponse:response];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
|
|
||||||
{
|
|
||||||
#if DEBUG
|
|
||||||
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
|
|
||||||
#else
|
|
||||||
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
#import "AppDelegate.h"
|
||||||
|
|
||||||
|
#import <React/RCTBridge.h>
|
||||||
|
#import <React/RCTBundleURLProvider.h>
|
||||||
|
#import <React/RCTRootView.h>
|
||||||
|
|
||||||
|
#import <React/RCTAppSetupUtils.h>
|
||||||
|
|
||||||
|
#if RCT_NEW_ARCH_ENABLED
|
||||||
|
#import <React/CoreModulesPlugins.h>
|
||||||
|
#import <React/RCTCxxBridgeDelegate.h>
|
||||||
|
#import <React/RCTFabricSurfaceHostingProxyRootView.h>
|
||||||
|
#import <React/RCTSurfacePresenter.h>
|
||||||
|
#import <React/RCTSurfacePresenterBridgeAdapter.h>
|
||||||
|
#import <ReactCommon/RCTTurboModuleManager.h>
|
||||||
|
|
||||||
|
#import <react/config/ReactNativeConfig.h>
|
||||||
|
|
||||||
|
@interface AppDelegate () <RCTCxxBridgeDelegate, RCTTurboModuleManagerDelegate> {
|
||||||
|
RCTTurboModuleManager *_turboModuleManager;
|
||||||
|
RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;
|
||||||
|
std::shared_ptr<const facebook::react::ReactNativeConfig> _reactNativeConfig;
|
||||||
|
facebook::react::ContextContainer::Shared _contextContainer;
|
||||||
|
}
|
||||||
|
@end
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@implementation AppDelegate
|
||||||
|
|
||||||
|
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
||||||
|
{
|
||||||
|
RCTAppSetupPrepareApp(application);
|
||||||
|
|
||||||
|
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
|
||||||
|
|
||||||
|
#if RCT_NEW_ARCH_ENABLED
|
||||||
|
_contextContainer = std::make_shared<facebook::react::ContextContainer const>();
|
||||||
|
_reactNativeConfig = std::make_shared<facebook::react::EmptyReactNativeConfig const>();
|
||||||
|
_contextContainer->insert("ReactNativeConfig", _reactNativeConfig);
|
||||||
|
_bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer];
|
||||||
|
bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"drip", nil);
|
||||||
|
|
||||||
|
if (@available(iOS 13.0, *)) {
|
||||||
|
rootView.backgroundColor = [UIColor systemBackgroundColor];
|
||||||
|
} else {
|
||||||
|
rootView.backgroundColor = [UIColor whiteColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
||||||
|
UIViewController *rootViewController = [UIViewController new];
|
||||||
|
rootViewController.view = rootView;
|
||||||
|
self.window.rootViewController = rootViewController;
|
||||||
|
[self.window makeKeyAndVisible];
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
|
||||||
|
{
|
||||||
|
#if DEBUG
|
||||||
|
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
|
||||||
|
#else
|
||||||
|
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#if RCT_NEW_ARCH_ENABLED
|
||||||
|
|
||||||
|
#pragma mark - RCTCxxBridgeDelegate
|
||||||
|
|
||||||
|
- (std::unique_ptr<facebook::react::JSExecutorFactory>)jsExecutorFactoryForBridge:(RCTBridge *)bridge
|
||||||
|
{
|
||||||
|
_turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge
|
||||||
|
delegate:self
|
||||||
|
jsInvoker:bridge.jsCallInvoker];
|
||||||
|
return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark RCTTurboModuleManagerDelegate
|
||||||
|
|
||||||
|
- (Class)getModuleClassFromName:(const char *)name
|
||||||
|
{
|
||||||
|
return RCTCoreModulesClassProvider(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name
|
||||||
|
jsInvoker:(std::shared_ptr<facebook::react::CallInvoker>)jsInvoker
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name
|
||||||
|
initParams:
|
||||||
|
(const facebook::react::ObjCTurboModule::InitParams &)params
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id<RCTTurboModule>)getModuleInstanceFromClass:(Class)moduleClass
|
||||||
|
{
|
||||||
|
return RCTAppSetupDefaultModuleFromClass(moduleClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@end
|
||||||
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
@@ -1,62 +1,62 @@
|
|||||||
{
|
{
|
||||||
"images" : [
|
"images": [
|
||||||
{
|
{
|
||||||
"filename" : "40.png",
|
"filename": "40 1.png",
|
||||||
"idiom" : "iphone",
|
"idiom": "iphone",
|
||||||
"scale" : "2x",
|
"scale": "2x",
|
||||||
"size" : "20x20"
|
"size": "20x20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "60.png",
|
"filename": "60 1.png",
|
||||||
"idiom" : "iphone",
|
"idiom": "iphone",
|
||||||
"scale" : "3x",
|
"scale": "3x",
|
||||||
"size" : "20x20"
|
"size": "20x20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "58.png",
|
"filename": "58 1.png",
|
||||||
"idiom" : "iphone",
|
"idiom": "iphone",
|
||||||
"scale" : "2x",
|
"scale": "2x",
|
||||||
"size" : "29x29"
|
"size": "29x29"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "87.png",
|
"filename": "87 1.png",
|
||||||
"idiom" : "iphone",
|
"idiom": "iphone",
|
||||||
"scale" : "3x",
|
"scale": "3x",
|
||||||
"size" : "29x29"
|
"size": "29x29"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "80.png",
|
"filename": "80 1.png",
|
||||||
"idiom" : "iphone",
|
"idiom": "iphone",
|
||||||
"scale" : "2x",
|
"scale": "2x",
|
||||||
"size" : "40x40"
|
"size": "40x40"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "120.png",
|
"filename": "120 2.png",
|
||||||
"idiom" : "iphone",
|
"idiom": "iphone",
|
||||||
"scale" : "3x",
|
"scale": "3x",
|
||||||
"size" : "40x40"
|
"size": "40x40"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "120-1.png",
|
"filename": "120 1.png",
|
||||||
"idiom" : "iphone",
|
"idiom": "iphone",
|
||||||
"scale" : "2x",
|
"scale": "2x",
|
||||||
"size" : "60x60"
|
"size": "60x60"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "180.png",
|
"filename": "180 1.png",
|
||||||
"idiom" : "iphone",
|
"idiom": "iphone",
|
||||||
"scale" : "3x",
|
"scale": "3x",
|
||||||
"size" : "60x60"
|
"size": "60x60"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "appstore.png",
|
"filename": "appstore 1.png",
|
||||||
"idiom" : "ios-marketing",
|
"idiom": "ios-marketing",
|
||||||
"scale" : "1x",
|
"scale": "1x",
|
||||||
"size" : "1024x1024"
|
"size": "1024x1024"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"info" : {
|
"info": {
|
||||||
"author" : "xcode",
|
"author": "xcode",
|
||||||
"version" : 1
|
"version": 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
|
After Width: | Height: | Size: 43 KiB |
@@ -8,8 +8,10 @@
|
|||||||
<string>drip.</string>
|
<string>drip.</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>$(EXECUTABLE_NAME)</string>
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
|
<key>CFBundleIconName</key>
|
||||||
|
<string>AppIcon</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
<string>org.heartofcode.drip.cycle.tracking</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
@@ -17,7 +19,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>$(MARKETING_VERSION)</string>
|
<string>1.2401.17</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
#import "AppDelegate.h"
|
#import "AppDelegate.h"
|
||||||
|
|
||||||
int main(int argc, char * argv[]) {
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
@autoreleasepool {
|
@autoreleasepool {
|
||||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
@implementation dripTests
|
@implementation dripTests
|
||||||
|
|
||||||
- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test
|
- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test
|
||||||
{
|
{
|
||||||
if (test(view)) {
|
if (test(view)) {
|
||||||
return YES;
|
return YES;
|
||||||
@@ -34,23 +34,25 @@
|
|||||||
|
|
||||||
__block NSString *redboxError = nil;
|
__block NSString *redboxError = nil;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
|
RCTSetLogFunction(
|
||||||
if (level >= RCTLogLevelError) {
|
^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
|
||||||
redboxError = message;
|
if (level >= RCTLogLevelError) {
|
||||||
}
|
redboxError = message;
|
||||||
});
|
}
|
||||||
|
});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
|
while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
|
||||||
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
|
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
|
||||||
[[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
|
[[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
|
||||||
|
|
||||||
foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {
|
foundElement = [self findSubviewInView:vc.view
|
||||||
if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
|
matching:^BOOL(UIView *view) {
|
||||||
return YES;
|
if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
|
||||||
}
|
return YES;
|
||||||
return NO;
|
}
|
||||||
}];
|
return NO;
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@@ -61,5 +63,4 @@
|
|||||||
XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
|
XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import cycleModule from './cycle'
|
|||||||
import nothingChanged from '../db/db-unchanged'
|
import nothingChanged from '../db/db-unchanged'
|
||||||
|
|
||||||
export default function setupNotifications(navigate, setDate) {
|
export default function setupNotifications(navigate, setDate) {
|
||||||
requestNotifications()
|
Platform.OS === 'android' ? requestNotifications() : null
|
||||||
const PushNotification = Platform.OS === 'ios' ? PN : PN.default
|
const PushNotification = Platform.OS === 'ios' ? PN : PN.default
|
||||||
|
|
||||||
PushNotification.createChannel({
|
PushNotification.createChannel({
|
||||||
|
|||||||
@@ -44,6 +44,21 @@ export async function savePeriodReminder(reminder) {
|
|||||||
periodReminderObservable.set(reminder)
|
periodReminderObservable.set(reminder)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const periodPredictionObservable = Observable()
|
||||||
|
setObvWithInitValue('periodPrediction', periodPredictionObservable, true)
|
||||||
|
|
||||||
|
export async function savePeriodPrediction(bool) {
|
||||||
|
await AsyncStorage.setItem('periodPrediction', JSON.stringify(bool))
|
||||||
|
periodPredictionObservable.set(bool)
|
||||||
|
|
||||||
|
if (!periodPredictionObservable.value) {
|
||||||
|
const result = await AsyncStorage.getItem('periodReminder')
|
||||||
|
if (JSON.parse(result).enabled) {
|
||||||
|
periodReminderObservable.set(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const useCervixObservable = Observable()
|
export const useCervixObservable = Observable()
|
||||||
setObvWithInitValue('useCervix', useCervixObservable, false)
|
setObvWithInitValue('useCervix', useCervixObservable, false)
|
||||||
|
|
||||||
@@ -77,6 +92,46 @@ export async function setChartFlag() {
|
|||||||
await AsyncStorage.setItem('isFirstChartView', JSON.stringify(false))
|
await AsyncStorage.setItem('isFirstChartView', JSON.stringify(false))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const sexTrackingCategoryObservable = Observable()
|
||||||
|
setObvWithInitValue('sex', sexTrackingCategoryObservable, true)
|
||||||
|
|
||||||
|
export async function saveSexTrackingCategory(bool) {
|
||||||
|
await AsyncStorage.setItem('sex', JSON.stringify(bool))
|
||||||
|
sexTrackingCategoryObservable.set(bool)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const desireTrackingCategoryObservable = Observable()
|
||||||
|
setObvWithInitValue('desire', desireTrackingCategoryObservable, true)
|
||||||
|
|
||||||
|
export async function saveDesireTrackingCategory(bool) {
|
||||||
|
await AsyncStorage.setItem('desire', JSON.stringify(bool))
|
||||||
|
desireTrackingCategoryObservable.set(bool)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const painTrackingCategoryObservable = Observable()
|
||||||
|
setObvWithInitValue('pain', painTrackingCategoryObservable, true)
|
||||||
|
|
||||||
|
export async function savePainTrackingCategory(bool) {
|
||||||
|
await AsyncStorage.setItem('pain', JSON.stringify(bool))
|
||||||
|
painTrackingCategoryObservable.set(bool)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const moodTrackingCategoryObservable = Observable()
|
||||||
|
setObvWithInitValue('mood', moodTrackingCategoryObservable, true)
|
||||||
|
|
||||||
|
export async function saveMoodTrackingCategory(bool) {
|
||||||
|
await AsyncStorage.setItem('mood', JSON.stringify(bool))
|
||||||
|
moodTrackingCategoryObservable.set(bool)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const noteTrackingCategoryObservable = Observable()
|
||||||
|
setObvWithInitValue('note', noteTrackingCategoryObservable, true)
|
||||||
|
|
||||||
|
export async function saveNoteTrackingCategory(bool) {
|
||||||
|
await AsyncStorage.setItem('note', JSON.stringify(bool))
|
||||||
|
noteTrackingCategoryObservable.set(bool)
|
||||||
|
}
|
||||||
|
|
||||||
async function setObvWithInitValue(key, obv, defaultValue) {
|
async function setObvWithInitValue(key, obv, defaultValue) {
|
||||||
const result = await AsyncStorage.getItem(key)
|
const result = await AsyncStorage.getItem(key)
|
||||||
let value
|
let value
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "drip.",
|
"name": "drip.",
|
||||||
"version": "1.2311.14",
|
"version": "1.2401.17",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"Julia Friesel <julia.friesel@gmail.com>",
|
"Julia Friesel <julia.friesel@gmail.com>",
|
||||||
"Marie Kochsiek",
|
"Marie Kochsiek",
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
"start": "react-native start",
|
"start": "react-native start",
|
||||||
"android": "react-native run-android",
|
"android": "react-native run-android",
|
||||||
"ios": "react-native run-ios --simulator=\"iPhone 8 Plus\"",
|
"ios": "react-native run-ios --simulator=\"iPhone 8 Plus\"",
|
||||||
|
"ios14": "react-native run-ios --simulator=\"iPhone 14 Plus\"",
|
||||||
"log": "react-native log-android",
|
"log": "react-native log-android",
|
||||||
"test": "jest test && yarn lint",
|
"test": "jest test && yarn lint",
|
||||||
"test-watch": "jest --watch test",
|
"test-watch": "jest --watch test",
|
||||||
@@ -46,7 +47,7 @@
|
|||||||
"prop-types": "^15.8.1",
|
"prop-types": "^15.8.1",
|
||||||
"react": "17.0.2",
|
"react": "17.0.2",
|
||||||
"react-i18next": "^12.0.0",
|
"react-i18next": "^12.0.0",
|
||||||
"react-native": "0.67.4",
|
"react-native": "0.68.3",
|
||||||
"react-native-calendars": "^1.1287.0",
|
"react-native-calendars": "^1.1287.0",
|
||||||
"react-native-document-picker": "^8.1.1",
|
"react-native-document-picker": "^8.1.1",
|
||||||
"react-native-fs": "^2.20.0",
|
"react-native-fs": "^2.20.0",
|
||||||
@@ -73,7 +74,7 @@
|
|||||||
"jest": "^29.1.2",
|
"jest": "^29.1.2",
|
||||||
"jest-watch-typeahead": "^2.2.0",
|
"jest-watch-typeahead": "^2.2.0",
|
||||||
"jetifier": "^2.0.0",
|
"jetifier": "^2.0.0",
|
||||||
"metro-react-native-babel-preset": "^0.66.2",
|
"metro-react-native-babel-preset": "^0.67.0",
|
||||||
"prettier": "2.4.0",
|
"prettier": "2.4.0",
|
||||||
"pretty-quick": "^3.1.1",
|
"pretty-quick": "^3.1.1",
|
||||||
"react-native-version": "^3.1.0",
|
"react-native-version": "^3.1.0",
|
||||||
|
|||||||
@@ -16,7 +16,9 @@ exports[`License screen should match the snapshot 1`] = `
|
|||||||
"backgroundColor": "#E9F2ED",
|
"backgroundColor": "#E9F2ED",
|
||||||
"flexGrow": 1,
|
"flexGrow": 1,
|
||||||
},
|
},
|
||||||
undefined,
|
{
|
||||||
|
"marginTop": 42.857142857142854,
|
||||||
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
@@ -63,7 +65,7 @@ exports[`License screen should match the snapshot 1`] = `
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
Copyright (C) 2023 Heart of Code e.V.
|
Copyright (C) 2024 Heart of Code e.V.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details:
|
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details:
|
||||||
</Text>
|
</Text>
|
||||||
|
|||||||