Commit e5533185 by Dmitriy Stepanets

Merge commit 'e38fdf8f' into feature/IOS-123-widget-promotion-sheet

# Conflicts:
#	1Weather.xcodeproj/project.pbxproj
#	1Weather/Resources/en.lproj/Localizable.strings
#	OneWeatherUI/OneWeatherUI/Widgets/SmallTemperatureWidgetView.swift
#	OneWeatherWidget/ViewModels/ForecastWidgetViewModel.swift
#	Podfile
#	Podfile.lock
#	Pods/Manifest.lock
#	Pods/Pods.xcodeproj/project.pbxproj
parents 1e355fe6 e38fdf8f
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
21CAD7477E74AFC7C9B4D895 /* Pods_OneWeatherWidgetExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 029C3820AEA9771796652988 /* Pods_OneWeatherWidgetExtension.framework */; }; 3233D6B0BAB2630DE6D8FDD8 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
3233D6B0BAB2630DE6D8FDD8 /* Pods_OneWeatherNotificationServiceExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9B02FCD0368AAA53658296C /* Pods_OneWeatherNotificationServiceExtension.framework */; }; 69BCD353B6854C4199AE5FBF /* Pods_OneWeatherNotificationServiceExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 871EA87D239E6F89F6F8818E /* Pods_OneWeatherNotificationServiceExtension.framework */; };
87B66BEC2667A45800B9A59A /* SF-Compact-Display-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 87B66BEA2667A44F00B9A59A /* SF-Compact-Display-Semibold.otf */; }; 87B66BEC2667A45800B9A59A /* SF-Compact-Display-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 87B66BEA2667A44F00B9A59A /* SF-Compact-Display-Semibold.otf */; };
87B66BED2667A45B00B9A59A /* SF-Compact-Display-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 87B66BEB2667A44F00B9A59A /* SF-Compact-Display-Regular.otf */; }; 87B66BED2667A45B00B9A59A /* SF-Compact-Display-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 87B66BEB2667A44F00B9A59A /* SF-Compact-Display-Regular.otf */; };
87B66BF12667AF1C00B9A59A /* SF-Compact-Display-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 87B66BF02667AF1900B9A59A /* SF-Compact-Display-Light.otf */; }; 87B66BF12667AF1C00B9A59A /* SF-Compact-Display-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 87B66BF02667AF1900B9A59A /* SF-Compact-Display-Light.otf */; };
...@@ -16,9 +16,9 @@ ...@@ -16,9 +16,9 @@
87C171F425FF7A4000DA3464 /* PopularCitiesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87C171F325FF7A4000DA3464 /* PopularCitiesManager.swift */; }; 87C171F425FF7A4000DA3464 /* PopularCitiesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87C171F325FF7A4000DA3464 /* PopularCitiesManager.swift */; };
87D815AA2636D5E60015A6D1 /* NWSAlertCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87D815A92636D5E60015A6D1 /* NWSAlertCoordinator.swift */; }; 87D815AA2636D5E60015A6D1 /* NWSAlertCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87D815A92636D5E60015A6D1 /* NWSAlertCoordinator.swift */; };
87D815AC2636D61D0015A6D1 /* NWSAlertViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87D815AB2636D61D0015A6D1 /* NWSAlertViewModel.swift */; }; 87D815AC2636D61D0015A6D1 /* NWSAlertViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87D815AB2636D61D0015A6D1 /* NWSAlertViewModel.swift */; };
9FEDEAB753877DEF63F0F86C /* (null) in Frameworks */ = {isa = PBXBuildFile; }; 90766436021777888F434DCB /* Pods_OneWeatherWidgetExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C588E8BC9935BC4408CE6E27 /* Pods_OneWeatherWidgetExtension.framework */; };
B5265218FADA3BCA9AF3AE5B /* Pods_OneWeatherNotificationServiceExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 871EA87D239E6F89F6F8818E /* Pods_OneWeatherNotificationServiceExtension.framework */; }; 9FAD89D1BEBA0FEB5F50BE73 /* Pods_1Weather.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BDC55F44AA0B2FA48788F0E /* Pods_1Weather.framework */; };
C6AE24529827D9C19718C2AF /* Pods_1Weather.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B439B0FBCE167DC81DE17787 /* Pods_1Weather.framework */; }; 9FEDEAB753877DEF63F0F86C /* Pods_1Weather.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B543196B99BA697763514F6 /* Pods_1Weather.framework */; };
CD1237C3255D5C5900C98139 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD1237C2255D5C5900C98139 /* AppDelegate.swift */; }; CD1237C3255D5C5900C98139 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD1237C2255D5C5900C98139 /* AppDelegate.swift */; };
CD1237CC255D5C5C00C98139 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CD1237CB255D5C5C00C98139 /* Assets.xcassets */; }; CD1237CC255D5C5C00C98139 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CD1237CB255D5C5C00C98139 /* Assets.xcassets */; };
CD1237F4255D889F00C98139 /* GradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD1237F3255D889F00C98139 /* GradientView.swift */; }; CD1237F4255D889F00C98139 /* GradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD1237F3255D889F00C98139 /* GradientView.swift */; };
...@@ -114,7 +114,6 @@ ...@@ -114,7 +114,6 @@
CD71709025FA317700A63C27 /* ForecastTimePeriodView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD71708F25FA317700A63C27 /* ForecastTimePeriodView.swift */; }; CD71709025FA317700A63C27 /* ForecastTimePeriodView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD71708F25FA317700A63C27 /* ForecastTimePeriodView.swift */; };
CD7BF15526203E6900A30DF5 /* RadarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7BF15426203E6900A30DF5 /* RadarViewController.swift */; }; CD7BF15526203E6900A30DF5 /* RadarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7BF15426203E6900A30DF5 /* RadarViewController.swift */; };
CD7BF1582620410800A30DF5 /* RadarCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7BF1572620410800A30DF5 /* RadarCoordinator.swift */; }; CD7BF1582620410800A30DF5 /* RadarCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7BF1572620410800A30DF5 /* RadarCoordinator.swift */; };
CD7D3184268F1438000D01FA /* OneWeatherUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD7D3183268F1438000D01FA /* OneWeatherUI.framework */; };
CD7D3185268F1438000D01FA /* OneWeatherUI.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CD7D3183268F1438000D01FA /* OneWeatherUI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; CD7D3185268F1438000D01FA /* OneWeatherUI.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CD7D3183268F1438000D01FA /* OneWeatherUI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
CD7D3189268F33CC000D01FA /* WidgetPromotionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7D3188268F33CC000D01FA /* WidgetPromotionCoordinator.swift */; }; CD7D3189268F33CC000D01FA /* WidgetPromotionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7D3188268F33CC000D01FA /* WidgetPromotionCoordinator.swift */; };
CD7D318B268F36AF000D01FA /* UIApplication+Version.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7D318A268F36AF000D01FA /* UIApplication+Version.swift */; }; CD7D318B268F36AF000D01FA /* UIApplication+Version.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7D318A268F36AF000D01FA /* UIApplication+Version.swift */; };
...@@ -206,6 +205,7 @@ ...@@ -206,6 +205,7 @@
CE578FE525FB415F00E8B85D /* CityCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE578FE225FB415F00E8B85D /* CityCell.swift */; }; CE578FE525FB415F00E8B85D /* CityCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE578FE225FB415F00E8B85D /* CityCell.swift */; };
CE578FE625FB415F00E8B85D /* LocationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE578FE325FB415F00E8B85D /* LocationViewController.swift */; }; CE578FE625FB415F00E8B85D /* LocationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE578FE325FB415F00E8B85D /* LocationViewController.swift */; };
CE578FE725FB415F00E8B85D /* LocationsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE578FE425FB415F00E8B85D /* LocationsViewModel.swift */; }; CE578FE725FB415F00E8B85D /* LocationsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE578FE425FB415F00E8B85D /* LocationsViewModel.swift */; };
CE5F0CBA268A02C100B99572 /* MediumTemperatureWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE5F0CB9268A02C100B99572 /* MediumTemperatureWidget.swift */; };
CE5F0CBC268A031800B99572 /* OneWeatherWidgetsBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE5F0CBB268A031800B99572 /* OneWeatherWidgetsBundle.swift */; }; CE5F0CBC268A031800B99572 /* OneWeatherWidgetsBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE5F0CBB268A031800B99572 /* OneWeatherWidgetsBundle.swift */; };
CE6BE4942634170800626822 /* USStateCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE6BE4932634170800626822 /* USStateCode.swift */; }; CE6BE4942634170800626822 /* USStateCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE6BE4932634170800626822 /* USStateCode.swift */; };
CE6F5F0C263C8B3D00973137 /* SmartTextProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE6F5F0B263C8B3C00973137 /* SmartTextProvider.swift */; }; CE6F5F0C263C8B3D00973137 /* SmartTextProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE6F5F0B263C8B3C00973137 /* SmartTextProvider.swift */; };
...@@ -317,10 +317,10 @@ ...@@ -317,10 +317,10 @@
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
029C3820AEA9771796652988 /* Pods_OneWeatherWidgetExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OneWeatherWidgetExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 366F5A6033B6FD82383FD5F8 /* Pods-OneWeatherWidgetExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneWeatherWidgetExtension.release.xcconfig"; path = "Target Support Files/Pods-OneWeatherWidgetExtension/Pods-OneWeatherWidgetExtension.release.xcconfig"; sourceTree = "<group>"; };
25724657D9762EFA0D18ABBE /* Pods-OneWeatherWidgetExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneWeatherWidgetExtension.debug.xcconfig"; path = "Target Support Files/Pods-OneWeatherWidgetExtension/Pods-OneWeatherWidgetExtension.debug.xcconfig"; sourceTree = "<group>"; }; 6B543196B99BA697763514F6 /* Pods_1Weather.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_1Weather.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3B50D4DC3F2415F7C2EBCA0F /* Pods-OneWeatherWidgetExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneWeatherWidgetExtension.release.xcconfig"; path = "Target Support Files/Pods-OneWeatherWidgetExtension/Pods-OneWeatherWidgetExtension.release.xcconfig"; sourceTree = "<group>"; };
7082B26061BEBA910124DD8A /* Pods-OneWeatherNotificationServiceExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneWeatherNotificationServiceExtension.debug.xcconfig"; path = "Target Support Files/Pods-OneWeatherNotificationServiceExtension/Pods-OneWeatherNotificationServiceExtension.debug.xcconfig"; sourceTree = "<group>"; }; 7082B26061BEBA910124DD8A /* Pods-OneWeatherNotificationServiceExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneWeatherNotificationServiceExtension.debug.xcconfig"; path = "Target Support Files/Pods-OneWeatherNotificationServiceExtension/Pods-OneWeatherNotificationServiceExtension.debug.xcconfig"; sourceTree = "<group>"; };
7BDC55F44AA0B2FA48788F0E /* Pods_1Weather.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_1Weather.framework; sourceTree = BUILT_PRODUCTS_DIR; };
871EA87D239E6F89F6F8818E /* Pods_OneWeatherNotificationServiceExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OneWeatherNotificationServiceExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 871EA87D239E6F89F6F8818E /* Pods_OneWeatherNotificationServiceExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OneWeatherNotificationServiceExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; };
87B66BEA2667A44F00B9A59A /* SF-Compact-Display-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Compact-Display-Semibold.otf"; sourceTree = "<group>"; }; 87B66BEA2667A44F00B9A59A /* SF-Compact-Display-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Compact-Display-Semibold.otf"; sourceTree = "<group>"; };
87B66BEB2667A44F00B9A59A /* SF-Compact-Display-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Compact-Display-Regular.otf"; sourceTree = "<group>"; }; 87B66BEB2667A44F00B9A59A /* SF-Compact-Display-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Compact-Display-Regular.otf"; sourceTree = "<group>"; };
...@@ -329,8 +329,7 @@ ...@@ -329,8 +329,7 @@
87C171F325FF7A4000DA3464 /* PopularCitiesManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PopularCitiesManager.swift; sourceTree = "<group>"; }; 87C171F325FF7A4000DA3464 /* PopularCitiesManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PopularCitiesManager.swift; sourceTree = "<group>"; };
87D815A92636D5E60015A6D1 /* NWSAlertCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSAlertCoordinator.swift; sourceTree = "<group>"; }; 87D815A92636D5E60015A6D1 /* NWSAlertCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSAlertCoordinator.swift; sourceTree = "<group>"; };
87D815AB2636D61D0015A6D1 /* NWSAlertViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSAlertViewModel.swift; sourceTree = "<group>"; }; 87D815AB2636D61D0015A6D1 /* NWSAlertViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSAlertViewModel.swift; sourceTree = "<group>"; };
A9B02FCD0368AAA53658296C /* Pods_OneWeatherNotificationServiceExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OneWeatherNotificationServiceExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C588E8BC9935BC4408CE6E27 /* Pods_OneWeatherWidgetExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OneWeatherWidgetExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; };
B439B0FBCE167DC81DE17787 /* Pods_1Weather.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_1Weather.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C8C576F6184B547435CFF0F3 /* Pods-1Weather.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-1Weather.debug.xcconfig"; path = "Target Support Files/Pods-1Weather/Pods-1Weather.debug.xcconfig"; sourceTree = "<group>"; }; C8C576F6184B547435CFF0F3 /* Pods-1Weather.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-1Weather.debug.xcconfig"; path = "Target Support Files/Pods-1Weather/Pods-1Weather.debug.xcconfig"; sourceTree = "<group>"; };
CD1237BF255D5C5900C98139 /* 1Weather.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = 1Weather.app; sourceTree = BUILT_PRODUCTS_DIR; }; CD1237BF255D5C5900C98139 /* 1Weather.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = 1Weather.app; sourceTree = BUILT_PRODUCTS_DIR; };
CD1237C2255D5C5900C98139 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; CD1237C2255D5C5900C98139 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
...@@ -510,6 +509,8 @@ ...@@ -510,6 +509,8 @@
CE578FE225FB415F00E8B85D /* CityCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CityCell.swift; sourceTree = "<group>"; }; CE578FE225FB415F00E8B85D /* CityCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CityCell.swift; sourceTree = "<group>"; };
CE578FE325FB415F00E8B85D /* LocationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationViewController.swift; sourceTree = "<group>"; }; CE578FE325FB415F00E8B85D /* LocationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationViewController.swift; sourceTree = "<group>"; };
CE578FE425FB415F00E8B85D /* LocationsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationsViewModel.swift; sourceTree = "<group>"; }; CE578FE425FB415F00E8B85D /* LocationsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationsViewModel.swift; sourceTree = "<group>"; };
CE5F0CB7268A025C00B99572 /* MediumTemperatureWidgetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediumTemperatureWidgetView.swift; sourceTree = "<group>"; };
CE5F0CB9268A02C100B99572 /* MediumTemperatureWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediumTemperatureWidget.swift; sourceTree = "<group>"; };
CE5F0CBB268A031800B99572 /* OneWeatherWidgetsBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OneWeatherWidgetsBundle.swift; sourceTree = "<group>"; }; CE5F0CBB268A031800B99572 /* OneWeatherWidgetsBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OneWeatherWidgetsBundle.swift; sourceTree = "<group>"; };
CE6BE4932634170800626822 /* USStateCode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = USStateCode.swift; sourceTree = "<group>"; }; CE6BE4932634170800626822 /* USStateCode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = USStateCode.swift; sourceTree = "<group>"; };
CE6F5F0B263C8B3C00973137 /* SmartTextProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmartTextProvider.swift; sourceTree = "<group>"; }; CE6F5F0B263C8B3C00973137 /* SmartTextProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmartTextProvider.swift; sourceTree = "<group>"; };
...@@ -530,6 +531,7 @@ ...@@ -530,6 +531,7 @@
CEEB3548266F5DA900E16F90 /* MRECAdCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MRECAdCell.swift; sourceTree = "<group>"; }; CEEB3548266F5DA900E16F90 /* MRECAdCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MRECAdCell.swift; sourceTree = "<group>"; };
CEEF40FF265E47FF00425D8F /* BlendFIPSSource.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = BlendFIPSSource.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CEEF40FF265E47FF00425D8F /* BlendFIPSSource.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = BlendFIPSSource.framework; sourceTree = BUILT_PRODUCTS_DIR; };
DF826CF4702D9DCCB9A9DD71 /* Pods-1Weather.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-1Weather.release.xcconfig"; path = "Target Support Files/Pods-1Weather/Pods-1Weather.release.xcconfig"; sourceTree = "<group>"; }; DF826CF4702D9DCCB9A9DD71 /* Pods-1Weather.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-1Weather.release.xcconfig"; path = "Target Support Files/Pods-1Weather/Pods-1Weather.release.xcconfig"; sourceTree = "<group>"; };
FC2041C3048EAF6B296224F6 /* Pods-OneWeatherWidgetExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneWeatherWidgetExtension.debug.xcconfig"; path = "Target Support Files/Pods-OneWeatherWidgetExtension/Pods-OneWeatherWidgetExtension.debug.xcconfig"; sourceTree = "<group>"; };
FD761FE0D947B3A79121A941 /* Pods-OneWeatherNotificationServiceExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneWeatherNotificationServiceExtension.release.xcconfig"; path = "Target Support Files/Pods-OneWeatherNotificationServiceExtension/Pods-OneWeatherNotificationServiceExtension.release.xcconfig"; sourceTree = "<group>"; }; FD761FE0D947B3A79121A941 /* Pods-OneWeatherNotificationServiceExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneWeatherNotificationServiceExtension.release.xcconfig"; path = "Target Support Files/Pods-OneWeatherNotificationServiceExtension/Pods-OneWeatherNotificationServiceExtension.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
...@@ -546,9 +548,9 @@ ...@@ -546,9 +548,9 @@
CD3884832657BBCC0070FD6F /* DelayedSaveStorage.framework in Frameworks */, CD3884832657BBCC0070FD6F /* DelayedSaveStorage.framework in Frameworks */,
CEEF4100265E47FF00425D8F /* BlendFIPSSource.framework in Frameworks */, CEEF4100265E47FF00425D8F /* BlendFIPSSource.framework in Frameworks */,
CD615F7E265523BD00B717DB /* OneWeatherCore.framework in Frameworks */, CD615F7E265523BD00B717DB /* OneWeatherCore.framework in Frameworks */,
9FEDEAB753877DEF63F0F86C /* (null) in Frameworks */, 9FEDEAB753877DEF63F0F86C /* Pods_1Weather.framework in Frameworks */,
CE30E37F2668FBE3006DF5CD /* OneWeatherAnalytics.framework in Frameworks */, CE30E37F2668FBE3006DF5CD /* OneWeatherAnalytics.framework in Frameworks */,
C6AE24529827D9C19718C2AF /* Pods_1Weather.framework in Frameworks */, 9FAD89D1BEBA0FEB5F50BE73 /* Pods_1Weather.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
...@@ -564,8 +566,7 @@ ...@@ -564,8 +566,7 @@
CE7298CE267A34F7002745D0 /* CoreDataStorage.framework in Frameworks */, CE7298CE267A34F7002745D0 /* CoreDataStorage.framework in Frameworks */,
CE7298D4267A34FF002745D0 /* WDTWeatherSource.framework in Frameworks */, CE7298D4267A34FF002745D0 /* WDTWeatherSource.framework in Frameworks */,
CE7298D2267A34FA002745D0 /* OneWeatherCore.framework in Frameworks */, CE7298D2267A34FA002745D0 /* OneWeatherCore.framework in Frameworks */,
CD7D3184268F1438000D01FA /* OneWeatherUI.framework in Frameworks */, 90766436021777888F434DCB /* Pods_OneWeatherWidgetExtension.framework in Frameworks */,
21CAD7477E74AFC7C9B4D895 /* Pods_OneWeatherWidgetExtension.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
...@@ -574,8 +575,8 @@ ...@@ -574,8 +575,8 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
CE849E382638CE8000DEFFBD /* UserNotifications.framework in Frameworks */, CE849E382638CE8000DEFFBD /* UserNotifications.framework in Frameworks */,
3233D6B0BAB2630DE6D8FDD8 /* Pods_OneWeatherNotificationServiceExtension.framework in Frameworks */, 3233D6B0BAB2630DE6D8FDD8 /* (null) in Frameworks */,
B5265218FADA3BCA9AF3AE5B /* Pods_OneWeatherNotificationServiceExtension.framework in Frameworks */, 69BCD353B6854C4199AE5FBF /* Pods_OneWeatherNotificationServiceExtension.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
...@@ -589,8 +590,8 @@ ...@@ -589,8 +590,8 @@
DF826CF4702D9DCCB9A9DD71 /* Pods-1Weather.release.xcconfig */, DF826CF4702D9DCCB9A9DD71 /* Pods-1Weather.release.xcconfig */,
7082B26061BEBA910124DD8A /* Pods-OneWeatherNotificationServiceExtension.debug.xcconfig */, 7082B26061BEBA910124DD8A /* Pods-OneWeatherNotificationServiceExtension.debug.xcconfig */,
FD761FE0D947B3A79121A941 /* Pods-OneWeatherNotificationServiceExtension.release.xcconfig */, FD761FE0D947B3A79121A941 /* Pods-OneWeatherNotificationServiceExtension.release.xcconfig */,
25724657D9762EFA0D18ABBE /* Pods-OneWeatherWidgetExtension.debug.xcconfig */, FC2041C3048EAF6B296224F6 /* Pods-OneWeatherWidgetExtension.debug.xcconfig */,
3B50D4DC3F2415F7C2EBCA0F /* Pods-OneWeatherWidgetExtension.release.xcconfig */, 366F5A6033B6FD82383FD5F8 /* Pods-OneWeatherWidgetExtension.release.xcconfig */,
); );
path = Pods; path = Pods;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -952,7 +953,8 @@ ...@@ -952,7 +953,8 @@
CD7D315D268EEE56000D01FA /* Recovered References */ = { CD7D315D268EEE56000D01FA /* Recovered References */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A9B02FCD0368AAA53658296C /* Pods_OneWeatherNotificationServiceExtension.framework */, 6B543196B99BA697763514F6 /* Pods_1Weather.framework */,
CE5F0CB7268A025C00B99572 /* MediumTemperatureWidgetView.swift */,
); );
name = "Recovered References"; name = "Recovered References";
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -1297,6 +1299,7 @@ ...@@ -1297,6 +1299,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
CD1B713F2660F95000916E71 /* SmallTemperatureWidget.swift */, CD1B713F2660F95000916E71 /* SmallTemperatureWidget.swift */,
CE5F0CB9268A02C100B99572 /* MediumTemperatureWidget.swift */,
); );
path = Widgets; path = Widgets;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -1396,8 +1399,8 @@ ...@@ -1396,8 +1399,8 @@
871EA87D239E6F89F6F8818E /* Pods_OneWeatherNotificationServiceExtension.framework */, 871EA87D239E6F89F6F8818E /* Pods_OneWeatherNotificationServiceExtension.framework */,
CD1B713A2660F95000916E71 /* WidgetKit.framework */, CD1B713A2660F95000916E71 /* WidgetKit.framework */,
CD1B713C2660F95000916E71 /* SwiftUI.framework */, CD1B713C2660F95000916E71 /* SwiftUI.framework */,
B439B0FBCE167DC81DE17787 /* Pods_1Weather.framework */, C588E8BC9935BC4408CE6E27 /* Pods_OneWeatherWidgetExtension.framework */,
029C3820AEA9771796652988 /* Pods_OneWeatherWidgetExtension.framework */, 7BDC55F44AA0B2FA48788F0E /* Pods_1Weather.framework */,
); );
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -1436,7 +1439,7 @@ ...@@ -1436,7 +1439,7 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = CD1B71492660F95300916E71 /* Build configuration list for PBXNativeTarget "OneWeatherWidgetExtension" */; buildConfigurationList = CD1B71492660F95300916E71 /* Build configuration list for PBXNativeTarget "OneWeatherWidgetExtension" */;
buildPhases = ( buildPhases = (
5FF6B22DF51F3742774ADC1C /* [CP] Check Pods Manifest.lock */, 5838E1AF3096C32F7A3E9954 /* [CP] Check Pods Manifest.lock */,
CD1B71352660F95000916E71 /* Sources */, CD1B71352660F95000916E71 /* Sources */,
CD1B71362660F95000916E71 /* Frameworks */, CD1B71362660F95000916E71 /* Frameworks */,
CD1B71372660F95000916E71 /* Resources */, CD1B71372660F95000916E71 /* Resources */,
...@@ -1597,7 +1600,7 @@ ...@@ -1597,7 +1600,7 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
5FF6B22DF51F3742774ADC1C /* [CP] Check Pods Manifest.lock */ = { 5838E1AF3096C32F7A3E9954 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
...@@ -1902,6 +1905,7 @@ ...@@ -1902,6 +1905,7 @@
files = ( files = (
CD5293E1266A4258009547C8 /* AppFont.swift in Sources */, CD5293E1266A4258009547C8 /* AppFont.swift in Sources */,
CD5293DF266A235F009547C8 /* ForecastWidgetViewModel.swift in Sources */, CD5293DF266A235F009547C8 /* ForecastWidgetViewModel.swift in Sources */,
CE5F0CBA268A02C100B99572 /* MediumTemperatureWidget.swift in Sources */,
CD5293D8266908DB009547C8 /* WidgetPlaceholderView.swift in Sources */, CD5293D8266908DB009547C8 /* WidgetPlaceholderView.swift in Sources */,
CD5293EA266A564E009547C8 /* ThemeProtocol.swift in Sources */, CD5293EA266A564E009547C8 /* ThemeProtocol.swift in Sources */,
CD1B71402660F95000916E71 /* SmallTemperatureWidget.swift in Sources */, CD1B71402660F95000916E71 /* SmallTemperatureWidget.swift in Sources */,
...@@ -2130,7 +2134,7 @@ ...@@ -2130,7 +2134,7 @@
}; };
CD1B71472660F95300916E71 /* Debug */ = { CD1B71472660F95300916E71 /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 25724657D9762EFA0D18ABBE /* Pods-OneWeatherWidgetExtension.debug.xcconfig */; baseConfigurationReference = FC2041C3048EAF6B296224F6 /* Pods-OneWeatherWidgetExtension.debug.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
...@@ -2153,7 +2157,7 @@ ...@@ -2153,7 +2157,7 @@
}; };
CD1B71482660F95300916E71 /* Release */ = { CD1B71482660F95300916E71 /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 3B50D4DC3F2415F7C2EBCA0F /* Pods-OneWeatherWidgetExtension.release.xcconfig */; baseConfigurationReference = 366F5A6033B6FD82383FD5F8 /* Pods-OneWeatherWidgetExtension.release.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
......
...@@ -287,3 +287,4 @@ ...@@ -287,3 +287,4 @@
//Widget //Widget
"widget.small.title" = "Temperature Forecast"; "widget.small.title" = "Temperature Forecast";
"widget.small.description" = ""; "widget.small.description" = "";
"widget.lastUpdatedTemplate" = "Last updated #LAST_UPDATED ago.";
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
CD259C02268DE109008D205E /* OneWeatherUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD259BF8268DE109008D205E /* OneWeatherUI.framework */; }; CD259C02268DE109008D205E /* OneWeatherUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD259BF8268DE109008D205E /* OneWeatherUI.framework */; };
CD259C07268DE109008D205E /* OneWeatherUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD259C06268DE109008D205E /* OneWeatherUITests.swift */; }; CD259C07268DE109008D205E /* OneWeatherUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD259C06268DE109008D205E /* OneWeatherUITests.swift */; };
CD259C09268DE109008D205E /* OneWeatherUI.h in Headers */ = {isa = PBXBuildFile; fileRef = CD259BFB268DE109008D205E /* OneWeatherUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; CD259C09268DE109008D205E /* OneWeatherUI.h in Headers */ = {isa = PBXBuildFile; fileRef = CD259BFB268DE109008D205E /* OneWeatherUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
CD3C83C326933ABD0087A225 /* MediumTemperatureWidgetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD3C83C226933ABC0087A225 /* MediumTemperatureWidgetView.swift */; };
CD7D3161268EEF49000D01FA /* CityNameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7D315F268EEF48000D01FA /* CityNameView.swift */; }; CD7D3161268EEF49000D01FA /* CityNameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7D315F268EEF48000D01FA /* CityNameView.swift */; };
CD7D3162268EEF49000D01FA /* HighLowTemperatureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7D3160268EEF49000D01FA /* HighLowTemperatureView.swift */; }; CD7D3162268EEF49000D01FA /* HighLowTemperatureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7D3160268EEF49000D01FA /* HighLowTemperatureView.swift */; };
CD7D3164268EEF56000D01FA /* SmallTemperatureWidgetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7D3163268EEF56000D01FA /* SmallTemperatureWidgetView.swift */; }; CD7D3164268EEF56000D01FA /* SmallTemperatureWidgetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD7D3163268EEF56000D01FA /* SmallTemperatureWidgetView.swift */; };
...@@ -47,6 +48,7 @@ ...@@ -47,6 +48,7 @@
CD259C01268DE109008D205E /* OneWeatherUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OneWeatherUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; CD259C01268DE109008D205E /* OneWeatherUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OneWeatherUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
CD259C06268DE109008D205E /* OneWeatherUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OneWeatherUITests.swift; sourceTree = "<group>"; }; CD259C06268DE109008D205E /* OneWeatherUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OneWeatherUITests.swift; sourceTree = "<group>"; };
CD259C08268DE109008D205E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; CD259C08268DE109008D205E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
CD3C83C226933ABC0087A225 /* MediumTemperatureWidgetView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediumTemperatureWidgetView.swift; sourceTree = "<group>"; };
CD7D315F268EEF48000D01FA /* CityNameView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CityNameView.swift; sourceTree = "<group>"; }; CD7D315F268EEF48000D01FA /* CityNameView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CityNameView.swift; sourceTree = "<group>"; };
CD7D3160268EEF49000D01FA /* HighLowTemperatureView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HighLowTemperatureView.swift; sourceTree = "<group>"; }; CD7D3160268EEF49000D01FA /* HighLowTemperatureView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HighLowTemperatureView.swift; sourceTree = "<group>"; };
CD7D3163268EEF56000D01FA /* SmallTemperatureWidgetView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SmallTemperatureWidgetView.swift; sourceTree = "<group>"; }; CD7D3163268EEF56000D01FA /* SmallTemperatureWidgetView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SmallTemperatureWidgetView.swift; sourceTree = "<group>"; };
...@@ -144,6 +146,7 @@ ...@@ -144,6 +146,7 @@
CD7D316E268EF2BC000D01FA /* WidgetViewModel.swift */, CD7D316E268EF2BC000D01FA /* WidgetViewModel.swift */,
CD7D3177268EFB9E000D01FA /* WidgetViewModelMock.swift */, CD7D3177268EFB9E000D01FA /* WidgetViewModelMock.swift */,
CD7D3163268EEF56000D01FA /* SmallTemperatureWidgetView.swift */, CD7D3163268EEF56000D01FA /* SmallTemperatureWidgetView.swift */,
CD3C83C226933ABC0087A225 /* MediumTemperatureWidgetView.swift */,
CD7D315E268EEF37000D01FA /* SharedViews */, CD7D315E268EEF37000D01FA /* SharedViews */,
CD7D3175268EF8A9000D01FA /* WidgetFont.swift */, CD7D3175268EF8A9000D01FA /* WidgetFont.swift */,
); );
...@@ -330,6 +333,7 @@ ...@@ -330,6 +333,7 @@
CD7D3162268EEF49000D01FA /* HighLowTemperatureView.swift in Sources */, CD7D3162268EEF49000D01FA /* HighLowTemperatureView.swift in Sources */,
CD7D3161268EEF49000D01FA /* CityNameView.swift in Sources */, CD7D3161268EEF49000D01FA /* CityNameView.swift in Sources */,
CD7D3164268EEF56000D01FA /* SmallTemperatureWidgetView.swift in Sources */, CD7D3164268EEF56000D01FA /* SmallTemperatureWidgetView.swift in Sources */,
CD3C83C326933ABD0087A225 /* MediumTemperatureWidgetView.swift in Sources */,
CD7D3168268EF167000D01FA /* UIFont+Font.swift in Sources */, CD7D3168268EF167000D01FA /* UIFont+Font.swift in Sources */,
CD7D3187268F1F2E000D01FA /* UIImage+Resize.swift in Sources */, CD7D3187268F1F2E000D01FA /* UIImage+Resize.swift in Sources */,
CD7D3178268EFB9E000D01FA /* WidgetViewModelMock.swift in Sources */, CD7D3178268EFB9E000D01FA /* WidgetViewModelMock.swift in Sources */,
......
//
// MediumTemperatureWidgetView.swift
// OneWeatherWidgetExtension
//
// Created by Demid Merzlyakov on 28.06.2021.
//
import SwiftUI
import WidgetKit
@available (iOS 14, *)
struct MediumTemperatureWidgetView: View {
//Public
let widgetViewModel: WidgetViewModel
@Environment(\.colorScheme) private var colorScheme
var body: some View {
GeometryReader { geometry in
VStack(alignment: .leading) {
HStack {
HStack(spacing: 8) {
Text(widgetViewModel.temperature)
.font(WidgetFont.SFProDisplay.light(size: 32).font)
foregroundColor(Color("PrimaryTextColor",
bundle: OneWeatherUI.frameworkBundle))
Divider()
.padding(.top, 8)
.padding(.bottom, 8)
Text(widgetViewModel.weatherType)
.font(WidgetFont.SFProDisplay.regular(size: 12).font)
.foregroundColor(Color("PrimaryTextColor",
bundle: OneWeatherUI.frameworkBundle))
.lineLimit(2)
Image(uiImage: widgetViewModel.weatherIcon)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 30, height: 30, alignment: .center)
.shadow(color: Color.black.opacity(0.23), radius: 16, x: 2, y: 0)
.padding(.trailing, 4)
}
Spacer()
VStack (spacing: 2) {
CityNameView(cityName: widgetViewModel.cityName, isDeviceLocation: widgetViewModel.isDeviceLocation)
HighLowTemperatureView(highTemperature: widgetViewModel.highTemperature, lowTemperature: widgetViewModel.lowTemperature)
}
.frame(height: 35)
}
.frame(height: 35)
.padding(.top, 12)
HStack(alignment: .top) {
Text("SmartText")
.font(WidgetFont.SFProDisplay.regular(size: 12).font)
Spacer()
if widgetViewModel.showLastTimeUpdated {
Text(widgetViewModel.lastTimeUpdatedText)
.font(WidgetFont.SFProDisplay.regular(size: 9).font)
}
}
Spacer()
// TODO: implement
}
.padding([.leading, .trailing], 10)
}
}
}
@available(iOS 14, *)
public struct MediumTemperatureWidgetView_Preview: PreviewProvider {
public static var previews: some View {
MediumTemperatureWidgetView(widgetViewModel: WidgetViewModelMock())
.frame(width: 338, height: 158)
}
}
...@@ -9,6 +9,8 @@ import UIKit ...@@ -9,6 +9,8 @@ import UIKit
@available(iOS 14, *) @available(iOS 14, *)
public protocol WidgetViewModel { public protocol WidgetViewModel {
var showLastTimeUpdated: Bool { get }
var lastTimeUpdatedText: String { get }
var cityName: String { get } var cityName: String { get }
var temperature: String { get } var temperature: String { get }
var weatherType: String { get } var weatherType: String { get }
......
...@@ -10,6 +10,8 @@ import UIKit ...@@ -10,6 +10,8 @@ import UIKit
@available(iOS 14, *) @available(iOS 14, *)
struct WidgetViewModelMock: WidgetViewModel { struct WidgetViewModelMock: WidgetViewModel {
private class OneWeatherUIClass {} private class OneWeatherUIClass {}
let showLastTimeUpdated = false
let lastTimeUpdatedText = "Last update text"
let cityName = "New York" let cityName = "New York"
let temperature = "96°" let temperature = "96°"
let weatherType = "Partly Cloudy" let weatherType = "Partly Cloudy"
......
{
"colors" : [
{
"color" : {
"color-space" : "display-p3",
"components" : {
"alpha" : "1.000",
"blue" : "0.827",
"green" : "0.815",
"red" : "0.812"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "display-p3",
"components" : {
"alpha" : "1.000",
"blue" : "0.839",
"green" : "0.839",
"red" : "0.839"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
...@@ -11,12 +11,13 @@ import OneWeatherCore ...@@ -11,12 +11,13 @@ import OneWeatherCore
struct WeatherEntry: TimelineEntry { struct WeatherEntry: TimelineEntry {
static let defaultLocation = Location(deviceLocation: true, static let defaultLocation = Location(deviceLocation: true,
lastWeatherUpdateDate: Date(timeIntervalSinceNow: -4 * 3600),
coordinates: .init(latitude: 37.3230, longitude: -122.0322), coordinates: .init(latitude: 37.3230, longitude: -122.0322),
countryName: "USA", countryName: "USA",
region: "US", region: "US",
cityName: "Cupertino", // Cupertino cityName: "Cupertino", // Cupertino
timeZone: TimeZone(abbreviation: "PST")!, timeZone: TimeZone(abbreviation: "PST")!,
today: .init(lastTimeUpdated: Date(), today: .init(lastTimeUpdated: Date(timeIntervalSinceNow: -4 * 3600),
date: Date(), date: Date(),
timeZone: TimeZone.current, timeZone: TimeZone.current,
weekDay: .monday, weekDay: .monday,
......
...@@ -11,5 +11,6 @@ import SwiftUI ...@@ -11,5 +11,6 @@ import SwiftUI
struct OneWeatherWidgets: WidgetBundle { struct OneWeatherWidgets: WidgetBundle {
var body: some Widget { var body: some Widget {
SmallTemperatureWidget() SmallTemperatureWidget()
MediumTemperatureWidget()
} }
} }
...@@ -10,6 +10,8 @@ import OneWeatherCore ...@@ -10,6 +10,8 @@ import OneWeatherCore
import OneWeatherUI import OneWeatherUI
struct ForecastWidgetViewModel: WidgetViewModel { struct ForecastWidgetViewModel: WidgetViewModel {
let showLastTimeUpdated: Bool
let lastTimeUpdatedText: String
let cityName: String let cityName: String
let temperature: String let temperature: String
let weatherType: String let weatherType: String
...@@ -26,5 +28,24 @@ struct ForecastWidgetViewModel: WidgetViewModel { ...@@ -26,5 +28,24 @@ struct ForecastWidgetViewModel: WidgetViewModel {
self.highTemperature = location.today?.maxTemp?.shortString ?? "--" self.highTemperature = location.today?.maxTemp?.shortString ?? "--"
self.lowTemperature = location.today?.minTemp?.shortString ?? "--" self.lowTemperature = location.today?.minTemp?.shortString ?? "--"
self.isDeviceLocation = location.deviceLocation self.isDeviceLocation = location.deviceLocation
if let lastTimeUpdated = location.lastWeatherUpdateDate {
let oneHour = TimeInterval(3600)
let timeSinceLastUpdate = Date().timeIntervalSince(lastTimeUpdated)
self.showLastTimeUpdated = timeSinceLastUpdate > 3 * oneHour
let dateComponentsFormatter = DateComponentsFormatter()
dateComponentsFormatter.allowedUnits = [.hour, .day]
dateComponentsFormatter.zeroFormattingBehavior = .dropAll
dateComponentsFormatter.unitsStyle = .short
let formattedTimeAgo = dateComponentsFormatter.string(from: timeSinceLastUpdate) ?? "--"
self.lastTimeUpdatedText = "widget.lastUpdatedTemplate".localized().replacingOccurrences(of: "#LAST_UPDATED", with: formattedTimeAgo)
}
else {
self.showLastTimeUpdated = false
lastTimeUpdatedText = ""
}
} }
} }
//
// MediumTemperatureWidget.swift
// OneWeatherWidgetExtension
//
// Created by Demid Merzlyakov on 28.06.2021.
//
import SwiftUI
import WidgetKit
struct MediumTemperatureWidget: Widget {
private let kind = "com.onelouder.oneweather.widget.medium.temperature"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: WeatherProvider()) { weatherEntry in
MediumTemperatureWidgetView(widgetViewModel: .init(location: weatherEntry.location))
}
.supportedFamilies([.systemMedium])
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment