diff --git a/ios/Runner/GoogleService-Info.plist b/ios/GoogleService-Info.plist similarity index 100% rename from ios/Runner/GoogleService-Info.plist rename to ios/GoogleService-Info.plist diff --git a/ios/Podfile b/ios/Podfile index 5002e643..f14f92c5 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '12.0' +platform :ios, '15.5' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' @@ -30,24 +30,30 @@ flutter_ios_podfile_setup target 'Runner' do use_frameworks! use_modular_headers! + + # This is just a temporary solution to fix the iOS build issue. We need to remove this line after the author fixes this [issue](https://github.com/natintosh/plugin_libphonenumber/issues/35) + pod 'PhoneNumberKit', '3.8.0' flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end end post_install do |installer| installer.pods_project.targets.each do |target| + if target.name == 'BoringSSL-GRPC' + target.source_build_phase.files.each do |file| + if file.settings && file.settings['COMPILER_FLAGS'] + flags = file.settings['COMPILER_FLAGS'].split + flags.reject! { |flag| flag == '-GCC_WARN_INHIBIT_ALL_WARNINGS' } + file.settings['COMPILER_FLAGS'] = flags.join(' ') + end + end + end flutter_additional_ios_build_settings(target) - target.build_configurations.each do |config| - # You can remove unused permissions here - # for more infomation: https://github.com/BaseflowIT/flutter-permission-handler/blob/master/permission_handler/ios/Classes/PermissionHandlerEnums.h - # e.g. when you don't need camera permission, just add 'PERMISSION_CAMERA=0' - config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ - '$(inherited)', - - ## dart: PermissionGroup.notification - 'PERMISSION_NOTIFICATIONS=1', - ] + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.5' end end end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index d811272e..b528d31d 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,110 +1,156 @@ PODS: - - abseil/algorithm (1.20220623.0): - - abseil/algorithm/algorithm (= 1.20220623.0) - - abseil/algorithm/container (= 1.20220623.0) - - abseil/algorithm/algorithm (1.20220623.0): + - abseil/algorithm (1.20240116.2): + - abseil/algorithm/algorithm (= 1.20240116.2) + - abseil/algorithm/container (= 1.20240116.2) + - abseil/algorithm/algorithm (1.20240116.2): - abseil/base/config - - abseil/algorithm/container (1.20220623.0): + - abseil/xcprivacy + - abseil/algorithm/container (1.20240116.2): - abseil/algorithm/algorithm - abseil/base/core_headers + - abseil/base/nullability - abseil/meta/type_traits - - abseil/base (1.20220623.0): - - abseil/base/atomic_hook (= 1.20220623.0) - - abseil/base/base (= 1.20220623.0) - - abseil/base/base_internal (= 1.20220623.0) - - abseil/base/config (= 1.20220623.0) - - abseil/base/core_headers (= 1.20220623.0) - - abseil/base/dynamic_annotations (= 1.20220623.0) - - abseil/base/endian (= 1.20220623.0) - - abseil/base/errno_saver (= 1.20220623.0) - - abseil/base/fast_type_id (= 1.20220623.0) - - abseil/base/log_severity (= 1.20220623.0) - - abseil/base/malloc_internal (= 1.20220623.0) - - abseil/base/prefetch (= 1.20220623.0) - - abseil/base/pretty_function (= 1.20220623.0) - - abseil/base/raw_logging_internal (= 1.20220623.0) - - abseil/base/spinlock_wait (= 1.20220623.0) - - abseil/base/strerror (= 1.20220623.0) - - abseil/base/throw_delegate (= 1.20220623.0) - - abseil/base/atomic_hook (1.20220623.0): - - abseil/base/config - - abseil/base/core_headers - - abseil/base/base (1.20220623.0): + - abseil/xcprivacy + - abseil/base (1.20240116.2): + - abseil/base/atomic_hook (= 1.20240116.2) + - abseil/base/base (= 1.20240116.2) + - abseil/base/base_internal (= 1.20240116.2) + - abseil/base/config (= 1.20240116.2) + - abseil/base/core_headers (= 1.20240116.2) + - abseil/base/cycleclock_internal (= 1.20240116.2) + - abseil/base/dynamic_annotations (= 1.20240116.2) + - abseil/base/endian (= 1.20240116.2) + - abseil/base/errno_saver (= 1.20240116.2) + - abseil/base/fast_type_id (= 1.20240116.2) + - abseil/base/log_severity (= 1.20240116.2) + - abseil/base/malloc_internal (= 1.20240116.2) + - abseil/base/no_destructor (= 1.20240116.2) + - abseil/base/nullability (= 1.20240116.2) + - abseil/base/prefetch (= 1.20240116.2) + - abseil/base/pretty_function (= 1.20240116.2) + - abseil/base/raw_logging_internal (= 1.20240116.2) + - abseil/base/spinlock_wait (= 1.20240116.2) + - abseil/base/strerror (= 1.20240116.2) + - abseil/base/throw_delegate (= 1.20240116.2) + - abseil/base/atomic_hook (1.20240116.2): + - abseil/base/config + - abseil/base/core_headers + - abseil/xcprivacy + - abseil/base/base (1.20240116.2): - abseil/base/atomic_hook - abseil/base/base_internal - abseil/base/config - abseil/base/core_headers + - abseil/base/cycleclock_internal - abseil/base/dynamic_annotations - abseil/base/log_severity + - abseil/base/nullability - abseil/base/raw_logging_internal - abseil/base/spinlock_wait - abseil/meta/type_traits - - abseil/base/base_internal (1.20220623.0): + - abseil/xcprivacy + - abseil/base/base_internal (1.20240116.2): - abseil/base/config - abseil/meta/type_traits - - abseil/base/config (1.20220623.0) - - abseil/base/core_headers (1.20220623.0): + - abseil/xcprivacy + - abseil/base/config (1.20240116.2): + - abseil/xcprivacy + - abseil/base/core_headers (1.20240116.2): - abseil/base/config - - abseil/base/dynamic_annotations (1.20220623.0): + - abseil/xcprivacy + - abseil/base/cycleclock_internal (1.20240116.2): + - abseil/base/base_internal + - abseil/base/config + - abseil/xcprivacy + - abseil/base/dynamic_annotations (1.20240116.2): - abseil/base/config - abseil/base/core_headers - - abseil/base/endian (1.20220623.0): + - abseil/xcprivacy + - abseil/base/endian (1.20240116.2): - abseil/base/base - abseil/base/config - abseil/base/core_headers - - abseil/base/errno_saver (1.20220623.0): + - abseil/base/nullability + - abseil/xcprivacy + - abseil/base/errno_saver (1.20240116.2): - abseil/base/config - - abseil/base/fast_type_id (1.20220623.0): + - abseil/xcprivacy + - abseil/base/fast_type_id (1.20240116.2): - abseil/base/config - - abseil/base/log_severity (1.20220623.0): + - abseil/xcprivacy + - abseil/base/log_severity (1.20240116.2): - abseil/base/config - abseil/base/core_headers - - abseil/base/malloc_internal (1.20220623.0): + - abseil/xcprivacy + - abseil/base/malloc_internal (1.20240116.2): - abseil/base/base - abseil/base/base_internal - abseil/base/config - abseil/base/core_headers - abseil/base/dynamic_annotations - abseil/base/raw_logging_internal - - abseil/base/prefetch (1.20220623.0): + - abseil/xcprivacy + - abseil/base/no_destructor (1.20240116.2): - abseil/base/config - - abseil/base/pretty_function (1.20220623.0) - - abseil/base/raw_logging_internal (1.20220623.0): + - abseil/xcprivacy + - abseil/base/nullability (1.20240116.2): + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/xcprivacy + - abseil/base/prefetch (1.20240116.2): + - abseil/base/config + - abseil/base/core_headers + - abseil/xcprivacy + - abseil/base/pretty_function (1.20240116.2): + - abseil/xcprivacy + - abseil/base/raw_logging_internal (1.20240116.2): - abseil/base/atomic_hook - abseil/base/config - abseil/base/core_headers - abseil/base/errno_saver - abseil/base/log_severity - - abseil/base/spinlock_wait (1.20220623.0): + - abseil/xcprivacy + - abseil/base/spinlock_wait (1.20240116.2): - abseil/base/base_internal - abseil/base/core_headers - abseil/base/errno_saver - - abseil/base/strerror (1.20220623.0): + - abseil/xcprivacy + - abseil/base/strerror (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/base/errno_saver - - abseil/base/throw_delegate (1.20220623.0): + - abseil/xcprivacy + - abseil/base/throw_delegate (1.20240116.2): - abseil/base/config - abseil/base/raw_logging_internal - - abseil/cleanup/cleanup (1.20220623.0): + - abseil/xcprivacy + - abseil/cleanup/cleanup (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/cleanup/cleanup_internal - - abseil/cleanup/cleanup_internal (1.20220623.0): + - abseil/xcprivacy + - abseil/cleanup/cleanup_internal (1.20240116.2): - abseil/base/base_internal - abseil/base/core_headers - abseil/utility/utility - - abseil/container/common (1.20220623.0): + - abseil/xcprivacy + - abseil/container/common (1.20240116.2): - abseil/meta/type_traits - abseil/types/optional - - abseil/container/compressed_tuple (1.20220623.0): + - abseil/xcprivacy + - abseil/container/common_policy_traits (1.20240116.2): + - abseil/meta/type_traits + - abseil/xcprivacy + - abseil/container/compressed_tuple (1.20240116.2): - abseil/utility/utility - - abseil/container/container_memory (1.20220623.0): + - abseil/xcprivacy + - abseil/container/container_memory (1.20240116.2): - abseil/base/config - abseil/memory/memory - abseil/meta/type_traits - abseil/utility/utility - - abseil/container/fixed_array (1.20220623.0): + - abseil/xcprivacy + - abseil/container/fixed_array (1.20240116.2): - abseil/algorithm/algorithm - abseil/base/config - abseil/base/core_headers @@ -112,92 +158,159 @@ PODS: - abseil/base/throw_delegate - abseil/container/compressed_tuple - abseil/memory/memory - - abseil/container/flat_hash_map (1.20220623.0): + - abseil/xcprivacy + - abseil/container/flat_hash_map (1.20240116.2): - abseil/algorithm/container - abseil/base/core_headers - abseil/container/container_memory - abseil/container/hash_function_defaults - abseil/container/raw_hash_map - abseil/memory/memory - - abseil/container/flat_hash_set (1.20220623.0): + - abseil/xcprivacy + - abseil/container/flat_hash_set (1.20240116.2): - abseil/algorithm/container - abseil/base/core_headers - abseil/container/container_memory - abseil/container/hash_function_defaults - abseil/container/raw_hash_set - abseil/memory/memory - - abseil/container/hash_function_defaults (1.20220623.0): + - abseil/xcprivacy + - abseil/container/hash_function_defaults (1.20240116.2): - abseil/base/config - abseil/hash/hash - abseil/strings/cord - abseil/strings/strings - - abseil/container/hash_policy_traits (1.20220623.0): + - abseil/xcprivacy + - abseil/container/hash_policy_traits (1.20240116.2): + - abseil/container/common_policy_traits - abseil/meta/type_traits - - abseil/container/hashtable_debug_hooks (1.20220623.0): + - abseil/xcprivacy + - abseil/container/hashtable_debug_hooks (1.20240116.2): - abseil/base/config - - abseil/container/hashtablez_sampler (1.20220623.0): + - abseil/xcprivacy + - abseil/container/hashtablez_sampler (1.20240116.2): - abseil/base/base - abseil/base/config - abseil/base/core_headers + - abseil/base/raw_logging_internal - abseil/debugging/stacktrace - abseil/memory/memory - abseil/profiling/exponential_biased - abseil/profiling/sample_recorder - abseil/synchronization/synchronization + - abseil/time/time - abseil/utility/utility - - abseil/container/inlined_vector (1.20220623.0): + - abseil/xcprivacy + - abseil/container/inlined_vector (1.20240116.2): - abseil/algorithm/algorithm - abseil/base/core_headers - abseil/base/throw_delegate - abseil/container/inlined_vector_internal - abseil/memory/memory - - abseil/container/inlined_vector_internal (1.20220623.0): + - abseil/meta/type_traits + - abseil/xcprivacy + - abseil/container/inlined_vector_internal (1.20240116.2): + - abseil/base/config - abseil/base/core_headers - abseil/container/compressed_tuple - abseil/memory/memory - abseil/meta/type_traits - abseil/types/span - - abseil/container/layout (1.20220623.0): + - abseil/xcprivacy + - abseil/container/layout (1.20240116.2): - abseil/base/config - abseil/base/core_headers + - abseil/debugging/demangle_internal - abseil/meta/type_traits - abseil/strings/strings - abseil/types/span - abseil/utility/utility - - abseil/container/raw_hash_map (1.20220623.0): + - abseil/xcprivacy + - abseil/container/raw_hash_map (1.20240116.2): + - abseil/base/config + - abseil/base/core_headers - abseil/base/throw_delegate - abseil/container/container_memory - abseil/container/raw_hash_set - - abseil/container/raw_hash_set (1.20220623.0): + - abseil/xcprivacy + - abseil/container/raw_hash_set (1.20240116.2): - abseil/base/config - abseil/base/core_headers + - abseil/base/dynamic_annotations - abseil/base/endian - abseil/base/prefetch + - abseil/base/raw_logging_internal - abseil/container/common - abseil/container/compressed_tuple - abseil/container/container_memory - abseil/container/hash_policy_traits - abseil/container/hashtable_debug_hooks - abseil/container/hashtablez_sampler + - abseil/hash/hash - abseil/memory/memory - abseil/meta/type_traits - abseil/numeric/bits - abseil/utility/utility - - abseil/debugging/debugging_internal (1.20220623.0): + - abseil/xcprivacy + - abseil/crc/cpu_detect (1.20240116.2): + - abseil/base/base + - abseil/base/config + - abseil/xcprivacy + - abseil/crc/crc32c (1.20240116.2): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/prefetch + - abseil/crc/cpu_detect + - abseil/crc/crc_internal + - abseil/crc/non_temporal_memcpy + - abseil/strings/str_format + - abseil/strings/strings + - abseil/xcprivacy + - abseil/crc/crc_cord_state (1.20240116.2): + - abseil/base/config + - abseil/crc/crc32c + - abseil/numeric/bits + - abseil/strings/strings + - abseil/xcprivacy + - abseil/crc/crc_internal (1.20240116.2): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/prefetch + - abseil/base/raw_logging_internal + - abseil/crc/cpu_detect + - abseil/memory/memory + - abseil/numeric/bits + - abseil/xcprivacy + - abseil/crc/non_temporal_arm_intrinsics (1.20240116.2): + - abseil/base/config + - abseil/xcprivacy + - abseil/crc/non_temporal_memcpy (1.20240116.2): + - abseil/base/config + - abseil/base/core_headers + - abseil/crc/non_temporal_arm_intrinsics + - abseil/xcprivacy + - abseil/debugging/debugging_internal (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/base/dynamic_annotations - abseil/base/errno_saver - abseil/base/raw_logging_internal - - abseil/debugging/demangle_internal (1.20220623.0): + - abseil/xcprivacy + - abseil/debugging/demangle_internal (1.20240116.2): - abseil/base/base - abseil/base/config - abseil/base/core_headers - - abseil/debugging/stacktrace (1.20220623.0): + - abseil/xcprivacy + - abseil/debugging/stacktrace (1.20240116.2): - abseil/base/config - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/raw_logging_internal - abseil/debugging/debugging_internal - - abseil/debugging/symbolize (1.20220623.0): + - abseil/xcprivacy + - abseil/debugging/symbolize (1.20240116.2): - abseil/base/base - abseil/base/config - abseil/base/core_headers @@ -207,26 +320,114 @@ PODS: - abseil/debugging/debugging_internal - abseil/debugging/demangle_internal - abseil/strings/strings - - abseil/functional/any_invocable (1.20220623.0): + - abseil/xcprivacy + - abseil/flags/commandlineflag (1.20240116.2): + - abseil/base/config + - abseil/base/fast_type_id + - abseil/flags/commandlineflag_internal + - abseil/strings/strings + - abseil/types/optional + - abseil/xcprivacy + - abseil/flags/commandlineflag_internal (1.20240116.2): + - abseil/base/config + - abseil/base/fast_type_id + - abseil/xcprivacy + - abseil/flags/config (1.20240116.2): + - abseil/base/config + - abseil/base/core_headers + - abseil/flags/path_util + - abseil/flags/program_name + - abseil/strings/strings + - abseil/synchronization/synchronization + - abseil/xcprivacy + - abseil/flags/flag (1.20240116.2): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/flags/config + - abseil/flags/flag_internal + - abseil/flags/reflection + - abseil/strings/strings + - abseil/xcprivacy + - abseil/flags/flag_internal (1.20240116.2): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/flags/commandlineflag + - abseil/flags/commandlineflag_internal + - abseil/flags/config + - abseil/flags/marshalling + - abseil/flags/reflection + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/strings/strings + - abseil/synchronization/synchronization + - abseil/utility/utility + - abseil/xcprivacy + - abseil/flags/marshalling (1.20240116.2): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/log_severity + - abseil/numeric/int128 + - abseil/strings/str_format + - abseil/strings/strings + - abseil/types/optional + - abseil/xcprivacy + - abseil/flags/path_util (1.20240116.2): + - abseil/base/config + - abseil/strings/strings + - abseil/xcprivacy + - abseil/flags/private_handle_accessor (1.20240116.2): + - abseil/base/config + - abseil/flags/commandlineflag + - abseil/flags/commandlineflag_internal + - abseil/strings/strings + - abseil/xcprivacy + - abseil/flags/program_name (1.20240116.2): + - abseil/base/config + - abseil/base/core_headers + - abseil/flags/path_util + - abseil/strings/strings + - abseil/synchronization/synchronization + - abseil/xcprivacy + - abseil/flags/reflection (1.20240116.2): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/no_destructor + - abseil/container/flat_hash_map + - abseil/flags/commandlineflag + - abseil/flags/commandlineflag_internal + - abseil/flags/config + - abseil/flags/private_handle_accessor + - abseil/strings/strings + - abseil/synchronization/synchronization + - abseil/xcprivacy + - abseil/functional/any_invocable (1.20240116.2): - abseil/base/base_internal - abseil/base/config - abseil/base/core_headers - abseil/meta/type_traits - abseil/utility/utility - - abseil/functional/bind_front (1.20220623.0): + - abseil/xcprivacy + - abseil/functional/bind_front (1.20240116.2): - abseil/base/base_internal - abseil/container/compressed_tuple - abseil/meta/type_traits - abseil/utility/utility - - abseil/functional/function_ref (1.20220623.0): + - abseil/xcprivacy + - abseil/functional/function_ref (1.20240116.2): - abseil/base/base_internal - abseil/base/core_headers + - abseil/functional/any_invocable - abseil/meta/type_traits - - abseil/hash/city (1.20220623.0): + - abseil/xcprivacy + - abseil/hash/city (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/base/endian - - abseil/hash/hash (1.20220623.0): + - abseil/xcprivacy + - abseil/hash/hash (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/base/endian @@ -235,43 +436,62 @@ PODS: - abseil/hash/city - abseil/hash/low_level_hash - abseil/meta/type_traits + - abseil/numeric/bits - abseil/numeric/int128 - abseil/strings/strings - abseil/types/optional - abseil/types/variant - abseil/utility/utility - - abseil/hash/low_level_hash (1.20220623.0): + - abseil/xcprivacy + - abseil/hash/low_level_hash (1.20240116.2): - abseil/base/config - abseil/base/endian - - abseil/numeric/bits + - abseil/base/prefetch - abseil/numeric/int128 - - abseil/memory (1.20220623.0): - - abseil/memory/memory (= 1.20220623.0) - - abseil/memory/memory (1.20220623.0): + - abseil/xcprivacy + - abseil/memory (1.20240116.2): + - abseil/memory/memory (= 1.20240116.2) + - abseil/memory/memory (1.20240116.2): - abseil/base/core_headers - abseil/meta/type_traits - - abseil/meta (1.20220623.0): - - abseil/meta/type_traits (= 1.20220623.0) - - abseil/meta/type_traits (1.20220623.0): + - abseil/xcprivacy + - abseil/meta (1.20240116.2): + - abseil/meta/type_traits (= 1.20240116.2) + - abseil/meta/type_traits (1.20240116.2): - abseil/base/config - - abseil/numeric/bits (1.20220623.0): + - abseil/base/core_headers + - abseil/xcprivacy + - abseil/numeric/bits (1.20240116.2): - abseil/base/config - abseil/base/core_headers - - abseil/numeric/int128 (1.20220623.0): + - abseil/xcprivacy + - abseil/numeric/int128 (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/numeric/bits - - abseil/numeric/representation (1.20220623.0): + - abseil/xcprivacy + - abseil/numeric/representation (1.20240116.2): - abseil/base/config - - abseil/profiling/exponential_biased (1.20220623.0): + - abseil/xcprivacy + - abseil/profiling/exponential_biased (1.20240116.2): - abseil/base/config - abseil/base/core_headers - - abseil/profiling/sample_recorder (1.20220623.0): + - abseil/xcprivacy + - abseil/profiling/sample_recorder (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/synchronization/synchronization - abseil/time/time - - abseil/random/distributions (1.20220623.0): + - abseil/xcprivacy + - abseil/random/bit_gen_ref (1.20240116.2): + - abseil/base/core_headers + - abseil/base/fast_type_id + - abseil/meta/type_traits + - abseil/random/internal/distribution_caller + - abseil/random/internal/fast_uniform_bits + - abseil/random/random + - abseil/xcprivacy + - abseil/random/distributions (1.20240116.2): - abseil/base/base_internal - abseil/base/config - abseil/base/core_headers @@ -286,25 +506,31 @@ PODS: - abseil/random/internal/uniform_helper - abseil/random/internal/wide_multiply - abseil/strings/strings - - abseil/random/internal/distribution_caller (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/distribution_caller (1.20240116.2): - abseil/base/config - abseil/base/fast_type_id - abseil/utility/utility - - abseil/random/internal/fast_uniform_bits (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/fast_uniform_bits (1.20240116.2): - abseil/base/config - abseil/meta/type_traits - abseil/random/internal/traits - - abseil/random/internal/fastmath (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/fastmath (1.20240116.2): - abseil/numeric/bits - - abseil/random/internal/generate_real (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/generate_real (1.20240116.2): - abseil/meta/type_traits - abseil/numeric/bits - abseil/random/internal/fastmath - abseil/random/internal/traits - - abseil/random/internal/iostream_state_saver (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/iostream_state_saver (1.20240116.2): - abseil/meta/type_traits - abseil/numeric/int128 - - abseil/random/internal/nonsecure_base (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/nonsecure_base (1.20240116.2): - abseil/base/core_headers - abseil/container/inlined_vector - abseil/meta/type_traits @@ -312,16 +538,19 @@ PODS: - abseil/random/internal/salted_seed_seq - abseil/random/internal/seed_material - abseil/types/span - - abseil/random/internal/pcg_engine (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/pcg_engine (1.20240116.2): - abseil/base/config - abseil/meta/type_traits - abseil/numeric/bits - abseil/numeric/int128 - abseil/random/internal/fastmath - abseil/random/internal/iostream_state_saver - - abseil/random/internal/platform (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/platform (1.20240116.2): - abseil/base/config - - abseil/random/internal/pool_urbg (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/pool_urbg (1.20240116.2): - abseil/base/base - abseil/base/config - abseil/base/core_headers @@ -332,38 +561,45 @@ PODS: - abseil/random/internal/traits - abseil/random/seed_gen_exception - abseil/types/span - - abseil/random/internal/randen (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/randen (1.20240116.2): - abseil/base/raw_logging_internal - abseil/random/internal/platform - abseil/random/internal/randen_hwaes - abseil/random/internal/randen_slow - - abseil/random/internal/randen_engine (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/randen_engine (1.20240116.2): - abseil/base/endian - abseil/meta/type_traits - abseil/random/internal/iostream_state_saver - abseil/random/internal/randen - - abseil/random/internal/randen_hwaes (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/randen_hwaes (1.20240116.2): - abseil/base/config - abseil/random/internal/platform - abseil/random/internal/randen_hwaes_impl - - abseil/random/internal/randen_hwaes_impl (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/randen_hwaes_impl (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/numeric/int128 - abseil/random/internal/platform - - abseil/random/internal/randen_slow (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/randen_slow (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/base/endian - abseil/numeric/int128 - abseil/random/internal/platform - - abseil/random/internal/salted_seed_seq (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/salted_seed_seq (1.20240116.2): - abseil/container/inlined_vector - abseil/meta/type_traits - abseil/random/internal/seed_material - abseil/types/optional - abseil/types/span - - abseil/random/internal/seed_material (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/seed_material (1.20240116.2): - abseil/base/core_headers - abseil/base/dynamic_annotations - abseil/base/raw_logging_internal @@ -371,66 +607,90 @@ PODS: - abseil/strings/strings - abseil/types/optional - abseil/types/span - - abseil/random/internal/traits (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/traits (1.20240116.2): - abseil/base/config - abseil/numeric/bits - abseil/numeric/int128 - - abseil/random/internal/uniform_helper (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/uniform_helper (1.20240116.2): - abseil/base/config - abseil/meta/type_traits - abseil/numeric/int128 - abseil/random/internal/traits - - abseil/random/internal/wide_multiply (1.20220623.0): + - abseil/xcprivacy + - abseil/random/internal/wide_multiply (1.20240116.2): - abseil/base/config - abseil/numeric/bits - abseil/numeric/int128 - abseil/random/internal/traits - - abseil/random/random (1.20220623.0): + - abseil/xcprivacy + - abseil/random/random (1.20240116.2): - abseil/random/distributions - abseil/random/internal/nonsecure_base - abseil/random/internal/pcg_engine - abseil/random/internal/pool_urbg - abseil/random/internal/randen_engine - abseil/random/seed_sequences - - abseil/random/seed_gen_exception (1.20220623.0): + - abseil/xcprivacy + - abseil/random/seed_gen_exception (1.20240116.2): - abseil/base/config - - abseil/random/seed_sequences (1.20220623.0): + - abseil/xcprivacy + - abseil/random/seed_sequences (1.20240116.2): - abseil/base/config - abseil/random/internal/pool_urbg - abseil/random/internal/salted_seed_seq - abseil/random/internal/seed_material - abseil/random/seed_gen_exception - abseil/types/span - - abseil/status/status (1.20220623.0): + - abseil/xcprivacy + - abseil/status/status (1.20240116.2): - abseil/base/atomic_hook + - abseil/base/config - abseil/base/core_headers + - abseil/base/no_destructor + - abseil/base/nullability - abseil/base/raw_logging_internal - abseil/base/strerror - abseil/container/inlined_vector - abseil/debugging/stacktrace - abseil/debugging/symbolize - abseil/functional/function_ref + - abseil/memory/memory - abseil/strings/cord - abseil/strings/str_format - abseil/strings/strings - abseil/types/optional - - abseil/status/statusor (1.20220623.0): + - abseil/types/span + - abseil/xcprivacy + - abseil/status/statusor (1.20240116.2): - abseil/base/base + - abseil/base/config - abseil/base/core_headers + - abseil/base/nullability - abseil/base/raw_logging_internal - abseil/meta/type_traits - abseil/status/status + - abseil/strings/has_ostream_operator + - abseil/strings/str_format - abseil/strings/strings - abseil/types/variant - abseil/utility/utility - - abseil/strings/cord (1.20220623.0): + - abseil/xcprivacy + - abseil/strings/charset (1.20240116.2): + - abseil/base/core_headers + - abseil/strings/string_view + - abseil/xcprivacy + - abseil/strings/cord (1.20240116.2): - abseil/base/base - abseil/base/config - abseil/base/core_headers - abseil/base/endian + - abseil/base/nullability - abseil/base/raw_logging_internal - - abseil/container/fixed_array - abseil/container/inlined_vector + - abseil/crc/crc32c + - abseil/crc/crc_cord_state - abseil/functional/function_ref - abseil/meta/type_traits - abseil/numeric/bits @@ -441,11 +701,11 @@ PODS: - abseil/strings/cordz_update_scope - abseil/strings/cordz_update_tracker - abseil/strings/internal - - abseil/strings/str_format - abseil/strings/strings - abseil/types/optional - abseil/types/span - - abseil/strings/cord_internal (1.20220623.0): + - abseil/xcprivacy + - abseil/strings/cord_internal (1.20240116.2): - abseil/base/base_internal - abseil/base/config - abseil/base/core_headers @@ -453,23 +713,28 @@ PODS: - abseil/base/raw_logging_internal - abseil/base/throw_delegate - abseil/container/compressed_tuple + - abseil/container/container_memory - abseil/container/inlined_vector - abseil/container/layout + - abseil/crc/crc_cord_state - abseil/functional/function_ref - abseil/meta/type_traits - abseil/strings/strings - abseil/types/span - - abseil/strings/cordz_functions (1.20220623.0): + - abseil/xcprivacy + - abseil/strings/cordz_functions (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/base/raw_logging_internal - abseil/profiling/exponential_biased - - abseil/strings/cordz_handle (1.20220623.0): + - abseil/xcprivacy + - abseil/strings/cordz_handle (1.20240116.2): - abseil/base/base - abseil/base/config - abseil/base/raw_logging_internal - abseil/synchronization/synchronization - - abseil/strings/cordz_info (1.20220623.0): + - abseil/xcprivacy + - abseil/strings/cordz_info (1.20240116.2): - abseil/base/base - abseil/base/config - abseil/base/core_headers @@ -482,29 +747,46 @@ PODS: - abseil/strings/cordz_statistics - abseil/strings/cordz_update_tracker - abseil/synchronization/synchronization + - abseil/time/time - abseil/types/span - - abseil/strings/cordz_statistics (1.20220623.0): + - abseil/xcprivacy + - abseil/strings/cordz_statistics (1.20240116.2): - abseil/base/config - abseil/strings/cordz_update_tracker - - abseil/strings/cordz_update_scope (1.20220623.0): + - abseil/xcprivacy + - abseil/strings/cordz_update_scope (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/strings/cord_internal - abseil/strings/cordz_info - abseil/strings/cordz_update_tracker - - abseil/strings/cordz_update_tracker (1.20220623.0): + - abseil/xcprivacy + - abseil/strings/cordz_update_tracker (1.20240116.2): + - abseil/base/config + - abseil/xcprivacy + - abseil/strings/has_ostream_operator (1.20240116.2): - abseil/base/config - - abseil/strings/internal (1.20220623.0): + - abseil/xcprivacy + - abseil/strings/internal (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/base/endian - abseil/base/raw_logging_internal - abseil/meta/type_traits - - abseil/strings/str_format (1.20220623.0): + - abseil/xcprivacy + - abseil/strings/str_format (1.20240116.2): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/nullability - abseil/strings/str_format_internal - - abseil/strings/str_format_internal (1.20220623.0): + - abseil/strings/string_view + - abseil/types/span + - abseil/xcprivacy + - abseil/strings/str_format_internal (1.20240116.2): - abseil/base/config - abseil/base/core_headers + - abseil/container/fixed_array + - abseil/container/inlined_vector - abseil/functional/function_ref - abseil/meta/type_traits - abseil/numeric/bits @@ -514,30 +796,46 @@ PODS: - abseil/types/optional - abseil/types/span - abseil/utility/utility - - abseil/strings/strings (1.20220623.0): + - abseil/xcprivacy + - abseil/strings/string_view (1.20240116.2): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/nullability + - abseil/base/throw_delegate + - abseil/xcprivacy + - abseil/strings/strings (1.20240116.2): - abseil/base/base - abseil/base/config - abseil/base/core_headers - abseil/base/endian + - abseil/base/nullability - abseil/base/raw_logging_internal - abseil/base/throw_delegate - abseil/memory/memory - abseil/meta/type_traits - abseil/numeric/bits - abseil/numeric/int128 + - abseil/strings/charset - abseil/strings/internal - - abseil/synchronization/graphcycles_internal (1.20220623.0): + - abseil/strings/string_view + - abseil/xcprivacy + - abseil/synchronization/graphcycles_internal (1.20240116.2): - abseil/base/base - abseil/base/base_internal - abseil/base/config - abseil/base/core_headers - abseil/base/malloc_internal - abseil/base/raw_logging_internal - - abseil/synchronization/kernel_timeout_internal (1.20220623.0): + - abseil/xcprivacy + - abseil/synchronization/kernel_timeout_internal (1.20240116.2): + - abseil/base/base + - abseil/base/config - abseil/base/core_headers - abseil/base/raw_logging_internal - abseil/time/time - - abseil/synchronization/synchronization (1.20220623.0): + - abseil/xcprivacy + - abseil/synchronization/synchronization (1.20240116.2): - abseil/base/atomic_hook - abseil/base/base - abseil/base/base_internal @@ -551,177 +849,232 @@ PODS: - abseil/synchronization/graphcycles_internal - abseil/synchronization/kernel_timeout_internal - abseil/time/time - - abseil/time (1.20220623.0): - - abseil/time/internal (= 1.20220623.0) - - abseil/time/time (= 1.20220623.0) - - abseil/time/internal (1.20220623.0): - - abseil/time/internal/cctz (= 1.20220623.0) - - abseil/time/internal/cctz (1.20220623.0): - - abseil/time/internal/cctz/civil_time (= 1.20220623.0) - - abseil/time/internal/cctz/time_zone (= 1.20220623.0) - - abseil/time/internal/cctz/civil_time (1.20220623.0): - - abseil/base/config - - abseil/time/internal/cctz/time_zone (1.20220623.0): + - abseil/xcprivacy + - abseil/time (1.20240116.2): + - abseil/time/internal (= 1.20240116.2) + - abseil/time/time (= 1.20240116.2) + - abseil/time/internal (1.20240116.2): + - abseil/time/internal/cctz (= 1.20240116.2) + - abseil/time/internal/cctz (1.20240116.2): + - abseil/time/internal/cctz/civil_time (= 1.20240116.2) + - abseil/time/internal/cctz/time_zone (= 1.20240116.2) + - abseil/time/internal/cctz/civil_time (1.20240116.2): + - abseil/base/config + - abseil/xcprivacy + - abseil/time/internal/cctz/time_zone (1.20240116.2): - abseil/base/config - abseil/time/internal/cctz/civil_time - - abseil/time/time (1.20220623.0): + - abseil/xcprivacy + - abseil/time/time (1.20240116.2): - abseil/base/base + - abseil/base/config - abseil/base/core_headers - abseil/base/raw_logging_internal - abseil/numeric/int128 - abseil/strings/strings - abseil/time/internal/cctz/civil_time - abseil/time/internal/cctz/time_zone - - abseil/types (1.20220623.0): - - abseil/types/any (= 1.20220623.0) - - abseil/types/bad_any_cast (= 1.20220623.0) - - abseil/types/bad_any_cast_impl (= 1.20220623.0) - - abseil/types/bad_optional_access (= 1.20220623.0) - - abseil/types/bad_variant_access (= 1.20220623.0) - - abseil/types/compare (= 1.20220623.0) - - abseil/types/optional (= 1.20220623.0) - - abseil/types/span (= 1.20220623.0) - - abseil/types/variant (= 1.20220623.0) - - abseil/types/any (1.20220623.0): + - abseil/types/optional + - abseil/xcprivacy + - abseil/types (1.20240116.2): + - abseil/types/any (= 1.20240116.2) + - abseil/types/bad_any_cast (= 1.20240116.2) + - abseil/types/bad_any_cast_impl (= 1.20240116.2) + - abseil/types/bad_optional_access (= 1.20240116.2) + - abseil/types/bad_variant_access (= 1.20240116.2) + - abseil/types/compare (= 1.20240116.2) + - abseil/types/optional (= 1.20240116.2) + - abseil/types/span (= 1.20240116.2) + - abseil/types/variant (= 1.20240116.2) + - abseil/types/any (1.20240116.2): - abseil/base/config - abseil/base/core_headers - abseil/base/fast_type_id - abseil/meta/type_traits - abseil/types/bad_any_cast - abseil/utility/utility - - abseil/types/bad_any_cast (1.20220623.0): + - abseil/xcprivacy + - abseil/types/bad_any_cast (1.20240116.2): - abseil/base/config - abseil/types/bad_any_cast_impl - - abseil/types/bad_any_cast_impl (1.20220623.0): + - abseil/xcprivacy + - abseil/types/bad_any_cast_impl (1.20240116.2): - abseil/base/config - abseil/base/raw_logging_internal - - abseil/types/bad_optional_access (1.20220623.0): + - abseil/xcprivacy + - abseil/types/bad_optional_access (1.20240116.2): - abseil/base/config - abseil/base/raw_logging_internal - - abseil/types/bad_variant_access (1.20220623.0): + - abseil/xcprivacy + - abseil/types/bad_variant_access (1.20240116.2): - abseil/base/config - abseil/base/raw_logging_internal - - abseil/types/compare (1.20220623.0): + - abseil/xcprivacy + - abseil/types/compare (1.20240116.2): + - abseil/base/config - abseil/base/core_headers - abseil/meta/type_traits - - abseil/types/optional (1.20220623.0): + - abseil/xcprivacy + - abseil/types/optional (1.20240116.2): - abseil/base/base_internal - abseil/base/config - abseil/base/core_headers + - abseil/base/nullability - abseil/memory/memory - abseil/meta/type_traits - abseil/types/bad_optional_access - abseil/utility/utility - - abseil/types/span (1.20220623.0): + - abseil/xcprivacy + - abseil/types/span (1.20240116.2): - abseil/algorithm/algorithm - abseil/base/core_headers + - abseil/base/nullability - abseil/base/throw_delegate - abseil/meta/type_traits - - abseil/types/variant (1.20220623.0): + - abseil/xcprivacy + - abseil/types/variant (1.20240116.2): - abseil/base/base_internal - abseil/base/config - abseil/base/core_headers - abseil/meta/type_traits - abseil/types/bad_variant_access - abseil/utility/utility - - abseil/utility/utility (1.20220623.0): + - abseil/xcprivacy + - abseil/utility/utility (1.20240116.2): - abseil/base/base_internal - abseil/base/config - abseil/meta/type_traits - - AppAuth (1.6.2): - - AppAuth/Core (= 1.6.2) - - AppAuth/ExternalUserAgent (= 1.6.2) - - AppAuth/Core (1.6.2) - - AppAuth/ExternalUserAgent (1.6.2): + - abseil/xcprivacy + - abseil/xcprivacy (1.20240116.2) + - AppAuth (1.7.6): + - AppAuth/Core (= 1.7.6) + - AppAuth/ExternalUserAgent (= 1.7.6) + - AppAuth/Core (1.7.6) + - AppAuth/ExternalUserAgent (1.7.6): - AppAuth/Core - audio_session (0.0.1): - Flutter - audioplayers_darwin (0.0.1): - Flutter - - BoringSSL-GRPC (0.0.24): - - BoringSSL-GRPC/Implementation (= 0.0.24) - - BoringSSL-GRPC/Interface (= 0.0.24) - - BoringSSL-GRPC/Implementation (0.0.24): - - BoringSSL-GRPC/Interface (= 0.0.24) - - BoringSSL-GRPC/Interface (0.0.24) - - cloud_firestore (4.14.0): - - Firebase/Firestore (= 10.18.0) + - BoringSSL-GRPC (0.0.32): + - BoringSSL-GRPC/Implementation (= 0.0.32) + - BoringSSL-GRPC/Interface (= 0.0.32) + - BoringSSL-GRPC/Implementation (0.0.32): + - BoringSSL-GRPC/Interface (= 0.0.32) + - BoringSSL-GRPC/Interface (0.0.32) + - cloud_firestore (4.17.5): + - Firebase/Firestore (= 10.25.0) - firebase_core - Flutter - - nanopb (< 2.30910.0, >= 2.30908.0) - device_info_plus (0.0.1): - Flutter - - DKImagePickerController/Core (4.3.4): + - DKImagePickerController/Core (4.3.9): - DKImagePickerController/ImageDataManager - DKImagePickerController/Resource - - DKImagePickerController/ImageDataManager (4.3.4) - - DKImagePickerController/PhotoGallery (4.3.4): + - DKImagePickerController/ImageDataManager (4.3.9) + - DKImagePickerController/PhotoGallery (4.3.9): - DKImagePickerController/Core - DKPhotoGallery - - DKImagePickerController/Resource (4.3.4) - - DKPhotoGallery (0.0.17): - - DKPhotoGallery/Core (= 0.0.17) - - DKPhotoGallery/Model (= 0.0.17) - - DKPhotoGallery/Preview (= 0.0.17) - - DKPhotoGallery/Resource (= 0.0.17) + - DKImagePickerController/Resource (4.3.9) + - DKPhotoGallery (0.0.19): + - DKPhotoGallery/Core (= 0.0.19) + - DKPhotoGallery/Model (= 0.0.19) + - DKPhotoGallery/Preview (= 0.0.19) + - DKPhotoGallery/Resource (= 0.0.19) - SDWebImage - SwiftyGif - - DKPhotoGallery/Core (0.0.17): + - DKPhotoGallery/Core (0.0.19): - DKPhotoGallery/Model - DKPhotoGallery/Preview - SDWebImage - SwiftyGif - - DKPhotoGallery/Model (0.0.17): + - DKPhotoGallery/Model (0.0.19): - SDWebImage - SwiftyGif - - DKPhotoGallery/Preview (0.0.17): + - DKPhotoGallery/Preview (0.0.19): - DKPhotoGallery/Model - DKPhotoGallery/Resource - SDWebImage - SwiftyGif - - DKPhotoGallery/Resource (0.0.17): + - DKPhotoGallery/Resource (0.0.19): - SDWebImage - SwiftyGif - file_picker (0.0.1): - DKImagePickerController/PhotoGallery - Flutter - - Firebase/CoreOnly (10.18.0): - - FirebaseCore (= 10.18.0) - - Firebase/Firestore (10.18.0): + - Firebase/Auth (10.25.0): + - Firebase/CoreOnly + - FirebaseAuth (~> 10.25.0) + - Firebase/CoreOnly (10.25.0): + - FirebaseCore (= 10.25.0) + - Firebase/Firestore (10.25.0): + - Firebase/CoreOnly + - FirebaseFirestore (~> 10.25.0) + - Firebase/Messaging (10.25.0): - Firebase/CoreOnly - - FirebaseFirestore (~> 10.18.0) - - firebase_core (2.24.2): - - Firebase/CoreOnly (= 10.18.0) + - FirebaseMessaging (~> 10.25.0) + - firebase_auth (4.20.0): + - Firebase/Auth (= 10.25.0) + - firebase_core + - Flutter + - firebase_core (2.32.0): + - Firebase/CoreOnly (= 10.25.0) - Flutter - - FirebaseAppCheckInterop (10.22.0) - - FirebaseCore (10.18.0): + - firebase_messaging (14.9.4): + - Firebase/Messaging (= 10.25.0) + - firebase_core + - Flutter + - FirebaseAppCheckInterop (10.29.0) + - FirebaseAuth (10.25.0): + - FirebaseAppCheckInterop (~> 10.17) + - FirebaseCore (~> 10.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/Environment (~> 7.8) + - GTMSessionFetcher/Core (< 4.0, >= 2.1) + - RecaptchaInterop (~> 100.0) + - FirebaseCore (10.25.0): - FirebaseCoreInternal (~> 10.0) - GoogleUtilities/Environment (~> 7.12) - GoogleUtilities/Logger (~> 7.12) - - FirebaseCoreExtension (10.22.0): + - FirebaseCoreExtension (10.29.0): - FirebaseCore (~> 10.0) - - FirebaseCoreInternal (10.22.0): + - FirebaseCoreInternal (10.29.0): - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseFirestore (10.18.0): + - FirebaseFirestore (10.25.0): - FirebaseCore (~> 10.0) - FirebaseCoreExtension (~> 10.0) - - FirebaseFirestoreInternal (~> 10.17) + - FirebaseFirestoreInternal (= 10.25.0) - FirebaseSharedSwift (~> 10.0) - - FirebaseFirestoreInternal (10.22.0): - - abseil/algorithm (~> 1.20220623.0) - - abseil/base (~> 1.20220623.0) - - abseil/container/flat_hash_map (~> 1.20220623.0) - - abseil/memory (~> 1.20220623.0) - - abseil/meta (~> 1.20220623.0) - - abseil/strings/strings (~> 1.20220623.0) - - abseil/time (~> 1.20220623.0) - - abseil/types (~> 1.20220623.0) + - FirebaseFirestoreInternal (10.25.0): + - abseil/algorithm (~> 1.20240116.1) + - abseil/base (~> 1.20240116.1) + - abseil/container/flat_hash_map (~> 1.20240116.1) + - abseil/memory (~> 1.20240116.1) + - abseil/meta (~> 1.20240116.1) + - abseil/strings/strings (~> 1.20240116.1) + - abseil/time (~> 1.20240116.1) + - abseil/types (~> 1.20240116.1) - FirebaseAppCheckInterop (~> 10.17) - FirebaseCore (~> 10.0) - - "gRPC-C++ (~> 1.49.1)" + - "gRPC-C++ (~> 1.62.0)" + - gRPC-Core (~> 1.62.0) - leveldb-library (~> 1.22) - nanopb (< 2.30911.0, >= 2.30908.0) - - FirebaseSharedSwift (10.22.0) + - FirebaseInstallations (10.29.0): + - FirebaseCore (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) + - PromisesObjC (~> 2.1) + - FirebaseMessaging (10.25.0): + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleDataTransport (~> 9.3) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Reachability (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) + - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebaseSharedSwift (10.29.0) - fl_location (0.0.1): - Flutter - Flutter (1.0.0) @@ -737,159 +1090,205 @@ PODS: - Flutter - Toast - google_sign_in_ios (0.0.1): + - AppAuth (>= 1.7.4) - Flutter - FlutterMacOS - - GoogleSignIn (~> 7.0) - - GoogleDataTransport (9.4.0): + - GoogleSignIn (~> 7.1) + - GTMSessionFetcher (>= 3.4.0) + - GoogleDataTransport (9.4.1): - GoogleUtilities/Environment (~> 7.7) - - nanopb (< 2.30910.0, >= 2.30908.0) + - nanopb (< 2.30911.0, >= 2.30908.0) - PromisesObjC (< 3.0, >= 1.2) - - GoogleMLKit/BarcodeScanning (4.0.0): + - GoogleMLKit/BarcodeScanning (6.0.0): - GoogleMLKit/MLKitCore - - MLKitBarcodeScanning (~> 3.0.0) - - GoogleMLKit/MLKitCore (4.0.0): - - MLKitCommon (~> 9.0.0) - - GoogleSignIn (7.0.0): - - AppAuth (~> 1.5) - - GTMAppAuth (< 3.0, >= 1.3) - - GTMSessionFetcher/Core (< 4.0, >= 1.1) - - GoogleToolboxForMac/DebugUtils (2.3.2): - - GoogleToolboxForMac/Defines (= 2.3.2) - - GoogleToolboxForMac/Defines (2.3.2) - - GoogleToolboxForMac/Logger (2.3.2): - - GoogleToolboxForMac/Defines (= 2.3.2) - - "GoogleToolboxForMac/NSData+zlib (2.3.2)": - - GoogleToolboxForMac/Defines (= 2.3.2) - - "GoogleToolboxForMac/NSDictionary+URLArguments (2.3.2)": - - GoogleToolboxForMac/DebugUtils (= 2.3.2) - - GoogleToolboxForMac/Defines (= 2.3.2) - - "GoogleToolboxForMac/NSString+URLArguments (= 2.3.2)" - - "GoogleToolboxForMac/NSString+URLArguments (2.3.2)" - - GoogleUtilities/Environment (7.13.0): + - MLKitBarcodeScanning (~> 5.0.0) + - GoogleMLKit/MLKitCore (6.0.0): + - MLKitCommon (~> 11.0.0) + - GoogleSignIn (7.1.0): + - AppAuth (< 2.0, >= 1.7.3) + - GTMAppAuth (< 5.0, >= 4.1.1) + - GTMSessionFetcher/Core (~> 3.3) + - GoogleToolboxForMac/Defines (4.2.1) + - GoogleToolboxForMac/Logger (4.2.1): + - GoogleToolboxForMac/Defines (= 4.2.1) + - "GoogleToolboxForMac/NSData+zlib (4.2.1)": + - GoogleToolboxForMac/Defines (= 4.2.1) + - GoogleUtilities/AppDelegateSwizzler (7.13.3): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Privacy + - GoogleUtilities/Environment (7.13.3): - GoogleUtilities/Privacy - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.13.0): + - GoogleUtilities/Logger (7.13.3): - GoogleUtilities/Environment - GoogleUtilities/Privacy - - "GoogleUtilities/NSData+zlib (7.13.0)": + - GoogleUtilities/Network (7.13.3): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Privacy + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (7.13.3)": - GoogleUtilities/Privacy - - GoogleUtilities/Privacy (7.13.0) - - GoogleUtilities/UserDefaults (7.13.0): + - GoogleUtilities/Privacy (7.13.3) + - GoogleUtilities/Reachability (7.13.3): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GoogleUtilities/UserDefaults (7.13.3): - GoogleUtilities/Logger - GoogleUtilities/Privacy - GoogleUtilitiesComponents (1.1.0): - GoogleUtilities/Logger - - "gRPC-C++ (1.49.1)": - - "gRPC-C++/Implementation (= 1.49.1)" - - "gRPC-C++/Interface (= 1.49.1)" - - "gRPC-C++/Implementation (1.49.1)": - - abseil/base/base (= 1.20220623.0) - - abseil/base/core_headers (= 1.20220623.0) - - abseil/cleanup/cleanup (= 1.20220623.0) - - abseil/container/flat_hash_map (= 1.20220623.0) - - abseil/container/flat_hash_set (= 1.20220623.0) - - abseil/container/inlined_vector (= 1.20220623.0) - - abseil/functional/any_invocable (= 1.20220623.0) - - abseil/functional/bind_front (= 1.20220623.0) - - abseil/functional/function_ref (= 1.20220623.0) - - abseil/hash/hash (= 1.20220623.0) - - abseil/memory/memory (= 1.20220623.0) - - abseil/meta/type_traits (= 1.20220623.0) - - abseil/random/random (= 1.20220623.0) - - abseil/status/status (= 1.20220623.0) - - abseil/status/statusor (= 1.20220623.0) - - abseil/strings/cord (= 1.20220623.0) - - abseil/strings/str_format (= 1.20220623.0) - - abseil/strings/strings (= 1.20220623.0) - - abseil/synchronization/synchronization (= 1.20220623.0) - - abseil/time/time (= 1.20220623.0) - - abseil/types/optional (= 1.20220623.0) - - abseil/types/span (= 1.20220623.0) - - abseil/types/variant (= 1.20220623.0) - - abseil/utility/utility (= 1.20220623.0) - - "gRPC-C++/Interface (= 1.49.1)" - - gRPC-Core (= 1.49.1) - - "gRPC-C++/Interface (1.49.1)" - - gRPC-Core (1.49.1): - - gRPC-Core/Implementation (= 1.49.1) - - gRPC-Core/Interface (= 1.49.1) - - gRPC-Core/Implementation (1.49.1): - - abseil/base/base (= 1.20220623.0) - - abseil/base/core_headers (= 1.20220623.0) - - abseil/container/flat_hash_map (= 1.20220623.0) - - abseil/container/flat_hash_set (= 1.20220623.0) - - abseil/container/inlined_vector (= 1.20220623.0) - - abseil/functional/any_invocable (= 1.20220623.0) - - abseil/functional/bind_front (= 1.20220623.0) - - abseil/functional/function_ref (= 1.20220623.0) - - abseil/hash/hash (= 1.20220623.0) - - abseil/memory/memory (= 1.20220623.0) - - abseil/meta/type_traits (= 1.20220623.0) - - abseil/random/random (= 1.20220623.0) - - abseil/status/status (= 1.20220623.0) - - abseil/status/statusor (= 1.20220623.0) - - abseil/strings/cord (= 1.20220623.0) - - abseil/strings/str_format (= 1.20220623.0) - - abseil/strings/strings (= 1.20220623.0) - - abseil/synchronization/synchronization (= 1.20220623.0) - - abseil/time/time (= 1.20220623.0) - - abseil/types/optional (= 1.20220623.0) - - abseil/types/span (= 1.20220623.0) - - abseil/types/variant (= 1.20220623.0) - - abseil/utility/utility (= 1.20220623.0) - - BoringSSL-GRPC (= 0.0.24) - - gRPC-Core/Interface (= 1.49.1) - - gRPC-Core/Interface (1.49.1) - - GTMAppAuth (2.0.0): - - AppAuth/Core (~> 1.6) - - GTMSessionFetcher/Core (< 4.0, >= 1.5) - - GTMSessionFetcher/Core (2.3.0) + - "gRPC-C++ (1.62.5)": + - "gRPC-C++/Implementation (= 1.62.5)" + - "gRPC-C++/Interface (= 1.62.5)" + - "gRPC-C++/Implementation (1.62.5)": + - abseil/algorithm/container (~> 1.20240116.2) + - abseil/base/base (~> 1.20240116.2) + - abseil/base/config (~> 1.20240116.2) + - abseil/base/core_headers (~> 1.20240116.2) + - abseil/cleanup/cleanup (~> 1.20240116.2) + - abseil/container/flat_hash_map (~> 1.20240116.2) + - abseil/container/flat_hash_set (~> 1.20240116.2) + - abseil/container/inlined_vector (~> 1.20240116.2) + - abseil/flags/flag (~> 1.20240116.2) + - abseil/flags/marshalling (~> 1.20240116.2) + - abseil/functional/any_invocable (~> 1.20240116.2) + - abseil/functional/bind_front (~> 1.20240116.2) + - abseil/functional/function_ref (~> 1.20240116.2) + - abseil/hash/hash (~> 1.20240116.2) + - abseil/memory/memory (~> 1.20240116.2) + - abseil/meta/type_traits (~> 1.20240116.2) + - abseil/random/bit_gen_ref (~> 1.20240116.2) + - abseil/random/distributions (~> 1.20240116.2) + - abseil/random/random (~> 1.20240116.2) + - abseil/status/status (~> 1.20240116.2) + - abseil/status/statusor (~> 1.20240116.2) + - abseil/strings/cord (~> 1.20240116.2) + - abseil/strings/str_format (~> 1.20240116.2) + - abseil/strings/strings (~> 1.20240116.2) + - abseil/synchronization/synchronization (~> 1.20240116.2) + - abseil/time/time (~> 1.20240116.2) + - abseil/types/optional (~> 1.20240116.2) + - abseil/types/span (~> 1.20240116.2) + - abseil/types/variant (~> 1.20240116.2) + - abseil/utility/utility (~> 1.20240116.2) + - "gRPC-C++/Interface (= 1.62.5)" + - "gRPC-C++/Privacy (= 1.62.5)" + - gRPC-Core (= 1.62.5) + - "gRPC-C++/Interface (1.62.5)" + - "gRPC-C++/Privacy (1.62.5)" + - gRPC-Core (1.62.5): + - gRPC-Core/Implementation (= 1.62.5) + - gRPC-Core/Interface (= 1.62.5) + - gRPC-Core/Implementation (1.62.5): + - abseil/algorithm/container (~> 1.20240116.2) + - abseil/base/base (~> 1.20240116.2) + - abseil/base/config (~> 1.20240116.2) + - abseil/base/core_headers (~> 1.20240116.2) + - abseil/cleanup/cleanup (~> 1.20240116.2) + - abseil/container/flat_hash_map (~> 1.20240116.2) + - abseil/container/flat_hash_set (~> 1.20240116.2) + - abseil/container/inlined_vector (~> 1.20240116.2) + - abseil/flags/flag (~> 1.20240116.2) + - abseil/flags/marshalling (~> 1.20240116.2) + - abseil/functional/any_invocable (~> 1.20240116.2) + - abseil/functional/bind_front (~> 1.20240116.2) + - abseil/functional/function_ref (~> 1.20240116.2) + - abseil/hash/hash (~> 1.20240116.2) + - abseil/memory/memory (~> 1.20240116.2) + - abseil/meta/type_traits (~> 1.20240116.2) + - abseil/random/bit_gen_ref (~> 1.20240116.2) + - abseil/random/distributions (~> 1.20240116.2) + - abseil/random/random (~> 1.20240116.2) + - abseil/status/status (~> 1.20240116.2) + - abseil/status/statusor (~> 1.20240116.2) + - abseil/strings/cord (~> 1.20240116.2) + - abseil/strings/str_format (~> 1.20240116.2) + - abseil/strings/strings (~> 1.20240116.2) + - abseil/synchronization/synchronization (~> 1.20240116.2) + - abseil/time/time (~> 1.20240116.2) + - abseil/types/optional (~> 1.20240116.2) + - abseil/types/span (~> 1.20240116.2) + - abseil/types/variant (~> 1.20240116.2) + - abseil/utility/utility (~> 1.20240116.2) + - BoringSSL-GRPC (= 0.0.32) + - gRPC-Core/Interface (= 1.62.5) + - gRPC-Core/Privacy (= 1.62.5) + - gRPC-Core/Interface (1.62.5) + - gRPC-Core/Privacy (1.62.5) + - GTMAppAuth (4.1.1): + - AppAuth/Core (~> 1.7) + - GTMSessionFetcher/Core (< 4.0, >= 3.3) + - GTMSessionFetcher (3.5.0): + - GTMSessionFetcher/Full (= 3.5.0) + - GTMSessionFetcher/Core (3.5.0) + - GTMSessionFetcher/Full (3.5.0): + - GTMSessionFetcher/Core - isar_flutter_libs (1.0.0): - Flutter - - leveldb-library (1.22.4) - - MLImage (1.0.0-beta4) - - MLKitBarcodeScanning (3.0.0): - - MLKitCommon (~> 9.0) - - MLKitVision (~> 5.0) - - MLKitCommon (9.0.0): - - GoogleDataTransport (~> 9.0) - - GoogleToolboxForMac/Logger (~> 2.1) - - "GoogleToolboxForMac/NSData+zlib (~> 2.1)" - - "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)" - - GoogleUtilities/UserDefaults (~> 7.0) + - leveldb-library (1.22.6) + - libphonenumber_plugin (0.0.1): + - Flutter + - PhoneNumberKit + - MLImage (1.0.0-beta5) + - MLKitBarcodeScanning (5.0.0): + - MLKitCommon (~> 11.0) + - MLKitVision (~> 7.0) + - MLKitCommon (11.0.0): + - GoogleDataTransport (< 10.0, >= 9.4.1) + - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1) + - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)" + - GoogleUtilities/UserDefaults (< 8.0, >= 7.13.0) - GoogleUtilitiesComponents (~> 1.0) - - GTMSessionFetcher/Core (< 3.0, >= 1.1) - - MLKitVision (5.0.0): - - GoogleToolboxForMac/Logger (~> 2.1) - - "GoogleToolboxForMac/NSData+zlib (~> 2.1)" - - GTMSessionFetcher/Core (< 3.0, >= 1.1) - - MLImage (= 1.0.0-beta4) - - MLKitCommon (~> 9.0) - - mobile_scanner (3.5.5): + - GTMSessionFetcher/Core (< 4.0, >= 3.3.2) + - MLKitVision (7.0.0): + - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1) + - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)" + - GTMSessionFetcher/Core (< 4.0, >= 3.3.2) + - MLImage (= 1.0.0-beta5) + - MLKitCommon (~> 11.0) + - mobile_scanner (5.0.2): - Flutter - - GoogleMLKit/BarcodeScanning (~> 4.0.0) - - nanopb (2.30909.1): - - nanopb/decode (= 2.30909.1) - - nanopb/encode (= 2.30909.1) - - nanopb/decode (2.30909.1) - - nanopb/encode (2.30909.1) + - GoogleMLKit/BarcodeScanning (~> 6.0.0) + - nanopb (2.30910.0): + - nanopb/decode (= 2.30910.0) + - nanopb/encode (= 2.30910.0) + - nanopb/decode (2.30910.0) + - nanopb/encode (2.30910.0) - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS - pedometer (0.0.1): - Flutter - - permission_handler_apple (9.1.1): + - permission_handler_apple (9.3.0): - Flutter + - PhoneNumberKit (3.8.0): + - PhoneNumberKit/PhoneNumberKitCore (= 3.8.0) + - PhoneNumberKit/UIKit (= 3.8.0) + - PhoneNumberKit/PhoneNumberKitCore (3.8.0) + - PhoneNumberKit/UIKit (3.8.0): + - PhoneNumberKit/PhoneNumberKitCore - PromisesObjC (2.4.0) - - screen_state (0.0.1): + - RecaptchaInterop (100.0.0) + - screen_state (1.0.0): - Flutter - - SDWebImage (5.19.0): - - SDWebImage/Core (= 5.19.0) - - SDWebImage/Core (5.19.0) + - SDWebImage (5.21.0): + - SDWebImage/Core (= 5.21.0) + - SDWebImage/Core (5.21.0) - sensors_plus (0.0.1): - Flutter - - SwiftyGif (5.4.4) - - Toast (4.1.0) + - shared_preferences_foundation (0.0.1): + - Flutter + - FlutterMacOS + - sqflite (0.0.3): + - Flutter + - FlutterMacOS + - SwiftyGif (5.4.5) + - telephony (0.0.1): + - Flutter + - Toast (4.1.1) - url_launcher_ios (0.0.1): - Flutter - vibration (1.7.5): @@ -901,7 +1300,9 @@ DEPENDENCIES: - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`) + - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`) - firebase_core (from `.symlinks/plugins/firebase_core/ios`) + - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) - fl_location (from `.symlinks/plugins/fl_location/ios`) - Flutter (from `Flutter`) - flutter_fgbg (from `.symlinks/plugins/flutter_fgbg/ios`) @@ -911,12 +1312,17 @@ DEPENDENCIES: - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`) - isar_flutter_libs (from `.symlinks/plugins/isar_flutter_libs/ios`) + - libphonenumber_plugin (from `.symlinks/plugins/libphonenumber_plugin/ios`) - mobile_scanner (from `.symlinks/plugins/mobile_scanner/ios`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - pedometer (from `.symlinks/plugins/pedometer/ios`) - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) + - PhoneNumberKit (= 3.8.0) - screen_state (from `.symlinks/plugins/screen_state/ios`) - sensors_plus (from `.symlinks/plugins/sensors_plus/ios`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) + - sqflite (from `.symlinks/plugins/sqflite/darwin`) + - telephony (from `.symlinks/plugins/telephony/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - vibration (from `.symlinks/plugins/vibration/ios`) @@ -929,11 +1335,14 @@ SPEC REPOS: - DKPhotoGallery - Firebase - FirebaseAppCheckInterop + - FirebaseAuth - FirebaseCore - FirebaseCoreExtension - FirebaseCoreInternal - FirebaseFirestore - FirebaseFirestoreInternal + - FirebaseInstallations + - FirebaseMessaging - FirebaseSharedSwift - GoogleDataTransport - GoogleMLKit @@ -951,7 +1360,9 @@ SPEC REPOS: - MLKitCommon - MLKitVision - nanopb + - PhoneNumberKit - PromisesObjC + - RecaptchaInterop - SDWebImage - SwiftyGif - Toast @@ -967,8 +1378,12 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/device_info_plus/ios" file_picker: :path: ".symlinks/plugins/file_picker/ios" + firebase_auth: + :path: ".symlinks/plugins/firebase_auth/ios" firebase_core: :path: ".symlinks/plugins/firebase_core/ios" + firebase_messaging: + :path: ".symlinks/plugins/firebase_messaging/ios" fl_location: :path: ".symlinks/plugins/fl_location/ios" Flutter: @@ -987,6 +1402,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/google_sign_in_ios/darwin" isar_flutter_libs: :path: ".symlinks/plugins/isar_flutter_libs/ios" + libphonenumber_plugin: + :path: ".symlinks/plugins/libphonenumber_plugin/ios" mobile_scanner: :path: ".symlinks/plugins/mobile_scanner/ios" path_provider_foundation: @@ -999,69 +1416,86 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/screen_state/ios" sensors_plus: :path: ".symlinks/plugins/sensors_plus/ios" + shared_preferences_foundation: + :path: ".symlinks/plugins/shared_preferences_foundation/darwin" + sqflite: + :path: ".symlinks/plugins/sqflite/darwin" + telephony: + :path: ".symlinks/plugins/telephony/ios" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" vibration: :path: ".symlinks/plugins/vibration/ios" SPEC CHECKSUMS: - abseil: 926fb7a82dc6d2b8e1f2ed7f3a718bce691d1e46 - AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570 - audio_session: 4f3e461722055d21515cf3261b64c973c062f345 - audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40 - BoringSSL-GRPC: 3175b25143e648463a56daeaaa499c6cb86dad33 - cloud_firestore: 73eece22ce25a0565238c283ee9990f1618d8063 - device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6 - DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac - DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 - file_picker: 15fd9539e4eb735dc54bae8c0534a7a9511a03de - Firebase: 414ad272f8d02dfbf12662a9d43f4bba9bec2a06 - firebase_core: 0af4a2b24f62071f9bf283691c0ee41556dcb3f5 - FirebaseAppCheckInterop: 58db3e9494751399cf3e7b7e3e705cff71099153 - FirebaseCore: 2322423314d92f946219c8791674d2f3345b598f - FirebaseCoreExtension: 6394c00b887d0bebadbc7049c464aa0cbddc5d41 - FirebaseCoreInternal: bca337352024b18424a61e478460547d46c4c753 - FirebaseFirestore: 171bcbb57a1a348dd171a0d5e382c03ef85a77bb - FirebaseFirestoreInternal: 86fe6fc8ca156309cb4842d2d7b2f15c669a64a0 - FirebaseSharedSwift: 48076404e6e52372290d15a07d2ed1d2f1754023 - fl_location: 68b4a6c4aad2a453493ff66f196e0748280cf43e + abseil: d121da9ef7e2ff4cab7666e76c5a3e0915ae08c3 + AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73 + audio_session: 9bb7f6c970f21241b19f5a3658097ae459681ba0 + audioplayers_darwin: ccf9c770ee768abb07e26d90af093f7bab1c12ab + BoringSSL-GRPC: 1e2348957acdbcad360b80a264a90799984b2ba6 + cloud_firestore: 28753092b326c43b17251b50aa6c5b3247c939e5 + device_info_plus: 71ffc6ab7634ade6267c7a93088ed7e4f74e5896 + DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c + DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 + file_picker: 07c75322ede1d47ec9bb4ac82b27c94d3598251a + Firebase: 0312a2352584f782ea56f66d91606891d4607f06 + firebase_auth: f17bd6bfc0bc3d83c6df9dc3829e5b6fee10b147 + firebase_core: 3b49a055ff54114cae400581c13671fe53936c36 + firebase_messaging: 30fa3ec8cd0dc8a860b7817548911b97345a0875 + FirebaseAppCheckInterop: 6a1757cfd4067d8e00fccd14fcc1b8fd78cfac07 + FirebaseAuth: c0f93dcc570c9da2bffb576969d793e95c344fbb + FirebaseCore: 7ec4d0484817f12c3373955bc87762d96842d483 + FirebaseCoreExtension: 705ca5b14bf71d2564a0ddc677df1fc86ffa600f + FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934 + FirebaseFirestore: 977ccc27a3caa5d68279f209c3b0450f85b9dc5f + FirebaseFirestoreInternal: 04b8afa77b4e5b84e86ab5ad985193e9573239fa + FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd + FirebaseMessaging: 88950ba9485052891ebe26f6c43a52bb62248952 + FirebaseSharedSwift: 20530f495084b8d840f78a100d8c5ee613375f6e + fl_location: df295f3fd4f3c2357d7d8f23b01b0c23f4c84e4e Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - flutter_fgbg: 31c0d1140a131daea2d342121808f6aa0dcd879d - flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef - flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be - flutter_volume_controller: e4d5832f08008180f76e30faf671ffd5a425e529 - fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265 - google_sign_in_ios: 1bfaf6607b44cd1b24c4d4bc39719870440f9ce1 - GoogleDataTransport: bed3a36c04c8552479fbb9b76326e0fc69bddcb2 - GoogleMLKit: 2bd0dc6253c4d4f227aad460f69215a504b2980e - GoogleSignIn: b232380cf495a429b8095d3178a8d5855b42e842 - GoogleToolboxForMac: 8bef7c7c5cf7291c687cf5354f39f9db6399ad34 - GoogleUtilities: d053d902a8edaa9904e1bd00c37535385b8ed152 + flutter_fgbg: d3da78df78454b1808f0829a5da9cd17dfe16444 + flutter_native_splash: 35ddbc7228eafcb3969dcc5f1fbbe27c1145a4f0 + flutter_secure_storage: 2c2ff13db9e0a5647389bff88b0ecac56e3f3418 + flutter_volume_controller: c2be490cb0487e8b88d0d9fc2b7e1c139a4ebccb + fluttertoast: 76fea30fcf04176325f6864c87306927bd7d2038 + google_sign_in_ios: 19297361f2c51d7d8ac0201b866ef1fa5d1f94a8 + GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a + GoogleMLKit: 97ac7af399057e99182ee8edfa8249e3226a4065 + GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db + GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8 + GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 GoogleUtilitiesComponents: 679b2c881db3b615a2777504623df6122dd20afe - "gRPC-C++": 2df8cba576898bdacd29f0266d5236fa0e26ba6a - gRPC-Core: a21a60aefc08c68c247b439a9ef97174b0c54f96 - GTMAppAuth: 99fb010047ba3973b7026e45393f51f27ab965ae - GTMSessionFetcher: 3a63d75eecd6aa32c2fc79f578064e1214dfdec2 - isar_flutter_libs: b69f437aeab9c521821c3f376198c4371fa21073 - leveldb-library: 06a69cc7582d64b29424a63e085e683cc188230a - MLImage: 7bb7c4264164ade9bf64f679b40fb29c8f33ee9b - MLKitBarcodeScanning: 04e264482c5f3810cb89ebc134ef6b61e67db505 - MLKitCommon: c1b791c3e667091918d91bda4bba69a91011e390 - MLKitVision: 8baa5f46ee3352614169b85250574fde38c36f49 - mobile_scanner: 202ab6f652e40a9add68b10de4c4fb2a745c4348 - nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5 - path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c - pedometer: 381969883680ade42559782cc41a3bbd453d8234 - permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6 + "gRPC-C++": e725ef63c4475d7cdb7e2cf16eb0fde84bd9ee51 + gRPC-Core: eee4be35df218649fe66d721a05a7f27a28f069b + GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de + GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 + isar_flutter_libs: 9fc2cfb928c539e1b76c481ba5d143d556d94920 + leveldb-library: cc8b8f8e013647a295ad3f8cd2ddf49a6f19be19 + libphonenumber_plugin: d134f173b22bfa5ede50887071f087f309277f8c + MLImage: 1824212150da33ef225fbd3dc49f184cf611046c + MLKitBarcodeScanning: 10ca0845a6d15f2f6e911f682a1998b68b973e8b + MLKitCommon: afec63980417d29ffbb4790529a1b0a2291699e1 + MLKitVision: e858c5f125ecc288e4a31127928301eaba9ae0c1 + mobile_scanner: 560c8f34cb8f127c863bb161679a45220ce95d9b + nanopb: 438bc412db1928dac798aa6fd75726007be04262 + path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 + pedometer: 1c5eaab0c6bce8eb7651f7095553b5081c9d06ed + permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d + PhoneNumberKit: ec00ab8cef5342c1dc49fadb99d23fa7e66cf0ef PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 - screen_state: a7ae251997e97f3f001839df09b57313b0ddef18 - SDWebImage: 981fd7e860af070920f249fd092420006014c3eb - sensors_plus: 5717760720f7e6acd96fdbd75b7428f5ad755ec2 - SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f - Toast: ec33c32b8688982cecc6348adeae667c1b9938da - url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812 - vibration: 7d883d141656a1c1a6d8d238616b2042a51a1241 + RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21 + screen_state: 52d6e997d31bddba6417c60d9cdd22effd0320a7 + SDWebImage: f84b0feeb08d2d11e6a9b843cb06d75ebf5b8868 + sensors_plus: 809f7e76b18439344b148b2730634b59d645f7eb + shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 + sqflite: c35dad70033b8862124f8337cc994a809fcd9fa3 + SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 + telephony: 092fd9f86ca076809b22f4efe52e5d4e57a4e674 + Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e + url_launcher_ios: 694010445543906933d732453a59da0a173ae33d + vibration: 8e2f50fc35bb736f9eecb7dd9f7047fbb6a6e888 -PODFILE CHECKSUM: b0d4019d63a06aa0d701044dbc594a28e1b1d370 +PODFILE CHECKSUM: d5f078d8da2eeee1bbe17c8d7d1cb7817e59c314 -COCOAPODS: 1.15.2 +COCOAPODS: 1.16.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 1f30e52b..e8b210de 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -7,16 +7,38 @@ objects = { /* Begin PBXBuildFile section */ - 011866159E1611A3917D358D /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5AAA88D65D5B3DB9F0BBB9A /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 82E4787E2A4723540034404C /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 82E4787D2A4723540034404C /* GoogleService-Info.plist */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + A4436C3C2D79D8B0005C26AF /* digialarm2.wav in Resources */ = {isa = PBXBuildFile; fileRef = A4436C3A2D79D8B0005C26AF /* digialarm2.wav */; }; + A4436C3D2D79D8B0005C26AF /* digialarm.wav in Resources */ = {isa = PBXBuildFile; fileRef = A4436C392D79D8B0005C26AF /* digialarm.wav */; }; + A4436C3E2D79D8B0005C26AF /* digialarm3.wav in Resources */ = {isa = PBXBuildFile; fileRef = A4436C3B2D79D8B0005C26AF /* digialarm3.wav */; }; + A4436C412D79D8CF005C26AF /* mystery.wav in Resources */ = {isa = PBXBuildFile; fileRef = A4436C3F2D79D8CF005C26AF /* mystery.wav */; }; + A4436C422D79D8CF005C26AF /* newday.wav in Resources */ = {isa = PBXBuildFile; fileRef = A4436C402D79D8CF005C26AF /* newday.wav */; }; + A4C2627A2D7E64EF00B1ED84 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = A4C262792D7E64EF00B1ED84 /* GoogleService-Info.plist */; }; + A4ED946C2D7E3B11000C81B3 /* RefreshTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4ED946B2D7E3AF6000C81B3 /* RefreshTask.swift */; }; + A4FFEFF42D77531000E1F388 /* DatabaseHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4FFEFF32D77531000E1F388 /* DatabaseHelper.swift */; }; + A4FFEFF62D77574100E1F388 /* GetLatestAlarm.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4FFEFF52D77573000E1F388 /* GetLatestAlarm.swift */; }; + A4FFEFF92D7777C300E1F388 /* FMDB in Frameworks */ = {isa = PBXBuildFile; productRef = A4FFEFF82D7777C300E1F388 /* FMDB */; }; + A4FFEFFB2D77780000E1F388 /* AlarmModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4FFEFFA2D77780000E1F388 /* AlarmModel.swift */; }; + D24A2CAA92563EDE7062D63A /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C2B4E0F86AE0442D32AF6E2 /* Pods_RunnerTests.framework */; }; + E9A3B04DF6148B255897202C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8740F1ECAD2FBE5594045A7 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXCopyFilesBuildPhase section */ 9705A1C41CF9048500538489 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; @@ -31,13 +53,20 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 04D26D398E64A588D23A56AA /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 05D25944788DDDCC09C3EC19 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 0F06E112758581628BC67048 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 1C1C3066F2151F4A3E29B398 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 50FE8DA60070A89B90629183 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 6C2B4E0F86AE0442D32AF6E2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 82E4787D2A4723540034404C /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -45,10 +74,18 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B33171C6E207358295CC5A05 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - B5AAA88D65D5B3DB9F0BBB9A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EE7366E14E5A260606CB06CD /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - FA698F4B8432C2CE3A925738 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + A4436C392D79D8B0005C26AF /* digialarm.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = digialarm.wav; sourceTree = ""; }; + A4436C3A2D79D8B0005C26AF /* digialarm2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = digialarm2.wav; sourceTree = ""; }; + A4436C3B2D79D8B0005C26AF /* digialarm3.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = digialarm3.wav; sourceTree = ""; }; + A4436C3F2D79D8CF005C26AF /* mystery.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = mystery.wav; sourceTree = ""; }; + A4436C402D79D8CF005C26AF /* newday.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = newday.wav; sourceTree = ""; }; + A4C262792D7E64EF00B1ED84 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + A4ED946B2D7E3AF6000C81B3 /* RefreshTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshTask.swift; sourceTree = ""; }; + A4FFEFF32D77531000E1F388 /* DatabaseHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseHelper.swift; sourceTree = ""; }; + A4FFEFF52D77573000E1F388 /* GetLatestAlarm.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetLatestAlarm.swift; sourceTree = ""; }; + A4FFEFFA2D77780000E1F388 /* AlarmModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlarmModel.swift; sourceTree = ""; }; + B8740F1ECAD2FBE5594045A7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B9CB3C39582ADA5F8C417501 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -56,21 +93,52 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 011866159E1611A3917D358D /* Pods_Runner.framework in Frameworks */, + E9A3B04DF6148B255897202C /* Pods_Runner.framework in Frameworks */, + A4FFEFF92D7777C300E1F388 /* FMDB in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E28EFE4DC57879F8024A7469 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D24A2CAA92563EDE7062D63A /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 6E104D1F026C9F846324185C /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - B5AAA88D65D5B3DB9F0BBB9A /* Pods_Runner.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 6C5BAEA85BE4865BF12C1BE7 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B8740F1ECAD2FBE5594045A7 /* Pods_Runner.framework */, + 6C2B4E0F86AE0442D32AF6E2 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; + 92FC564AB3A0CE5A8BF023C2 /* Pods */ = { + isa = PBXGroup; + children = ( + 1C1C3066F2151F4A3E29B398 /* Pods-Runner.debug.xcconfig */, + 50FE8DA60070A89B90629183 /* Pods-Runner.release.xcconfig */, + B9CB3C39582ADA5F8C417501 /* Pods-Runner.profile.xcconfig */, + 05D25944788DDDCC09C3EC19 /* Pods-RunnerTests.debug.xcconfig */, + 0F06E112758581628BC67048 /* Pods-RunnerTests.release.xcconfig */, + 04D26D398E64A588D23A56AA /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -85,11 +153,18 @@ 97C146E51CF9000F007C117D = { isa = PBXGroup; children = ( + A4C262792D7E64EF00B1ED84 /* GoogleService-Info.plist */, + A4436C3F2D79D8CF005C26AF /* mystery.wav */, + A4436C402D79D8CF005C26AF /* newday.wav */, + A4436C392D79D8B0005C26AF /* digialarm.wav */, + A4436C3A2D79D8B0005C26AF /* digialarm2.wav */, + A4436C3B2D79D8B0005C26AF /* digialarm3.wav */, 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, - C68E64EC1005CC646E8F6EEB /* Pods */, - 6E104D1F026C9F846324185C /* Frameworks */, + 331C8082294A63A400263BE5 /* RunnerTests */, + 92FC564AB3A0CE5A8BF023C2 /* Pods */, + 6C5BAEA85BE4865BF12C1BE7 /* Frameworks */, ); sourceTree = ""; }; @@ -97,6 +172,7 @@ isa = PBXGroup; children = ( 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, ); name = Products; sourceTree = ""; @@ -104,8 +180,11 @@ 97C146F01CF9000F007C117D /* Runner */ = { isa = PBXGroup; children = ( + A4ED946B2D7E3AF6000C81B3 /* RefreshTask.swift */, + A4FFEFFA2D77780000E1F388 /* AlarmModel.swift */, + A4FFEFF52D77573000E1F388 /* GetLatestAlarm.swift */, + A4FFEFF32D77531000E1F388 /* DatabaseHelper.swift */, 97C146FA1CF9000F007C117D /* Main.storyboard */, - 82E4787D2A4723540034404C /* GoogleService-Info.plist */, 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 97C147021CF9000F007C117D /* Info.plist */, @@ -117,32 +196,41 @@ path = Runner; sourceTree = ""; }; - C68E64EC1005CC646E8F6EEB /* Pods */ = { - isa = PBXGroup; - children = ( - FA698F4B8432C2CE3A925738 /* Pods-Runner.debug.xcconfig */, - EE7366E14E5A260606CB06CD /* Pods-Runner.release.xcconfig */, - B33171C6E207358295CC5A05 /* Pods-Runner.profile.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 5531A4878F2F26F683827B44 /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + E28EFE4DC57879F8024A7469 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 97C146ED1CF9000F007C117D /* Runner */ = { isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - F7AF27F2B7862160C6BE8F5A /* [CP] Check Pods Manifest.lock */, + 1B2E34085A0FB02388F3A3E9 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 66B6F9F61F03F5B8E2EEE6AC /* [CP] Embed Pods Frameworks */, - 9BDD1910BFDD1BE8CE6A1772 /* [CP] Copy Pods Resources */, + 9AF9E6FFB857B4BA4B7496CC /* [CP] Embed Pods Frameworks */, + 7DA127BA0C872520AE9BA131 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -159,9 +247,14 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 1100; @@ -177,80 +270,108 @@ Base, ); mainGroup = 97C146E51CF9000F007C117D; + packageReferences = ( + A4FFEFF72D7777C300E1F388 /* XCRemoteSwiftPackageReference "fmdb" */, + ); productRefGroup = 97C146EF1CF9000F007C117D /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EC1CF9000F007C117D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 82E4787E2A4723540034404C /* GoogleService-Info.plist in Resources */, + A4436C412D79D8CF005C26AF /* mystery.wav in Resources */, + A4436C422D79D8CF005C26AF /* newday.wav in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + A4436C3C2D79D8B0005C26AF /* digialarm2.wav in Resources */, + A4C2627A2D7E64EF00B1ED84 /* GoogleService-Info.plist in Resources */, + A4436C3D2D79D8B0005C26AF /* digialarm.wav in Resources */, + A4436C3E2D79D8B0005C26AF /* digialarm3.wav in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 1B2E34085A0FB02388F3A3E9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 66B6F9F61F03F5B8E2EEE6AC /* [CP] Embed Pods Frameworks */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 9740EEB61CF901F6004384FC /* Run Script */ = { + 5531A4878F2F26F683827B44 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Run Script"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + 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; }; - 9BDD1910BFDD1BE8CE6A1772 /* [CP] Copy Pods Resources */ = { + 7DA127BA0C872520AE9BA131 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -267,42 +388,72 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; showEnvVarsInLog = 0; }; - F7AF27F2B7862160C6BE8F5A /* [CP] Check Pods Manifest.lock */ = { + 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( ); + name = "Run Script"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-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"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + 9AF9E6FFB857B4BA4B7496CC /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EA1CF9000F007C117D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + A4ED946C2D7E3B11000C81B3 /* RefreshTask.swift in Sources */, 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + A4FFEFF62D77574100E1F388 /* GetLatestAlarm.swift in Sources */, + A4FFEFFB2D77780000E1F388 /* AlarmModel.swift in Sources */, + A4FFEFF42D77531000E1F388 /* DatabaseHelper.swift in Sources */, 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ 97C146FA1CF9000F007C117D /* Main.storyboard */ = { isa = PBXVariantGroup; @@ -327,6 +478,8 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -356,6 +509,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -378,27 +532,84 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = A36HPZ86P4; + DEVELOPMENT_TEAM = C9KKL24ATA; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.ultimateAlarmClock; + PRODUCT_BUNDLE_IDENTIFIER = com.kush.ultimateAlarmClock; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Profile; }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 05D25944788DDDCC09C3EC19 /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.ccextractor.ultimateAlarmClock.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0F06E112758581628BC67048 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.ccextractor.ultimateAlarmClock.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 04D26D398E64A588D23A56AA /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.ccextractor.ultimateAlarmClock.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -428,6 +639,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -454,6 +666,8 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -483,6 +697,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -507,17 +722,22 @@ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = A36HPZ86P4; + DEVELOPMENT_TEAM = C9KKL24ATA; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.ultimateAlarmClock; + PRODUCT_BUNDLE_IDENTIFIER = com.kush.ultimateAlarmClock; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -530,17 +750,22 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = A36HPZ86P4; + DEVELOPMENT_TEAM = C9KKL24ATA; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.ultimateAlarmClock; + PRODUCT_BUNDLE_IDENTIFIER = com.kush.ultimateAlarmClock; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; @@ -550,6 +775,16 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -571,6 +806,25 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + A4FFEFF72D7777C300E1F388 /* XCRemoteSwiftPackageReference "fmdb" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/ccgus/fmdb"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.7.12; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + A4FFEFF82D7777C300E1F388 /* FMDB */ = { + isa = XCSwiftPackageProductDependency; + package = A4FFEFF72D7777C300E1F388 /* XCRemoteSwiftPackageReference "fmdb" */; + productName = FMDB; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 97C146E61CF9000F007C117D /* Project object */; } diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..2c124f95 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,15 @@ +{ + "originHash" : "edf512815619ed6bb2e67b3bdb38a134d5e8f6b3f3f79c05028ab9cbffc0efd2", + "pins" : [ + { + "identity" : "fmdb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ccgus/fmdb", + "state" : { + "revision" : "1227a3fa2b9916bfd75fe380eb45cd210e69e251", + "version" : "2.7.12" + } + } + ], + "version" : 3 +} diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 5e31d3d3..8e3ca5df 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -37,6 +37,17 @@ + + + + Bool { + + let controller : FlutterViewController = window?.rootViewController as! FlutterViewController + self.requestNotificationAuth() + + AppDelegate.userNotification.delegate = self + + NSLog("Log:HERE I AM") + + BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.ccextractor.ultimateAlarmClock.Runner.refresh", using: nil) { task in + self.handleAppRefresh(task: task as! BGAppRefreshTask) + } + + let methodChannel1 = FlutterMethodChannel( + name: AppDelegate.CHANNEL1, + binaryMessenger: controller.binaryMessenger + ) + let methodChannel2 = FlutterMethodChannel( + name: AppDelegate.CHANNEL2, + binaryMessenger: controller.binaryMessenger + ) + + methodChannel1.setMethodCallHandler { (call, result) in + switch call.method { + case "scheduleAlarm": + NSLog("Log:FLUTTER CALLED SCHEDULE") + var dbHelper: DatabaseHelper = DatabaseHelper() + var db: FMDatabase? = dbHelper.database + + let sharedDefaults = UserDefaults.standard + let profile = sharedDefaults.string(forKey: "flutter.profile") ?? "Default" + NSLog("Log:Profile: \(profile)") + + var ringTime: [String: Any]? = getLatestAlarm(db: db, profile: profile) + + guard let interval = ringTime?["interval"] else { + NSLog("Log:Something Wrong") + NSLog("FLUTTER CALLED CANCEL ALARMS") + self.cancelAllScheduledAlarms() + return + } + guard let ringTime = ringTime else { + NSLog("Log:FLUTTER CALLED CANCEL ALARMS") + self.cancelAllScheduledAlarms() + return + } + NSLog("Log:TIME TO ALARM(seconds): \(interval)") + self.scheduleAlarm( + alarmID: ringTime["alarmID"] as! String, + interval: ringTime["interval"] as! Double, + isActivity: ringTime["isActivity"] as! Bool, + isLocation: ringTime["isLocation"] as! Bool, + location: ringTime["location"] as! String, + isWeather: ringTime["isWeather"] as! Bool, + weatherTypes: ringTime["weatherTypes"] as! String + ) + self.scheduleNotification( + uuid: ringTime["alarmID"] as! String, + title: "Test Alarm", + body: "Don't wake up, it's a test alarm", + interval: ringTime["interval"] as! Double + ) + + result(nil) + case "cancelAllScheduledAlarms": + NSLog("Log:FLUTTER CALLED CANCEL ALARMS") + self.cancelAllScheduledAlarms() + result(nil) + case "bringAppToForeground": + NSLog("Log:BRING APP FOREGROUND") + //self.bringAppToForeground() + result(nil) + case "minimizeApp": + NSLog("Log:APP MINIMIZED") + //self.minimizeApp() + result(nil) + case "playDefaultAlarm": + self.playDefaultAlarm() + result(nil) + case "stopDefaultAlarm": + self.stopDefaultAlarm() + result(nil) + default: + result(FlutterMethodNotImplemented) + } + } + + methodChannel2.setMethodCallHandler { (call, result) in + switch call.method{ + case "playDefaultAlarm": + self.playDefaultAlarm() + result(nil) + case "stopDefaultAlarm": + self.stopDefaultAlarm() + result(nil) + case "runtimerNotif": + // TODO + NSLog("Log:RUNTIMER NOTIF CALLED") + result(nil) + case "clearTimerNotif": + // TODO + NSLog("Log:CLEAR TIMER NOTIF") + result(nil) + default: + result(FlutterMethodNotImplemented) + } + } + GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } + + func scheduleAppRefresh() { + let request = BGAppRefreshTaskRequest(identifier: "com.ccextractor.ultimateAlarmClock.Runner.refresh") + // Fetch no earlier than 15 minutes from now. + request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) + + do { + try BGTaskScheduler.shared.submit(request) + } catch { + NSLog("Log:Could not schedule app refresh: \(error)") + } + } + + func handleAppRefresh(task: BGAppRefreshTask) { + // Schedule a new refresh task. + self.scheduleAppRefresh() + + + // Create an operation that performs the main part of the background task. + let operation = RefreshAppContentsOperation() + + // Provide the background task with an expiration handler that cancels the operation. + task.expirationHandler = { + operation.cancel() + } + + + // Inform the system that the background task is complete + // when the operation completes. + operation.completionBlock = { + task.setTaskCompleted(success: !operation.isCancelled) + } + + + // Start the operation. + AppDelegate.operationQueue.addOperation(operation) + } + + override func userNotificationCenter( + _ center: UNUserNotificationCenter, + didReceive response: UNNotificationResponse, + withCompletionHandler completionHandler: @escaping () -> Void + ) { + let userInfo = response.notification.request.content.userInfo + NSLog("Log:Notification Tapped: \(userInfo)") + + // Call your method + let controller : FlutterViewController = window?.rootViewController as! FlutterViewController + let channel = FlutterMethodChannel( + name: AppDelegate.CHANNEL1, + binaryMessenger: controller.binaryMessenger + ) + let arguments: [String: Bool] = [ + "alarmRing": true, + "isAlarm": true, + "shouldAlarmRing": true, + "alarmIgnore": false + ] + + channel.invokeMethod("appStartup", arguments: arguments ) + + completionHandler() + } + + private func playDefaultAlarm() { + guard let soundURL = Bundle.main.url(forResource: "digialarm", withExtension: "wav") else { + NSLog("Log:Alarm sound file not found") + return + } + + do { + AppDelegate.audioPlayer = try AVAudioPlayer(contentsOf: soundURL) + AppDelegate.audioPlayer?.numberOfLoops = -1 // Loop indefinitely + AppDelegate.audioPlayer?.prepareToPlay() + AppDelegate.audioPlayer?.play() + } catch { + NSLog("Log:Error playing alarm sound: \(error.localizedDescription)") + } + NSLog("Log:TIMER ALERT PLAYING") + } + + private func stopDefaultAlarm() { + AppDelegate.audioPlayer?.stop() + NSLog("Log:TIMER ALERT STOPPED") + } + + private func requestNotificationAuth() { + AppDelegate.userNotification.requestAuthorization(options: [.alert, .sound, .badge]) {(authorized, error) in + if authorized { + NSLog("Log:NOTIFICATION AUTHORIZED") + } + else if !authorized { + NSLog("Log:NOT AUTHORIZED") + } + else { + NSLog("Log:ERROR NOTIFICATION ACCESS") + print(error?.localizedDescription as Any) + } + } + } + + private func scheduleAlarm( + alarmID: String, + interval: Double, + isActivity: Bool, + isLocation: Bool, + location: String, + isWeather: Bool, + weatherTypes: String + ) { + self.cancelAllScheduledAlarms() + } + + private func cancelAllScheduledAlarms() { + AppDelegate.userNotification.removeAllPendingNotificationRequests() + NSLog("Log:REMOVED ALL NOTIFICATION REQUESTS") + } + + private func scheduleNotification( + uuid: String, + title: String, + body: String, + interval: Double + ) { + let content = UNMutableNotificationContent() + content.title = title + content.body = body + //content.sound = UNNotificationSound.default + content.sound = UNNotificationSound(named: UNNotificationSoundName("digialarm.wav")) + // intereption level only ios >= 15.0 + content.interruptionLevel = UNNotificationInterruptionLevel.timeSensitive + content.userInfo = ["ID": "test"] + + for index in 0...60 { + let trigger = UNTimeIntervalNotificationTrigger(timeInterval: interval+Double(index*5), repeats: false) + let request = UNNotificationRequest(identifier: uuid+String(index), content: content, trigger: trigger) + + do { + try AppDelegate.userNotification.add(request, withCompletionHandler: nil) + } catch { + NSLog("Log:ERROR SCHEDULING NOTIFICATION AT INTERVAL: \(interval)") + return + } + } + + NSLog("Log:ALARM SCHEDULED AFTER: \(interval) seconds") + } } diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard index f3c28516..3337c8f9 100644 --- a/ios/Runner/Base.lproj/Main.storyboard +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -1,8 +1,10 @@ - - + + + - + + @@ -14,13 +16,14 @@ - + - + + diff --git a/ios/Runner/DatabaseHelper.swift b/ios/Runner/DatabaseHelper.swift new file mode 100644 index 00000000..391c0303 --- /dev/null +++ b/ios/Runner/DatabaseHelper.swift @@ -0,0 +1,18 @@ +import FMDB + +class DatabaseHelper { + var database: FMDatabase? + + init() { + let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! + .appendingPathComponent("alarms.db") + + database = FMDatabase(path: fileURL.path) + + if database?.open() == true { + NSLog("Log:Database connected") + } else { + NSLog("Log:Database connection failed") + } + } +} diff --git a/ios/Runner/GetLatestAlarm.swift b/ios/Runner/GetLatestAlarm.swift new file mode 100644 index 00000000..867174f4 --- /dev/null +++ b/ios/Runner/GetLatestAlarm.swift @@ -0,0 +1,110 @@ +// +// GetLatestAlarm.swift +// Runner +// +// Created by Kush Choudhary on 04/03/25. +// +import FMDB +import Foundation + +public func getLatestAlarm(db: FMDatabase?, profile: String) -> [String: Any]? { + let query = + """ + SELECT * FROM alarms + WHERE isEnabled = 1 + AND (profile = ? OR ringOn = 1) + """ + + guard let resultSet = db?.executeQuery(query, withArgumentsIn: [profile]) else { + NSLog("Log:ERROR while executing database query.") + return nil + } + + var selectedAlarm: AlarmModel? + var minInterval: Double = .greatestFiniteMagnitude + + while resultSet.next() { + let alarm = AlarmModel( + id: Int(resultSet.int(forColumn: "id")), + minutesSinceMidnight: Int(resultSet.int(forColumn: "minutesSinceMidnight")), + alarmTime: resultSet.string(forColumn: "alarmTime") ?? "", + days: resultSet.string(forColumn: "days") ?? "0000000", + isOneTime: resultSet.bool(forColumn: "isOneTime"), + activityMonitor: resultSet.bool(forColumn: "activityMonitor"), + isWeatherEnabled: resultSet.bool(forColumn: "isWeatherEnabled"), + weatherTypes: resultSet.string(forColumn: "weatherTypes") ?? "", + isLocationEnabled: resultSet.bool(forColumn: "isLocationEnabled"), + location: resultSet.string(forColumn: "location") ?? "", + alarmDate: resultSet.string(forColumn: "alarmDate") ?? "", + alarmId: resultSet.string(forColumn: "alarmID") ?? "", + ringOn: resultSet.bool(forColumn: "ringOn") + ) + + var timeDiff = getTimeDifference(alarmTime: alarm.alarmTime) + if timeDiff <= 0 { + timeDiff = Double(24*60*60) + timeDiff + } + if timeDiff > 0, timeDiff < minInterval { + minInterval = timeDiff + selectedAlarm = alarm + } + } + + NSLog("Log:Alarm: \(minInterval)") + guard let finalAlarm = selectedAlarm else { return nil } + return [ + "interval": minInterval, + "isActivity": finalAlarm.activityMonitor, + "isLocation": finalAlarm.isLocationEnabled, + "location": finalAlarm.location, + "isWeather": finalAlarm.isWeatherEnabled, + "weatherTypes": finalAlarm.weatherTypes, + "alarmID": finalAlarm.alarmId + ] +} + +private func getTimeDifference(alarmTime: String) -> Double { + NSLog("Log:FROM DB ALARMTIME: \(alarmTime)") + + let formatter = DateFormatter() + formatter.dateFormat = "HH:mm" + formatter.locale = Locale(identifier: "en_US_POSIX") // Ensures correct parsing + + let curr = Date() + + guard let alarm = formatter.date(from: alarmTime) else { + NSLog("Error: Invalid alarmTime format") + return -1 + } + + let calendar = Calendar.current + + // Normalize `curr` to only HH:mm + let currComponents = calendar.dateComponents([.hour, .minute], from: curr) + let currSecComponent = calendar.dateComponents([.second], from: curr) + let normalizedCurr = calendar.date(from: currComponents)! + + // Normalize `alarm` to only HH:mm + let alarmComponents = calendar.dateComponents([.hour, .minute], from: alarm) + guard let normalizedAlarm = calendar.date(from: alarmComponents) else { + NSLog("Error: Failed to normalize alarm time") + return -1 + } + + NSLog("Log:Curr: \(formatter.string(from: normalizedCurr)) seconds: \(currSecComponent.second)") + NSLog("Log:AlarmTime: \(formatter.string(from: normalizedAlarm))") + + // Compute time difference + let diff = calendar.dateComponents([.hour, .minute], from: normalizedCurr, to: normalizedAlarm) + + NSLog("Log:Hour: \(diff.hour ?? 0)") + NSLog("Log:Minute: \(diff.minute ?? 0)") + + let hours = diff.hour ?? 0 + let minutes = diff.minute ?? 0 + let secondsToReduce = currSecComponent.second ?? 0 + + let totalSeconds: Double = Double((hours * 60 * 60) + (minutes * 60) - (secondsToReduce)) + + return totalSeconds +} diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index eba6b311..c116d044 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -1,65 +1,70 @@ - - PermissionGroupNotification - This app needs notification permissions to show notifications. - NSCameraUsageDescription - This app needs camera access to scan QR codes - NSPhotoLibraryUsageDescription - This app needs photos access to get QR code from photo library - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Ultimate Alarm Clock - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Ultimate Alarm Clock - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - - UIStatusBarHidden - - NSMotionUsageDescription - This application tracks your steps - UIBackgroundModes - - processing - - + + BGTaskSchedulerPermittedIdentifiers + + com.ccextractor.ultimateAlarmClock.Runner.refresh + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Ultimate Alarm Clock + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Ultimate Alarm Clock + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + NSCameraUsageDescription + This app needs camera access to scan QR codes + NSMotionUsageDescription + This application tracks your steps + NSPhotoLibraryUsageDescription + This app needs photos access to get QR code from photo library + PermissionGroupNotification + This app needs notification permissions to show notifications. + UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + + processing + fetch + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + diff --git a/ios/Runner/RefreshTask.swift b/ios/Runner/RefreshTask.swift new file mode 100644 index 00000000..083f1248 --- /dev/null +++ b/ios/Runner/RefreshTask.swift @@ -0,0 +1,53 @@ +// +// RefreshTask.swift +// Runner +// +// Created by Kush Choudhary on 10/03/25. +// + +import Foundation +import AVFoundation + +class RefreshAppContentsOperation: Operation { + override func main() { + if isCancelled { + NSLog("Log:BGTASK CANCELLED") + return + } // Ensure task isn't canceled + + NSLog("Log:Running background refresh task...") + + self.fetchDataAndUpdate() + + if isCancelled { + NSLog("Log:BGTASK SUCCESSFULLY COMPLETED") + return + } // Check again before finishing + } + + private func fetchDataAndUpdate() { + + NSLog("Log:Fetching new data...") + // self.playDefaultAlarm() + NSLog("Log:Data updated successfully!") + } + + private func playDefaultAlarm() { + var audioPlayer: AVAudioPlayer? + guard let soundURL = Bundle.main.url(forResource: "digialarm", withExtension: "wav") else { + NSLog("Log:Alarm sound file not found") + return + } + + do { + audioPlayer = try AVAudioPlayer(contentsOf: soundURL) + audioPlayer?.numberOfLoops = -1 // Loop indefinitely + audioPlayer?.prepareToPlay() + audioPlayer?.play() + } catch { + NSLog("Log:Error playing alarm sound: \(error.localizedDescription)") + } + NSLog("Log:TIMER ALERT PLAYING") + } +} + diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..86a7c3b1 --- /dev/null +++ b/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/ios/digialarm.wav b/ios/digialarm.wav new file mode 100644 index 00000000..b4db1033 Binary files /dev/null and b/ios/digialarm.wav differ diff --git a/ios/digialarm2.wav b/ios/digialarm2.wav new file mode 100644 index 00000000..9fc3cd0f Binary files /dev/null and b/ios/digialarm2.wav differ diff --git a/ios/digialarm3.wav b/ios/digialarm3.wav new file mode 100644 index 00000000..aa4acaf1 Binary files /dev/null and b/ios/digialarm3.wav differ diff --git a/ios/mystery.wav b/ios/mystery.wav new file mode 100644 index 00000000..f9121e8a Binary files /dev/null and b/ios/mystery.wav differ diff --git a/ios/newday.wav b/ios/newday.wav new file mode 100644 index 00000000..de2e4b49 Binary files /dev/null and b/ios/newday.wav differ diff --git a/lib/app/modules/addOrUpdateAlarm/controllers/add_or_update_alarm_controller.dart b/lib/app/modules/addOrUpdateAlarm/controllers/add_or_update_alarm_controller.dart index 56d7376a..8c4cde3f 100644 --- a/lib/app/modules/addOrUpdateAlarm/controllers/add_or_update_alarm_controller.dart +++ b/lib/app/modules/addOrUpdateAlarm/controllers/add_or_update_alarm_controller.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_map/flutter_map.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:get/get.dart'; @@ -30,6 +31,7 @@ class AddOrUpdateAlarmController extends GetxController { final labelController = TextEditingController(); ThemeController themeController = Get.find(); SettingsController settingsController = Get.find(); + MethodChannel alarmChannel = const MethodChannel('ulticlock'); final Rx userModel = Rx(null); var alarmID = const Uuid().v4(); @@ -179,83 +181,94 @@ class AddOrUpdateAlarmController extends GetxController { } checkOverlayPermissionAndNavigate() async { - if (!(await Permission.systemAlertWindow.isGranted) && - !(await Permission.ignoreBatteryOptimizations.isGranted)) { - Get.defaultDialog( - backgroundColor: themeController.secondaryBackgroundColor.value, - title: 'Permission Required', - titleStyle: TextStyle( - color: themeController.primaryTextColor.value, - ), - contentPadding: - const EdgeInsets.symmetric(vertical: 20, horizontal: 20), - titlePadding: const EdgeInsets.only(top: 30, right: 40), - content: const Text( - 'This app requires permission to draw overlays,send notifications' - ' and Ignore batter optimization.', - ), - actions: [ - TextButton( - style: TextButton.styleFrom( - backgroundColor: kprimaryColor, - ), - child: const Text('Cancel', style: TextStyle(color: Colors.black)), - onPressed: () { - Get.back(); - }, + if (Platform.isAndroid) { + if (!(await Permission.systemAlertWindow.isGranted) && + !(await Permission.ignoreBatteryOptimizations.isGranted)) { + Get.defaultDialog( + backgroundColor: themeController.secondaryBackgroundColor.value, + title: 'Permission Required', + titleStyle: TextStyle( + color: themeController.primaryTextColor.value, ), - const SizedBox( - width: 10, + contentPadding: + const EdgeInsets.symmetric(vertical: 20, horizontal: 20), + titlePadding: const EdgeInsets.only(top: 30, right: 40), + content: const Text( + 'This app requires permission to draw overlays,send notifications' + ' and Ignore batter optimization.', ), - TextButton( - style: TextButton.styleFrom( - backgroundColor: kprimaryColor, + actions: [ + TextButton( + style: TextButton.styleFrom( + backgroundColor: kprimaryColor, + ), + child: + const Text('Cancel', style: TextStyle(color: Colors.black)), + onPressed: () { + Get.back(); + }, ), - child: const Text( - 'Grant Permission', - style: TextStyle(color: Colors.black), + const SizedBox( + width: 10, ), - onPressed: () async { - Get.back(); - - if (Platform.isAndroid) { - // Request overlay permission - if (!(await Permission.systemAlertWindow.isGranted)) { - final status = await Permission.systemAlertWindow.request(); - if (!status.isGranted) { - debugPrint('SYSTEM_ALERT_WINDOW permission denied!'); - return; + TextButton( + style: TextButton.styleFrom( + backgroundColor: kprimaryColor, + ), + child: const Text( + 'Grant Permission', + style: TextStyle(color: Colors.black), + ), + onPressed: () async { + Get.back(); + + if (Platform.isAndroid) { + // Request overlay permission + if (!(await Permission.systemAlertWindow.isGranted)) { + final status = await Permission.systemAlertWindow.request(); + if (!status.isGranted) { + debugPrint('SYSTEM_ALERT_WINDOW permission denied!'); + return; + } + } + + if (!(await Permission + .ignoreBatteryOptimizations.isGranted)) { + bool requested = await Permission.ignoreBatteryOptimizations + .request() + .isGranted; + if (!requested) { + debugPrint( + 'IGNORE_BATTERY_OPTIMIZATION permission denied!', + ); + return; + } } } - if (!(await Permission.ignoreBatteryOptimizations.isGranted)) { - bool requested = await Permission.ignoreBatteryOptimizations - .request() - .isGranted; - if (!requested) { - debugPrint( - 'IGNORE_BATTERY_OPTIMIZATION permission denied!', - ); + // Request notification permission + if (!await Permission.notification.isGranted) { + final status = await Permission.notification.request(); + if (status != PermissionStatus.granted) { + debugPrint('Notification permission denied!'); return; } } - } - - // Request notification permission - if (!await Permission.notification.isGranted) { - final status = await Permission.notification.request(); - if (status != PermissionStatus.granted) { - debugPrint('Notification permission denied!'); - return; - } - } - Get.back(); - }, - ), - ], - ); - } else { + Get.back(); + }, + ), + ], + ); + } else { + // There ain't no systemAlertWindow and ignoreBatteryOptimizations on iOS + Get.back(); + } + } + + if (Platform.isIOS){ + // Notification permission is handled from the native side. + // Need Overlay & BatteryOptimization permission Get.back(); } } @@ -635,10 +648,16 @@ class AddOrUpdateAlarmController extends GetxController { if (await IsarDb.doesAlarmExist(alarmRecord.value.alarmID) == false) { alarmData.firestoreId = alarmRecord.value.firestoreId; await FirestoreDb.updateAlarm(alarmRecord.value.ownerId, alarmData); + if(Platform.isIOS){ + alarmChannel.invokeMethod('scheduleAlarm'); + } } else { // Deleting alarm on IsarDB to ensure no duplicate entry await IsarDb.deleteAlarm(alarmRecord.value.isarId); createAlarm(alarmData); + if(Platform.isIOS){ + alarmChannel.invokeMethod('scheduleAlarm'); + } } } else { // Making sure the alarm wasn't suddenly updated to be an offline alarm @@ -646,6 +665,9 @@ class AddOrUpdateAlarmController extends GetxController { if (await IsarDb.doesAlarmExist(alarmRecord.value.alarmID) == true) { alarmData.isarId = alarmRecord.value.isarId; await IsarDb.updateAlarm(alarmData); + if(Platform.isIOS){ + alarmChannel.invokeMethod('scheduleAlarm'); + } } else { // Deleting alarm on firestore to ensure no duplicate entry await FirestoreDb.deleteAlarm( @@ -653,6 +675,9 @@ class AddOrUpdateAlarmController extends GetxController { alarmRecord.value.firestoreId!, ); createAlarm(alarmData); + if(Platform.isIOS){ + alarmChannel.invokeMethod('scheduleAlarm'); + } } } diff --git a/lib/app/modules/addOrUpdateAlarm/views/add_or_update_alarm_view.dart b/lib/app/modules/addOrUpdateAlarm/views/add_or_update_alarm_view.dart index 341d1f6e..9151ffd6 100644 --- a/lib/app/modules/addOrUpdateAlarm/views/add_or_update_alarm_view.dart +++ b/lib/app/modules/addOrUpdateAlarm/views/add_or_update_alarm_view.dart @@ -34,6 +34,7 @@ import 'package:ultimate_alarm_clock/app/utils/utils.dart'; import '../controllers/add_or_update_alarm_controller.dart'; import 'alarm_date_tile.dart'; import 'guardian_angel.dart'; +import 'dart:io'; class AddOrUpdateAlarmView extends GetView { AddOrUpdateAlarmView({Key? key}) : super(key: key); @@ -1030,10 +1031,7 @@ class AddOrUpdateAlarmView extends GetView { onPressed: () async { Utils.hapticFeedback(); await controller.checkOverlayPermissionAndNavigate(); - - if ((await Permission.systemAlertWindow.isGranted) && - (await Permission - .ignoreBatteryOptimizations.isGranted)) { + if (await permissionHandler()) { if (!controller.homeController.isProfile.value) { if (controller.userModel.value != null) { controller.offsetDetails[ @@ -1180,4 +1178,16 @@ class AddOrUpdateAlarmView extends GetView { ), ); } + + Future permissionHandler() async { + if(Platform.isAndroid){ + return (await Permission.systemAlertWindow.isGranted) + && (await Permission.ignoreBatteryOptimizations.isGranted); + } + if(Platform.isIOS){ + // There ain't no systemAlertWindow & ignoreBatteryOptimizations in iOS + return true; + } + return false; + } } diff --git a/lib/app/modules/home/controllers/home_controller.dart b/lib/app/modules/home/controllers/home_controller.dart index edcabf86..3e192580 100644 --- a/lib/app/modules/home/controllers/home_controller.dart +++ b/lib/app/modules/home/controllers/home_controller.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:io'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/services.dart'; import 'package:googleapis/calendar/v3.dart' as CalendarApi; @@ -131,9 +132,10 @@ class HomeController extends GetxController { } initStream(UserModel? user) async { - firestoreStreamAlarms = FirestoreDb.getAlarms(userModel.value); - isarStreamAlarms = IsarDb.getAlarms(selectedProfile.value); sharedAlarmsStream = FirestoreDb.getSharedAlarms(userModel.value); + isarStreamAlarms = IsarDb.getAlarms(selectedProfile.value); + firestoreStreamAlarms = FirestoreDb.getAlarms(userModel.value); + Stream> streamAlarms = rx.Rx.combineLatest2( firestoreStreamAlarms!, isarStreamAlarms!, diff --git a/lib/app/modules/splashScreen/controllers/splash_screen_controller.dart b/lib/app/modules/splashScreen/controllers/splash_screen_controller.dart index 98e18711..2521d479 100644 --- a/lib/app/modules/splashScreen/controllers/splash_screen_controller.dart +++ b/lib/app/modules/splashScreen/controllers/splash_screen_controller.dart @@ -157,8 +157,8 @@ class SplashScreenController extends GetxController { TimeOfDay latestAlarmTimeOfDay = Utils.stringToTimeOfDay(latestAlarm.alarmTime); -// This condition will never satisfy because this will only occur if fake mode -// is returned as latest alarm + // This condition will never satisfy because this will only occur if fake mode + // is returned as latest alarm if (latestAlarm.isEnabled == false) { debugPrint('STOPPED IF CONDITION with latest = ' '${latestAlarmTimeOfDay.toString()} and '); diff --git a/lib/main.dart b/lib/main.dart index 4fb04e8d..39bee98b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -32,8 +32,8 @@ void main() async { final ThemeController themeController = Get.put(ThemeController()); AudioPlayer.global.setAudioContext( - const AudioContext( - android: AudioContextAndroid( + AudioContext( + android: const AudioContextAndroid( audioMode: AndroidAudioMode.ringtone, contentType: AndroidContentType.music, usageType: AndroidUsageType.alarm, diff --git a/pubspec.yaml b/pubspec.yaml index ddf51bbd..2e7d7385 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -29,7 +29,7 @@ dependencies: weather: ^2.0.1 shake: ^2.2.0 numberpicker: ^2.1.2 - mobile_scanner: 3.5.5 + mobile_scanner: 5.1.0 permission_handler: ^11.0.1 google_sign_in: ^6.2.1 url_launcher: ^6.3.0 @@ -99,4 +99,4 @@ flutter: uses-material-design: true assets: - assets/images/ - - assets/ringtones/ + - assets/ringtones/ \ No newline at end of file