From a55880c517d19544ed1c21572b65c3a9ad4f6b96 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Mon, 16 Oct 2023 12:00:42 +0100 Subject: [PATCH 01/40] Add IAP sample app and App Services app --- .../auth/custom_user_data.json | 3 + .../App Services app/auth/providers.json | 23 + .../data_sources/mongodb-atlas/config.json | 10 + .../mongodb-atlas/default_rule.json | 17 + .../foodie-folio/Purchases/relationships.json | 1 + .../foodie-folio/Purchases/rules.json | 19 + .../foodie-folio/Purchases/schema.json | 64 +++ .../foodie-folio/Recipes/relationships.json | 1 + .../foodie-folio/Recipes/rules.json | 19 + .../foodie-folio/Recipes/schema.json | 115 ++++ .../environments/development.json | 3 + .../environments/no-environment.json | 3 + .../environments/production.json | 3 + .../App Services app/environments/qa.json | 3 + .../environments/testing.json | 3 + .../functions/addPurchaseReceipt.js | 14 + .../App Services app/functions/config.json | 20 + .../functions/fetchPremiumRecipes.js | 78 +++ .../functions/fetchRecipes.js | 78 +++ .../App Services app/functions/resetFunc.js | 55 ++ .../App Services app/graphql/config.json | 4 + .../http_endpoints/config.json | 1 + .../App Services app/realm_config.json | 8 + .../App Services app/sync/config.json | 16 + .../triggers/fetchPremiumRecipes.json | 16 + .../triggers/fetchRecipes.json | 16 + .../FoodieFolio.xcodeproj/project.pbxproj | 529 ++++++++++++++++++ .../xcschemes/FoodieFolio.xcscheme | 80 +++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 14 + .../foodie-folio-app-icon.png | Bin 0 -> 100177 bytes .../FoodieFolio/Assets.xcassets/Contents.json | 6 + .../DarkLilacAccent.colorset/Contents.json | 38 ++ .../LightLilac.colorset/Contents.json | 38 ++ .../Violet.colorset/Contents.json | 38 ++ .../accentPink.colorset/Contents.json | 38 ++ .../foodie-icon.imageset/1024x1024@1x.png | Bin 0 -> 25598 bytes .../foodie-icon.imageset/1024x1024@2x.png | Bin 0 -> 75205 bytes .../foodie-icon.imageset/1024x1024@3x.png | Bin 0 -> 66807 bytes .../foodie-icon.imageset/Contents.json | 23 + .../Contents.json | 23 + .../purchases-background@1x.png | Bin 0 -> 61916 bytes .../purchases-background@2x.png | Bin 0 -> 235623 bytes .../purchases-background@3x.png | Bin 0 -> 480375 bytes .../FoodieFolio/ColorPalette.swift | 15 + .../FoodieFolio/FoodieFolio/ContentView.swift | 52 ++ .../Extensions/Button+Extension.swift | 19 + .../Extensions/Double+Extension.swift | 21 + .../Extensions/String+Extension.swift | 29 + .../Extensions/Text+Extension.swift | 16 + .../Extensions/TextField+Extension.swift | 17 + .../FoodieFolio/FoodieFolioApp.swift | 20 + .../Managers/AuthenticationManager.swift | 46 ++ .../FoodieFolio/Managers/RealmManager.swift | 42 ++ .../Managers/StoreKitManager.swift | 150 +++++ .../FoodieFolio/Models/Purchase.swift | 49 ++ .../FoodieFolio/Models/Recipe.swift | 69 +++ .../Preview Assets.xcassets/Contents.json | 6 + .../FoodieFolio/PropertyList.plist | 8 + .../FoodieFolio/Views/AccountView.swift | 43 ++ .../FoodieFolio/Views/CapsuleButton.swift | 27 + .../FoodieFolio/Views/CircleImage.swift | 44 ++ .../FoodieFolio/Views/CuisineInfoView.swift | 32 ++ .../FoodieFolio/Views/CuisineView.swift | 30 + .../FoodieFolio/Views/IngredientsView.swift | 39 ++ .../FoodieFolio/Views/LoginFormCard.swift | 108 ++++ .../FoodieFolio/Views/LoginView.swift | 58 ++ .../FoodieFolio/Views/Product.storekit | 82 +++ .../FoodieFolio/Views/ReadRecipeButton.swift | 32 ++ .../FoodieFolio/Views/RecipeDetail.swift | 35 ++ .../Views/RecipeDetailInfoView.swift | 26 + .../FoodieFolio/Views/RecipeRow.swift | 39 ++ .../FoodieFolio/Views/RecipesListView.swift | 95 ++++ .../FoodieFolio/Views/SafariView.swift | 32 ++ .../FoodieFolio/Views/StorePurchaseView.swift | 162 ++++++ InAppPurchasesAtlasAppServices/README.md | 53 ++ 76 files changed, 2927 insertions(+) create mode 100644 InAppPurchasesAtlasAppServices/App Services app/auth/custom_user_data.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/auth/providers.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/config.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/default_rule.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/relationships.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/rules.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/schema.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/relationships.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/rules.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/schema.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/environments/development.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/environments/no-environment.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/environments/production.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/environments/qa.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/environments/testing.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/functions/addPurchaseReceipt.js create mode 100644 InAppPurchasesAtlasAppServices/App Services app/functions/config.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/functions/fetchPremiumRecipes.js create mode 100644 InAppPurchasesAtlasAppServices/App Services app/functions/fetchRecipes.js create mode 100644 InAppPurchasesAtlasAppServices/App Services app/functions/resetFunc.js create mode 100644 InAppPurchasesAtlasAppServices/App Services app/graphql/config.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/http_endpoints/config.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/realm_config.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/sync/config.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/triggers/fetchPremiumRecipes.json create mode 100644 InAppPurchasesAtlasAppServices/App Services app/triggers/fetchRecipes.json create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/xcshareddata/xcschemes/FoodieFolio.xcscheme create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/AppIcon.appiconset/foodie-folio-app-icon.png create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/Contents.json create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/DarkLilacAccent.colorset/Contents.json create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/LightLilac.colorset/Contents.json create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/Violet.colorset/Contents.json create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/accentPink.colorset/Contents.json create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/1024x1024@1x.png create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/1024x1024@2x.png create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/1024x1024@3x.png create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/Contents.json create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/Contents.json create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/purchases-background@1x.png create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/purchases-background@2x.png create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/purchases-background@3x.png create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ColorPalette.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Button+Extension.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Double+Extension.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/String+Extension.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Text+Extension.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/TextField+Extension.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/FoodieFolioApp.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Purchase.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/PropertyList.plist create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/AccountView.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CapsuleButton.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CircleImage.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CuisineInfoView.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CuisineView.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/IngredientsView.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/Product.storekit create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/ReadRecipeButton.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetail.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetailInfoView.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeRow.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/SafariView.swift create mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift create mode 100644 InAppPurchasesAtlasAppServices/README.md diff --git a/InAppPurchasesAtlasAppServices/App Services app/auth/custom_user_data.json b/InAppPurchasesAtlasAppServices/App Services app/auth/custom_user_data.json new file mode 100644 index 0000000..a82d0fb --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/auth/custom_user_data.json @@ -0,0 +1,3 @@ +{ + "enabled": false +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/auth/providers.json b/InAppPurchasesAtlasAppServices/App Services app/auth/providers.json new file mode 100644 index 0000000..64e1da2 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/auth/providers.json @@ -0,0 +1,23 @@ +{ + "anon-user": { + "name": "anon-user", + "type": "anon-user", + "disabled": false + }, + "api-key": { + "name": "api-key", + "type": "api-key", + "disabled": true + }, + "local-userpass": { + "name": "local-userpass", + "type": "local-userpass", + "config": { + "autoConfirm": true, + "resetFunctionName": "resetFunc", + "runConfirmationFunction": false, + "runResetFunction": true + }, + "disabled": false + } +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/config.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/config.json new file mode 100644 index 0000000..17f4c55 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/config.json @@ -0,0 +1,10 @@ +{ + "name": "mongodb-atlas", + "type": "mongodb-atlas", + "config": { + "clusterName": "AtlasCluster", + "readPreference": "primary", + "wireProtocolEnabled": false + }, + "version": 1 +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/default_rule.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/default_rule.json new file mode 100644 index 0000000..4e243bf --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/default_rule.json @@ -0,0 +1,17 @@ +{ + "roles": [ + { + "name": "read-not-write", + "apply_when": {}, + "document_filters": { + "write": false, + "read": true + }, + "read": true, + "write": false, + "insert": true, + "delete": true, + "search": true + } + ] +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/relationships.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/relationships.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/relationships.json @@ -0,0 +1 @@ +{} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/rules.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/rules.json new file mode 100644 index 0000000..c08a160 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/rules.json @@ -0,0 +1,19 @@ +{ + "collection": "Purchases", + "database": "foodie-folio", + "roles": [ + { + "name": "readAndWriteAll", + "apply_when": {}, + "document_filters": { + "write": true, + "read": true + }, + "read": true, + "write": true, + "insert": true, + "delete": true, + "search": true + } + ] +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/schema.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/schema.json new file mode 100644 index 0000000..c09aac8 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/schema.json @@ -0,0 +1,64 @@ +{ + "properties": { + "_id": { + "bsonType": "objectId" + }, + "receipt": { + "bsonType": "object", + "properties": { + "bundleId": { + "bsonType": "string" + }, + "deviceVerification": { + "bsonType": "string" + }, + "deviceVerificationNonce": { + "bsonType": "string" + }, + "environment": { + "bsonType": "string" + }, + "inAppOwnershipType": { + "bsonType": "string" + }, + "originalPurchaseDate": { + "bsonType": "double" + }, + "originalTransactionId": { + "bsonType": "string" + }, + "productId": { + "bsonType": "string" + }, + "purchaseDate": { + "bsonType": "double" + }, + "quantity": { + "bsonType": "double" + }, + "signedDate": { + "bsonType": "double" + }, + "storefront": { + "bsonType": "string" + }, + "storefrontId": { + "bsonType": "string" + }, + "transactionId": { + "bsonType": "string" + }, + "transactionReason": { + "bsonType": "string" + }, + "type": { + "bsonType": "string" + } + } + }, + "userId": { + "bsonType": "string" + } + }, + "title": "Purchase" +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/relationships.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/relationships.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/relationships.json @@ -0,0 +1 @@ +{} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/rules.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/rules.json new file mode 100644 index 0000000..256e75a --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/rules.json @@ -0,0 +1,19 @@ +{ + "collection": "Recipes", + "database": "foodie-folio", + "roles": [ + { + "name": "readAndWriteAll", + "apply_when": {}, + "document_filters": { + "write": true, + "read": true + }, + "read": true, + "write": true, + "insert": true, + "delete": true, + "search": true + } + ] +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/schema.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/schema.json new file mode 100644 index 0000000..c839233 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/schema.json @@ -0,0 +1,115 @@ +{ + "properties": { + "_id": { + "bsonType": "objectId" + }, + "calories": { + "bsonType": "double" + }, + "cautions": { + "bsonType": "array", + "items": { + "bsonType": "string" + } + }, + "cuisineType": { + "bsonType": "array", + "items": { + "bsonType": "string" + } + }, + "dietLabels": { + "bsonType": "array", + "items": { + "bsonType": "string" + } + }, + "dishType": { + "bsonType": "array", + "items": { + "bsonType": "string" + } + }, + "healthLabels": { + "bsonType": "array", + "items": { + "bsonType": "string" + } + }, + "image": { + "bsonType": "string" + }, + "ingredientLines": { + "bsonType": "array", + "items": { + "bsonType": "string" + } + }, + "ingredients": { + "bsonType": "array", + "items": { + "bsonType": "object", + "properties": { + "food": { + "bsonType": "string" + }, + "foodCategory": { + "bsonType": "string" + }, + "foodId": { + "bsonType": "string" + }, + "image": { + "bsonType": "string" + }, + "measure": { + "bsonType": "string" + }, + "quantity": { + "bsonType": "double" + }, + "text": { + "bsonType": "string" + }, + "weight": { + "bsonType": "double" + } + } + } + }, + "label": { + "bsonType": "string" + }, + "mealType": { + "bsonType": "array", + "items": { + "bsonType": "string" + } + }, + "shareAs": { + "bsonType": "string" + }, + "source": { + "bsonType": "string" + }, + "totalCO2Emissions": { + "bsonType": "double" + }, + "totalTime": { + "bsonType": "double" + }, + "totalWeight": { + "bsonType": "double" + }, + "uri": { + "bsonType": "string" + }, + "url": { + "bsonType": "string" + }, + "yield": { + "bsonType": "double" + } + }, + "title": "Recipe" +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/environments/development.json b/InAppPurchasesAtlasAppServices/App Services app/environments/development.json new file mode 100644 index 0000000..ad7e98e --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/environments/development.json @@ -0,0 +1,3 @@ +{ + "values": {} +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/environments/no-environment.json b/InAppPurchasesAtlasAppServices/App Services app/environments/no-environment.json new file mode 100644 index 0000000..ad7e98e --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/environments/no-environment.json @@ -0,0 +1,3 @@ +{ + "values": {} +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/environments/production.json b/InAppPurchasesAtlasAppServices/App Services app/environments/production.json new file mode 100644 index 0000000..ad7e98e --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/environments/production.json @@ -0,0 +1,3 @@ +{ + "values": {} +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/environments/qa.json b/InAppPurchasesAtlasAppServices/App Services app/environments/qa.json new file mode 100644 index 0000000..ad7e98e --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/environments/qa.json @@ -0,0 +1,3 @@ +{ + "values": {} +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/environments/testing.json b/InAppPurchasesAtlasAppServices/App Services app/environments/testing.json new file mode 100644 index 0000000..ad7e98e --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/environments/testing.json @@ -0,0 +1,3 @@ +{ + "values": {} +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/functions/addPurchaseReceipt.js b/InAppPurchasesAtlasAppServices/App Services app/functions/addPurchaseReceipt.js new file mode 100644 index 0000000..ca404e2 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/functions/addPurchaseReceipt.js @@ -0,0 +1,14 @@ +exports = async function(userId, transactionResult){ + var serviceName = "mongodb-atlas"; + var dbName = "foodie-folio"; + var collName = "Purchases"; + + var purchasesCollection = context.services.get(serviceName).db(dbName).collection(collName); + + var receipt = JSON.parse(transactionResult); + + return purchasesCollection.insertOne({ + userId: userId, + receipt: receipt + }); +}; \ No newline at end of file diff --git a/InAppPurchasesAtlasAppServices/App Services app/functions/config.json b/InAppPurchasesAtlasAppServices/App Services app/functions/config.json new file mode 100644 index 0000000..4920b08 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/functions/config.json @@ -0,0 +1,20 @@ +[ + { + "name": "resetFunc", + "private": true + }, + { + "name": "fetchRecipes", + "private": false, + "disable_arg_logs": true + }, + { + "name": "fetchPremiumRecipes", + "private": false, + "disable_arg_logs": true + }, + { + "name": "addPurchaseReceipt", + "private": false + } +] diff --git a/InAppPurchasesAtlasAppServices/App Services app/functions/fetchPremiumRecipes.js b/InAppPurchasesAtlasAppServices/App Services app/functions/fetchPremiumRecipes.js new file mode 100644 index 0000000..9289f39 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/functions/fetchPremiumRecipes.js @@ -0,0 +1,78 @@ +exports = async function(arg){ + const axios = require('axios'); + + var serviceName = "mongodb-atlas"; + var dbName = "foodie-folio"; + var collName = "Recipes"; + + var edamamAppID = context.values.get('YOUR_EDAMAM_APP_ID'); + var edamamAPIKey = context.values.get('YOUR_EDAMAM_API KEY'); + + // Change this and add it as url query parameters instead + const diet = "low-carb"; + const premiumRecipes = "Japanese" + var queryString = `?type=any&app_id=${edamamAppID}&app_key=${edamamAPIKey}&cuisineType=${premiumRecipe}&diet=${diet}`; + var baseURL = "https://api.edamam.com/api/recipes/v2"; + + const endpoint = baseURL + queryString; + + console.log(endpoint); + + // Get a collection from the context + var collection = context.services.get(serviceName).db(dbName).collection(collName); + + try { + const response = await axios.get(endpoint); + const recipes = response.data.hits; + + for (const recipe of recipes) { + const recipeObject = recipe.recipe // Avoid duplication of field and improve readability + const recipeURI = recipeObject.uri; // Assuming the URI is accessible this way + + // Use the recipe URI as the unique identifier + const filter = { uri: recipeURI }; + + const dataToUpsert = { + uri: recipeObject.uri, + calories: recipeObject.calories, + cautions: recipeObject.cautions, + cuisineType: recipeObject.cuisineType, + dietLabels: recipeObject.dietLabels, + dishType: recipeObject.dishType, + healthLabels: recipeObject.healthLabels, + image: recipeObject.image, + ingredientLines: recipeObject.ingredientLines, + ingredients: recipeObject.ingredients, + label: recipeObject.label, + mealType: recipeObject.mealType, + shareAs: recipeObject.shareAs, + source: recipeObject.source, + totalCO2Emissions: recipeObject.totalCO2Emissions, + totalTime: recipeObject.totalTime, + totalWeight: recipeObject.totalWeight, + url: recipeObject.url, + yield: recipeObject.yield + }; + + // Update document with the new data, or insert if it doesn't exist + const updateData = { + $set: dataToUpsert + }; + + const updateResult = await collection.updateOne( + filter, + updateData, + { upsert: true } // Enable upsert option + ); + + console.log("Upsert result:", updateResult); + } + + return "Upsert operation completed"; + + } catch(err) { + console.log("Error occurred while executing findOne:", err.message); + + return { error: err.message }; + } +}; \ No newline at end of file diff --git a/InAppPurchasesAtlasAppServices/App Services app/functions/fetchRecipes.js b/InAppPurchasesAtlasAppServices/App Services app/functions/fetchRecipes.js new file mode 100644 index 0000000..951d63a --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/functions/fetchRecipes.js @@ -0,0 +1,78 @@ +exports = async function(arg){ + const axios = require('axios'); + + var serviceName = "mongodb-atlas"; + var dbName = "foodie-folio"; + var collName = "Recipes"; + + var edamamAppID = context.values.get('edamam-app-id-link-to-secret'); + var edamamAPIKey = context.values.get('edamam-api-key-link-to-secret'); + + // Change this and add it as url query parameters instead + const diet = "balanced"; + var queryString = `?type=any&app_id=${edamamAppID}&app_key=${edamamAPIKey}&diet=${diet}`; + var baseURL = "https://api.edamam.com/api/recipes/v2"; + + const endpoint = baseURL + queryString; + + console.log(endpoint); + + // Get a collection from the context + var collection = context.services.get(serviceName).db(dbName).collection(collName); + + try { + const response = await axios.get(endpoint); + const recipes = response.data.hits; + + for (const recipe of recipes) { + const recipeObject = recipe.recipe // Avoid duplication of field and improve readability + const recipeURI = recipeObject.uri; // Assuming the URI is accessible this way + + // Use the recipe URI as the unique identifier + const filter = { uri: recipeURI }; + + // SELECTION OF DATA I WANT TO insert + const dataToUpsert = { + uri: recipeObject.uri, + calories: recipeObject.calories, + cautions: recipeObject.cautions, + cuisineType: recipeObject.cuisineType, + dietLabels: recipeObject.dietLabels, + dishType: recipeObject.dishType, + healthLabels: recipeObject.healthLabels, + image: recipeObject.image, + ingredientLines: recipeObject.ingredientLines, + ingredients: recipeObject.ingredients, + label: recipeObject.label, + mealType: recipeObject.mealType, + shareAs: recipeObject.shareAs, + source: recipeObject.source, + totalCO2Emissions: recipeObject.totalCO2Emissions, + totalTime: recipeObject.totalTime, + totalWeight: recipeObject.totalWeight, + url: recipeObject.url, + yield: recipeObject.yield + }; + + // Update document with the new data, or insert if it doesn't exist + const updateData = { + $set: dataToUpsert + }; + + const updateResult = await collection.updateOne( + filter, + updateData, + { upsert: true } // Enable upsert option + ); + + console.log("Upsert result:", updateResult); + } + + return "Upsert operation completed"; + + } catch(err) { + console.log("Error occurred while executing findOne:", err.message); + + return { error: err.message }; + } +}; \ No newline at end of file diff --git a/InAppPurchasesAtlasAppServices/App Services app/functions/resetFunc.js b/InAppPurchasesAtlasAppServices/App Services app/functions/resetFunc.js new file mode 100644 index 0000000..fa77a02 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/functions/resetFunc.js @@ -0,0 +1,55 @@ + + /* + This function will be run when the client SDK 'callResetPasswordFunction' and is called with an object parameter + which contains four keys: 'token', 'tokenId', 'username', and 'password', and additional parameters + for each parameter passed in as part of the argument list from the SDK. + + The return object must contain a 'status' key which can be empty or one of three string values: + 'success', 'pending', or 'fail' + + 'success': the user's password is set to the passed in 'password' parameter. + + 'pending': the user's password is not reset and the UserPasswordAuthProviderClient 'resetPassword' function would + need to be called with the token, tokenId, and new password via an SDK. (see below) + + const Realm = require("realm"); + const appConfig = { + id: "my-app-id", + timeout: 1000, + app: { + name: "my-app-name", + version: "1" + } + }; + let app = new Realm.App(appConfig); + let client = app.auth.emailPassword; + await client.resetPassword(token, tokenId, newPassword); + + 'fail': the user's password is not reset and will not be able to log in with that password. + + If an error is thrown within the function the result is the same as 'fail'. + + Example below: + + exports = ({ token, tokenId, username, password }, sendEmail, securityQuestionAnswer) => { + // process the reset token, tokenId, username and password + if (sendEmail) { + context.functions.execute('sendResetPasswordEmail', username, token, tokenId); + // will wait for SDK resetPassword to be called with the token and tokenId + return { status: 'pending' }; + } else if (context.functions.execute('validateSecurityQuestionAnswer', username, securityQuestionAnswer)) { + // will set the users password to the password parameter + return { status: 'success' }; + } + + // will not reset the password + return { status: 'fail' }; + }; + + The uncommented function below is just a placeholder and will result in failure. + */ + + exports = ({ token, tokenId, username, password }) => { + // will not reset the password + return { status: 'fail' }; + }; diff --git a/InAppPurchasesAtlasAppServices/App Services app/graphql/config.json b/InAppPurchasesAtlasAppServices/App Services app/graphql/config.json new file mode 100644 index 0000000..406b1ab --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/graphql/config.json @@ -0,0 +1,4 @@ +{ + "use_natural_pluralization": true, + "disable_schema_introspection": false +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/http_endpoints/config.json b/InAppPurchasesAtlasAppServices/App Services app/http_endpoints/config.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/http_endpoints/config.json @@ -0,0 +1 @@ +[] diff --git a/InAppPurchasesAtlasAppServices/App Services app/realm_config.json b/InAppPurchasesAtlasAppServices/App Services app/realm_config.json new file mode 100644 index 0000000..dae7895 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/realm_config.json @@ -0,0 +1,8 @@ +{ + "app_id": "YOUR_APP_ID", + "config_version": 20210101, + "name": "YOUR_APP_NAME", + "location": "IE", + "provider_region": "aws-eu-west-1", + "deployment_model": "LOCAL" +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/sync/config.json b/InAppPurchasesAtlasAppServices/App Services app/sync/config.json new file mode 100644 index 0000000..831c9dc --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/sync/config.json @@ -0,0 +1,16 @@ +{ + "type": "flexible", + "state": "enabled", + "development_mode_enabled": true, + "service_name": "mongodb-atlas", + "database_name": "todo", + "client_max_offline_days": 30, + "is_recovery_mode_disabled": false, + "permissions": { + "rules": {}, + "defaultRoles": [] + }, + "queryable_fields_names": [ + "label" + ] +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchPremiumRecipes.json b/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchPremiumRecipes.json new file mode 100644 index 0000000..49c5a73 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchPremiumRecipes.json @@ -0,0 +1,16 @@ +{ + "name": "fetchPremiumRecipes", + "type": "SCHEDULED", + "config": { + "schedule": "*/30 * * * *", + "skip_catchup_events": false + }, + "disabled": false, + "event_processors": { + "FUNCTION": { + "config": { + "function_name": "fetchPremiumRecipes" + } + } + } +} diff --git a/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchRecipes.json b/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchRecipes.json new file mode 100644 index 0000000..09f796d --- /dev/null +++ b/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchRecipes.json @@ -0,0 +1,16 @@ +{ + "name": "fetchRecipes", + "type": "SCHEDULED", + "config": { + "schedule": "*/30 * * * *", + "skip_catchup_events": false + }, + "disabled": false, + "event_processors": { + "FUNCTION": { + "config": { + "function_name": "fetchRecipes" + } + } + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj new file mode 100644 index 0000000..45b9f25 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj @@ -0,0 +1,529 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 3E0467ED2A9CB73A004CC947 /* IngredientsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E0467EC2A9CB73A004CC947 /* IngredientsView.swift */; }; + 3E0467EF2A9CB9F1004CC947 /* ReadRecipeButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E0467EE2A9CB9F1004CC947 /* ReadRecipeButton.swift */; }; + 3E0467F12A9CBA3D004CC947 /* SafariView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E0467F02A9CBA3D004CC947 /* SafariView.swift */; }; + 3E0467F52A9CC650004CC947 /* CuisineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E0467F42A9CC650004CC947 /* CuisineView.swift */; }; + 3E0467F72A9CE2CB004CC947 /* ColorPalette.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E0467F62A9CE2CB004CC947 /* ColorPalette.swift */; }; + 3E0467FA2A9F76ED004CC947 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E0467F92A9F76ED004CC947 /* StoreKit.framework */; }; + 3E0467FC2A9F9065004CC947 /* StorePurchaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E0467FB2A9F9065004CC947 /* StorePurchaseView.swift */; }; + 3E1845F22AA09B6A00EF5AD3 /* PropertyList.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3E1845F12AA09B6A00EF5AD3 /* PropertyList.plist */; }; + 3E1845F42AA09C1900EF5AD3 /* StoreKitManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1845F32AA09C1900EF5AD3 /* StoreKitManager.swift */; }; + 3E278CC12A8A193F002A784A /* Double+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E278CC02A8A193F002A784A /* Double+Extension.swift */; }; + 3E2CC8BF2AC3221B0013AF50 /* AuthenticationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E2CC8BE2AC3221B0013AF50 /* AuthenticationManager.swift */; }; + 3E2CC8C12ACB17960013AF50 /* AccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E2CC8C02ACB17960013AF50 /* AccountView.swift */; }; + 3E2E24E12ACEF4F60042E588 /* CapsuleButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E2E24E02ACEF4F60042E588 /* CapsuleButton.swift */; }; + 3E2E24E52AD00E730042E588 /* Purchase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E2E24E42AD00E730042E588 /* Purchase.swift */; }; + 3E3A14F92A8286C50086F5B8 /* FoodieFolioApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A14F82A8286C50086F5B8 /* FoodieFolioApp.swift */; }; + 3E3A14FB2A8286C50086F5B8 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A14FA2A8286C50086F5B8 /* ContentView.swift */; }; + 3E3A14FD2A8286C60086F5B8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3E3A14FC2A8286C60086F5B8 /* Assets.xcassets */; }; + 3E3A15002A8286C60086F5B8 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3E3A14FF2A8286C60086F5B8 /* Preview Assets.xcassets */; }; + 3E3A15082A83AC220086F5B8 /* Realm in Frameworks */ = {isa = PBXBuildFile; productRef = 3E3A15072A83AC220086F5B8 /* Realm */; }; + 3E3A150A2A83AC220086F5B8 /* RealmSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 3E3A15092A83AC220086F5B8 /* RealmSwift */; }; + 3E3A150D2A83ACA30086F5B8 /* RealmManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A150C2A83ACA30086F5B8 /* RealmManager.swift */; }; + 3E3A15102A83AEA10086F5B8 /* Recipe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A150F2A83AEA10086F5B8 /* Recipe.swift */; }; + 3E3A15132A83D7870086F5B8 /* RecipesListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A15122A83D7870086F5B8 /* RecipesListView.swift */; }; + 3E3A15152A84EB110086F5B8 /* RecipeRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A15142A84EB110086F5B8 /* RecipeRow.swift */; }; + 3E3A15172A84EEA00086F5B8 /* RecipeDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A15162A84EEA00086F5B8 /* RecipeDetail.swift */; }; + 3E3A15192A852FBD0086F5B8 /* CircleImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A15182A852FBD0086F5B8 /* CircleImage.swift */; }; + 3E9BDF062AAF616D00A73090 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E9BDF052AAF616D00A73090 /* LoginView.swift */; }; + 3EA304C52AB35782003A6A1C /* LoginFormCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA304C42AB35782003A6A1C /* LoginFormCard.swift */; }; + 3EA304C72AB35F52003A6A1C /* TextField+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA304C62AB35F52003A6A1C /* TextField+Extension.swift */; }; + 3EA304C92AB35F93003A6A1C /* Button+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA304C82AB35F93003A6A1C /* Button+Extension.swift */; }; + 3EA304CB2AB36132003A6A1C /* Text+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA304CA2AB36132003A6A1C /* Text+Extension.swift */; }; + 3EB573232A862A28005B8AF6 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EB573222A862A28005B8AF6 /* String+Extension.swift */; }; + 3EB573252A862F57005B8AF6 /* RecipeDetailInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EB573242A862F57005B8AF6 /* RecipeDetailInfoView.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 3E0467EC2A9CB73A004CC947 /* IngredientsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IngredientsView.swift; sourceTree = ""; }; + 3E0467EE2A9CB9F1004CC947 /* ReadRecipeButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadRecipeButton.swift; sourceTree = ""; }; + 3E0467F02A9CBA3D004CC947 /* SafariView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariView.swift; sourceTree = ""; }; + 3E0467F42A9CC650004CC947 /* CuisineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CuisineView.swift; sourceTree = ""; }; + 3E0467F62A9CE2CB004CC947 /* ColorPalette.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPalette.swift; sourceTree = ""; }; + 3E0467F92A9F76ED004CC947 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; + 3E0467FB2A9F9065004CC947 /* StorePurchaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorePurchaseView.swift; sourceTree = ""; }; + 3E1845F02AA0989800EF5AD3 /* Product.storekit */ = {isa = PBXFileReference; lastKnownFileType = text; name = Product.storekit; path = Views/Product.storekit; sourceTree = ""; }; + 3E1845F12AA09B6A00EF5AD3 /* PropertyList.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = PropertyList.plist; sourceTree = ""; }; + 3E1845F32AA09C1900EF5AD3 /* StoreKitManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreKitManager.swift; sourceTree = ""; }; + 3E278CC02A8A193F002A784A /* Double+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Double+Extension.swift"; sourceTree = ""; }; + 3E2CC8BE2AC3221B0013AF50 /* AuthenticationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationManager.swift; sourceTree = ""; }; + 3E2CC8C02ACB17960013AF50 /* AccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountView.swift; sourceTree = ""; }; + 3E2E24E02ACEF4F60042E588 /* CapsuleButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CapsuleButton.swift; sourceTree = ""; }; + 3E2E24E42AD00E730042E588 /* Purchase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Purchase.swift; sourceTree = ""; }; + 3E3A14F52A8286C50086F5B8 /* FoodieFolio.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FoodieFolio.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 3E3A14F82A8286C50086F5B8 /* FoodieFolioApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FoodieFolioApp.swift; sourceTree = ""; }; + 3E3A14FA2A8286C50086F5B8 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 3E3A14FC2A8286C60086F5B8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 3E3A14FF2A8286C60086F5B8 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 3E3A150C2A83ACA30086F5B8 /* RealmManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RealmManager.swift; sourceTree = ""; }; + 3E3A150F2A83AEA10086F5B8 /* Recipe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Recipe.swift; sourceTree = ""; }; + 3E3A15122A83D7870086F5B8 /* RecipesListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecipesListView.swift; sourceTree = ""; }; + 3E3A15142A84EB110086F5B8 /* RecipeRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecipeRow.swift; sourceTree = ""; }; + 3E3A15162A84EEA00086F5B8 /* RecipeDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecipeDetail.swift; sourceTree = ""; }; + 3E3A15182A852FBD0086F5B8 /* CircleImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleImage.swift; sourceTree = ""; }; + 3E9BDF052AAF616D00A73090 /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; + 3EA304C42AB35782003A6A1C /* LoginFormCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginFormCard.swift; sourceTree = ""; }; + 3EA304C62AB35F52003A6A1C /* TextField+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TextField+Extension.swift"; sourceTree = ""; }; + 3EA304C82AB35F93003A6A1C /* Button+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Button+Extension.swift"; sourceTree = ""; }; + 3EA304CA2AB36132003A6A1C /* Text+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Text+Extension.swift"; sourceTree = ""; }; + 3EB573222A862A28005B8AF6 /* String+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = ""; }; + 3EB573242A862F57005B8AF6 /* RecipeDetailInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecipeDetailInfoView.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3E3A14F22A8286C50086F5B8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E0467FA2A9F76ED004CC947 /* StoreKit.framework in Frameworks */, + 3E3A150A2A83AC220086F5B8 /* RealmSwift in Frameworks */, + 3E3A15082A83AC220086F5B8 /* Realm in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3E0467F82A9F76ED004CC947 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3E0467F92A9F76ED004CC947 /* StoreKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 3E3A14EC2A8286C50086F5B8 = { + isa = PBXGroup; + children = ( + 3E3A14F72A8286C50086F5B8 /* FoodieFolio */, + 3E3A14F62A8286C50086F5B8 /* Products */, + 3E0467F82A9F76ED004CC947 /* Frameworks */, + ); + sourceTree = ""; + }; + 3E3A14F62A8286C50086F5B8 /* Products */ = { + isa = PBXGroup; + children = ( + 3E3A14F52A8286C50086F5B8 /* FoodieFolio.app */, + ); + name = Products; + sourceTree = ""; + }; + 3E3A14F72A8286C50086F5B8 /* FoodieFolio */ = { + isa = PBXGroup; + children = ( + 3E1845F02AA0989800EF5AD3 /* Product.storekit */, + 3E1845F12AA09B6A00EF5AD3 /* PropertyList.plist */, + 3EB573212A862A17005B8AF6 /* Extensions */, + 3E3A15112A83D75D0086F5B8 /* Views */, + 3E3A150E2A83AE790086F5B8 /* Models */, + 3E3A150B2A83AC870086F5B8 /* Managers */, + 3E3A14F82A8286C50086F5B8 /* FoodieFolioApp.swift */, + 3E3A14FA2A8286C50086F5B8 /* ContentView.swift */, + 3E3A14FC2A8286C60086F5B8 /* Assets.xcassets */, + 3E0467F62A9CE2CB004CC947 /* ColorPalette.swift */, + 3E3A14FE2A8286C60086F5B8 /* Preview Content */, + ); + path = FoodieFolio; + sourceTree = ""; + }; + 3E3A14FE2A8286C60086F5B8 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 3E3A14FF2A8286C60086F5B8 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 3E3A150B2A83AC870086F5B8 /* Managers */ = { + isa = PBXGroup; + children = ( + 3E3A150C2A83ACA30086F5B8 /* RealmManager.swift */, + 3E1845F32AA09C1900EF5AD3 /* StoreKitManager.swift */, + 3E2CC8BE2AC3221B0013AF50 /* AuthenticationManager.swift */, + ); + path = Managers; + sourceTree = ""; + }; + 3E3A150E2A83AE790086F5B8 /* Models */ = { + isa = PBXGroup; + children = ( + 3E3A150F2A83AEA10086F5B8 /* Recipe.swift */, + 3E2E24E42AD00E730042E588 /* Purchase.swift */, + ); + path = Models; + sourceTree = ""; + }; + 3E3A15112A83D75D0086F5B8 /* Views */ = { + isa = PBXGroup; + children = ( + 3E3A15122A83D7870086F5B8 /* RecipesListView.swift */, + 3E3A15142A84EB110086F5B8 /* RecipeRow.swift */, + 3E3A15162A84EEA00086F5B8 /* RecipeDetail.swift */, + 3E3A15182A852FBD0086F5B8 /* CircleImage.swift */, + 3EB573242A862F57005B8AF6 /* RecipeDetailInfoView.swift */, + 3E0467EC2A9CB73A004CC947 /* IngredientsView.swift */, + 3E0467EE2A9CB9F1004CC947 /* ReadRecipeButton.swift */, + 3E0467F02A9CBA3D004CC947 /* SafariView.swift */, + 3E0467F42A9CC650004CC947 /* CuisineView.swift */, + 3E0467FB2A9F9065004CC947 /* StorePurchaseView.swift */, + 3E9BDF052AAF616D00A73090 /* LoginView.swift */, + 3EA304C42AB35782003A6A1C /* LoginFormCard.swift */, + 3E2CC8C02ACB17960013AF50 /* AccountView.swift */, + 3E2E24E02ACEF4F60042E588 /* CapsuleButton.swift */, + ); + path = Views; + sourceTree = ""; + }; + 3EB573212A862A17005B8AF6 /* Extensions */ = { + isa = PBXGroup; + children = ( + 3EB573222A862A28005B8AF6 /* String+Extension.swift */, + 3E278CC02A8A193F002A784A /* Double+Extension.swift */, + 3EA304C62AB35F52003A6A1C /* TextField+Extension.swift */, + 3EA304C82AB35F93003A6A1C /* Button+Extension.swift */, + 3EA304CA2AB36132003A6A1C /* Text+Extension.swift */, + ); + path = Extensions; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3E3A14F42A8286C50086F5B8 /* FoodieFolio */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3E3A15032A8286C60086F5B8 /* Build configuration list for PBXNativeTarget "FoodieFolio" */; + buildPhases = ( + 3E3A14F12A8286C50086F5B8 /* Sources */, + 3E3A14F22A8286C50086F5B8 /* Frameworks */, + 3E3A14F32A8286C50086F5B8 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FoodieFolio; + packageProductDependencies = ( + 3E3A15072A83AC220086F5B8 /* Realm */, + 3E3A15092A83AC220086F5B8 /* RealmSwift */, + ); + productName = FoodieFolio; + productReference = 3E3A14F52A8286C50086F5B8 /* FoodieFolio.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3E3A14ED2A8286C50086F5B8 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1430; + LastUpgradeCheck = 1430; + TargetAttributes = { + 3E3A14F42A8286C50086F5B8 = { + CreatedOnToolsVersion = 14.3.1; + }; + }; + }; + buildConfigurationList = 3E3A14F02A8286C50086F5B8 /* Build configuration list for PBXProject "FoodieFolio" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 3E3A14EC2A8286C50086F5B8; + packageReferences = ( + 3E3A15062A83AC220086F5B8 /* XCRemoteSwiftPackageReference "realm-swift" */, + ); + productRefGroup = 3E3A14F62A8286C50086F5B8 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3E3A14F42A8286C50086F5B8 /* FoodieFolio */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 3E3A14F32A8286C50086F5B8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E1845F22AA09B6A00EF5AD3 /* PropertyList.plist in Resources */, + 3E3A15002A8286C60086F5B8 /* Preview Assets.xcassets in Resources */, + 3E3A14FD2A8286C60086F5B8 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3E3A14F12A8286C50086F5B8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E3A14FB2A8286C50086F5B8 /* ContentView.swift in Sources */, + 3EA304C52AB35782003A6A1C /* LoginFormCard.swift in Sources */, + 3EB573232A862A28005B8AF6 /* String+Extension.swift in Sources */, + 3E0467F52A9CC650004CC947 /* CuisineView.swift in Sources */, + 3E3A15192A852FBD0086F5B8 /* CircleImage.swift in Sources */, + 3E3A15172A84EEA00086F5B8 /* RecipeDetail.swift in Sources */, + 3E3A14F92A8286C50086F5B8 /* FoodieFolioApp.swift in Sources */, + 3E2E24E12ACEF4F60042E588 /* CapsuleButton.swift in Sources */, + 3E278CC12A8A193F002A784A /* Double+Extension.swift in Sources */, + 3EA304CB2AB36132003A6A1C /* Text+Extension.swift in Sources */, + 3E2CC8BF2AC3221B0013AF50 /* AuthenticationManager.swift in Sources */, + 3E2E24E52AD00E730042E588 /* Purchase.swift in Sources */, + 3E0467F12A9CBA3D004CC947 /* SafariView.swift in Sources */, + 3EB573252A862F57005B8AF6 /* RecipeDetailInfoView.swift in Sources */, + 3E0467ED2A9CB73A004CC947 /* IngredientsView.swift in Sources */, + 3E3A15152A84EB110086F5B8 /* RecipeRow.swift in Sources */, + 3E0467F72A9CE2CB004CC947 /* ColorPalette.swift in Sources */, + 3E1845F42AA09C1900EF5AD3 /* StoreKitManager.swift in Sources */, + 3E3A15132A83D7870086F5B8 /* RecipesListView.swift in Sources */, + 3E3A150D2A83ACA30086F5B8 /* RealmManager.swift in Sources */, + 3E3A15102A83AEA10086F5B8 /* Recipe.swift in Sources */, + 3E2CC8C12ACB17960013AF50 /* AccountView.swift in Sources */, + 3E9BDF062AAF616D00A73090 /* LoginView.swift in Sources */, + 3EA304C72AB35F52003A6A1C /* TextField+Extension.swift in Sources */, + 3E0467EF2A9CB9F1004CC947 /* ReadRecipeButton.swift in Sources */, + 3E0467FC2A9F9065004CC947 /* StorePurchaseView.swift in Sources */, + 3EA304C92AB35F93003A6A1C /* Button+Extension.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 3E3A15012A8286C60086F5B8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 3E3A15022A8286C60086F5B8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 3E3A15042A8286C60086F5B8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"FoodieFolio/Preview Content\""; + DEVELOPMENT_TEAM = K53YWP4G6Y; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.marcabrera.FoodieFolio; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 3E3A15052A8286C60086F5B8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"FoodieFolio/Preview Content\""; + DEVELOPMENT_TEAM = K53YWP4G6Y; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.marcabrera.FoodieFolio; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3E3A14F02A8286C50086F5B8 /* Build configuration list for PBXProject "FoodieFolio" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E3A15012A8286C60086F5B8 /* Debug */, + 3E3A15022A8286C60086F5B8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3E3A15032A8286C60086F5B8 /* Build configuration list for PBXNativeTarget "FoodieFolio" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E3A15042A8286C60086F5B8 /* Debug */, + 3E3A15052A8286C60086F5B8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 3E3A15062A83AC220086F5B8 /* XCRemoteSwiftPackageReference "realm-swift" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/realm/realm-swift.git"; + requirement = { + branch = master; + kind = branch; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 3E3A15072A83AC220086F5B8 /* Realm */ = { + isa = XCSwiftPackageProductDependency; + package = 3E3A15062A83AC220086F5B8 /* XCRemoteSwiftPackageReference "realm-swift" */; + productName = Realm; + }; + 3E3A15092A83AC220086F5B8 /* RealmSwift */ = { + isa = XCSwiftPackageProductDependency; + package = 3E3A15062A83AC220086F5B8 /* XCRemoteSwiftPackageReference "realm-swift" */; + productName = RealmSwift; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 3E3A14ED2A8286C50086F5B8 /* Project object */; +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/xcshareddata/xcschemes/FoodieFolio.xcscheme b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/xcshareddata/xcschemes/FoodieFolio.xcscheme new file mode 100644 index 0000000..584c811 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/xcshareddata/xcschemes/FoodieFolio.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/AccentColor.colorset/Contents.json b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/AppIcon.appiconset/Contents.json b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..7427cb2 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,14 @@ +{ + "images" : [ + { + "filename" : "foodie-folio-app-icon.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/AppIcon.appiconset/foodie-folio-app-icon.png b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/AppIcon.appiconset/foodie-folio-app-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..091be3e138bec74e4274ad0406297a4fa4cd6e18 GIT binary patch literal 100177 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

CoVfY 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 literal 0 HcmV?d00001 diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/Contents.json b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/DarkLilacAccent.colorset/Contents.json b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/DarkLilacAccent.colorset/Contents.json new file mode 100644 index 0000000..476e0ff --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/DarkLilacAccent.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "display-p3", + "components" : { + "alpha" : "1.000", + "blue" : "0.553", + "green" : "0.408", + "red" : "0.518" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "display-p3", + "components" : { + "alpha" : "1.000", + "blue" : "0.553", + "green" : "0.408", + "red" : "0.518" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/LightLilac.colorset/Contents.json b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/LightLilac.colorset/Contents.json new file mode 100644 index 0000000..fc3e562 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/LightLilac.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "display-p3", + "components" : { + "alpha" : "1.000", + "blue" : "0.792", + "green" : "0.678", + "red" : "0.737" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "display-p3", + "components" : { + "alpha" : "1.000", + "blue" : "0.792", + "green" : "0.678", + "red" : "0.737" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/Violet.colorset/Contents.json b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/Violet.colorset/Contents.json new file mode 100644 index 0000000..b51bbc2 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/Violet.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "display-p3", + "components" : { + "alpha" : "1.000", + "blue" : "0.549", + "green" : "0.275", + "red" : "0.498" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "display-p3", + "components" : { + "alpha" : "1.000", + "blue" : "0.549", + "green" : "0.275", + "red" : "0.498" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/accentPink.colorset/Contents.json b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/accentPink.colorset/Contents.json new file mode 100644 index 0000000..28b38b1 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/accentPink.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "display-p3", + "components" : { + "alpha" : "1.000", + "blue" : "0.906", + "green" : "0.651", + "red" : "0.839" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "display-p3", + "components" : { + "alpha" : "1.000", + "blue" : "0.906", + "green" : "0.651", + "red" : "0.839" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/1024x1024@1x.png b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d348b05ae9d58c46f1b5f0bebba63902d383a1 GIT binary patch literal 25598 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 literal 0 HcmV?d00001 diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/1024x1024@2x.png b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/1024x1024@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..19479151fe0cd76cf6d28043843ed976a50697d4 GIT binary patch literal 75205 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%0D=!i6{$WxMv*2f#?+Q@G#fYo((G*anLms^7XQ?= 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 z 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 z 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 K7PV%Wg#Q60r~Qop literal 0 HcmV?d00001 diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/1024x1024@3x.png b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/1024x1024@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..0490964a7063bcc9a6bc4726d8229cd370f73344 GIT binary patch literal 66807 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 G{P`c+BjsxV literal 0 HcmV?d00001 diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/Contents.json b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/Contents.json new file mode 100644 index 0000000..0fe2050 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/foodie-icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "1024x1024@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "1024x1024@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "1024x1024@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/Contents.json b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/Contents.json new file mode 100644 index 0000000..9642246 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "purchases-background@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "purchases-background@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "purchases-background@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/purchases-background@1x.png b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/purchases-background@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..1d056b1c1607f96308b0b5e66d5750e28181d95b GIT binary patch literal 61916 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 literal 0 HcmV?d00001 diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/purchases-background@2x.png b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/purchases-background@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0a7bda9a9adf34c72d1416eaf6fa40b3dfd75299 GIT binary patch literal 235623 zcmeEv2{_d2`}YtfsVG^>cC<*FrR*{4gj5KTRETWZvhTwjr_EYNr4l1T2#KN)Wvj%H zEM+$`_9Z(ryw50_VRTMr-uM0guj~7}u5+F58Q2-dkv+7u%uG14)7m`jCGVvR8(L)z%>Jm=88Ft zj&KY3XCwFr23rtGSfX0KPy+^BY+Qx67{hbbRAaKeSAyY9g1 zTs~%n1Gzc=69?rLZa(C92|2Y4ez$wP1fSJ-k&c0xPu?3wLray5TrH%dV+jY9-u7cu z{i_&Yu5{EH;Ez`_GcdsD+qbQx=G?tu*LkTZN-$ESH|)5#^*_{7&dhrlVB^%)4kSvd zDIF3eBua{57;Gzmat2qHt2p|89*6u~K#AVh|sDms;H2qHre8Cn_@AbJX_S5j83gG34ON{Cld z8qpwLNvQ-OUJ3C^D%lXkDp1Ci%;$3o~RMU3k|oevya0T|rq8C(5J=>xFXp_+a}Y zLbohp#`Er;!=7JX(8|kE^?h{9X=oy7>bFq!Y$ImaH>$pmPZ%6KwVL|JPOV+qvaUs* zLLQKZnaN8i|H8(8|4($@9>4$4ugsW}QUhWY5yN~@+@(@%m0s+5|dJt4n z%`zdV{C)FV#LXe7Tog|ik=SDK6oN_!Dk(xZh*eT8-+@>q)qD|Rl@vKOaiE40aAIlv zDs}xg>xG~af=Y_r67+JR1pMDT?Z0^}RI8+xC4tr+RI8+pFriu{B_Wo?@gb;OEbIU6 z>H!3m)bZ|_)A=B%q>eBlsDz-BB7}oF;J;ZdUOa9<9dN4oBGdt=$f=2A3)BH8mIfuY z2M8)5sHE5}p$<4neo9Fd3+jL`&P9H&$_#bDDX~KmOn?>(Q4(TFLNx@H5L8lxa8L)F zYQ6|{z^UbnPzU_?xXCXN09q_WHQE9}B?Ohf@U;K*r~i)~@Bxn36SHRl{6>)iVwlv5 zYS7Ldszo&@8K+uQgOYKoMKuU2A*lRMEP$khL(~w27$((x5lY6X<%>`fP)Sj&1u5|V$7CEzz=>!NIblFh2|*>r42Igv(Nh+l%>>ygWT*e*>=Zf;Yq1QQ zT&VdajexQrDEpz9X+t~ANY;P-wi6NoEVV;A1eFj}Qp{kW9cKTM&HXaO5_vZrI3N=` zw}48*grJgI&;}KXC<)ml^a+AWDtR{qmDKWX@E!;%sU=JZDj}$(4B?>7xYY7RXfrO= zd=WagfHJ2h;(*Y(1yn1BK~M=nC8fnHX#Fn{Hc=)_X#FoqDUT9iLgyCz_mb(a+B%EW zN7i(u?U+3a;I~6E)Z(F9SsChvQ?0BF!6pQoi=f?qLpZ3#Lp5K7T0B(qMX1F?ky8`p zBTzS-YP1D{N(d?`c1x(mLsU7Ur~(DGc>Wv1BMJtKSufP$p}2lEs|%z))d7zipMsH6ztpl&$Td=ct~Q_UBlZa76wO%$l1ZuoylIR0Br27=1} z0F{Q=KxG&V#&LPv`7Ebrqye*2$YN<8iPRxGh3u5#@By_SDM`zSq6V}XmulYV4XxB5 z0eVV^4YX2&;)21fE+D9cpz=Qvv&H-sYClrV7on9JRP#k>r3OV#O~iVjl^V05@;_v~ zzlH(`Dt|2>BCGp1>xG~ag38}87qYGkwI9ifg(Us|kEIx>{rDdR_3yC+TB)&Ert#bU z4z1K!iZ7EhQ3xs_sH6ztptjC$qt{{t4{ASB%@?7S8WcG-aiE4)Y7k3rZu$ST8@^O}39(A5MKUM>r`Tm?bpdt2iQ+m%QiT$5 zszovgDreo3;u`h;BB;zSs9X~9fR1>f)CK2Q3UtH^)qD{; z;)QCo1v(9jTC@d%N(d?`cFX@og`)pT=l_F$LG4GX2@_hWK{3;x)df_mTvEzF#^0e@ z-Ipv+hZ8Hu1k0D(^gc4tg~5Fy%uBPEd$d15&)=fNin+3 z>H=!H>mF2r4P!Z&2NmYQ6~7Eve;;P~CDiR8pK-KrNoxP)T7@LdO6>B?Ofe z#aiIZ&{|-M5p7ll&{|-M5p7l%P>W|t)fIAd2ii74y1IJl(HDZsS@&GJ41eeXf=UP~ zDMC1?#X~h;{9oMSq0ot-S|vHcu#}t%YU@y~J_5CMC}tP4x`5g`OYvp0m;gZ~S+Oi3 z06|bW>z))d7zipMsH6ztptcUxd=YBvP|X*iwhl#3O&qA94mhzimcUl#9*3Y3f=Y_r z5^C#ERP-cnWI$~lVrfufnNVAY;zaC!R0rG;TUu2s{&c&43xD7Aa}fbpx3m^)WgI@b zf+uaat;ho!L+KX7v(x_;41rl}q#ESU2#AJ;CIa^I#=m{|x9l1kCG~U!$r6$!C4q$C zxR8%ijp0DDoJ+nazkuu#vP;To9uy&=2nj{VrP=`GJxi6`!juS-B_zw=K%yI8RWHq+ z1wfWeLHr2fM-V?+strKivsB3~ECxcdgk%XJ(Nb*y@}8wi4nm^YF4oMZSg7|ymM1T? zl7IUJ%G97t?Kd(tvQ`J7I)v&FCt9ivK;E-d$t{d+kSrltLP)e!8-ToLsgi?`2+GbN z?}5AriakrU0myrnDmf_jK(Pn%9>{y3*t1j{fV^j^l7nIo6nh}=fxHKbJxjF#$a|J5 zIVko(u?O-V$a|pJvs4@SU*bK;9NN7BTYiGw!tEx%`3sVlIis15-GJ^q_?f0nh39M7k~zUtxA zMOZv1rYs{}UxG(}{hHBdKKSX0*rcA&BC#MNOk~e1e7IbkC-!9m{28im5^vjuammS+ z&C$y<$;7&xE$O>5niGZMLO-gH8}G$hoUX2pf#b$pbCUMNZ7Omc&KyGHuVHv;B9>h~ zOX=#IpK%fql*^Fo&-|VtG7YbE$hbE7=8*!8=LSb|dNUf)={d=~n?}>Tim+d@YI##` z^}KXa%Pvgq(#d(ynA#`Q_m{Nn!&G|59Z3~NGPPIF zn!diGbRBf_8Cg?TXX`q6cxBGtUa$PUVPzrXf}Si?o5=L(2t$c<*YGyu@Y}}beP3*9 zUGKIz*7l)B@z1SjLSKX>TXcmZJbTi0O0o+s+&1>BOEV1;R?U2VP`u|0Pqn$1w$-Fp zcHUmv{gq7}pTnh{>ymeN*>g`fAmHLjaf6tbBA5)g32*YIYJbxaWY0Hg_()gs0Du1t zT3UJDI4icL`rA)U%p69R8@r+APm#WKi?wf0Fqr;*exyh86|Z}^m%GP({nLkHdlOtr zd1_pF+doIixIZ>^&3Ds{h;5PG&?80XHZnQdn@q9F^y)>1N>?Q(jFm{&Tc>x3r;l3k)V|8$wipPj^$2To>V3(bd|1uP=3Kb% zWH-ud;;1WOAsa2wCym4Am6S&i0syT((QPu+2`B*c$6*QwY!fd%qb~wbnx^(tgQ++FLr0?-WFLa_p2jyUk1jVtgwpr zWB-y3a#0JyS<;|hTHnpNpDc998-_&h;)4y{^^*0Hq0XpI)9 zFwddLE>8T{dvehX{@$f*ALA~nx(n4lM|FvWNx#}3h%VlLHo1E0mE{4{gh!lFdU4GN zo@Fu)lg`#3$8eo}Mh;`#z=CrAtlUc#6GD1zJ#HJu*mFkL+ce+xIkVc@A%AA{v!1>O z;rN%)mppkMphjsTCPkQrm|!c%aS5n=1;XU|kpx(}YQ;(o)r{?;bw6YJxkcK7-g(Wr zFzkS-C04vq_pNEra9RZV+_Y_0;91>PQ<;;aE-ZwFv&fShm|<>}`VFJoD90XT2=k-s z=&xV?lBs5EcoAULm~3?V@7RN~K^9*eH+(&Hn+<0^I#Q;#cG@33&At2rO~h^{hnzpFdKAHzp-W27R{(zJ5~x#`wEAemTBNGe?rA()k{xSf{M8WYh0P0R}Lo3{-(~xWAbS zR-v}@VzwUYL3o$3wALLgODE^#hTa!x_8YoR>B7vc9-t&>A||pfA*IW??>d-Vu&r_|ZfifGTIu8~|cAgeFa#?%VD zzaY5vEow3H#ROM4R$jgJ`-ERT1;aQw<>)Cvxdq@*v>R&f?#xa75Y(=!;8K_(tv5M1 zG@70hYlE$DkPiDYQfoBrU|yu#j)iyEU%6eYeeX$Evfc69yH1sIx9MXGC*w=KOzIMk z-<9&F<0x$~P~H=?`}FPjBfGx6X4=SinARPB+}%|yE<~zxbJZaGK=%FbPM{+LVE$R= z*KNlrm1XWr#$(%pr9bW6wZ}(Ruqk-7QNhD^$mPuKoP30dAnl1F?>)=pQx#xl;-QH< zAGognu_qu&3s|wPRG2@BQ!eQw*=nKdJ~9=>W2$Su9orMNzb{ZFCV0DMhQJDs<>tHX zKE(!3KFme8i;ifrs;k6z@!sDH$iNSSB4|>e!gVv{s3xZ$@%TMQjHKF)KV{8jJ~W3H zUscOinH(3B!VOv{E|Wj`mwW{)>|O~L1?MoG{XTPs7Er_KuTCNqTavbdfp}=amP^i^ z+tJ4Uv1FKobmDBen}7bFDsw%}`&c`8k>_OvmOR#BL5&Xree4Co%cZ*QU$oil{QO2; z8c@B;Dj7J%v#;JE9Evs+KK44inQy}UtmUMiQ30P_ld0(4!n8HhS$?o+*m1Z0Dt|+9F7fr7`eWK@IFKMxD*RY zEoM}awqJ7Eb@nWPAKVSO6_8@x$k21!|CP+m8qOkv)mGqJ;RdAcW611tE+=q2Yt`7$ z3LlODrJU8U$^#J!Ooy9HwWhY*Surc{TwX#PxehA+vsxNGqOgt zcqw?;y)`|~Ta4cQ1}-%fT=hqF~Fjkk8{J` zvqYqowx!+@5hkw4$f*LsWA10oVIS$F{;MbqR@28+m~&&}V*Jd|nFeaN_~r2D)=UmX zHR{tLz9IDd)L90{Jyt(Ec9&@GIRuC~S&$X}^S7lKoTan2ueZ`%W%93rM&5yZ0Pf+H_~1x>!#u^>%NZk*rkB z-WN=xyGE2SwnLg_rYsY#?2{b|Uf22IT8{O9+RFXJRXT?6Oi{#@Whs-L{j$7wt|&w6 zTXY16qRsUdS-kTfDAp0>pcQ%NP6WpXPPZ~2zr`;vMR&8h!}29lp2TwE0pMoxB`%(& zA==zib+>aZ#S<|5wS0$+U!tU}N7}bnvI1 zfYId$0YjhM6FA51h{Zv2=dZ?9r5nK!5Lw%GNPyl`I-7M^*&=q$1gm;HztfVdV z*@&nsv6?*yXde5>buC49))ct%m}v!TFM+{eWJ73Btlv0U^BVs~yc8VL)c(pH`k81PEMtawaFa?Y_+O6JbumSF}8v5H2ARtDCut%eV-nnvQU4*F;8)i zyIl8@2(>O8h`Q%g<~ovJNd`BEJ&Rv7`OsqQvKS^FURM*im0?6HRi^pX41NA-jkar!FV|4Vh`Zpoit(*u z!G>@t*m;sv8aYhhWXY3O&neMwuGp%Z#&-?n>J>g<>&59kFGrm_;W&g1ft773@Qz9C z5DUufAhD6AB!X%yWlZZR`fLEh2a{C5|8)gK-ql`U=@(Q~aL{au4Q`Qh^-PCv46;7Y zrAitS5`gQbO^ntsQ36)TwG2a7e9WA`l=nW1x|Lq9%Jebi>3f=p3oNjg{xmAF6>IMo zoFjH!P~9^J)jd>O+gXa{`wt_SuXKZ^l1Kd0z;PgQes~z`*b63nE1nhi?gsC?V)K{= z_^AGo21kk}i)Q0s%QK69q!u`y_R=p`&8tkU9HlT8`@WWS{O+-BA}BO`(oJ<3ZXV z@1D)JFI4$=Uzy8|=U-^c8%XYmJX_?UK}hKxBCGo<&!M_0VMA(h^9D!y(0r|c&lb3xSm9|`6YI!1(y?~Ju?Bkq_UPUTFw^8_U)2Mo zveZ_RhnYF{M&JF-*%6NkX~FXLL3n(81-m@C0|r- zBMlM1Wm@`2_>|lm=sg+;9L{>5Ov&2^C`Da+oPd(|u6ZxYonQctiq00-T)LxX&?7Hs zD5O@#W8|c|!7TBwn?hj6wG_3qMMC}Xb#Hnut|Wc=lTSdQM?Kw{0++7P+sb@Jp6{O? z6G5e^{DCTWVNF!^#iyN4xr$GVlxW{waXnzJ(D%bbbPR!Hx4x3PthjWS(N{IlVQN(J zyw_vGJ;531D~%i6LwnOlesCODy!zvRtPSe*(#c}3{)V@&0U{Zmxz%SR zCpA)GnI2hgUR7(7$r3d%mK^@2Yu-m`XuSyi5g}Vw5mL*VA5MM+zI9uXT$3FD;?15# zo+|RZSKjMjcp{K}09DLTc3$+w(F##*QkBXZDA3V)Yqu)iTfXG4R;d6N-OVp&%!w(! zu9n>BXOg)gz-g~lXnE)JKkH2Er_SFIB7J#=3@{{TtRANz>F>WW)hca+dw_wq2UjaH z;##c&@i#-7QMSG?Ev*d|pB=0Mj{WEt%)K(ho$$@RaL%QRSNn*897;(nF7g-)it8Ka zNlg3N3EOhZhc#+Z4bNZp+=*tmKHqrxo*V(6O>mGXS@0L)`1MOMILm_yy+U2=trj_R ztF%ycf8V!7_OR_&yth@n1_T8rYc$7}* zE%%NWHA($!s$aBnfzc;y2i)7&x$^#kzsy6*MP&eJid5ZR1p7DTTK-F(x?v_~_Gxy< z)?Zajy&Jfp`r_8uIn$ZFcpMAZpj(4;>XQ4~xyf{GgRW`rVIV`dMOE?lS9A@t(L}`i zi_&|)kN3q%&yS&?lrs#F{%lZG>U<{gU*{=r5J$f)SlK_pmT{u>jvA*=Gv7u4gOlbD zo75W6$terpOL@j>tzaM;rnr|La6l}7k*98n^q9RE?1W1EX-+@Cg&*`FRCx2m!%4D9 zBA+-)U>}V^*!rnVtB2T5(+aOMy#FTYTFGQbjpglEhIe1>mr73e!=G9+c!o!RKPpHl@T-vS ztJ>uBkRa34VoaZ22oH8^_Ri^|syu!((pmcdI@clxRi9ECmF(S=U(nyx2Pm)eyI+(5LE+h{Xc z2tzh9v`VUGs}4HdLnI0pIV929f5hk?l=0(GLwE*`etHn@7D_88Ri|0xzQ;(e?~NR& zWh5k{C#A}aUT`A0HpVYIP%FrA6C>}q#SAOT<}h4y%eyS|`f)e4z_pdl4@L(f6&%c1 zL|?AkcBJ~vs zy1B}0lr-JVk*+Z{#Gb@jnc9@hbar>pnR7O>k?85umusk3c@UAPwlPRzt}R2>)SH6n zVmeZL6%#nI0fUl9E!N;!qavq1c-)5zsder0Tw}e^(R9`VmNlG#Hc=*L<;YDeZ*PQ2 zH;9HsTLliZ_S_QVM(dy1WuGPBc|gQVJ;jZEk?rN7wJA8@gKsjG9FcImS78t(JvToAvAA^oBjpVw`@7=3xp zN>or#R|Z-kRlNvN8j5wq33%NmGZDV)pn{B(A`b;fI4cKMXbW2uN5D7T{Ox`0=Ak@l z@$YUmp^agW0%^`(gGKXQzm$8H_0F+vH>#Tr`d>E-MZ!a9B7j3zns3)D@CRzhWxuaEBmNUj#87me0>gHCZ#$;#D-gJk zP3s!e|I}T9>^Q$JTQ6BJxzyRn2;3Y za!+4%7Hml&|5$}&kV)o?F_AFGd=b+Hqzri)gtV8AcI;&H<6Im1Zy~GvnlG}9a1M3# z2rD28zh(qZommYlF-dI<&jlUADqX(mz2|Ql8JJs%-OG7eQ&;ET)5D7Yd;~ZOZQ5BS zc`S{7viV+0&+I9338^TtQ71?*&+Q|=El$gj{%ivgBCtIEXr_Gl;t~eC} z&*NJ59`)iB8N=~d34BB7LGL|suYDYlyT8C~TZMV6H+o;9>*-rsOe=i!4dK}cCQY1D zjj7d?&YkVZ(;MDSTM8C`ORwG!pRP>dVvx=XiISIM80r^gbhzGfK*mwt%-uAzp)Fz| zu_v;kT+x-SE;F5b`tKU>lRWww#f3M29x5_yBvb5A?7xuxH~E6tvVkd++~}FdxR9cF z(I&ntgf%b?Ban-sZs0W-Cj}e16>EQ93g( zFL(ixXV<|4qrCaqtV~}TMs8F*tyjY=ZbFZr%1>E#0TPtzr_cmeopcP2gU^T-c-yhQ zCFjh07{F(Am^m*PTfBkS7?@G5{)ES!M<)`jn zICI;ayV^ozM@yC~i)nyDe{8vRp{01{1luGTvGzVDMDuLNlnJUSJii!?A0ql zJOxojL73NhD^gy(7@rz;B4e+!VyZgH=e67mP!A-EYur3-le)j62#*l0ys?&I;EZO8 zENce39!G+4?`Y7nC%2TpX)XOX_7wtxEt*=v(w%#c=x^+Hd>N90Qe~Q0mcu%B<*#ty z8G|h87lG?`3*^5svGO zkz9T6SWxPKK~>tK2HOhw$Lwu+N>nSbL(b#NH!WNVo@)wPex7V7i3Qw>V8Y$Bsh@Yz zdrp-1H~{LI%@Ny#KL5`$c`ZhoXnBS2W-bo`&NnzprpGC}ZKsX3W#LG#lkfCH*l|W0 zZXTY(JRo&jU0yi^Yo;I*IlP_~X2vF3sj-Rn3F~2C@|^SxM{3 zn#8_1{gl(-o0eCLs`sxLtdLX&^~+2a1@-(#Tt$)vi1>G{o6)Vt^E_`xx@W+W@t5&r zV>L3G`R#)%Ttjj1vu=y*x?Fx?UsS~frPzA5@l(E;=b6FV#-7p!U-;*ZP4M<_!qP0* zSkt~0X{o8}*Ye_}8PYN{H)UqJ-^e@ABHtI+Jty4-7l^GO0vYY&iFLdgDTgt0((Uts zV@n3_T*cwu7cV0t+Uh?*k&xTBbY44S#`AMcSFz@u1L8J&rVEVQaQ{YqMeif8QRpg1 zTJWmJA@YH5#rEv!6hnL1+wXN61vLP?kB`f@A?5w}&Qtqczikmue_pk!$Z|oEa87t9 z>Fmm|k8ODb*kf()RcXiKLC(fCnKk8mYe9VmNLXU)lYzmUQmlld9rnj+U{Z+6)k5M5 zUdQi>+Lf@qBANbqXpi(*g?V~s6S}hc3ovKGJ9b~slMf2t9~g@cuk1SDyX@=nveI5_ z%azOO_vH+dbMTqR(zhH}i3iZc6BNa<0i;}6Yp3>AV244|`nF<==-hmWE^vg7d0(8Q zBAHYq_Zb6d;PJx~&CXd!)LpY+!0C;G~H&b+!@W+3&%uroqwv z`6RlfzaiUrV+@&M$E+bt9S18YTGDJc#$ruvt0etYlS63bqc}p$xkE%kS54vmh!7y7 zj5@+X+}%EzT%_6N41#E}K6=kJENHZUqf&asHSN?>E4-HDr*^1T&(y38O6W#3nA^=6 zX=Eom6I{mH)wvnI)Yk@ZF@342(b>DYf~=Yd&T{(zpO+&1$N^A2=gKp@^B3IIu^$Uy z?Im6h6zz;TVnk-=M6BX|7C>Bik*!;a1U+{jP8XDL6=LfH3&$1GHkNGv7_zc>XeV-f z)#Y)i?Q=$ym-97vOg2@L8%&7vp*5?(;)CW;({?g) zwLTcJBSE^qA}iynQ$pAqc$72@7_UB4*2;@m0{2GVVy$Ut&;u|#+VU<~V4%{EeV{wR zH04&{yuR#=Ab)5Jgt5*vjaKYFRW!OK(otOrVTUulc~E|QuiL`vA$YJ0;8YsV=;vKz z%onFb3|^h&t1i^24uDZ3>%ThFLS>KOhF(R(!V~Bzir8;R~ptVmQhMT_(Cu zb@O%?fpJ^*b$c{i%U-n1taAj}VR=t3n78@>ifhE&S;p3l6DMU6UXA)J^fh-ixn+fb zlJ~EVN`K#DNJgBm9_O0v^DP`VZWr)OdBPQ7be~^-eGb={v5kKM!H9Bo2}?MnGeV-= zrIr(b-+j{Ew(qsiSm*elOZXf46<4lUoIAJJ`Yr=4`qEH#TMwsoMOcAyONq@_yc7j# zZ~iGC+;Ltj)=H1efEYY3=N6);rBPmmli9b3mGt9g`F}!~efxEvjXZT^HI%|+mcSIdV z6=5?#yCuO0USwKiYlmQ)^;IJCoOxo3kZS0cf72!7O-FZKkAh1L*(01bCMxb!>?po$ zJVpQdnm+THmRb|DnIVFuM>3f*De39FD^{!+7)mf5z;&??0N1Lislzq7?xN}u#XIxoeM~@^`O$4y2<+GLQyCDAsnh&A+$2k z=!}14y>-!ehxtAYoGIAsv{9mF*Y}vag3ig=8PhSC+%oQm9cUlGurhq{t537Gvhr-= zUPA_DzRQVsGbk=sVEdz7*hc^z7aX%+R}@=R-krujy*-G$4kQSne|>x@nOa%Xa=IA7 zi3-V_!zrj#v-Eo%A#_FRF$~A$W=mC7YJ5swfL3YHndJo1eBE9K)Sh4UoTF?4Z!T;^ zMngatV+jQE+B4cR)-4%`R%-!aUqO8rEm-Q-nmU%VqjPwnz`#<{c%b#z_pb9A)r3hS zH?h9e-@+B7D6&Jb{DOE_yIN{_zu#XHX1$+g-ejyAs4(F!lOC zcW-YY_}`9WXfEQwLIjGr`fQ+Z))yt`)6A#3M-|iBy+y%Gbu;|=T%aMoXgUg@)3ZaS zX@bn~_t3w8>JOq3_hg5Yv?I)HKabzk*!myosK-CKBO^}Su$Ru$2oL(`S>@1L~Nj-OnP4peK|l8Dz!UIV*@(HJs)*B9D6L*J2FEN{IyBP%Vdx~i(QyL77z=hbhZ6?1`yjAp>FpZrBzkfC!30rI|H_E-^)H4Q7ggtC8OA3y{NWx|PxM=38p|{nW8t{_?-)e1I#;b)| zn)-!DH2Jn)`D?MRM$>b;m{fEBLJUWMq6pV&Or$G|lBs|o&Yr8s8vFcmvozT$Exw-# ztONlz?f89NkARn8%8@_5mji&3o01qTLE%NucbbcfE5E`N-O|NM?*>?WD~5bB#>{sy z46Mo8uNzin+=|@-AeV8PRgiXHd^Ok!6c%E?hn)Brc0~hE)@We!Sy%u7W^L>{>F*mE zh`*mD8#tJn3RWLG8;=#v%6V)%l8er5;9J+&L}-ZZ^c22EEhydDNv<9V!{u#>^<6SdXSKR||A z=TBrd9xqKdG%O*6>7U95lC$5w7)z>E_uJH=Hn{@L|IOhq(D=z&>`?~Tj_ zz>?)M?&wS7$-b6X*4HP`=WWpQBj- z{Y`Fsbz4E6km-=_zmR-2>C%H%`~9%+f`L$p8+q`k$g8-minG=S+UhF_uG`z7$JHR? zj|DNBVbk%M@s(<24O0DG&h|2wERV!avlt54yb6G`l zc){ytkiqos8Gp2zyn6tSbXV1ApWfe|6FvwoRM^9IbZwgK>IbOGj3N_qBrUgoea$QP zKgA8nppKV{!M=?^bm_KkcI$km_!JeuCLLUISboA>C`?k|n|9a9{2X5$78b?|lb#86 z>2METbhxZvKuL+ki@aK0 zp<~#EoMGCd5@ENS6gg;T-!y0EK%XbHHYoVwT61&|H{ZZZ{QSVqxoT$`(>c)0U_s(p zmre9$_O%oMk8a3zPf5?=-Lz?wgxzidve|a-j+L$Gd?k!Jt2sAYo@BOUf)CtAEvU07 zVc$u6G7%S~An~BynfQfUjCcMla_<4a88l1R=*JF+nu*^7`Ih?aulFw85&tolChJv} z*4Bj}2-ms0z+a7zWTqk3gBHHCyM`j!r3Xk0w(W`vSyEEIQLN+dUZW0(Ts7Pm|ED}+ z3-(@082Q?{1XwoX;FF=ca6R)yd%!XG@&p)3a^;VAoZ_D1WLhrae86;Wt;?7p?dj8} z2TGh93!H(HM|tJ0;_-MuamEZWw&&(gcSbQ_7tsEXrWlMUaBENnRLEpe5}X(mSMbse z8?joQ=SZFbH7y4nTx;g)xH(IkyDv!}kgk^2F-g@19);v;KlO>fFb>k$Q>&!r@`>D! zD+yu*e09GYZu_h0fg+cwVZX&-M`tTo16eTeSvgDP0SYr1+&(-B$R@D-^U|lHfQ)%=*`;=vPL|XZOiw$Ra_zn3Z^8_0Dr z!04P6KuAfd6T~cN?mfPnD~Y#j?wZc>tzgA*uDPNfSOk`2S08)rFehm_MFV$tnKgaf zg{jG}e0dQQf;@6=cMy!m7^8+xF|rVsA%-;fojCI_16>=;Iw2(+=#;)b%9arp&2ap# zq5L8|NJkC8;&4`<$pS;vkw)UWE&;T*&Rn0YpBW z!E>mgWE1k_fngTIFK%8iWe|!CjOhrw4~GRmu5BE;jF&u;f{Ln$l9Yl2h1(gone&sK z6yHTz+S+RSjizM09BjX+c(*06fv2FnOQO7Q7_@d_Qefjk&-sSABG{7=+VRG%wIwFm zy`bm>+Mq36AP4C4!ikK0G$L@P!3{48?OfqQ0qg z)`*B>Fbuh2ea+aoK6XmH(zpIZ#e&i9N|m2#!MN;C0!0FwhC+4Sgm~SyKQ?We#m`(u z21{$Jf@-0hz&@`D5l}JZ07-rd_#f@wz4YXq+WKh3RF({3TMpN#Ab}b-+<%D9RtqxH zVY0E{NLu8Gi=Ep*B4sG?$zje{W-p4tF7%Q}TLeq;^xzKZ9w$&YZ#5#ansh->pqLb# z3f?T=I6d}f7H%XIRHL#={>UJE=9cqeKCdKCJH*E1Ap3T#mBVEAC=DOVwei6w^G9Sg ztz(Gn*~%08V4(}v*&^e283}Xbe|~44XmOW0UYHP6ElP7!+|?@IGJ^Q)fWWIZ!pIWq6=gQcgy>8HHdaSfSDlpT%66@8TxF z5z`-ZZ=62|Q}s^6Q2wHnKUN*qeKgW<&ISZ4mQXx)Dr83ljQ+j zyvfPQ8$sl{{mdDmgl6I8sKmsFRT(QU&Q-M zLqRzOK=FTjTX*neFwMfztknXIIn!nzfa`H*2c`oNMpj-uAo6$_=#js2zqWhf-7~*r z>;-n{+@{UBef|xE9-FyQPwer| zy+S`SGSWim;^#FY{B2(0#X-MN4rhp-&AsNN4=(yMX~$DLOfo^P)^I=Tns#h9*!54? z4=`RoDoJh)2VsJ}FG0=WY>rRi0_vHu9C-==%?ck$cyTid6;<7HHt$r}&(kP!-59$; zgDA*r`gE4ZxF}&MP)|?K@ZZ7~3#Lj#%L{tDC|fN>bym>YwRN*)lNuXrYkh>kA=9Of zktVNmQ_|J|C5Npx3Car~TTYelidUdstdROEx3EZfJx5Rx@2Fz(Tm}GOTaDhy$r&@{ zGda)$$_;DbQ_O&3drj~N%~KJ<_@Bhnf-#ibuCKLW0k8To zR_)_Jc=R^$f(zb>P>VRC|IlN&Z#o~OedT?lh8ik}KI1^58!!40QUFI-`y{W|RX`4v z8QPa8hTS7^2!d3aMnLf*ehofL4za1oRH>YosS{QPS~s6PoZOe$lC2Sf$1bh_yuY_e zW$*djNKq%J`lDm`_ zt`#8;i1{xAqeac^X5$Dl)M1JWLAbQ_bf{;^xvd9%ACb_Ncn`KDvddL~YQGRRI`kw; z*v@;Y!7cjBdFQewP$*3I(7xsP1IJ=3w8E2K{FGfr1uf`C4U7#0j}=XiC%cT`5@clA zeZF_r=PUqR=*S|uMx>#*Gy&m5L?fWMgdrmvg4AM9v;`{5*i8j(bFHp_SQ*n{+WRH zZ$g?xu_T)8?5&6UC+olR_j<^2ow>~B4%b3|%h*P6gD`6WJ?@;qlS(#`mF5ND*b9*z z9wQzqg{q6NQM##P-z(D7-3sAkRImrx;jj^}CluJoQ{bh6i#?L_#*8S;8w}HdrZ?uw zcP9|+g?lgqw@8ps-b;iuKfo(v1M;1N#ud-Yg8da{=`EGDCk1hX+g@h(CZ1_jSX_8u zf#!rKyV3$0a8wYm<(Br6P#1jP^r7_H^;4(bXP!U)Q=cG1mbv83v)_#aj_>Ik=vmuX z(AL&Ate?-h;9Yduss<+lTT049U2auX_@#2N`n;uycp9&5owRK>*_to$MK?r04v-H7 zK_L&2q=4!1oN0a5JVUEC>&TxYW58+8RPuwSCrtNGPbhG4@etZcHu|me_N#(#=IX8l z#S&26V5<1iHA>ac(>b4ClD7vHmS zppSLRJpIc~(Y+N!a&Ov3{|YfKIyIs{eN`!lr>M7~S4Hpri-qcZ5iOSvomBo`uq1YRFOSh`|sM%ml^0EzLW@I5muqzKBYIs8V+L`)YMyW70*Sot zheL53KsFDzWNZBK)Z)ckrZs+3p_JoSKiP?X3q6gJ46Ps*aDO8$pn$fcukjfpB>@>1n-6YTw{qXYPi@{& z*5Neb;~77!+s)>@IjmUGNp@585!XXIwaI3ygg0EgLrd$uMzi9~{MRAZvYLJBym3a? zH?gGTk(Nby*RWjwu`9%5Z_1-Dy)U~7o^seJ3o8``Nn61#o=lFcOi&JFF;s!RI1M zBN{h-(97wYhzFX;{O88={URfw!gStGK!o|Ud75mA-l_c-nZzIxmy6eWN;=;~C-4pS* z9*JEjHxs`!#kJ?z=S5&U_YlJt4WU7vO~Ndv)ow_DN9R%FC!R55Y? zFwvKVztV>6(f4%+Yv!@~2u@RUSeV`Fo&`O%HQUN8#iF#66`pAa4C725R*OzPfcH2} z8myOI^l*$j(lj*kn(1FR&d){ybtA-FE?~a3XjmpCD?QT~rYnkCE*;0m_GTh`f5 zy}6X(gmJ6$ya+G7FJ<5K;{Jl9;SL*8Bbw`O<*~<)V~o43@wlP}sS%!L2UNrz*~Lx?7P-hSI}l14s{FQVCf@eSBbPw44j+|M74&oew^95csq ze0NVz!M8Vt-PV1_6wvpGN(%-Pbgy0^cK6n0vWFz=U8{&yQ{(jxoHrumHMaI)H+7p& zqstIZewiu%aQ{8^*f{cppqfMDy@kpC5BVq_HE>FMufCdi`h>w5q|t*C-ot<1=@cg^ zKGV3?y!rvjw61GGZF|O-)%^3nJc|j!zO>gq6?=HGuF_o4#WOfTH{r8MKB4l0Ws*%k zu=})o);O+P+3IsgI|8ID+IevbH=Z%te$KnO$G6qo?DWT_0v9 zPB(ol_x1&%b>~R64Trb1yt%Y$pvPGP)9W*7+xaO@Ev$TeLCpAbJvd4zoC-jUSs z#;fm}&I#qgBAUBM)G#-m8J)2L>k4Q|dUS0b&P%Eztz*|07}_%9QaMg<3I!>lS{jcZ z@$3vv(3ghGY+B0;4@^$d_e(WJ2VS__Ip3kTortKnR&r$S)l58TWM%KkJQ2+E_w-|h z*xI{gfzRe@=EUGYkjk-0Z&-wKot7+7XqmZZ#X4a2mX8ya?92s^TrzaXtY21w*+Q(M zW5M$LH?FQioxK{GZe6f;w6`!$Gd3p9Gkbn)EZS9OCT?gfw!Y)_NrV7zrS9$vKFkr; z=;3;!2FBv~AD)x;l`VX*_Un8q^8=cHa&CXzb@$B7lzlnOnKGFyK74#WBw_{mR^6pR z!s@iKZ(YePA3mq@!jXGP6hbiNob_hU?@iLczh01f+Vw)`ow1?4yZuGwYO(r8k@4Fk zZzOt_!yZ7r(JSQp`8my+J!M@Z{Gsm-ZF{!vtA?OkcEf7{`)wpX)V*rUx@%+IEd{_O zPY>Y3WPn@#xu9#^|C;ve5h;xq4(GM^rkt*;T?>ns=q&Hb44-^`bqx{r%(~-uofaMe zX0KxvVmKds@|eNt$|=E(fd%8^+u4s^5s8)}nhv2{L$}An=?@+`*LC_H!^R-`w5bL5 z&p$~`IFS~QfOnQCe!5Uuvvb4d%-i*Ar#^4`dx~RDVe>DL=HRHZeJYuWCyC95nGeL_ zFjWDK;&(bF=c9Dv^7}7qkm@f`oA1Wq{DPzGm?}^|>XCux_nVU5!N7b+57|@SgO5Oc z(A{(7)<*>FcvPhW-pLKVPI|s#W@oD@#0N9$gww)ifA~J&+}2f}x`u1cG+zCBso+ud zh2X{~Ylvki97&5ho5isfwLehk)r2U>^c2&M7|%D`D}R)A4M$czQgFN&;ACne@G;@8 z4yT8fMP=Td2J-tD2{4bm29BWGCvrND_()K~@S0Hcx{2DmN`&$Yzf2(d)p8oAv47%7 zt93=Yg!k@U&n|SvE4oSalZfcN^t(lIh|mP9I!Inea+ zYw&U0hO0#Exl?rApdSWJs@Ia5{ zwFy%5ra4ZVx9M1MwB7lNj>EAU9()9|A;Jo!&GYp#9b8xpv6bSk7vR=}$^Te4KZel$9U0L-##=q87CL7F~Trce<4UyY> z-@ScoVmRjcOfSGBVMCt$JTNAiN>e|9Wxa}le7CQlOV2 zY@2;yevb7s0TO;sn;LcI{uh$5&V&edGx3cg(<7diR+fj1`m;$LCV2Pt;`2rp_B&s_ z9C6(5HnF8NOh)4K>aL$9(;36%@{v!}+eC+dd}v2VU|4oN9v0yi#q%$M8k@$+YHUmiGT!C>3+v?63yIUMSlMLd4^t1)~g(l4}Kaq@pG~S*xAf( zwmK?5YwxM29jDcQsp0JT{MyBM{m}=4K^&^^b zT7(2Fxq1?VM9gP8M9*=6?aA_+Q&#(u%nl45Ayj6$&(O$oGh1U$kYe`0WV#1YC5oVx z5&AuPFA1Q2O(Fea1^69=LY6BQBnySxybo0G{_LWN{uQAw9fB7}M+NSQRdk_x@${~ge@_D2( zGa=I&as{vlU+C6kTz*%Fh@&u;o3 zdBK&3T1`6S{uBZesj9A8-u!f&K=3fl!Ab+43;cLx0x%>)_s%`cz%(5$!!)UEd~*3Y z_~-3f??EP*=wz{_Q}(*O}f`*5P1iV=BSckR1dP zifNB0&hx&i#Q34Kv@i@TNNG##YpEL_ym5GooZa$yISUfQ!f_eD?_L1j8&z+34nAbM zH6+mPna6&5ow)_5q&g%Ft|=cNXxJFr_IZCg7L?oHR#`F}01}+5hAFJs*3NGCs!7lO z;>yew#+h=^I`qB9lX1b^M+~gR(bFp@1#dC}F%2JJzWysy_XMUMV}o`iB_(u$XF(Z= zki8!r9K6w3=X-9!TLO<7fGFJF5j@uUrCLNn!ud?G?v>dP|9x8BtM;8PIgqQi`^YVg zhbQ*}Y9MpzY_*D~9Fg4_lF}L)@=#dUP_bS8C3W>z3_{z7B9~v1;an@TqAKIZgFMYf^*4CD8+t=)q z;nJbOy+Hs+9l(~*f!q=^YA z?;WEJbCO|eL>FDK7TY*HA(D83bKVD=X)SzmQhQs|F%uFJEzQA2BF=3euAsUPlinxH z%pu2W>}j!?zzhIl8Z%F6CRRpP^z@TZ3?Lq2sr0MQ)D)(pN-qk}`x7BU(Je8tw6ZRk zl(3~7EyFLgd8(>kLT-5R6MfolbEt1z?j3n?)#Z;DCx?)ZvPW-pd zUTbYiXy})}xxSu*B;6+Ut8IsX2LHBvC{FT0?_6cZR?*LZs3^qgeDV7DRk_O0YTkSZ zi@Wv?e2zXk&{UpBsOqStDEa z?ECM$#JukqRe#MVGw=I6=Q;cNp7Zcp#wRaT9-^U_I0j~qH`;>imBKl=OkE+`bSH3F z&UBes_*(JGlkxG)PT|$lsr}vaeD#=%ixb0F3b*m;Wgcf6l~T2Cc4-OTsaBhH41yjP zUr}G0sd%>uJE_oV2VfYDhMrZAU>(iatCt0#V#jLpf63f-;#Qi$i7Cze76T_!Q+lew z6Z@QhNVFC`2>Q2T5bMXfZ7J!tGrVLYc26`~v*8QtzcXr&)nksNR8IMYXD&@A(3Tgd zpdc|eU8-XQa%*dA zIqL`h!tkbd07O>F6;X1KD(=qg)>K>@=hXTMP(Haa>&nqyK9;Fy6dr&v_NY<$8yiIu z-mzRrsYw{^ad{pacO+a_W|F#qEDbEHhPYA@`2o%UHOpCDq^H8B)`8r8iClPjcpCII|IUIN?pBiP5>raL5 z$}2pP-s`ex#Z@frBaR98^N(0t?fn>Whuy$MkW47?`YxAt+P$)G`r^~s5B5dErgb$7 z=GZ095)@Myg38SV*1mP!lOhhWuxzZdSAFCC$X}Q`ygmoQMwfk)Sg(huETEw0xLsle z;p>SP*_j73+$Q!w);0IV<85T?a-c2v`>ori{g*i^v!-|;fsm89>J%o$S3q^GQq`rX#eKb)X*(UUWfvI%Fm{;005?3?;@a<#<*CBAf>23Qu&X z2BI>(vuw<&K}gmSyw}R|Scgw8tAVp}&u477Nu{V3R@r;RXxm2ZU~MR}Nm;c`@868) zP2*-pX;uANDoE5oNrpS*H(u!9Aa<2c16MtYh0pBP=4F)*FZD7xyib}{A zY;5~fK^B&&ZnGR8>_95F4!dY@_hBs9vwAVK3=`a#S*4$B%?kEyvE_q&E2ss~P9chI zp=*b*mpNcvI6^c-U`X0cF)}yv=}E|U=eCZ^W;jhr-uG!`q`g3v@aKR$ac@(qEzhfz zAN_-4zWqbV@y(x~A0Nz3r&C8$>j~AD5IZP8Zolh!`(y0t|GC{!76?#$#?ko;4NlMc z58?3l^KWE6G4YXw`}7j8iH*nZ1Jfk*^|;*i%m$xqWoZ7Q91MX9@=;CSS@hofafar! z@N2BueI3IJ!ryW4OmC<9lxu38zL^|51bG9kOyCBwyJ6`yZSD&KZ(_)o?#-H#T<%J9=;>!FJ51AcIJVXt{kP@*w!v{)wUJcQkG zh3cZ~#l?N}o&CqU_4%TjpYm}GW z=Nh}2ocUEotTk5^vV>HRL*F+moh&QE?>m>F9xSYj>$a0pS1(Jrt0?Qro5i_o_v)z) z(qZp0)WDi7@Cft~BtUB`naU8hMsm_ndUP21ehDJ<+c8Q9urhFk$VqKppT;z@sou9( zP1A)Ev4GlLDoeA}qoG8Z#6x#|%yO zwsD7Hi?Ea9p18W#>y$!gSOI0i@W~(T(X$?b(mEqubOe+^!!-qEBeZ<%BKLbnJR>jH zp;?Rgo~}UA`8pe!rDNDy(mN8a!KNAjwC~@y6J8&H72s3TW+6?Te3CuauP#z-@DVXtU0fU4snI| zgJ0)i_V+>8dq_$pS?BJGuQKoG!@i2i{aP)RBGn+RiAQW$1JoykL@nSr^|zK=DDMcE zX>k!kN%^dO^5Ykll43{BPTbs;{ar66BQzNVAA}ZCk0+D{o9L^TxkHAnu zcpQ{~tedYI*1J{}I2m8Q;y;;q?yTeubvGle6#L~4bYg#*J)5N)8Yph=@ZxNSI)|#j zqf4kALFTb@#Nd+4PUfn|t-{m%~TN|5vr z!Uqa46e=vQMs*`5E+GceK{S~=QEBm5bGvMOTgL;#HzDNZ&+B}*pnCqXO{2NmtIcZc zqyM3hnsX@9c|Rofo!!h2RWU_gLsMf@nPpL>W{1J=$}~8I)%mC&A%{pLAT^&Gg=C;J zs3forIX+S4zpbO=X`bRVN*8z=yBYdGRzgrv5Mn%P$EWQI3JXst=&_M<5W$ovw4-zEPq20GH}sGAoYd zYk~;idv;$7eu{;22XYWpq8aHd8nU5!_-%It1L{45D{1kNU_kG!l*k-FOzKbf^BFl!nJIG$h8UW66K2 z;E$jiID6`Sq}KLiS0@@rKC>?*Syt9<1g*?hoIes1GB?oWMSOT}Z0HbMf;JCi%!qKZ z3|+zW0G%tjjk_ruR&AD3qmh*j?krsE9De#e`Jip08XZK=M|TS4RBQ8R#mTEX7Wl)F6#vonF+_99;+!>Rl`gdPYlZwtmqNnEIDDF z1!#94M?(&Ib@H$e(oLZDW)$UN4GJq+j=a6*p8KMn65Z`j;%e-ShU&837#M1h6Yw4aCCXh}V6 zXV=_q5g)F({V)_!Yx4?a$sH+)FmN1w>Ow+Z&$KJAes^WP$NS~R)~H6UJc!g9x&5_0 zvOimYvmXFe^o|^2gQChD)5~p!pkupQA-3?Px&y*~?tr}aZzsmu9ly7!xvtnv7G=wx z2~&^Fj>(#N$*JQ!GCd_>KV2IY@Emnxr<@>=CtM{4A0wFvY?Z@VZZx9z$lS-s~xEOWwFABD1pPXwWT;U#cvfR*y(IH z4~6N*%UN6fGZWBSyV{wfse*iiYqT4SK*j(fEnzd&*VG8own)gF}wUS$pg*CtSFv0LVJZP925Ii3& zE@n4_!mg~0Q$|@<5nP?F&`Z;5&7(VWWL<5**4JM+?A8}ba&F0a64@z1c^wjVoXO_! zuRDo`3sTW|XAp%)Bh_PbnkL*e3yr8}yeDt&Sm?j~`LNNG1l35z?9A(Hn}*jm zays5`CUL5_H^34-tz*|qIi)8&(7ibqyngr`Nly|*O6q7b2&{;VYClOrX6ZP}KsY;E z{Ly;XJ(hsS%JDOK>vYL-BCzf(A^^r`UB&Nhp}uaSk_$%~=s+-!XOCewO?ds1u``%m z`Psej`Y5Mcx$k>3R{YXQyNNhy)yG3HXG>g1%Se~)FjCW5Rn+Ed$)t)sQ&_R=A$=nw z9)Njqq_~bsD~3w%XFC#2VtyhX0T8CDdt|=V6^QV=U9dG=D?WjAsA$zQ&qu^6=+$DY ziB*-D|DRc_$8jC$YH%MJxP9FCakbf|+&hanna2BH#J=)t#6y_zFc-2PvX6O=EbK@j z5}(!JTV9w99F+Y93M9$vlMl2P_g(sBhyiv%5S))%`;$|cbF|zF&~6nP%vUB8 zP?j!s0;XCEm%QnxK@{Eop|{m=b1Gxdkl9_nmZ_4^Um;LuWrXK6QjhG7t0xHski0RR z>YDi4-tL~9PCZ>HXiY}hY$VIJ0p4x}p)ArECjYfrHP=`)f9{I@=fY{ANsU<@c3$iY=q?+yd5?dh> zXSRb}MxoRJ*@gEkdM-@GZm#Rvib6T#n@DvI%O(Uw*{bS=L_V5)e;>TUSK4i-lp#pH zz+@CZG(JI&>~0433Qqm4h(F9YLfb!Hsi9moaJck#6(fmVe?G}@vt?^n^=NGk`7o=7*I(Reqp% z(^PQE?K8*Z((4{-t@K$W@N4)i0l_?*lHD_#l9g)TU9{jx1qu_4Vm2J_IEUCU#k0mT z%RUUfUR86hn~W@a4HEYAvjDJXV0i(Tczutb2j=Lm5Cdsehi=!Zs`IMMdgE#ENSNmo zzaP0XEbNG@GZ(LTnYx|HtADaBwE26R2H^3$bszC9=uin2f^1>}xY()SVn>6EZ4_SC z&Czk62ji(?6c4g=;*;49k*Q<<$Z{^Q=bSXgQ~l(sm};{mt=KHdS_&iVIk(RyvR&G) zJB)rypbuNS+lKY$OY|R51Fq~{SZKC?MAZk29w^oZ7q+jRUJNZJd+|GJBbmvQWKBba zekQ;HDf2Nl55;HY)c4en?s>eZQHXeh7BqzBeLdF6ntbzpPW}4;wzT`PKPfh9K(LD#~r<@jE_NnSUQm;K@5H^i?6xarq- z;+R4+8J8hzmEa&$zYEGCn_UJiQrE;cu|O+6xciS!ZuizDka%QXVicnA;kv%!@vdGF zk02S^vs@(X3S@igbjA6u-U>BHWz19HV^;A}es)(b%aV!Y(ak>yy)1oiY5?u`x9$kR zugCMKdkRYsmg&xJ7s}`=!bw*7%i5 zfekg)8~mR6WBqZUa-bOkcR}!`HTJGIkcJhz#I$*>;QgA|=csjwzEAbpUGDUUUSppP zzS%>w*l%@IGfUw9>20ytlnB*LS^ZJQPe7_IAzB`G=`Opy0?DI(#QacS%Tkb*8MP0N z_3?3-P6=&J^kR{5T*JF?7|!?cnaaK(b(-?LhVidi{7uBZY^?k&eWJX2f#)cG7`2^E zhH`65*Ojiue8ciBF8knS-I*VJ!*=#cuh-`#6PtG|7hGy{YXO1Iy&2D0)cO;k zr0+@Xn0X+usnxL{l6hoCKqDVovi1ubdde_p{nDoBXHXmEraPBoScI6gYWMdcO@|Tb zUHl#Yn4ZbPuooyvf(Ijl=16)$pPnw&-|WSLG--NtsjAMC=PK>$zufqeNecJsMf2mLIs&z82+RUsOHx; zGrG`$Vx*!~HXi{t3Q@Ba%7TYmRa@_Ee|!M&%9pq2=snvzuSyqLwmD93M%q0lM^0j{ zL<+n>Xwu#6I?+BN#8nD0yIyo+5;#INcVO9F?6&|U0aO0=R8%w%#WcVWJ-g@eeuYB#%&!&GMsbPn|;l_}k^-9>)v`qn>XZNE2?WR26Us!bf*vCpp6RMlFKgyGlN)L3K zZkM@5Zj9UH`ec)Cy|sO`*dHQNL734CQ;yFKK5)Y}Q{7i;q~|@@5wrON=H-FT`o}ua z@6D~mnN^P?b@lLSi3CT1MbY4#ge@$gc?XEvzL68<3;zQj0%?#Ib_=~J=9p@o)uA^` zD9FetKjCcH;HOFFF0;1g?1pLP&@+==@rwQPlW-ePQV+|!JEROst6K+c_dl*2s}bJN z%lVy+XWnC>@X*fBmR8S%5{Ok!Cq}{6MK=y zUVvz<+2w9CPoWuQebz2j)6YPp!;WI?19@XrU-D*hZ88?QS!5KVl9q))H}}F`Y+s@D zY5mcEhd+O^-WqW4arFh)AI?1FKLkRW&*rrXYf_pz1~}c9ofwfjFfvPNAkUX>J1FlZ z+|u&y&I|#Bh+U*hlxZO4y9`mMvzpq7>;@A;^ZKaD?+K%>(x8o2hu))jTx!UXcAVq; zm~AjQI-rDf7%PQ*8k>7Ckr6RyAIl+UY(IR+4X~rD^?nx`T_GydAy|9Y<{wf1g-RHe zj`S=xxQ>bOwd|sFP;y%=dumf1`bL#&GhFx~iGBO|S(TqMZw={@=WsN+5M(1*Bj6m< z&-*_ZSijQbMNxqQ^RUtpsuQAAZezYB{0bNHpP#bE3MKtew~3;{PloAUSmX>MYTnoJ znYs;YA8nc*o2runV7vGx_n4pIzXUS@K(zo9ZQ^R@&AeX?y^}k;j{G(y3XfHk2gW&; zhXvQFa-ED-Yp%?i**|QzLR@jJc@!GXFwa69$w(Xrc{n7I%>o=Ps599W6|no~_yOT2 z1kA&%aSy^q)_25E$c%<48o!TG-?Uh9VE#wJYc_He7mhriGKA)Qg5i4B={w~WIYyJi zzIsUNuk6`93Ms@sxmnM;DQlWp&t>Wo7_`a$6EZ(lI|F}-NeVQ_%R#!o*N-mY&T+Yv znvg12u|^yHsY5?X2U$p^+%gELgM%A#fN}IVx_`pp zp_p;)tMt2Dp#U>35E4T2w6S&*Px4>R8xxFjLGy^jZbJ1TXxv8sAD8eYT(D{9)xJ=1 z>7CY;Cct_%$=vn)|bI#ld>F!40n1LIqa6hvp#P(HPYjAG$ye!-y$K?`q zyy4uY-n4DJS+5wqhy%$ON%|DXd?c+T=2}(N?ZT7Wq7_WGA&p1oDN^n@E%KTS_;khu z-4vE;e_M!69EO`N>x_0KTA9mr&u&e>3tG9Pp%m-sukx)z1EN-E1l>QmVIrh_&S787 zI`jYId}CJTZ%c4)X<@~QPq&G9tQ0K7!$VA*CCz!aK2GUgyKPGcu4^4GLm+R++?qtg?&{A`v<-mtx-2{3B z@(`%ysTFRwC0TP(wServXuLg%T~UmW*I+2adWP_|u*$;Kg(=lcFfF90o%z`=%opai zvXUP1fB;3PL=0Z&bZ1-OewXoOi4s4%z((zH$yz(>x3wAW4e>r0O%EL`*D6DQmrUcr zbHRWWm;jA_;iMeWkP$yUeY~r?XF9i;lG}nLIX6?Wo0|4#J@a?y*K_mA*NF4BkusSJ zk$L%$GNalKr0kh-#+jvhNN4q5BfnowquyLYYxzuhHa}X>0v!QAUj^PfbA6#)xNfN9 z+GXfJ&ylE%+j6+88mU*;j(@d-^XvFWXD*O}kX2p0qN(nOGk^(^_L=)WN)Jj=_=5!| zM1SaWt4iWhuci#K^8V%hf&d#-m{?j&?!YpK=p zq7Wu2!N;0bSK1sZw$Nmp?`=CZ&AM!IBQ8X!q;hQMcWf!LUM)&$Cuh{ zC}1rK=IggJdx`9kWQ#Dm@SooF_~pT&5qs4M$GH)Gyz4L2DLl4xpigxcY`ynMqoFZ!@L=046{M_P9u=gq0i{gf`8NmCDF^4>4H_tKCZ&0m0s6b~Zz`1z-Wnfq zRtxOFSlcLk=i2))Dav55+ER_re@(ZF_Tpows@G}EfgrQ7|K00>BB|T*5%tc?=Uhts z|ERS>*<0>Ib}3y-WWUVD0e(8jSuxb!{)EXGQBeALC%_|{#1EXD59(*X6L&c5l17Dw zkgVaw%h?;X;=fUuEw=L|JvbPy+n*BOlVj{Ql~H&6)ZEQa5{dZm(iuF zzr4548}EbCoc38`lH)5^2wt>cpM4I&i}?ceL=w(b>wruwF*I*1x~jT{Y1F2)ui}@P zE`$;%fPbbppqChSoLWoon{HsJZ)$W9uAa3ZaK7siJ0y2Y=?_wCmMNpG+G0b$DN2G6*x z;zNlV1o!#$QROB`##ZRM++(d+-JE;Fm@mxHx1EqqIGU{h!g*kAvz_#-N+nl*nd!IC86d$Hd z4J~%wH#2S&8ZA4?PxFD&7$V{r&2F}#z>xbl3+i2K-6nn51|--_*I9$cb(zX+CtafEYymGDsoAL7F2~VYtBb zG^HI88kk>O4H)ek?NP41JkfnLLM3Z|$(+?{d_d(HVepN1OtVJEHzBAW+7Trp{dbZN zDME|S+#7W60c<1x&MQocRPc0I>4o=A&XPv=?Ky>*yaF=PyD2eHB*H+>L*3&2d7&^R zW!V|T86`&0Oe!@NzqjgBio4|n^MZCvd|5yUP}}@q} zGjKKH`93s$D!|YU?Ku40&Kd5Lf&tCh17AP14fJQ%35926Wtlow&Z>4DZ#*}fm4gFo z>Otw&0A>RN^DVnlyRyxU7I|RUgMvpleu6^V8OhYY(VE*b0k?AO;J{k%hq+K2%{D)W zMp-Y=$W@iAZgqQ+(aZk6^jr~#i+$p`m*>QD@*Ygx@EWvgELJn?y~w$8*{PWF2DYBd z6t;!tV-SKzxadK@ZrOvT8uQo2%n@_)FyOOtiz@8A_c?890lOCOKvwUXT^8}ws#*>< zPo$Z=rZ>ap)V8YGKCty$O2(f@T58^yGUIt#mI$hcK`tWvU$uCJ->#@J2@uDM{KlBL z{L4{7D$04nxhsjOF}|81u*HUO`xZ)qv~=JmvR=kb8zE&lQ%bK$rQ!}dKEUBV#` zrPoYV7x&0bhtbChb5U?q$aHeaMx0As=~F@UNtLAHuCH7vGVZ+9?p2CZ%CQiPDVsa( zqc8B$8@hz2f1J9@??0N~=H~HcdYZ~U+!ooqL=3*uXbl(zv)-QfpC@e#gd*!2zdny@ zT^w>@<%&QBw;Rg$eZ^L2A#4+=n0)t0o#qw^K}=#g!Z2b1L_|e41Z8Hz6u|?lb<-=} zWIvnDnF$_7^v$?PkB3J4+J)JCa@@PlEC2S8Kz9P$Tx{SvT68%Y6EEcAVx`^* z3JK(V8+G{nOpFi9Zgae~^{9S(#mQM@Z^LDNun_;_)0l0y&G5iS>v-yH<}?lN6cLfy z0FysTY5%1#N)}5QI5t;4h>#-LHlc~gwHz0rvO_l1_kBgqwe+_>TA_pPCIx6v$JPl-4>5qLg-&-4c8jc(JELZvk|PJq9d zeW&7%lJUvbC^#L2qzIG(Ir;Y^%J@B+n zbsox&qNGL%qI5|Ixu53nZVAZCY2e&XkFzyWM&{-;{-82R))I)_nfty=&8){vwug(; zU%urB?TbZY5*IzUL%6?4od0!M|qBo z8?&c!*EWN{{L^z!N<^yWSFc{JDn4&uXC?Tw)fldJ3=27~zHl`SNh-+X{1!byZ9LD8 zdvh`$2E22I_g3M#CdAumvo1|ze@#)qikMi_#2DS&M!D)QkJJ@iR56By9}UE(s(5q^ zDkzBm9)-F!?EheHCaBQJcdPNne*zt0B-H1ROn6gfTngWg6u$C1A8ZXzqP~G zk1f`fk{1@&%&*{6R;^yWn&bL1m(lCKp#LsuPmIG0iT-p+Z(V+@9IL8p@XAY#4m|U~ zS3cRg<%8oFuARtj7<=w-Oc86w7BR9bT%Sgs6*`HMXw*vM)M`>5jHk++y@EkE!rQl zzm{&siY^6L7ddCz*$6^Ii%^KMSuMCBt^F11>P;;lyrRT<+q)^^B#27T^O><>ZPtvS z`K(_4tfcoN5Rn>P?vs4}H?O)@?5Q*~Gul^?vPW0+T|NZ?MKKPtLP9tYI*aebAM3Gb(Pf0fKS){H%@4fRvGp`^M6BPy=GB{gwR4;x#lzsW0EPFxy7s( zDhU`}vwLA>2%)HG&CJc-S9t|kIauBze)p$Tge0DV;K3)*L5vx!2-xzogM-65M>Y(@ z8}T(XpV@~rbxwPFROeOIR!go~_DqfcqH5?tvJ;`SAYK^DXuE!!A^NM9ibx(#9a82^ zEiqB*F>OiD&ZGZ6zxZ}$f@9{Un0$WaeUhFqGb_g@SUf%Ak_(6pm)3y`?r=Znx0fR6 z66}77WmcBojOeESS!BBxJvWc}Xhf))_?^1{eMhtLtmY~?G-&16nLyyHdSRhWW!=e{bE{e1q|^?>te+g)JnG=*0(X_*7fnu zDgAo(AfGy-(H8CO*!uR)POoA}zByZs8qL5xE&)fz835i#+NiC#7dp>-D5 zmTf$osXSB7nzi`ti~dLQL|A+o+b2w%_vHvQx#S#_+~^md6JB~D>GNf|YRZ`A`;U#b|VZT83~qB(1xnC`$63a?nX zQb{-;>6p;*A-W1Os3xl3HeWG)?!NC@FF9$Y)cfHt_|b1!M0DgBN>6tuKz2iv?sV1Wddi{z-cH7l+aH8Lp_=F zKi7K|_Y5JiV>eUrxg zxJX+&*s=!c>}d@sgD9(f^;F)rm{q?T;WSTtB5-u39w4|S?o(eo2=+iM4Bq6ZrjI!9P-+SydwsD|xiuP-xlL3~?asJkOuZ2o` zg~WD449@c6>NZL`hYNB)$iPX9-kJTC1g3d-cPF*rgbmu%{P^9wQdhTp43Gm)^ z3WJ=8VSpQP6Ea>imNhdd3oysW(MzEN_XXz*@{dT`e~s^9!2ll^T`KA5=v4I2`Fse^ z842%@T=I#HE2q2Kc3D}Tyx}+?y6*Qm9WZz;(8ragW08(hg13YTCdq7G108|)18+FS zK78@rpF$M^{ImvU$U2M2h*moHCayy!h(o+JIjj!~)_gT3P1Scp1E!4WBT-1X0k~ zUgFp*x?h}SOh>TCZDf1gnRGk%@~ZpG2wwCT+^4;Z72Z!;OTHY_;n=isyta8uSS@I%`tjf&n;(JZeQRDN5ry7+G7AXe(o<{a?Zr_V+D#cJs zhKmnhy<{^C4_D^9=W2WxJ1TL0EhU$6mGOGMhA)ERY#w(&O*sZh!AMW(4zMN~m$!DhV3~{d`-7{8@uH`Nr0D3$|-{{gxuj2t^F- zof-FR(YQ{6I7`&se38k)(`FXtbTgN2q$$GE+PMghvCKjb_xrwsNEj^EHVIjBngW1;dVD zXh!z?u5*yxuKk-9&DkRiD@00Z)r9S+&KW}fI;4DcSNBFp}LS+~}eJ^3f#e&B^g#$?+qWT)z1I;G_av)WcA;=eIafP^@7Lh)dcO z{T($7iJ-?+RbB5QNTx4CSHJIzJ`}D}`unq-e~kYp3zKFAPVxm9 zO77pN3VGyAqfwMr~p_Zx+Vj_a{9XuojY zEC}j^sR?Aq+-Aw`O>zCSdb#}2pw8&SJzTeT6SPEYdG$Wzni~o6v^_PjJ1fXnF8}Gv zNuebU2BqMx5Vyh9o;0d++Vii0eOq3_#iqBtVcX#2@6YsAM#Fx!9fdp~9trfyO)?z& zx6qC`*G{!|wy(o|KFj+&q>PsFcy==}G{~s2Sl3Qw&6+ij>!U*L_70F}ih3KG7O>zn zJout4950zk8pk$<2mvrs?Ud54sgn=0phO-Toj^Rm!3Vo^Aek~+qhSxe@yy%dm%;=) zCJ;%;=NKBhi9>SI&~@*|*ee2m;!-Rl_m`zj|9w56P^6UI)#Th|ELu9AIh3{X&(RvajUY@qsHnB{r zY%Kv|vfEO#=~0CO#q77=4L+NQ?LuvK>2oR)fRMA`UuG0Dg`J_&(n|{EVE2s}{GU)= zO8%oLN_vzKx1N=a&GUML40P}H*q&;*->pM{;*g(>pGZm)eUJ{%8s9bHmqc-YMwS5> z$z`j1rvj~I?XeI?lZ0YSu_jufOJc1d>_nHoXT>QdLI8F)@c zt8KBr(C`7 z%9&^IUI!sr@+Na+WVDQzQ?Dn-j@we6pdeVbdNRm!@Z-UA*3}Yxn~sE+O0<|@T(>1H zgG4I6A@4dH+9@OqLzvj_YVRa<&CQuPLM1xWQxyXsTA)svW|)egctg4iTT81`N~kMj zNISZ_4gQWz35OEMO*pPjsO3qEZ-C(skf*3gP!prbbY!cueGUG^8X5g=(wE!M5yq-h zk!qDm#HYNA-zg6s@nC`ylJC{G2b^ts^|<}zx4l~HZhw>5Gp(zz`!6J~zr`q zz(&~?CM$6=>$Z!{bhiMk0&>`p%7zx58)?MQP@2n>5{YC+feYXZkjNgV>O#pjk$n|p zZXBlH`6gtgkH`+Jrlf}Hke5 zcoUw;o4xctOZX6X_$_VPjb_C=X2XhaTcB>GPAsnIQQv5To1X=s?p>&mBQH7{$+YY< zE$+{(_t85@7#?y@3uT}l;ghv|kechmKyR3HNfFfyiW1+pYPBxAH&PUu;B+p5fTjH) zHJr-1focd>Jo4P`d z_`Yu)zb4ch>hsBrqQOiG!Osx!wNv9Uql1Yua!*t)YJ~ppiyVT;_);MY_TW9-X!(s6 z8c*`ORm0>Ly&J_C3ufZMfw11yHYd=z6{7p9Z#Jn=9T#{R)aBlN_AJH4(7%=>$cqxs zPqxG~H)HBa_#?#CkYu~_!%H*PCK9cEz`&*%c;@tlZZ0?b9 zWrQ+)-|lT>aVU(P218%sgwo^O67C@)W!BZ2ny1ZH%qYBf z-D5NCzGz(D0vDq{g#86k-X-E@)GdqnJJfdec1jVYjY?{S zT}o*fDla!0E%u5Ued*S=DXD1D4-rWPX9E5?3|chgO7&*4N2`6m8xv?3go_=S_La~6 z(E9SW?gDLswpIN}R{aXT323ve=K~|@EV#yy0wYguj^U0>`q{Ic!KEHLeRtCnb=@h&Jxb8CD!a(dJ)_`yx`OO{X!NK!#x&VMELYou2u0F&k}{FPG^A^D!H(8cKEqSyoC|9S z>Qx1!?J?UoF*WDMXPNjuPD}Dc3bMhb5O3xouuYxKEGbE&i=_L3*2J&gPV# zI%`asKu6PvDvq1wvkd^jNN{C$}8spe%ppv>ez=h##qjThip zIRmlY#nUm5Nvwd@F$)ix`(S$?JPbuCgSeL)qRDdKh5#iDRwP zsBry6<5Z97^uHS`I}sc11s)e*pKq9LW&w!XpW&3?Od7X9GU?2dIMls;wzu)&W4V8s z@{8I!IfWb6-!e>^ljgs8p!nVH?n zReLoc;59sNCcyF4JN7ov$(< zb9~08rRKX4X29cW7AT11F8A}ys>@^tXvNHgihd0l;f#W}ZyijVp?~w?dH-niMm-5?mc}r*ufnhS*N#Pe-#=v#$bsIe}IR#gaxlTFO*q6`>O74^NRuE*jIX)n=SNsykc-gQ! zKepLz35Hw-83C}HVj-wZK-%#z6}ax#x7fhRMpVn~O5;*wKDN%Gvq-zYZ=$!UwdADs zJsk)qtS;?9n8wtY-+JZP1@|9INdlQRZbzbq5Vssjl7h1|A{>-< z0JN<3^<~jbGoiiB!`c>SvWI1A5}A_R0GK(Es!*`ADEEEs=l)(9_HV!IzWyoZX$OIQ zH8>Jc*FHYbMNmpPva(1Peb6fqoo_-j+ZTM}_)uqm<3w(MQF^cLF)^gD06i8jH;g7` zrfeKLDE%z?i~nZ>)jyN!FNa_yP7ki~k+u#2ZKkeovcJDW`RbWy^%x|cCH)o6C077t zGCn@uRGQ_&+3V8h`a~tVOu(vXua7J@?REF6Vj}~d{p_j(WmcN|B>SEJqReXZ7II!s zQ#hr*99(j1-8Ej_o7tb53_jOg9`%`0Ak&yXxt}o1+|JqVYtdWhCFAm=-r} zg12T0dk(qTjf`w@yXEVc>G~{L;m;@&CWX|2+EP33FNhcb<+R+sy+}!CFLrZai+C)x zer9#95E(&#e!CyY%4k$sUv9r z+&71`4-7pPUOo5WwF9AHrs7j}uf<9f>wm#RT~h=)+&~BabJgT7=_IkF7Szxe3AqWW zzY$IuZwOrU%<5^!f}lQTD>`T_p3doRM01jVHN~zqvUMPQNk~Kr9x-8Kr2VfKKwMzB zI1L(s*Vno))tL%uC#|#6ru_WMF{hgA->odIY~Tdcgq^4pC|#yRfR;qlmdXUbtR_AA zSLB(zKZ{f7Hx+U~T}?zNVvbVd6PavItg5f|mVGy)T~ZwxOLlMAJf$Q&kd6xg1l{ab z*<-gW-3m}ZL$Xs_ReeyU0xU7HD1EHjQoeI33$XBuxetVyb?twl0898bIvAc7=&+ah zxR;l*h4d1|bKu%|miFEbFPXY=u03n)!cQ{C%{Yp1lRbSw)nGq3s1hEEhv=g{zC5Ih z9qGS-l)n4S*3Nb{iWmY&Epe4pma)6BItpD|VV-nAOrEkP$G#9WZyD9NWb9^CG{@Dq z7OXetJEhPgb}|FLy!)3_UiC-A#LF4n%&sl#<~VQAyM08~=5NY10P?q9A@(9SR_)&y zPfAQ4g$bjjH{iZshv^0x*=RNS3oMj6JZ1%`o4cfJ^>W9V@tRV{wbH5rhr`E0QSR8H z*P)e(G14BOeqexPH5WrUim;^Fa;;uW+t2d_vr?n|E6)xVUa#+THNf=-7fNQ}&7DUBO)+<%Xm+3;J3 z=vSGxLncg15ZIEBz&=&k)U3^U*v;3;DulKKt^(o=3nKtIs=; z76VCSg9KI~Ia!0V(i?{yr#LiTG0uOT{7FcKYqU5wMaI+An5kiN`xDXD&B>oMp5Gba9`3`{Kb(DVKRrPCC{m_|kWf1Cm= z{*fgHRLqjlHjY?A^chuEQhMH+a(^>knx(zguVMq)=Frq#_!D3Q2Qyr6tV3}PoNs^o zc3mhl8#o>qEk1Hkd#Mvnx=r+XW7?k=yEZ&4cPjl$yXIX~L3ZiWr7%)q@(@>Oe)ig# ze!YaWj32-9oYD^dRKZtS+q-)`UB&*)E2WT51>haTpkT%)+h(RlKAcZvc@z5g0`JL+1?%;u^oz(RrA^vyQ{fAz>;IGiMQwk6wY`hjeLpjkrO|0Ekmp25A7v0yw+Ix6X_~A;tm{e ziC1KCQ}-9suQHJmsY@zK9i7JU&pO`{Q>&hL9pUZJb;fi5YKx>Z5xs6 zqv&=A7dj**tq<<(41dEowB*ThZ?TLOX2>dN@GShHo8(t?LoN3A6K-Y&;my`tQ=g7h zqIAmWD}1tw$IMiGR(3^BP71r}(y_qn!-VQd+u9&KZ-ZBs9^q`*tJP4?ByAGmU{~;_ zzo)z&TlhlGL4CMzd3tzen)~LOHQXo45;Xl5UG%fS7vbB4Lxghb+_M8eu3F9(8=|^Y z{DysN1ND!rQ1tkSMs3_bcizXa#5WD)2b7wpWR=&tki>c6b#otJrU9eVR~dU2^IXTv z;%p(U{zd04m;5%yM-bHGavD3tw&3txf%}>tP)+Z18yC>s=fXE>yf3Bd*#a%FABab3 z8DEaQuB2Ojzfj5d+?3~ngN)hSJjeWeuW%l2?3ivwGKpVc+7H~-5;3vX(89Rw`I)4p zOW1=axM0Fc$e4D*={hg@nEI5SQ7e~kCuT`yQbMg+?}( zM*_*Nr$-5*r7S^#he1X!eM73ko;7SOqQjs5q%i~7_WYGB;NO{jlS8guW)~+8Og5$*q9$Y8g$EMtX=@(`>Wd4% znEjxW4A71k<~<7u9^%neY9Cv4M~kmYNJ_9qr!g&&dxXc2CgOSgJlMCPw~UMR*Et&{3k(~@#vkc^_iF1k7w1hOpAK5M;R?8@{MW)h29<= zt35qM4L6wiFQ%z7@Z=nOKos{x=@HkP8hf#vQx!K4;uf9SVQT9eB3z;9q?ZeuNuabtdKf0%aA#@b{ng+YTvbxJ?MA)%8%(YEqtN zfNZMKo^Wsvr+q84VPqO-ZtVA7@dtl$o&Yiu2baMme9yXt)pNlO-LlUGcjgYawsPeQ zleF>tH|7sWKZ@!{wa(-|d(ltwhfmX#ob2{7_!9#2Kpnf}Tvy_$c?XV1E6mxJaqYCL z3}4HS!%~{)QU&&48;^s>y=VFp-EzK)0p(|$F3}#Q*l*1H=Ckf9>Q6ei;Y|7eC$8I;F_s3!uJbX8|hTAQCe`hPA=N;0AB_%_OmhlObs>F+EoJ6%NNI^h1eOz%+W08#|kdn7)%g9PFQTL4mBQz&LEB3+m^$;DGMFES z6OzT`#Z^VzM@h`K705?dGf0!fu9uVi$skXHk!QzrKI?u~v4e>zIONiqp4`Ab+i&5a z4B+Oc7Wda{c6m8QQA0V7)4ev}4M3kgG22U!C$fMT@YSxDx`~?h4+xeNi^%_EfUV98 zF9UYm)+tDCJ*EL;@!BhWI4e8K8yg93h+tu;MUor4YHS=(_KCp`QQ@}59-lO}D|Xr> z%#r>?4N?^*$1&t3Bnm!WWhUHFU$CT_>$Wt1spKT)!No21jAS8+ohZu8uojQKQv_=r z-Oh{KOlLR+aFnvC5fy7UagXLF-%v>#YN#zbErZ_t6=nSH35*)qwB6-BaL7f5aJ%j% z6eHhpXY(&_M`r8OL~~^ain-PnB%VKFO*1_)Jr(LWH|Ui1svM)%^h9qvyw zXTb|uaNn<%KN|OJ#C@>rK=&f6%O_O!n(n9W4V8{-K`|^&*iJngMdZH?-L6~&%n_4^ zqk*a6u8@nJ!Sj@(OGI-cBk}9N1{?)Fi=^c~%5R_Hz@}V-Qnuj0a>zegh7z zY_a&7p2&6_ouWNW?NxbSccb#b*rvZ&aP&5?b8V--uVL(lo z&SLmuePlf`ovD?~;ZUFO#!vOHGS@WfpE_jI4I?#y+u}x2Y=R*q{L?O5v2e$warIo+ z>E@d2q&fRQH<(?RJ?aAUW3Az}!HA+lM^r$RvHTi=2HCt)KKTlv}(1EkA$< z6TtBN)$by!$RI~l!egBM;8bzdj~Fbkgu^GuzwI~eP_Y+~df^boP2B71sIxAD+q0EY zn6!O|hQ+5fHaW*xHDupeo{$d0MxI5}UVHg1UN~I+HhhBOTUT61>wiOBzjyVFB;sYw z;p8-5RI7AOtUbeNNJgTQq>(70z$CzQqTEvaejLPvEj%J;y`AMGG5bRunGoCxJu5xTYLt^2|av3C;sBquv^>E-yee6 zo>u>jr_*YrX~FTAo~&WO+SbZL;UqT5!KTKL8Fn0y?YAVlq@Q^<41ky^v)cUm^wX z=E%jFVH+2!8!!Elo@lb>8`ZNIbEZ>YpH1si;w7p9pu)iHxkFnch6~)N&j+yU7wGt; z)ANBRWTvjkUB-}M!_{DzYWFf6P;^TqDx|DLWr+2=KEqSIU>;-)z}jE^2+y!w-KI1P zu}=B#l6FJ@0V}L|ct_?R&jfB1p(AWhA1gJ7=s${~M_rC*nL=?Mxs)Y{Il&e;y1sMW zcOd8}n-V^Vxe6qV-vA+kUo>U%g)JZo|Mp?iy4Vob(cAF1 zx&p%$e8qBn#BZu^yXD-Y!^%ULh2?Zv#XF|B*Rm(Te}OOwuc_IEHdGEh>TYuaJG0@* zSS*V(kixIOqXy_piIV$GrXZs|crC25{|myoenXndU~jLj*qHH@nyVxFDtpVYrcM^N zs_6DbBJhsV@Hf6TjiJRIz1!ylHt>d_4Dg?PzsMcK)Qj*d5!GHedgw$laAGR> z17Blv!v$!*Anp^Cx6CsT*)}K2HM-yj{X7W;0&CNxHh{@!>Apu!|E?<;ML3rSXe5U; zj&4gb_+$Dn#)38rjpd@`JC4`-bF}W*s71E>JLD{c1s6!Bvtb;VKr+ZnoVa-cK>Kv& z{eAJ8|5#kyUcEvtF>so$ri!oymlx{~aXlBFOZ45=A8(!Px5CT<*t9=6=<%{Q!(rJN z&E`gHcIqJHzWr?CCP(*0=e+$}hSvUzJAI}=9`&4()TsoQ{M7mIB7ABrkdGjcc5KgD z@n8FK2$T8Vst-9fI_b`Vmk(@LVF8H+@-5NJFQ5PWkq%0e-`7$Q_OrKKZpzsf)4)g) zv}r?Hh`IjbT`Qsi;0U`yM>kMd_Ct0cZYR8Acwu{@6A~dPR$a%sGV!yXQav`C`oFfh zZNtyRAC71w-@%ZWc%F4tUFl1D9A1p0YK`3>0GqvXFarXCRB}H)e4^R!t?n;Z=5#EQ zzWyux#zb?66XZ{??Pv!WFfRHekd&%pw$~9ExDJs2xg12`dJ+(>XEsp~Hgb)~<<%@Y zpL1Bda%>-VzXx)3xRvQO285hH20UaVP|~fz!dq0Dh0SUsQz)Q>l~4ggXkgx(j{}AJ z?>0`tSU=hywtx&g!b;F9L_?3+SODM%MX*PD-)hsHM#g37FqrRBWFeJFs_`sVy zFworfda0EPAvtBc`{NIqO@FibzNGeknXIs?(Dgsd%hD8h$@T$(TU6(!cR$u7W%CEa zpFm^mY4Ur6nSEz13kY-%iiGK*HnAS_W7_i z?dx6G6wKP{9$>=KBqy~MMrm|%J)Qo~BSO-dX{0URMV1q$Gd>T7( z*~aP@l%>3paq|BDIFbZ*_JFjgxPMwFz%-TE%iPqWfM z<~jS)%O5i%hX0&xs!K$gyoc+O$&HW+jsUAaDo zDir#3luUKLam`J%vY0Cn<_4sH^sqEb@3r|FXUh4 ztF57#V8jXMFPML@W=G*dTU67Kev6D8MvrcFPy8H288<9t1T-HdT`*VDFg}3oQZSp2 z1`~tKXdRR>RX%W4;;$to@5c>~QBKdmvih+~KfDG?z%25gWC4k%k6_YNi}2~BEEjy% zC4L8`1_DzKVivHTg1C7>WTc~eqNn;zeX{#mp{-7dF>DOy;14>|zf|^I&&xeRY_@x* z{yFAMSk^D(1;_pAaNce8J8(WS09!jQ0f(}{b-zM~LW}|H9c;n~o?5#>Q3GVx-r~x1 zRPAj<7UCh6_16E1_c$=XQUAi~ILke7&V zxa~V~HVL0<3Xp^ZYPr^)3sY$|Y6q2f-7=a0C2DasbGST~Szb&`BxfRWbEw$C_up;H zKr#0MX%hGZ5Fs)DppO_T6O!BJv}ieH(q0{4#F}#lH{N~|%A7X8y!s@((Vgiex2Diz zHH->aC+8M-y?9xg;Hf{+s)!qYA@QT6f;~htF*8wON5xqA4}mD`l%+w=oQ*(9`AxhX z4RvtL>|N?c7z~Z~45*KUGM9Dw`QA68ZOD%tT!YlN(ixz=(pc!_Y!*Gym2dRdfumu5 zoVYj9z7gX+Y;njnkq85W(5f1e(lCz9q%t&rzAUb?Gs9tI@oA=2KgagK<8op|iI2Fq zq;Ftv-XKU~LXnZtjuC7tt}U&55iCtYXomp=bU#X)JMd`)2S?x0%^&>N7Xz zNd)tzp(G}xsJ`k0CnNmw#jQs&uC2KI0caaACO@_l^JE-Ix`o?ww&puAS0W^QgvYw7 zq`rq@tC2&Bko@*ZeHLB-!lC1`;(e~Ec{{Ok6lVPjHXyq^7aB4D|D6_8*D=22_1>V- z|Hr;_$y!a@$G(6c^Htk*u5k?WHv9RGTMFkSjWEja;pN^S0E5jF7eeoeKsOWF2EiKO zwLS?Q9Y49~>XE*3T(pk8^I-NCxae~xA_s@$VtNLX@vDYX1-^z`{4dPwQ&sW+?`8Ja zWGO1PVga^j+UCY(tXyin7p{AX-l2!iC`ZS;Q)7zlT;KMkOzVuo{|oq49E&>)=TK{ntzptTpTMF_S3Z9DAM{ivZgYvJlo;&jn{Kg0ehG({rtS6Dc;O}h~ z#*`FCAG?@b-`UsS`Ez#knlOFjO{^!C+6N$&vBDp&U4mIZoNj*8mho#9Xj*7+W zAfFrkJ$}z+bG%Br8O{Q)`CR6)3#(dK?ka1ay^*O)96f4+U+0AC6w^@4m2IXjEb|P= zg@I6i*?$GM+no5Y%uavAi* zUF-6;(Q0E1ryzJt)?(3hC=S$y86~>|qqNgZ5Js-CVW{MmgaULIg^W_4)G)>%R3$BRWg>8BS_Aio$NWil?l$!OloMi4ahoN@j ztIzZTC<;{JK{P(zeFx2P61)4o@38gV-_At5Ho8B8Ap_KLufVicx38ald5?bR(`ZrfWT&urMfeb0Z#5xts)jI{NWlF-d+1A zxidgza1COfv4Q7P42}eLjDg2LS(qu%eL4B$*qnc*2vDOdw(eP#?nt@5s_6d|(+zTm zybq;3t9&z7n~~bffF~&~mFvM$c?jmKQW9{oAhB!fd2N_|YaZqg1njI&R&~RKFMeoV zUFjM=Eg^qanHyR|X&Zq1%9~s9eHUidJ$wUOh%aq;odhZ?74+bqzUgICB^secN`Z%` zq2vub4TT2tfz@as|2RN@jli6yL&=FUIkl*p;v$%X{UHjgRIH+c>vAxHmMXTI(7{OU zX@UUv$WUxR_3Gd8vjW|?;~$Y#Op>1odQwy)I4C+ThhE|NZh1BA^}hgn0RTgDw*8UV z@ge}@$UmQ#y4wMxCBVL0aMkelpx{P0sOhHKs^Z8X&JI_xxNTX~85n4G@@m`7;kBas ztvO|$7o@gz5wCnKI2gr263PC1pUWN&Ot`hZEP)PY9dKyPfm^HE1HgUY30=r#&kJuk zPorAO^xug~SPD|Wb`WGMsAS0v6OmUf)0_@r7#)x8;7_u_EvvPi!89_N()HTsKocSX zh7?tMGaM&W!H~96f$r`%HLmhQy!=eCkvnc_B7iGGGxrsqK3q)*M|K*Gi@5kR_R>e{$vDO>xat|&Ov@>CQ?T6gyiefPQi{ja0+9Uy)?u3Y(&}7W zYfHFg24hp`)iE=t(>mpKSqlRjwA>bK4ZjBEVWFUbR&Wjq8p3TK<{7VLE3n;?E2O9C zFY034S8}UA2xBtISfpupAh_gz8!3xc zzthGICCgmyazm;swR*Aj+9Y;x75Rl+se2bx)N7$W9rgX4zwXj5tU7kZZBqIGsmxZl zTPy0-hz*L(s=r?tw6v0c&TjPKc-fyubTjopT{lKkGnS~uGt1(cW`Ae^=sY^|Y}YDd zC4+}4T0kSm@B=iDd}_nu1@2&M29cVT{{YkmU|F$9&52e_FYJvy6e)N>+$wNu#lC@G zkX#UVb+=qz$uEQ$LQh8}C~`vuG75aSoE}1=y)O^_=U+o15YAl;Y+|DVDPFD?HMD3) zx!P(O&}f!)M$O}-@+8L(9}bq^n3&l44hwTY|0Mm5F1EAvze=E@Ti!UhX7nGy?wu{m zFoOnA(S_MU{j2OO1*Sq?6(V^h$HdNa%~PbcrpY~N|A(uHfwwa z3-b#DeBk;gjb#aFo{`XYq77H+xmB)+R}s;1u{gxS`W4a^)D=vf_52wB z`pw7wxRZ8Uy*j?ZFf9LIBo(;lc~6VgEM~g}QTYv_)_ffwO+NiysMCxuam)-C%~&qf zyqj@72ed5V4M`jFLutuQON|w)-M$Y*qL8kPfH@ruyrVr^$$3fzyY{f&4`~nge0w2~ zqI`d~$vGVi$@-+vVu~X?2`-Ul)A^?>xnRS_#r#2Uux9wd8D;~J|NYRVz4HK? z8IaI~s?l337+62yX7dd>PrQoY%q9v4SBn~E?;#aND^dE#A`;&fk5!Mc3_D?|+FxeO zLO%WggtrSt2J9h0ZR4R?!A0@dvp79!Ls|f4`F6Z}yV730I}2(qFX8sT4jyU(J#kMp z6ILT^<^4`ASSe{F=h%f!K088{x3BM)@Yj|S1>64d7{_Q`0H64Cgwx3 z&u8EF^p3pQkDWn)7PLln;f3fp2c6S19Lzk%$^0v!D@=?2SfzXO?sVw%i?HEl}9#oprW3yntCeeM!`EK7Uq-b*;7w%c*++p=~L7 zlvh>OBT$D7>aiju-D$wAweuK~Z1V$#L@O?>1Gjg>*+CIM0Bez7NioLB&z{I4z|eZl zRba{XyQ|6pxb?e^b;Qz5*xMya{&V0 z<;(A|o6jfl4r34NmWj`y4_5x{K}@hrdwAvYI}CF*acWXxem|%LVWf9(8KrzKFofy) zSfg*q38fN^*R(BZ3q|(4_;`4Wpkex{>T2F=RIQ!8H_p|SDLJCxkuTN26&xJxiF6=0 zX4^MW)WF5lWt5stU#>EcQ(TR$0A%&H`N_c@b6g8fTB*!)Jr~(>vt)u(6_jyGf`p-n zP7cm=N&X3F&`RE1)BDRU{vbu##GHm*zb-GW6bX2myxCT9C5A;qW04@k5RoY5=bSX{ z5xj(xRaUxjK#o*Eov+w^i7VUu&auve>(lH0VrYzn@$-U17n^XdI)q`D!PA#~z_+B4 zC-r*9?r!L$B2|vVT?4WK(mVby7q3`oOau6#qWUrhb>4PaU|AfYC~;&dePyt~C@GX- z(MT%FsZZ`48W8!%0~Oi12ZsvL4U~=*83kxD%6X~hXZ(w(#&-s_SBkfao7&N-4n1YJ zulBXRF}UrS}_Oa6oy;LB;L|Gqo z16P6o*|AHQu{<-wMf}t&#_EVkHa?%C@WhvRAaw7vfL_?YV_+q#+Z=X7RVXdCN=L|vBLF7_`{Vt z>rE>=#wz`zc*+J2{MgXJytRU87Xm8mV@CmaO1w#p^I-#feEj^kL&7*EiHX<2Q;Z_$R3q9=1&X2)1yGI1^W#n1L^J5&o}GxPPK*@j6&_kK41 zd;)0x&3kY_ymkj3Ohyi3p%b6jUarhFnB|6-Ix@i)+dMw^jVW|Fp){5CaQZ|PCsM#o z7qCb^s<9E-nL2j1vbJmM>)CMGpws>^@ZSV!r&ioFOKC%~@Z!+mK#IHR( z@WZ$yYZoyjSxuirs$W^i@G;A32Ws+r^Wyj`Xcsj41u3@6Lim-9$B4>c z+Q$yZX5ZXz_0P5+akplYkh?&}Q0J4Z`f}cervS+lUZe_Jq_#3Bcr2_CRKSWOJONrs zky^C5(Lc%82{dqXyhO(t5WVHawOs-@BQ#39kiyV$`I1LRh*BF8DVLm>VM`P8pI~Up zP9a>vIjd~wVkDFgTRf%0(ZUcD&6VJd%Tz*E!yH(R6GPu$ibB7i_*_~&Xl%T@%yGUq zn1S-4nv0DL+44 z+XcL)38}Kqe|d%Yk)T~^lrXhh zYvTClhtd5+R~bXcmZ~#sB&2+PSumNXyUAKvZsptkpxQ%nvp*pH)*C*O56!h_9up$eY=t{hyk z*goXnz6*;DsVq)bdenV_MfGl^=Q|>^gf`+!Osx4SxFI zG+hMnQ0kwSw~J=v+lu>Q7?*6BOu8SyMBY;t@J{|d<>ypo=4 zT*A3UUt+#5&I}Re?oNtj{vPJ;=~N>3`u=Qd_C?>F%y7KyMc|uienmaqdP4XxZmOq4 zRG*%YUv96+zZB`_e9+&0u}^})>=3arPM4HeL(wogYi}EKvp-NOC7r2U33t+WUBPWX zQ>uVYqjPprT3*+3Ip~_1ADiuww^{sMuB`Ma1gAbmo&;f+Z)Un1wRlpJqj>*kVbx?C z+jF?J$^cL*X5pF!L(meVa4;+Bu{;b#o0ppUWn%H(fC`4L8@0$fpF-*)fjcGd{r)x< zsYm)^kEYXD)YX$L-yg?KExNP7YM$6DapD(CN4bY9(G)hCX=sDBk0-xtgpLJ_NU}k`x2Zpid_lc` z6qi(kK294VZ74}hnK2FY$^IcR;x`Dt`e?JYDSX@0svdL{^){C7S)LOna)Lj!JgVum z&oaR+XJX@wTygX0ndP{?>C=)JnHi^8jeghbV2TsHmtL-q%G^e&YC(lYiaE9%%Nbn+ z_r*Yy#reUxIVq;yQHi*nVQ|w3n#|O@3@)Kfklj=Wa*fZz6oqfIB&0*&6hMDx^9L?B zKBXi=_PQsH8HOG;dLkEXa-uL7mx}_q8b4cqdXG@Cd|p;%v?kp}=R`7@mR%1lD-#lN z9|6p55_IYCGIPtr*(y6r`TRR;eS!tv-SYrpy3xKioXZmu(bIwc{jnib3l#ix+Hl^G zb^qmZa-$+8yUb#=WUny?oL&;m;_l6^5cH95A8x*- zQ;k$pHTSqHg6iqbaTK>K;RP5y9ej;|gl@g1bWgi0HC~kZkVrz|q?4VdvaFE39tKoTkb1d#Q?tVHX5wK@E zkwyH=ul&qPz{kvJAuug0B1}e5S!(1)5*{oN%np>?fi@O*U`lD@0`y;~J1IyG;Kuj0 z?10cE{&Gn`yDG^z zj}L^k3U*{IO92BQQE-TOF0iKA=+3+ zLk#aI;g^xz_PIvBK;~7fh#1Q~JTfKu8j-clkE~`!idAlLt8nIh`MP*3#}Bd3w}hoLvE?!QOH#CBXNzERTo&&2(Z{UQ+^BPs!bQXFjh_0U zC!(yd-1W*oAsZp+qv^FKgalaXvsR8X?4BPREUkeW4Xy-MAwmuI3vJ-gb>*^2bG*A? zcsF`KhB{f?OK)@@eU4o8La{5*gx9D*-YbX>eS}1Wa7#Lw zZYl(GE!KZp>Q!2(R`db~KUs;i#!YuN(8i;4U!5Q7X-UkKeiZ{ifM`+oiBlY%HdpKz zp5lX-4HJPkZ1Wp(m`Sg?*hmZmAF@7NW(n8YhC_hnNiEO0L%SYO${8xEN%jRNN`*P2=QHW~EX}U{cvcmb9Qk+5EGrV5O=H-Fr@1k16MH^fF18hW!Uz(oceG+#VbIeV; zX#-8PptrmfQ_jZ%e;yu66XJ#XcF(;6%$%Ceq(t>iUw5y-r_9qjkEn_9>e$k+44a_c zQCCNtv~@>_pWyyW-Nyiv;l5T2RSpChM79l-1OV%jL5Y4@cUbx#k01|a^)(LL_5)7_ z#P=>a86AeV_*6I{byueMv;ntuI85-xe_4B1ko+cu0k6KG$%hk!P(5kNxZNTE854q} z*{RNjLaXRt%4nfJd5zx`qKcPsRI-4R^0I*tify^Q+OUY^;k`3ZvaFFaPT+vQ(V?Aq zMCrg4u~^O&wl(^u#<1iW)2c6-;tp4Xp!%*mNx=;Oerx|u45oZIjaE*8IniB1ON61MP^}{*6|6I_p_z>@pKG*Dq9X-3Q`xUPEow}0~%``ByV_Vequ7X z1Qf(x7mFZ6X-B*k!Y46~*u`{vs07%xis$ZO%A_8R6}Vj>!}pL$t#b~6a136(6_mMp z#J;m3Ag=oKZG(A+4KK@Y%VyM>PH>I8NAg>87)e82AfTBY(XtrxZ5#W)LB?hkfsA>S zc0#$rAkAe7UvL5jeKI@md_Q&M+-W@gF;C=8iox5%pJ%+Nu0QpQk{puP4ouKX!O>^} zZi@y|ZyiNKP;j)U7Rgf<@}#7I1TEonrT|^Sk&jzSfH8(kCuHq)aIh+}1Q>;&6gar7 zI=W%Q3Ac8K;6&2k6woFst z5Ty~S1-E{Lpqz8Ly@wzRV9?-=hn<8o|} z|3MC2$ZLKGEOzArRS6w)sXaF1)3=r6I=|fg1YkWUsgI!ZxsCJM>nF9#Is8>sxC>A&jk{?=M4YK98l7ego}@52Fv$%f@S| zR!@pekil&JgHt8pAjgFoZR$N*D5|*g*?#?tQ+$UJI5y#ltcB1cXCvs@E`ZaSsC^Cv zRXhN|v74>rf8Hnj`%R* z9Z3qkP~|A>CzAa86O8ZrsZh77VsgCJu0NX6U{Q2$DaR%=kDjyBlHJK!?;Im$`q{QR zGZD%*rRzC^;d$2kpbG%``T{ABLraz-90BGpWNr3c7J%X$Tr?zr`|lb|x9=DM+E0|R z1Yl^g>h5Xb+r8qtev`<0K>T^?-*#Fdncb%2DIe~Cv!EAFre`ZbXg zDb*ImL*a!#o0@$)6*yzHX-t;Jxp6CQ>nxxGcNcV9B*mP;5 z7EZF@JUc`mo_okTIqrPe>?sZ>8i31(>~9cMYGT4Eg5Mz#eDzvT4Zsk3pb{!Xg`-+> zpx8%jwkNShd-7Q5YG>WHH@GZeaMfL)W@9BKF<@l_P-@n28MXb0TvgmCb9)USfYj|6 z5^xOEC06Ac$Eg7y$Ax)25MqURWZ>i4Q)``s-vGY-^hiGrckASVH(w^u}8fcpbQ zOB`-zY4l&f{#43PiVZ0bHS*W<=@*SPi3l9>J@QfoUtfU|PpS3M693n9p9DhpB1$0V|auT(qTIRZsu>styhfo?s zwW>N|xYHvL`yq7=L5>1#H_IC9L<4kB%mY))MVw(JQWjGFG75|UMbQ8*-}!(v%J~B& zrA+~jQ{zyC8I_Gx zkN*Qwf%`!!ur=3x9~9eHTQk)334e{6ZMIC~#4dZQ+OeIA2r$0Y^zi5E=`*$g*CzY( z;?WkkHsA?rLV)xM+dL$I@2BPJw?@QJ&K&??+I)8cKvp<@_u&4CW$#GW7Xo!8eii_u zGX&}18VTQc8e-d%jm|iV4&WvL-AGI1Hf;sr^?5^KSNhqz&Ua{P#@N6AI448@PYoX6 z0^ot8?`Gpd!}h5-FjHtUW&HHBSLx!ES?dpj>HGKhj|X8jTh^4Tx3zA7pg*O9 zihDW|AG`#cctGUDJb!m_S`;{8<^u=;p_*MnXQT(F_FX)&<;mA=+ad=m!539H0sJ-fmk&HDt%pj+21GzTF562E z0T>>!EA&f-P9)PJ4n{L(;&Q3xVJa1D+&KXe1CsaZ~iKzR+sn&dV#^_)C z0FRI;lZqx?ZPvj>3N2FjQhCcy$wohgh~mCkp6~zNl^aMIzKI0 zz>ZtF=6syOWOj?=!f$0;l_nqzCoBHDh>Mgf$K*)>D&fgJkj6&WIaDiqRVzLe*hid} zSY{5C9X0~8j_!r7;*50^JJTRs2;u5^Em!86N~lR78(K>swp}@~gDgx&;Rh zbUQfsb(r0P?M$_?<;deY&c}9jfaO64cG&=+Ey%JM9}Yaz&O!Y3!xLfU${p@I^W34l z;=-ix2W|U(HTe1GAW;q4oGrsh37PB8NKa5lUOV+Tibo^&Cax!vk;fr?qPtd|5zb8w z2w^L3YIEm~tGiOH!Z(18NK_^p3hUw17X!%MehywPM%Mf3Q(op}CRqouNA6;HDMu6V zf?Apd_lKDi1vrUBxGvJl+BSxZN=o_ZXE2&GqXIb0zg6O{nOYH= zlt)A^N#V1o-ZM%Q!i@pLb2fW>%vEr(q;$JK;06>|hdBHsz=7w#?QnnYJQ8l#*)_`! z0Aa2NONrIV(r!P7DE{#4>JV7^5 z92an?sez*)>zh}1HT@PlKh@;R+G{X#F%UU2h1)N{&7ZHzG@>g1JA z2X}!Ep47Jg+=`>s!qUa7%`=Qd84~|}_#C^6S#xej&4JB;#M2U72{oucP)Zf{j-Q?M z)xoML!QaEVp*r0Mnb{oHF9Cod7gyt#T4O)yvg82b2<Qz;mi_b5) z$0#rpT=4=-f!d#!jYq5K%DqS(T`qiMZuJ+gi~>mv#1Fn(3An?Gb}=Zn^7?xxq`-<2Vqu+Ql zzIt{I2Xh(fK>=3Tg@lPl5@5f8&dzI<=!$b^FqZIc7}O)Ek|28%pL@8!k-o?i*R8BF z%{FRaUh%GHJxmS{40e4~yBB~Yj03b!7BIZbJ!ipKx=0M)g4z`y?~BGnT3Hw?QU z+7Vow=Oq9L0?lmd`2-VQd@16*;_Z#P$2igD*)lBQmu|xJDZRf#q#acINh;O3^14{~ z4>&Au0*P=>rk}WlAM6Qssl@`96NU;Esjkj+R8(9`&Hm6m8FGY477d^Nk{PSp{ zm>viG1CNmeQxUj~GkKNg+`qFY-E)WZs8haDcL+Cz9dRiV-G4XphrVF$f7Q0QkcspY0dE8C^5K|0^{te#4jy{2m>1);_~D|E=$=nxTJnZFekN59uh=7_z{)v**i zzTrV8S(op=3K4Q@bo5zz0Pw)!d**?fJK0TIndINt6I8F2H3Y(Jd^P+w7X=xrq0o5 zPxF4`R0v?0CKX`VeOXoXq03MX>{E z+vmhD*M&o6I1k9EIoI7*2&xpuuG*}JfHU?kyx9|&8_2%0RKa8aZE(LN}9MK9- zN}}f{W?hrxX|TMr`v)s)iNT$yt6EyF+5nHJB6iAW^hT!`Etfw&_`wX=O{=1)el}NjY= zk8LD`uZwuHOWP%=-|XURo|ssZzb!w2)<5971*jvuCc{Xl7VTZpl9l72z3N%mNU0Tq zb83eDgII3~ez4OrC+X%x09Z?%{otWye`8a+aC5#`r-Pu>17+xpJ?JKYKY;M36vYXr zeF^c$Z=^N=#bZ0pTV?v{N6Gx%S3jtTyXNF~cz*q`mZUg>H z;uj-+#*zkGYLo7{d_~zh%;POvyMe@XP?$l)tE5dUK=u3B?}f#?d6oXM`e9y+ivsPO zFG-h_0w!GOQkd|l=2*Kvsly;Y2Z_5#PDW?N^tG^~_ZTWTK(0Wwxla(6_DKcW=ax>M zlV_#HDWAa%w^L>PBj!tP?ye5*?%z^#DaYqd5WJZ^M{u!4UR}Lj*r*T>>R@&zav16z zT5xfIY^Tx(_Qslg*2qvTvbA>{Fkjp(8SMvwbG1Z%M?1)lx-utkKBID^G7t87Z%Yp8L|GD@at$T`UxHS}Nz>@wqtQV0>0Squ>%X`tj@@|i zR`6pXw z-Gnfdj0~#Ed!9hp^K5Ag8$^FsURds~`18vf#LX~^q+*AsJDSvb$-jLDz02KWcVFH5jCjnzerMNO-Ij8{?Vi_K=1>wv*>##~?Cm}0aVP#t zt20ssUbA5y$>&@u{Ovp|t=f7@KIGT`AL2=^wIA*)Cj`2xD`paNnZwOt9NIM6OJOEU zUET37-r|^9pBN}TfL`!GwKGZd9J_W1Z88_U%jT! zyu1%P15j(R!!_bs^ke2iaAlu12?&w|Fr6>dkbKV>VXR;qckjISqy$6nKYC`kNG!rt zmHp}c9$X&YCfTtjC-Tkq2Ti~rUF-)`(+lNJi$;JFlYh+Kz&u;<6;d52?d%JBZur#Y zU`_~7D-bV$2?jY+?xqX;^Qmf+0ctU_ptnK4Q)xG@Aqe!4gS_|X?X8u-7JCF&smK9U z8`?7y*`}p?93l{YbI;S+jumvLD{4IM!|ogzZmc%lL^LdFpBfZ^fbQP+E-B12Uz==B z4S}u^IgKv0S`S>BC-XD}x|>?zF|}!pMUm;d(q1t_-7=Y1>7LP=+r|}!{J184-SeH@ zf!)~I1&qlAI#cBr9wQ{yC=2?qexH#hEzcAE+3aH;QQTl_?f$LIRg&O}!rFJX`T!?^ z`e9fpt{udejDW&WQ|0a3B@SLQN4UpBjB9#1?w$7;gTfXXyIKGj1)RhhcE=@cG!2B>;*X&ede9QuaxVe z>~V~=X^)5Sn!rSN>@mmMI?Erpxd5R5`OIAr%2N(T8eO2PU!XKrfP3Oi{7n*W4eay0 ziQhq|t8M7VRidzopx;4LdlJ;h@BQIX+82;!2em%($H>fH*X!9}WpQ2b;z?v#>JRL% z1#JEa!xJQ6yw7`)HW7yocPGyIQhqS@=7y}k7h&Kn^C&ayW=I!`TxDOR;n5DU#+uZb zPo)zmiLx^s#D}lQKcmy$ZQ3bDZASZmHIib^94qdJbcT{v$x|A*vaIWifozBl)WQt1 z=9M#6_Ez#R<|0<+l0-@pnw_>M6b-4d9xzB6oR5a*`7!Lee6v;x(l$J_)7G?y3#6vy zG;RpI0@)-u?&`Kg$n~|;cT4|Uvn-+qTYRoFX1w%Ndvs23=(Al-KAPKd-&OiM=Xu=? zk^izAn3U0dK4&64bJ(%Ua-Y@Q_Q2;T1qmG|XP>L6Vo$JXUvim4pR-%&IcaoEDCnb? zHUb0s3ao`&vAw1R%tHZ~Roy#N3E#Vs&YOv_k)c=Q$?sBo|0G+Hprwd;x^|q0Mt$E% z4wZRo)1lX1R9Kw~w<9lqba((j|DvGI1mj8(J*_ZO(H0ATl;RmcccpKojNnzV5X zuopiT$;_P1bi8d|&W!IK4AXrGB7k(&IFlt;jol zwAT#QhdZbp(}{?rlkIQ1@ngS&O(Z}L?9&Phi<$V9$TPx+QWELZn{ONP%FQpo7AbJs zA*X)kUpLHC;cMQ@rVsi_o&;41;W{k%6nbHZ0S?L=+|xHc3qqyC)+G5b%)KxcAD+HF0 znJiU^d4mV@Cz}rG{u-$u=Co*!5dFdH?Akx}%>MROShsgTa@&tXu%v-KZEjaxzD_<= z%|cJixT2I?nu0&j5jYTWz|4jqAW<+u70d_tBy`$ICKXVy5iFr4lW_!x9E) zi06-4bu4#iZ#JQ8KM!N4M#IACkdLn@Ht?1Q*$cCX?=E~X(0PKYLS8x!b&{pcK%}j0 z*xW(IKWXO0LK!2=lYb@b(WoJmQ+UR-(Jdph%10#?O+%6s)pP2qJxg=hb6pv?-6p~p zW^Rs5kIs?OOGpIH6u5qDv9?xkmH2s!-ql2JWHw?!%5CUgG?l#(H9~YU@VzA3oG`LS zWSVkqWB7b1P%zA5xWp4&<}-;%nCZKbtB7uPQ>yR0eNe=xaqwe-xpC{ZkzcQDB(ZMn z%`Z$;Z?F1K_w1PKlssS1b=OP&x8gt@)9Wk`J<%4H!pRq|=b9VNicO(J?a_|9SNxRg zgY)cpR8%Ut7)@N93;IqEq3-Bqy^(^kiPW?tIS7r6jNI1zVe@e&g+tm9OpJPU!U9(b z)F#f!y$+vE4mLPZSw`~Ic?MZVPrI)ouAb5!a>f!rRMAguR9km#ueM&WQ~)x9pCR&@5b?A-$=_@$&>#I zE%7Eeb}YV14)w1q>vvyhsrWe1!}${mEZ~U4tOS!nw34`z6`Ky!u1@wjn7-m+&4*mc zoUdaDz4?@U6^}Nz^9kiz9nv|j-?qs|>qkga{CHulazMZJRsYEoZbAkDd|x=Jj))93 zN69$eapXiK!z1W^J?^QsR@Ken@_%HiR8sc-XW1DdpeL9{C34j*QZh`eKv{<8BUsAa7xq1kb>9=f_MD2%Kj{*6?j=;pcUXzJbnZEu8Y zF4L`R5qVW*3QNL*CDK1Nd<~9miYfA z#jyP*Ufkm1mW72W75TJ4Nocoep9CMcbA_B1UOoSeK18iuHuK2$%$673A-=BmTO2!C znUzRvZ)pRXw>nIx;;mZvV$K!YSnjV=mlNY2xO}JmUHU8H`EY6dx3P#40fcDJs=~~b z0={FtNSqYzy7&#uhP0x6#D~f~oySvVpK)RgF?B-;otRwX#YE!G`jq|;{$2jN0s~eQ z51*j;$?Sas5ljnyMti%C2}Jxm+|$`@DyB~an{y>6=$<;Wlk1cs?HiJRzP8#9&Ujou zvdZE5Q9#cshV3`{e^3Q#$NfZO5B^O(98@#;drst6fFDhAN>@IwXBX-gG97p2vJ5%+(n~DnMKT>yx89Cl8athl^{~v}aTP zmYHPL$YMu2b1r!J!3OiD+swZPAC2(P?d^a2EF$-K10wfpatR#KXQmsZstS*EzMREJ z>4K4DXHb#TZ&UZ={|WD-EW*{rRH9_ zx<9L|_pB_N&y~Y;h&Yx4-JSH?#b|Fa*}oFu;ikCMW}C|L!|Z5h%AYQ*t6VErTA0DrKG9b>_{t$KRLVr7TSS z8|rcYN7`o~=FuS2efyjDISbD4j&#*k*z#KSEYbCw4?LRV>2O3%MA6N>E$JVdzmMS8 z@?WzGv)zDz1!2vMYrDrw70tTC52KSa3dB9G29;Ze7Bis_h#1X_w#N7;Gy$dQhCbJF z<}dX%sz-$Io?w!5?x?iB@TSN3yibwBSC^x``{0P@v*zy+A0j?TQu(>nd+M$|I8v48 zNpNxIa_e7-TMGs{017BuRq$TUzHpRm(gt`?PTIHYOgsXPoXIgN9CP}M zklL(gB^MC7ZO591ettr+p~8;xz2|K@-6$lJ%V}`ce~%N)uXbWgcf*UOsVp=*)Mikh2m%6t^{x>wvW_2-lDEKZ}Y{rU3{H1c* zi^x9*|EhSXrBYMdCp%vWf@1p|WtRHWJB3?gnrs43ou(8XK4qTKl$SZiNd1Q%uS%AF zJn~~wM(j7}%*xs?D< zjk!*2LbvSvz_{LHv@4TUO-ZeCb~y-oN&hKsk)!SXf=d6@xk==t3y7XIJ$|R67u;sz zA$Dg(cP{-5hZe}r*<+J-DGrJus($HGOw`}O$Bwi+lMM##4MXQ~prvW;Fo zCv{Gzc$#+U^bJkK`qSq~0kBKvLY{>u8*UFHI9T@U{tvRj`qgzO2h^z{`<#OWjkmvt z9Fg8jlC9lyG&$oRY1o;jBb)xb-GM?TjPoCfvZAN;=g22z5;@OGo|Dq3yPVde23RjN z6gIbi43W)TVAQlJv;gg0(q0EYZoZ7ag!NAyJIeu|{jWpNW6tK~LtCks$={QLuNUii z(TT-&*?z1S^+EjA*d<-XArHR~&wpGeyXo+wGH|#1arf;nIGcKp$T*s|wt2bS`E069 zBz5|C&3{s)HZ1QWI92X%tW}@o1+L*p#~plzrEc830nL~HwRhcdO`cmgQbq(6Q4~~E zL>Vf}i-=)_fGnvH`ilw$2?`=OfC4gPBt-OrTA*IIMFbL*O0ZUFAQl+{7HDLcAR}6$ ztOmjgBS=D+_p??=C<;-@i}AQNQW0eMi|e*jhD4-4TaAZV-C@#zS@}if zMgeRVg%&FU)+Oo6TQ1>_9|3@FYg(znNz#&6tGQ5U-J_g#*Myo~?fLB((mc|~U%DG` zp7LtB8|g7(7W;<4#b*q?w(#UD?{q9DZ&3Q8X!^8M6$_OcFx>HI) z=;{{C@wXto%6KXN(M1~i5jTalEBenP_j)hiK$d~dNV2A_NusdB@W$Q zx+z=`{!3Kt?-;6-j9eYED}i+wX%^^OMQ}`lJF}2iC(LU-o8zz>oV&`9Q>@%aG~o%r z+y$C|oJKBMD6r?iNx*|bl`A|6U<{+-2ljkvfP_gT+KhSTJy-#(U9|cP)Uyl4Fa4${ zF62-IQlwnY-1}tXc1qYkqm+<}@#m@o0ir;`a*hp*R$z*i-=Js@-FY5U za?UU<@_zgjke%j0C_JMK{$oN;JUgW6sof-=YZF4m#~UG6@|pIulP`(hRDX$JxLmORpdfUS8e;cLx=2o|w%G3AzZ z?P;4juCllLZd0szf?wNJMd{T$xO)09iC{f_n6W)jLG0SPQQ}tY)W6_DxdWX%4|tQH z*?Uo7xJv+WXt4rrT&%@n3+=o5rk+a7c>uqk$)*<#XPe`cp^a{)jMv%bQCxY3ASiq- zs*Fd?>~>bkM&%i5k`r3Frl(lwS~ZJDYF1&Hk;qsc`6f~ndzPs-Ff5dND@3%v0&-l1 zdTp=3z!#cjL4zCKi)Tc< zh+Z|y-4IrqkYR)h_mmuIoZ8fP<~B8El&phfV(&cH^@!v$R2T`!S0=3)-|ZFdKygSw ziHK;f1g;Yhii5cym~Y&>0mL0vDhVkz+Q=csd4#5+$q#Z{x~%Q5uXykaOmZJx-CnV^ z>x8{a&@PMsl22;k);>>mGYCKsD+4(OHirD8?uLP-TkkRS>QL@**&hBIOf0`K2Kjp0 zh45lRh$caBctF<)#T&aX?R535{cTB-8XWn%+TVM6obgp85ddcbiiGBxBlMKOg3QmYrF$W(Y^t4>d}z{ zoV9&{Xh18=2&tPE-#j~2rAO1v{WBfyp7p$v>0*|yN-c+xj%w`=W&`bX^EyhVBXT3b9zD zZf5$&>4ak>YE9_6KHKKbZL{9NneDQAWtCXOjmAUo5~58)%n7P?RzE;eZL5<^ zqdQ4I%~-lC@gTcav0}sphR)!X!-)zs*008X-WZ=rKqnpI&R|YKE@1}0gYJ>sVc=(F_)BS!0bPz*fh^IABR>w^Kk&ec7-%#zWZiPc zs&@-U7#aX~$9)L^*rP56ak)nS8|Wo_qbDEo$J}P}i}%AIjHqvRxLqE*G5%#B@!ne8xObo(qQ$0A5)h)Lh+5fm&~Y zUhS$mo)L!SCz0s%#jF0Hv8Qa^dtln`_Q zt98dXn)h1}ye^K4{CQrp1DN`aG|(APbZX!`-si!>$o%(Fl_;-yj@x88R(-|wz?Sy( zy;hfOl(H`4l-FEXv+7#F8RrZ$p4mY@^^A##`JZ7sv=6uTyWbs74@h`)mEYZ`E9TWZ zVI)nfZNIfYZj2Ta#XghgB3~3A1siUBG}vA!9+a8Uz~?(kpNH#v4@McPbw;@9T)&9$ zK0#l=*M)C|M*n8%TT8Y6{dlyIN|#mc{>tdq_5nFvYS zVaD(_Oo}q&d+NGuro92?y$mJll%+ZlOSfhC-bg8QrF}m_`ud!niX)0^)1R5D&U>-v zEKF_M_tfLAHZORin|?!2?vI18R(WUk6r*5j`bjL?xO#J?G5dG{7QV@Ov}e?@V4w|A zloP9@)#95URznIU!z+Cks-1Y?O29XAdOQJuUrOl*Y)%kWUjMvfJ+F5iGPIfK+syQ; z^O2NjVsDVTMdyi_@f|0Ppiqk=UOp?Evg)SDb?tmbz1;_sbFz4FqfPRa2}FnA54`lH zJiuC?px&r;?!?IiZ7Zqzqai*%d5e=-~BEf1-;BHU#_by4FJWBh% zwP9Gnp}^SE&{&^}rJf&u^llkuw*LP05CZ&NdAeuk=(1L2{tWc7CXw;z z@aTLN?`oY*1Y5t_=PId!e&JDe*STtXctAu&_{ATbxDjM+sJysa;!NmP2R^z&n(T00dqw!S5SLZ(PS63y# z4ddNmmB;4`Qj3Q~&aw0glz%G|ZEi8hY@+7NSkCw7d#NwKtYKPh6^57fc=0Qkmll8T z^0FIfPqRi=?pyrw{|{L9K5Yddpc_z4vuGD}&n}cO3w=OMkvM4*wO!3=(?Zu7_+yqX7J(Jl-SnkIBkL5WYII}=&{b?B&z%RND7*_zC>zG80 zEc1l)N74&8vb77?tUvkev+hd<-3hvLv6TC0P|m7cV041X{xOhU6f$SS5X4Tf6n!SS y3#{xQQJSq#pY#9{C6Fl1R;W*U_}>sE(d+9?uk4J{Ndwv`$RP_m^K7#dm;M8n>osQp literal 0 HcmV?d00001 diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/purchases-background@3x.png b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Assets.xcassets/purchases-background.imageset/purchases-background@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e456e735d4723b5251db2aebe4f67eb17c94d3fc GIT binary patch literal 480375 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 literal 0 HcmV?d00001 diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ColorPalette.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ColorPalette.swift new file mode 100644 index 0000000..ead10e4 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ColorPalette.swift @@ -0,0 +1,15 @@ +// +// ColorPalette.swift +// FoodieFolio +// +// Created by Mar Cabrera on 28/08/2023. +// + +import SwiftUI + +struct ColorPalette { + static let lightLilac = Color("LightLilac") + static let darkLilacAccent = Color("DarkLilacAccent") + static let violet = Color("Violet") + static let pink = Color("accentPink") +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift new file mode 100644 index 0000000..1c38e82 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift @@ -0,0 +1,52 @@ +// +// ContentView.swift +// FoodieFolio +// +// Created by Mar Cabrera on 08/08/2023. +// + +import SwiftUI +import RealmSwift + +struct ContentView: View { + @ObservedObject var realmManager = RealmManager() + @ObservedObject var app: RealmSwift.App + + var body: some View { + switch app.currentUser?.state { + case .loggedIn: + if let user = app.currentUser { + if let realm = realmManager.realm { + RecipesListView() + .environment(\.realmConfiguration, realm.configuration) + } else { + ProgressView() + .onAppear { + Task { + do { + try await realmManager.initializeRealm(user: user) + } catch { + print("Error while opening realm \(error)") + } + } + } + } + } + case .loggedOut, .removed, .none: + LoginView() + .onAppear { + realmManager.reset() + } + default: + EmptyView() + } + } +} + +/* +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} +*/ diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Button+Extension.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Button+Extension.swift new file mode 100644 index 0000000..d969cb5 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Button+Extension.swift @@ -0,0 +1,19 @@ +// +// Button+Extension.swift +// FoodieFolio +// +// Created by Mar Cabrera on 14/09/2023. +// + +import SwiftUI + +extension Button { + func buttonStyle() -> some View { + self + .frame(maxWidth: .infinity) + .frame(height: 50) + .background(ColorPalette.violet) + .foregroundColor(.white) + .cornerRadius(10) + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Double+Extension.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Double+Extension.swift new file mode 100644 index 0000000..59c42a6 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Double+Extension.swift @@ -0,0 +1,21 @@ +// +// Double+Extension.swift +// FoodieFolio +// +// Created by Mar Cabrera on 14/08/2023. +// + +import Foundation + +extension Double { + /// Rounds up the double value using the `ceil` function and returns a string representation without decimals. + /// + /// For example, if the value is 12.34, this method will round it up to 13 and return "13" as a string. + /// + /// - Returns: A string representation of the rounded-up value without decimals. + func roundedUpToString() -> String { + let roundedUpValue = ceil(self) + + return String(format: "%.0f", roundedUpValue) + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/String+Extension.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/String+Extension.swift new file mode 100644 index 0000000..dc3b157 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/String+Extension.swift @@ -0,0 +1,29 @@ +// +// String+Extension.swift +// FoodieFolio +// +// Created by Mar Cabrera on 11/08/2023. +// + +import Foundation + +/// An extension on the `String` type to provide a computed property for capitalizing the first word. +extension String { + + /// Capitalizes the first letter of a string and converts the rest of the letters to lowercase. + /// + /// This computed property takes the first letter of the string, capitalizes it, and then combines it + /// with the remaining letters of the string after converting them to lowercase. + /// The result is a string with the first letter capitalized and the rest of the letters in lowercase. + var capitalizedWord: String { + + /// Get the first letter of the string and capitalize it. + let firstLetter = self.prefix(1).capitalized + + /// Get the remaining letters of the string after the first one and convert them to lowercase. + let remainingLetters = self.dropFirst().lowercased() + + /// Combine the capitalized first letter with the lowercase remaining letters. + return firstLetter + remainingLetters + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Text+Extension.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Text+Extension.swift new file mode 100644 index 0000000..c179e93 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Text+Extension.swift @@ -0,0 +1,16 @@ +// +// Text+Extension.swift +// FoodieFolio +// +// Created by Mar Cabrera on 14/09/2023. +// + +import SwiftUI + +extension Text { + func headerStyle() -> some View { + self + .font(.system(size: 16, weight: .bold)) + .foregroundColor(.white) + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/TextField+Extension.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/TextField+Extension.swift new file mode 100644 index 0000000..2b7ceb0 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/TextField+Extension.swift @@ -0,0 +1,17 @@ +// +// TextField+Extension.swift +// FoodieFolio +// +// Created by Mar Cabrera on 14/09/2023. +// + +import SwiftUI + +extension TextField { + func textFieldStyle() -> some View { + self + .padding(.all) + .overlay(RoundedRectangle(cornerRadius: 10.0).strokeBorder(.white, style: StrokeStyle(lineWidth: 1.0))) + .foregroundColor(.white) + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/FoodieFolioApp.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/FoodieFolioApp.swift new file mode 100644 index 0000000..5ee6937 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/FoodieFolioApp.swift @@ -0,0 +1,20 @@ +// +// FoodieFolioApp.swift +// FoodieFolio +// +// Created by Mar Cabrera on 08/08/2023. +// + +import SwiftUI + +@main +struct FoodieFolioApp: App { + + var body: some Scene { + WindowGroup { + VStack { + ContentView(app: realmApp) + } + } + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift new file mode 100644 index 0000000..06a8b42 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift @@ -0,0 +1,46 @@ +// +// AuthenticationManager.swift +// FoodieFolio +// +// Created by Mar Cabrera on 26/09/2023. +// + +import Foundation +import RealmSwift + +let realmApp = RealmSwift.App(id: "foodie-folio-ojvso") + +class AuthenticationManager: ObservableObject { + static let shared = AuthenticationManager() + + // MARK: - User Authentication + func loginUser(email: String, password: String) async -> Result { + do { + let user = try await realmApp.login(credentials: .emailPassword(email: email, password: password)) + return .success(user) + } catch { + return .failure(error) + } + } + + func registerUser(email: String, password: String) async -> Result { + do { + try await realmApp.emailPasswordAuth.registerUser(email: email, password: password) + + let user = try await realmApp.login(credentials: .emailPassword(email: email, password: password)) + return .success(user) + } catch { + return .failure(error) + } + } + + func logoutUser(_ user: User) async -> Result { + do { + try await realmApp.currentUser?.logOut() + return .success(()) + } catch { + return .failure(error) + } + } + +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift new file mode 100644 index 0000000..0a27cc0 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift @@ -0,0 +1,42 @@ +// +// RealmManager.swift +// FoodieFolio +// +// Created by Mar Cabrera on 09/08/2023. +// + +import Foundation +import RealmSwift + +class RealmManager: ObservableObject { + @Published var realm: Realm? + @Published var configuration: Realm.Configuration? + + @MainActor // Property wrapper that makes sure this gets executed on main thread + func initializeRealm(user: User) async throws { + + // Configuration of subscription options + let configuration = user.flexibleSyncConfiguration(initialSubscriptions: { subscription in + if let _ = subscription.first(named: "all-recipes"), let _ = subscription.first(named: "all-purchases") { + return + } else { + if subscription.first(named: "all-recipes") == nil { + subscription.append(QuerySubscription(name: "all-recipes")) + } + if subscription.first(named: "all-purchases") == nil { + subscription.append(QuerySubscription(name: "all-purchases")) + } + } + }, rerunOnOpen: true) + + do { + self.realm = try await Realm(configuration: configuration, downloadBeforeOpen: .once) + } catch { + print("There was an error opening the realm: \(error.localizedDescription)") + } + } + + func reset() { + realm = nil + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift new file mode 100644 index 0000000..2fd1ccf --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift @@ -0,0 +1,150 @@ +// +// StoreKitManager.swift +// FoodieFolio +// +// Created by Mar Cabrera on 31/08/2023. +// + +import Foundation +import StoreKit + +/// `StoreKitManager` is responsible for managing in-app purchases and product information. +/// NOTE: +class StoreKitManager: ObservableObject { + /// An array of published products available for purchase. + @Published var storeProducts: [Product] = [] + + /// An array of published products that have been purchased. + @Published var purchasedRecipes: [Product] = [] + + /// A dictionary to map product identifiers to localized names. + private let productDict: [String: String] + + var updateListenerTask: Task? + + /// Initializes the `StoreKitManager` instance. + init() { + // Initialize productDict using property list data, or set to empty if not available + if let plistPath = Bundle.main.path(forResource: "PropertyList", ofType: "plist"), + let plist = FileManager.default.contents(atPath: plistPath), + let plistDict = try? PropertyListSerialization.propertyList(from: plist, format: nil) as? [String: String] { + productDict = plistDict + } else { + productDict = [:] + } + + updateListenerTask = transactionListener() + + // Fetch products asynchronously when the StoreKitManager is initialized + Task { + await requestProducts() + + await updateCustomerProductStatus() + } + } + + // If user quits app for example, stop listening for transactions + deinit { + updateListenerTask?.cancel() + } + + func transactionListener() -> Task { + return Task.detached { + // Iterate through any transactions that don't come from a direct call to purchase() method + for await result in Transaction.updates { + do { + let transaction = try self.checkVerified(result) + + // transaction is verified, so the content unlocks for the user + await self.updateCustomerProductStatus() + + // The transaction always needs to be finished + await transaction.finish() + } catch { + print("Transaction failed verification") + } + } + } + } + + /// Fetches available products asynchronously and updates `storeProducts`. + @MainActor + func requestProducts() async { + do { + // Fetch products using productDict values (IDs) + storeProducts = try await Product.products(for: productDict.values) + } catch { + // Handle errors if product fetching fails + print("Failed - error retrieving products \(error)") + } + } + + /// Call product purchase and returns an optional transaction + func purchase(_ product: Product) async throws -> Transaction? { + let result = try await product.purchase() + + switch result { + case .success(let verificationResult): + // Transaction will be verified for automatically using JWT + let transaction = try checkVerified(verificationResult) + + await updateCustomerProductStatus() + + await transaction.finish() + + return transaction + case .userCancelled, .pending: + // TODO: handle this - Should send a message or something + return nil + default: + return nil + } + } + + func checkVerified(_ result: VerificationResult) throws -> T { + // Check if JWS passes the StoreKit verification + switch result { + case .unverified: + // failed verification + throw StoreError.failedVerification + case .verified(let signedType): + // Result is verified, return the unwrapped value + return signedType + } + } + + @MainActor + func updateCustomerProductStatus() async { + var purchaseRecipes: [Product] = [] + + // iterate through all the user's purcahsed products + for await result in Transaction.currentEntitlements { + do { + // check if transaction is verified + let transaction = try checkVerified(result) + // since there is only one type of product (non-consumable), + // check if any storeProducs matches the productID and add it to the purchased recipes + if let recipeBundle = storeProducts.first(where: { $0.id == transaction.productID}) { + purchaseRecipes.append(recipeBundle) + } + } catch { + // StoreKit has a failed verification transaction, therefore don't open content to the user + print("Transaction failed verification process") + } + + // Assign the purchased products + self.purchasedRecipes = purchaseRecipes + } + } + + /** + Checks if a product has already been purchased + */ + func isPurchased(_ product: Product) -> Bool { + return purchasedRecipes.contains(product) + } +} + +public enum StoreError: Error { + case failedVerification +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Purchase.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Purchase.swift new file mode 100644 index 0000000..605ffac --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Purchase.swift @@ -0,0 +1,49 @@ +// +// Purchase.swift +// FoodieFolio +// +// Created by Mar Cabrera on 06/10/2023. +// + +import Foundation +import RealmSwift + +class Purchase: Object, Identifiable { + @Persisted(primaryKey: true) var _id: ObjectId? + @Persisted var receipt: Purchase_receipt? + @Persisted var userId: String? +} + +class Purchase_receipt: EmbeddedObject { + @Persisted var bundleId: String? + + @Persisted var deviceVerification: String? + + @Persisted var deviceVerificationNonce: String? + + @Persisted var environment: String? + + @Persisted var inAppOwnershipType: String? + + @Persisted var originalPurchaseDate: Double? + + @Persisted var originalTransactionId: String? + + @Persisted var productId: String? + + @Persisted var purchaseDate: Double? + + @Persisted var quantity: Double? + + @Persisted var signedDate: Double? + + @Persisted var storefront: String? + + @Persisted var storefrontId: String? + + @Persisted var transactionId: String? + + @Persisted var transactionReason: String? + + @Persisted var type: String? +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift new file mode 100644 index 0000000..7368232 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift @@ -0,0 +1,69 @@ +// +// Recipe.swift +// FoodieFolio +// +// Created by Mar Cabrera on 09/08/2023. +// + +import Foundation +import RealmSwift + +class Recipe: Object, Identifiable { + @Persisted(primaryKey: true) var _id: ObjectId? + + @Persisted var calories: Double? + + @Persisted var cautions: List + + @Persisted var cuisineType: List + + @Persisted var dietLabels: List + + @Persisted var dishType: List + + @Persisted var healthLabels: List + + @Persisted var image: String? + + @Persisted var ingredientLines: List + + @Persisted var ingredients: List + + @Persisted var label: String? + + @Persisted var mealType: List + + @Persisted var shareAs: String? + + @Persisted var source: String? + + @Persisted var totalCO2Emissions: Double? + + @Persisted var totalTime: Double? + + @Persisted var totalWeight: Double? + + @Persisted var uri: String? + + @Persisted var url: String? + + @Persisted var yield: Double? +} + +class Recipe_ingredients: EmbeddedObject { + @Persisted var food: String? + + @Persisted var foodCategory: String? + + @Persisted var foodId: String? + + @Persisted var image: String? + + @Persisted var measure: String? + + @Persisted var quantity: Double? + + @Persisted var text: String? + + @Persisted var weight: Double? +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Preview Content/Preview Assets.xcassets/Contents.json b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/PropertyList.plist b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/PropertyList.plist new file mode 100644 index 0000000..109295f --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/PropertyList.plist @@ -0,0 +1,8 @@ + + + + + japaneserecipe + premium.recipe + + diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/AccountView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/AccountView.swift new file mode 100644 index 0000000..3f50024 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/AccountView.swift @@ -0,0 +1,43 @@ +// +// AccountView.swift +// FoodieFolio +// +// Created by Mar Cabrera on 02/10/2023. +// + +import SwiftUI +import RealmSwift + +struct AccountView: View { + + var body: some View { + NavigationView { + List { + Text("Logout") + .onTapGesture { + Task { + if let user = realmApp.currentUser { + let result = await AuthenticationManager.shared.logoutUser(user) + + switch result { + case .success: + print("Successful logout") + /* + No need to handle the navigation to LoginView, + this is handled by ContentView functionality + */ + case .failure(let error): + print("Error in logout: \(error.localizedDescription)") + } + } + } + } + } + .navigationTitle("My Account") + } + } +} + +#Preview { + AccountView() +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CapsuleButton.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CapsuleButton.swift new file mode 100644 index 0000000..28e2f70 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CapsuleButton.swift @@ -0,0 +1,27 @@ +// +// CapsuleButton.swift +// FoodieFolio +// +// Created by Mar Cabrera on 05/10/2023. +// + +import SwiftUI + +struct CapsuleButton: View { + var title: String + var action: () -> Void + + var body: some View { + Button(action: action) { + Text(title.capitalizedWord) + .font(.system(size: 14, weight: .bold)) + .padding(.horizontal, 10) + .padding(.vertical, 4) + .foregroundColor(.white) + .background( + Capsule() + .foregroundColor(ColorPalette.darkLilacAccent) + ) + } + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CircleImage.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CircleImage.swift new file mode 100644 index 0000000..ea04146 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CircleImage.swift @@ -0,0 +1,44 @@ +// +// CircleImage.swift +// FoodieFolio +// +// Created by Mar Cabrera on 10/08/2023. +// + +import SwiftUI + +struct CircleImage: View { + var image: String + + var body: some View { + AsyncImage(url: URL(string: image)) { phase in + switch phase { + case .success(let image): + image + .resizable() + .aspectRatio(contentMode: .fill) + .clipShape(Circle()) + .overlay { + Circle().stroke(Color.white, lineWidth: 4) + } + .shadow(radius: 7) + case .failure(let error): + Text("Failed to load image: \(error.localizedDescription)") + case .empty: + ProgressView() + @unknown default: + // Handle any future cases that might be added + Text("Unknown image loading phase") + } + } + .frame(width: 150, height: 150) + } +} + +/* + struct CircleImage_Previews: PreviewProvider { + static var previews: some View { + CircleImage(image: Image("")) + } + } + */ diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CuisineInfoView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CuisineInfoView.swift new file mode 100644 index 0000000..9456cd2 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CuisineInfoView.swift @@ -0,0 +1,32 @@ +// +// CuisineInfoView.swift +// FoodieFolio +// +// Created by Mar Cabrera on 28/08/2023. +// + +import SwiftUI + +struct CuisineInfoView: View { + var cuisineType: String + var calories: String + + var body: some View { + HStack(spacing: 20) { + // let cuisineType = recipe.cuisineType.first ?? "Unspecified" + RecipeDetailInfoView(imageName: "fork.knife", text: cuisineType.capitalizedWord) + .foregroundColor(.gray) // Set the tint color to gray + + // let calories = recipe.calories?.roundedUpToString() ?? "0 cal" + RecipeDetailInfoView(imageName: "flame", text: "\(calories) cal") + .foregroundColor(.gray) // Set the tint color to gray + } + .padding(.bottom, 20) + } +} + +struct CuisineInfoView_Previews: PreviewProvider { + static var previews: some View { + CuisineInfoView(cuisineType: "American", calories: "500 cal") + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CuisineView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CuisineView.swift new file mode 100644 index 0000000..ff7e0d5 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CuisineView.swift @@ -0,0 +1,30 @@ +// +// CuisineView.swift +// FoodieFolio +// +// Created by Mar Cabrera on 28/08/2023. +// + +import SwiftUI + +struct CuisineView: View { + var cuisineType: String + var calories: String + + var body: some View { + VStack { + HStack(spacing: 20) { + RecipeDetailInfoView(imageName: "fork.knife", text: cuisineType.capitalizedWord) + + RecipeDetailInfoView(imageName: "flame", text: "\(calories) cal") + } + .padding(.bottom, 20) + } + } +} + +struct CuisineView_Previews: PreviewProvider { + static var previews: some View { + CuisineView(cuisineType: "American", calories: "520 cal") + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/IngredientsView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/IngredientsView.swift new file mode 100644 index 0000000..31eaf91 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/IngredientsView.swift @@ -0,0 +1,39 @@ +// +// IngredientsView.swift +// FoodieFolio +// +// Created by Mar Cabrera on 28/08/2023. +// + +import SwiftUI + +struct IngredientsView: View { + var ingredients: [String] + + var body: some View { + VStack(alignment: .leading, spacing: 15) { + Text("INGREDIENTS") + .font(.system(.title2)) + ForEach(ingredients, id: \.self) { ingredient in + HStack { + Image(systemName: "circle.fill") + .font(.system(size: 7, weight: .light)) + .foregroundColor(ColorPalette.darkLilacAccent) + Text(ingredient) + } + } + } + .padding() + .cornerRadius(10) + .overlay( + RoundedRectangle(cornerRadius: 10) + .stroke(ColorPalette.darkLilacAccent, lineWidth: 1) + ) + } +} + +struct IngredientsView_Previews: PreviewProvider { + static var previews: some View { + IngredientsView(ingredients: ["2 teaspoons olive oil", "water"]) + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift new file mode 100644 index 0000000..285e01e --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift @@ -0,0 +1,108 @@ +// +// LoginFormCard.swift +// FoodieFolio +// +// Created by Mar Cabrera on 14/09/2023. +// + +import SwiftUI +import RealmSwift + +struct LoginFormCard: View { + // MARK: - Properties + @State private var email: String = "" + @State private var password: String = "" + @State private var isAlertPresented = false + @State private var alertMessage = "" + @Binding var isLoginSuccessful: Bool + + var body: some View { + VStack(alignment: .center, spacing: 20) { + Text("Email") + .headerStyle() + + TextField("Email", text: $email) + .textFieldStyle() + + Text("Password") + .headerStyle() + + SecureField("Password", text: $password) + .padding(.all) + .overlay(RoundedRectangle(cornerRadius: 10.0).strokeBorder(.white, style: StrokeStyle(lineWidth: 1.0))) + .foregroundColor(.white) + + Button(action: { + Task { + await handleAuth(.login) + } + }) { + Text("Sign in") + .frame(maxWidth: .infinity) + .frame(height: 50) + .background(ColorPalette.violet) + .foregroundColor(.white) + .cornerRadius(10) + } + .alert(isPresented: $isAlertPresented) { + Alert( + title: Text("Login Error"), + message: Text(alertMessage), + dismissButton: .default(Text("OK")) + ) + } + + Button(action: { + Task { + await handleAuth(.register) + } + }) { + Text("Create Account") + .frame(maxWidth: .infinity) + .frame(height: 50) + .background(ColorPalette.violet) + .foregroundColor(.white) + .cornerRadius(10) + } + .alert(isPresented: $isAlertPresented) { + Alert( + title: Text("Login Error"), + message: Text(alertMessage), + dismissButton: .default(Text("OK")) + ) + } + } + .padding(.horizontal, 20) + .padding(.vertical, 20) + .background(Color.gray.opacity(0.8)) + .cornerRadius(10) + .padding() + } + + enum AuthAction { + case login + case register + } + + // Function to handle login and registration and avoid code duplicity + private func handleAuth(_ action: AuthAction) async { + do { + var result: Result + + switch action { + case .login: + result = await AuthenticationManager.shared.loginUser(email: email, password: password) + case .register: + result = await AuthenticationManager.shared.registerUser(email: email, password: password) + } + + switch result { + case .success: + isLoginSuccessful = true + case .failure(let error): + alertMessage = error.localizedDescription + isAlertPresented = true + } + } + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift new file mode 100644 index 0000000..195fece --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift @@ -0,0 +1,58 @@ +// +// LoginView.swift +// FoodieFolio +// +// Created by Mar Cabrera on 11/09/2023. +// + +import SwiftUI +import RealmSwift + +struct LoginView: View { + @State private var email: String = "" + @State private var password: String = "" + @State private var isAlertPresented = false + @State private var alertMessage = "" + @State var isLoginSuccessful = false + + var body: some View { + NavigationStack { + ZStack { + Image("purchases-background") + .resizable() + .edgesIgnoringSafeArea(.all) + + VStack { + ZStack { + // Background View + ColorPalette.violet + .opacity(0.8) + .cornerRadius(20) + .padding(10) + + Image("foodie-icon") + .resizable() + .frame(width: 70, height: 70) + .aspectRatio(contentMode: .fit) + .cornerRadius(20) + .padding(10) + } + .frame(width: 100, height: 100) + + Text("Foodie Folio") + .font(.system(size: 20, weight: .bold)) + LoginFormCard(isLoginSuccessful: $isLoginSuccessful) + } + } + .navigationDestination(isPresented: $isLoginSuccessful) { + RecipesListView() + } + } + } +} + +struct LoginView_Previews: PreviewProvider { + static var previews: some View { + LoginView() + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/Product.storekit b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/Product.storekit new file mode 100644 index 0000000..fc2a7d4 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/Product.storekit @@ -0,0 +1,82 @@ +{ + "identifier" : "1A6B1237", + "nonRenewingSubscriptions" : [ + + ], + "products" : [ + { + "displayPrice" : "4.99", + "familyShareable" : false, + "internalID" : "68837BC7", + "localizations" : [ + { + "description" : "Purchase of premium recipes", + "displayName" : "Japanese Recipes Bundle", + "locale" : "en_US" + } + ], + "productID" : "premium.recipe", + "referenceName" : "Japanese Recipes Bundle", + "type" : "NonConsumable" + } + ], + "settings" : { + "_failTransactionsEnabled" : false, + "_locale" : "en_US", + "_storefront" : "USA", + "_storeKitErrors" : [ + { + "current" : null, + "enabled" : false, + "name" : "Load Products" + }, + { + "current" : null, + "enabled" : false, + "name" : "Purchase" + }, + { + "current" : null, + "enabled" : false, + "name" : "Verification" + }, + { + "current" : null, + "enabled" : false, + "name" : "App Store Sync" + }, + { + "current" : null, + "enabled" : false, + "name" : "Subscription Status" + }, + { + "current" : null, + "enabled" : false, + "name" : "App Transaction" + }, + { + "current" : null, + "enabled" : false, + "name" : "Manage Subscriptions Sheet" + }, + { + "current" : null, + "enabled" : false, + "name" : "Refund Request Sheet" + }, + { + "current" : null, + "enabled" : false, + "name" : "Offer Code Redeem Sheet" + } + ] + }, + "subscriptionGroups" : [ + + ], + "version" : { + "major" : 3, + "minor" : 0 + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/ReadRecipeButton.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/ReadRecipeButton.swift new file mode 100644 index 0000000..8c6ecf0 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/ReadRecipeButton.swift @@ -0,0 +1,32 @@ +// +// ReadRecipeButton.swift +// FoodieFolio +// +// Created by Mar Cabrera on 28/08/2023. +// + +import SwiftUI + +struct ReadRecipeButton: View { + var recipeURL: URL? + @State private var showSafariView = false + + var body: some View { + Button(action: { + showSafariView.toggle() + }) { + Text("Read Recipe") + .font(.system(.body, weight: .bold)) + .foregroundColor(.white) + .padding() + .background(ColorPalette.darkLilacAccent) + .cornerRadius(10) + .frame(maxWidth: .infinity) + } + .sheet(isPresented: $showSafariView) { + if let recipeURL = recipeURL { + SafariView(url: recipeURL) + } + } + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetail.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetail.swift new file mode 100644 index 0000000..50201ac --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetail.swift @@ -0,0 +1,35 @@ +// +// RecipeDetail.swift +// FoodieFolio +// +// Created by Mar Cabrera on 10/08/2023. +// + +import SwiftUI + +struct RecipeDetail: View { + var recipe: Recipe + + var body: some View { + ScrollView { + VStack(spacing: 15) { + CircleImage(image: recipe.image ?? "") + .padding(.top, 20) + + Text(recipe.label ?? "Name not available") + .font(.title) + .padding(.bottom, 10) + + let cuisineType = recipe.cuisineType.first ?? "Unspecified" + let calories = recipe.calories?.roundedUpToString() ?? "0 cal" + CuisineView(cuisineType: cuisineType.capitalizedWord, calories: calories) + + IngredientsView(ingredients: Array(recipe.ingredientLines)) + .padding(.bottom, 20) + + ReadRecipeButton(recipeURL: URL(string: recipe.url ?? "")) + } + .padding(15) + } + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetailInfoView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetailInfoView.swift new file mode 100644 index 0000000..f668e0e --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetailInfoView.swift @@ -0,0 +1,26 @@ +// +// RecipeDetailInfoView.swift +// FoodieFolio +// +// Created by Mar Cabrera on 11/08/2023. +// + +import SwiftUI + +struct RecipeDetailInfoView: View { + let imageName: String + let text: String + + var body: some View { + HStack { + Image(systemName: imageName) + Text(text) + } + } +} + +struct RecipeDetailInfoView_Previews: PreviewProvider { + static var previews: some View { + RecipeDetailInfoView(imageName: "flame", text: "400 cal") + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeRow.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeRow.swift new file mode 100644 index 0000000..8b3cf9e --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeRow.swift @@ -0,0 +1,39 @@ +// +// RecipeRow.swift +// FoodieFolio +// +// Created by Mar Cabrera on 10/08/2023. +// + +import SwiftUI + +struct RecipeRow: View { + var recipe: Recipe + + var body: some View { + HStack(spacing: 10) { + AsyncImage(url: URL(string: recipe.image ?? "")) { image in + image.resizable() + } placeholder: { + ProgressView() + } + .frame(width: 50, height: 50) + + VStack(alignment: .leading, spacing: 5) { + Text(recipe.label ?? "Name not available") + + if let mealType = recipe.mealType.first { + Text(mealType.capitalizedWord) + .font(.system(size: 14, weight: .bold)) + .padding(.horizontal, 10) + .padding(.vertical, 4) + .foregroundColor(.white) + .background( + Capsule() + .foregroundColor(ColorPalette.lightLilac) + ) + } + } + } + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift new file mode 100644 index 0000000..7468177 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift @@ -0,0 +1,95 @@ +// +// RecipesListView.swift +// FoodieFolio +// +// Created by Mar Cabrera on 09/08/2023. +// + +import SwiftUI +import RealmSwift + +struct RecipesListView: View { + @ObservedResults(Recipe.self) var recipes: Results + @ObservedResults(Purchase.self) var purchases: Results + @State private var isPresentingModal = false + @State private var selectedCategory: String = "general" + + var body: some View { + TabView { + NavigationStack { + VStack(alignment: .leading) { + VStack(alignment: .leading) { + Text("Category") + .font(.system(size: 20, weight: .semibold)) + HStack { + CapsuleButton(title: "General") { + selectedCategory = "general" + } + if showPremiumButton { + CapsuleButton(title: "Premium") { + selectedCategory = "premium" + } + } + } + Divider() + + }.padding() + + List(filteredRecipes, id: \._id) { recipe in + NavigationLink { + RecipeDetail(recipe: recipe) + } label: { + RecipeRow(recipe: recipe) + } + } + .listStyle(.plain) + .navigationBarTitle("Recipes") + .navigationBarItems(trailing: Button(action: { + isPresentingModal.toggle() + }) { + Image(systemName: "gift.fill") + .foregroundColor(ColorPalette.lightLilac) + }) + .sheet(isPresented: $isPresentingModal) { + StorePurchaseView() + } + } + } + .tabItem() { + Label("Recipes", systemImage: "fork.knife") + } + + AccountView() + .tabItem() { + Label("Account", systemImage: "person.crop.circle.fill") + } + } + .accentColor(ColorPalette.lightLilac) + } + + var showPremiumButton: Bool { + return !filteredPurchases.isEmpty + } + + var filteredRecipes: Results { + if selectedCategory == "premium" { + return recipes.where { + ($0.cuisineType == "japanese") + } + } else { + return recipes.where { + $0.cuisineType == "american" + } + } + } + + var filteredPurchases: Results { + return purchases.where { + $0.userId == realmApp.currentUser?.id + } + } + + var hasPurchases: Bool { + return !filteredPurchases.isEmpty + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/SafariView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/SafariView.swift new file mode 100644 index 0000000..ba1988b --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/SafariView.swift @@ -0,0 +1,32 @@ +// +// SafariView.swift +// FoodieFolio +// +// Created by Mar Cabrera on 28/08/2023. +// + +import SwiftUI +import SafariServices + +struct SafariView: View { + var url: URL + + var body: some View { + SafariViewController(url: url) + .edgesIgnoringSafeArea(.all) + } +} + +struct SafariViewController: UIViewControllerRepresentable { + var url: URL + + func makeUIViewController(context: Context) -> SFSafariViewController { + let safariViewController = SFSafariViewController(url: url) + return safariViewController + } + + func updateUIViewController(_ uiViewController: SFSafariViewController, context: Context) { + // Update the view controller if needed + // Not needed in this case + } +} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift new file mode 100644 index 0000000..8119585 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift @@ -0,0 +1,162 @@ +// +// StorePurchaseView.swift +// FoodieFolio +// +// Created by Mar Cabrera on 30/08/2023. +// + +import SwiftUI +import StoreKit +import RealmSwift + +struct StorePurchaseView: View { + @StateObject var storeKit = StoreKitManager() + @Environment(\.presentationMode) var presentationMode + + @State private var selectedProduct: Product? + @State private var isAnyProductBundleSelected = false + @State private var isAlertPresented = false + @State private var alertMessage = "" + @State private var isProductAlreadyPurchased = false + + var body: some View { + ZStack(alignment: .top) { + Image("purchases-background") + .resizable() + .aspectRatio(contentMode: .fill) + .frame(height: 200) + .clipped() + .edgesIgnoringSafeArea(.all) + VStack { + HStack { + Spacer() + Button(action: { + presentationMode.wrappedValue.dismiss() + }) { + Image(systemName: "xmark.circle.fill") + .font(.system(size: 25)) + .padding() + .foregroundColor(.white) + } + } + Spacer().frame(height: 55) + VStack(alignment: .leading) { + Text("Premium") + .font(.system(size: 30, weight: .bold)) + .foregroundColor(.white) + Text("Want to unlock more recipes?") + .foregroundColor(.white) + + ForEach(storeKit.storeProducts) { product in + HStack { + Button(action: { + // Toggle the selectedProduct when the button is tapped + if selectedProduct == product { + selectedProduct = nil + } else { + selectedProduct = product + } + + isAnyProductBundleSelected = selectedProduct != nil + }) { + Image(systemName: selectedProduct == product ? "circle.inset.filled" : "circle") + .foregroundColor(ColorPalette.violet) + } + Text(product.displayName) + Spacer() + BundleRecipeItem(storeKit: storeKit, product: product, isSelected: selectedProduct == product) + } + .padding(EdgeInsets(top: 50, leading: 10, bottom: 50, trailing: 10)) + .overlay( + RoundedRectangle(cornerRadius: 10) + .stroke(ColorPalette.darkLilacAccent, lineWidth: 1.5) + .padding(5) + ) + } + } + .padding(20) + + Spacer() + + Button(action: { + if let selectedProduct = selectedProduct { + // Perform purchase for the selected product + Task { + do { + isProductAlreadyPurchased = storeKit.isPurchased(selectedProduct) + if !isProductAlreadyPurchased { + let transactionResult = try await storeKit.purchase(selectedProduct) + + handleTransactionResult(transactionResult!) + } else { + isAlertPresented = true + alertMessage = "Oops! You've already purchased this product" + } + + } catch { + // Handle error if purchase fails + print("Purchase failed: \(error)") + } + } + } + }) { + Text("Purchase Bundle") + .foregroundColor(Color.white) + .padding() + .background(isAnyProductBundleSelected ? ColorPalette.violet : ColorPalette.darkLilacAccent) + .cornerRadius(10) + } + .alert(isPresented: $isAlertPresented) { + Alert( + title: Text("Error"), + message: Text(alertMessage), + dismissButton: .default(Text("OK")) + ) + } + .padding(.bottom) + .disabled(!isAnyProductBundleSelected) // Disable the button if no circle button is selected + } + } +} + +struct BundleRecipeItem: View { + @ObservedObject var storeKit: StoreKitManager + @State var isPurchased: Bool = false + var product: Product + var isSelected: Bool // Indicates whether the product is selected + + var body: some View { + VStack { + if isPurchased { + Text(Image(systemName: "checkmark.circle.fill")) + .bold() + .padding(10) + .allowsHitTesting(false) + } else { + Text(product.displayPrice) + .padding(10) + } + } + .onChange(of: storeKit.purchasedRecipes) { _ in + isPurchased = storeKit.isPurchased(product) + } + .foregroundColor(isSelected ? ColorPalette.violet : ColorPalette.lightLilac) + } + } + + func handleTransactionResult(_ transaction: StoreKit.Transaction) { + Task { + if let user = realmApp.currentUser { + do { + let concatenatedString = try await user.functions.addPurchaseReceipt([AnyBSON("\(user.id)"), + AnyBSON("\(transaction)")]) + print("Called function 'addPurchaseReceipt' and got result: \(concatenatedString)") + } catch { + // Show alert here + isAlertPresented = true + alertMessage = error.localizedDescription + } + } + } + } +} diff --git a/InAppPurchasesAtlasAppServices/README.md b/InAppPurchasesAtlasAppServices/README.md new file mode 100644 index 0000000..eaa9275 --- /dev/null +++ b/InAppPurchasesAtlasAppServices/README.md @@ -0,0 +1,53 @@ +# Integrating In-App Purchases with Atlas App Services using Flexible Sync + +This example contains a skeleton app to be used as a reference on how to implement Apple Sign in authentication with Realm using the [Realm Swift SDK](https://www.mongodb.com/docs/atlas/app-services/authentication/apple/#apple-id-authentication). +In this project you will be able to see an example of the following use case +* Use Apple Sign In implementation in order to authenticate users in your Realm database. + * Log screen view in UIKit. + * Authenticate users in Realm using the Swift SDK. + +## Relevant Files +``` +├── AppDelegate.swift +├── LoginViewController.swift (Authentication Implementation) +└── other configuration files... +``` + +## Scope + +The app addresses the following points: +* Register/Login a Device Sync user using email/password authentication. +* Integrate RealmSwift framework for database management using Flexible Sync. +* Access a already login user in order to display a list of recipes. +* Implement [IAP](https://developer.apple.com/in-app-purchase/) for purchasing premium recipes. +* After the purchase is done, new recipes will get unlocked. +* Log user purchases in Atlas using Atlas App Services to be able to obtain all customer's purchases through Apple's purchase receipts. + +**Realm Details:** +* RealmSwift v10.43.0 + +## Version Support + +* XCode: 15.0 +* iOS: 17.0 + +## Getting Started + +### Set up an Atlas App Services App + +To use Apple Sign In authentication in Realm, you must first: + +1. [Create an App Services App](https://www.mongodb.com/docs/atlas/app-services/manage-apps/create/create-with-ui/) +2. Enable [Email/password](https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/) authentication. +3. [Enable Flexible Sync](https://www.mongodb.com/docs/atlas/app-services/sync/configure/enable-sync/) with **Development Mode** on. + * When Development Mode is enabled, the schema is added automatically when the + app is running. + +### Run the foodie-folio project (FoodieFolio.xcodeproj) + +#### Foodie Folio app + +1. Copy your [Atlas App ID](https://www.mongodb.com/docs/atlas/app-services/reference/find-your-project-or-app-id/#std-label-find-your-app-id) from the App Services UI. +2. Paste the copied ID as the value of the existing variable `appRealm` to `FoodieFolio/Managers/AuthenticationManager.swift`. +3. You can use the `App Services app` directory as an example for fetching the content of the recipes into your Atlas database. +3. Run the example. From 4470fa004a71d65bc7c59c1bb3d128a40f403419 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Mon, 16 Oct 2023 12:15:24 +0100 Subject: [PATCH 02/40] Fix Swiftlint warnings --- .../FoodieFolio/Managers/RealmManager.swift | 2 +- .../FoodieFolio/Managers/StoreKitManager.swift | 1 - .../FoodieFolio/Views/LoginFormCard.swift | 8 ++++---- .../FoodieFolio/Views/ReadRecipeButton.swift | 4 ++-- .../FoodieFolio/Views/RecipesListView.swift | 8 ++++---- .../FoodieFolio/Views/StorePurchaseView.swift | 12 ++++++------ 6 files changed, 17 insertions(+), 18 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift index 0a27cc0..e14e5e5 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift @@ -17,7 +17,7 @@ class RealmManager: ObservableObject { // Configuration of subscription options let configuration = user.flexibleSyncConfiguration(initialSubscriptions: { subscription in - if let _ = subscription.first(named: "all-recipes"), let _ = subscription.first(named: "all-purchases") { + if subscription.first(named: "all-recipes") != nil && subscription.first(named: "all-purchases") != nil { return } else { if subscription.first(named: "all-recipes") == nil { diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift index 2fd1ccf..67b51fd 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift @@ -94,7 +94,6 @@ class StoreKitManager: ObservableObject { return transaction case .userCancelled, .pending: - // TODO: handle this - Should send a message or something return nil default: return nil diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift index 285e01e..c387d10 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift @@ -32,11 +32,11 @@ struct LoginFormCard: View { .overlay(RoundedRectangle(cornerRadius: 10.0).strokeBorder(.white, style: StrokeStyle(lineWidth: 1.0))) .foregroundColor(.white) - Button(action: { + Button { Task { await handleAuth(.login) } - }) { + } label: { Text("Sign in") .frame(maxWidth: .infinity) .frame(height: 50) @@ -52,11 +52,11 @@ struct LoginFormCard: View { ) } - Button(action: { + Button { Task { await handleAuth(.register) } - }) { + } label: { Text("Create Account") .frame(maxWidth: .infinity) .frame(height: 50) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/ReadRecipeButton.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/ReadRecipeButton.swift index 8c6ecf0..f14c906 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/ReadRecipeButton.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/ReadRecipeButton.swift @@ -12,9 +12,9 @@ struct ReadRecipeButton: View { @State private var showSafariView = false var body: some View { - Button(action: { + Button { showSafariView.toggle() - }) { + } label: { Text("Read Recipe") .font(.system(.body, weight: .bold)) .foregroundColor(.white) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift index 7468177..858a9fc 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift @@ -44,9 +44,9 @@ struct RecipesListView: View { } .listStyle(.plain) .navigationBarTitle("Recipes") - .navigationBarItems(trailing: Button(action: { + .navigationBarItems(trailing: Button { isPresentingModal.toggle() - }) { + } label: { Image(systemName: "gift.fill") .foregroundColor(ColorPalette.lightLilac) }) @@ -55,12 +55,12 @@ struct RecipesListView: View { } } } - .tabItem() { + .tabItem { Label("Recipes", systemImage: "fork.knife") } AccountView() - .tabItem() { + .tabItem { Label("Account", systemImage: "person.crop.circle.fill") } } diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift index 8119585..6d1938f 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift @@ -30,9 +30,9 @@ struct StorePurchaseView: View { VStack { HStack { Spacer() - Button(action: { + Button { presentationMode.wrappedValue.dismiss() - }) { + } label: { Image(systemName: "xmark.circle.fill") .font(.system(size: 25)) .padding() @@ -49,7 +49,7 @@ struct StorePurchaseView: View { ForEach(storeKit.storeProducts) { product in HStack { - Button(action: { + Button { // Toggle the selectedProduct when the button is tapped if selectedProduct == product { selectedProduct = nil @@ -58,7 +58,7 @@ struct StorePurchaseView: View { } isAnyProductBundleSelected = selectedProduct != nil - }) { + } label: { Image(systemName: selectedProduct == product ? "circle.inset.filled" : "circle") .foregroundColor(ColorPalette.violet) } @@ -78,7 +78,7 @@ struct StorePurchaseView: View { Spacer() - Button(action: { + Button { if let selectedProduct = selectedProduct { // Perform purchase for the selected product Task { @@ -99,7 +99,7 @@ struct StorePurchaseView: View { } } } - }) { + } label: { Text("Purchase Bundle") .foregroundColor(Color.white) .padding() From 589ce78b99927de010bed9637224905283322f00 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Mon, 16 Oct 2023 16:42:42 +0100 Subject: [PATCH 03/40] Update .Readme file --- InAppPurchasesAtlasAppServices/README.md | 33 +++++++++++++++++------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/README.md b/InAppPurchasesAtlasAppServices/README.md index eaa9275..6e6c8c9 100644 --- a/InAppPurchasesAtlasAppServices/README.md +++ b/InAppPurchasesAtlasAppServices/README.md @@ -1,16 +1,31 @@ # Integrating In-App Purchases with Atlas App Services using Flexible Sync -This example contains a skeleton app to be used as a reference on how to implement Apple Sign in authentication with Realm using the [Realm Swift SDK](https://www.mongodb.com/docs/atlas/app-services/authentication/apple/#apple-id-authentication). -In this project you will be able to see an example of the following use case -* Use Apple Sign In implementation in order to authenticate users in your Realm database. - * Log screen view in UIKit. - * Authenticate users in Realm using the Swift SDK. +This example contains a skeleton app to be used as a reference on how to In App Purchase with a seamless integration in App Services using the [Swift SDK](https://www.mongodb.com/docs/realm/sdk/swift/#realm-swift-sdk). +In this project you will be able to see an example of the following use case: +* Authenticate users using the Swift SDK. +* Fetch data into your app using Flexible Sync. +* Purchase non-consumable products. +* Fetch all receipts from purchases and view them on Atlas. ## Relevant Files ``` -├── AppDelegate.swift -├── LoginViewController.swift (Authentication Implementation) -└── other configuration files... +├── FoodieFolio +│ ├── Managers (Managers for Atlas App) +│ │ ├── RealmManager.swift (Manager for Realm functionality) +│ │ ├── StoreKitManager.swift (Manager for StoreKit Functionality) +│ │ ├── AuthenticationManager.swift (Manager for handling Realm Authentication) +│ ├── Views (Apps Views) +│ │ ├── RecipesListView.swift (Main App View) +│ │ ├── RecipeDetail.swift (Recipe Detail View) +│ │ ├── StorePurchaseView.swift (Main IAP View to purchase premium recipes) +│ │ ├── LoginView.swift (Authentication View - App Entry) +│ │ └── other views/components +├── App Services app (App Services Backend app) +│ ├── realm_config.json (App Services configuration) +│ ├── triggers (Triggers for data fetching) +│ ├── functions (Linked functions to triggers) +│ └── data_sources +└── other configuration/helper files... ``` ## Scope @@ -35,7 +50,7 @@ The app addresses the following points: ### Set up an Atlas App Services App -To use Apple Sign In authentication in Realm, you must first: +To use Email/Password Authentication in App Services, you must first: 1. [Create an App Services App](https://www.mongodb.com/docs/atlas/app-services/manage-apps/create/create-with-ui/) 2. Enable [Email/password](https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/) authentication. From 3fc649c33c8b6cb57b72b4aabaa67fb26f9f78e2 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Mon, 16 Oct 2023 16:44:25 +0100 Subject: [PATCH 04/40] Remove App ID --- .../FoodieFolio/Managers/AuthenticationManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift index 06a8b42..89de768 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift @@ -8,7 +8,7 @@ import Foundation import RealmSwift -let realmApp = RealmSwift.App(id: "foodie-folio-ojvso") +let realmApp = RealmSwift.App(id: "YOUR_APP_ID") class AuthenticationManager: ObservableObject { static let shared = AuthenticationManager() From 25a299971c2475a7334ca8014ceec86a0552166e Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 14:55:02 +0000 Subject: [PATCH 05/40] Remove Singleton for AuthenticationManager --- .../FoodieFolio/Managers/AuthenticationManager.swift | 1 - .../FoodieFolio/FoodieFolio/Views/AccountView.swift | 2 +- .../FoodieFolio/FoodieFolio/Views/LoginFormCard.swift | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift index 89de768..7feb2b6 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift @@ -11,7 +11,6 @@ import RealmSwift let realmApp = RealmSwift.App(id: "YOUR_APP_ID") class AuthenticationManager: ObservableObject { - static let shared = AuthenticationManager() // MARK: - User Authentication func loginUser(email: String, password: String) async -> Result { diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/AccountView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/AccountView.swift index 3f50024..dd43bdb 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/AccountView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/AccountView.swift @@ -17,7 +17,7 @@ struct AccountView: View { .onTapGesture { Task { if let user = realmApp.currentUser { - let result = await AuthenticationManager.shared.logoutUser(user) + let result = await AuthenticationManager().logoutUser(user) switch result { case .success: diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift index c387d10..91e8697 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift @@ -91,9 +91,9 @@ struct LoginFormCard: View { switch action { case .login: - result = await AuthenticationManager.shared.loginUser(email: email, password: password) + result = await AuthenticationManager().loginUser(email: email, password: password) case .register: - result = await AuthenticationManager.shared.registerUser(email: email, password: password) + result = await AuthenticationManager().registerUser(email: email, password: password) } switch result { From f94d1851b7db48972e34e61937e01f7a2a5380ec Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:00:14 +0000 Subject: [PATCH 06/40] Add headers to mention copyrights to Realm --- .../FoodieFolio/ColorPalette.swift | 17 ++++++++++++++--- .../FoodieFolio/FoodieFolio/ContentView.swift | 17 ++++++++++++++--- .../Extensions/Button+Extension.swift | 17 ++++++++++++++--- .../Extensions/Double+Extension.swift | 17 ++++++++++++++--- .../Extensions/String+Extension.swift | 17 ++++++++++++++--- .../Extensions/Text+Extension.swift | 17 ++++++++++++++--- .../Extensions/TextField+Extension.swift | 17 ++++++++++++++--- .../FoodieFolio/FoodieFolioApp.swift | 17 ++++++++++++++--- .../Managers/AuthenticationManager.swift | 17 ++++++++++++++--- .../FoodieFolio/Managers/RealmManager.swift | 17 ++++++++++++++--- .../Managers/StoreKitManager.swift | 17 ++++++++++++++--- .../FoodieFolio/Models/Purchase.swift | 17 ++++++++++++++--- .../FoodieFolio/Models/Recipe.swift | 17 ++++++++++++++--- .../FoodieFolio/Views/AccountView.swift | 17 ++++++++++++++--- .../FoodieFolio/Views/CapsuleButton.swift | 17 ++++++++++++++--- .../FoodieFolio/Views/CircleImage.swift | 17 ++++++++++++++--- .../FoodieFolio/Views/CuisineView.swift | 17 ++++++++++++++--- .../FoodieFolio/Views/IngredientsView.swift | 17 ++++++++++++++--- .../FoodieFolio/Views/LoginFormCard.swift | 17 ++++++++++++++--- .../FoodieFolio/Views/LoginView.swift | 17 ++++++++++++++--- .../FoodieFolio/Views/ReadRecipeButton.swift | 17 ++++++++++++++--- .../FoodieFolio/Views/RecipeDetail.swift | 17 ++++++++++++++--- .../Views/RecipeDetailInfoView.swift | 19 +++++++++++++++---- .../FoodieFolio/Views/RecipeRow.swift | 17 ++++++++++++++--- .../FoodieFolio/Views/RecipesListView.swift | 17 ++++++++++++++--- .../FoodieFolio/Views/SafariView.swift | 17 ++++++++++++++--- .../FoodieFolio/Views/StorePurchaseView.swift | 17 ++++++++++++++--- 27 files changed, 379 insertions(+), 82 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ColorPalette.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ColorPalette.swift index ead10e4..c400e92 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ColorPalette.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ColorPalette.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// ColorPalette.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 28/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift index 1c38e82..bd7aa33 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// ContentView.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 08/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI import RealmSwift diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Button+Extension.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Button+Extension.swift index d969cb5..ca93266 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Button+Extension.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Button+Extension.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// Button+Extension.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 14/09/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Double+Extension.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Double+Extension.swift index 59c42a6..473f2bc 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Double+Extension.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Double+Extension.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// Double+Extension.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 14/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import Foundation diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/String+Extension.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/String+Extension.swift index dc3b157..f6a4011 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/String+Extension.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/String+Extension.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// String+Extension.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 11/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import Foundation diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Text+Extension.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Text+Extension.swift index c179e93..5cba550 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Text+Extension.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Text+Extension.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// Text+Extension.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 14/09/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/TextField+Extension.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/TextField+Extension.swift index 2b7ceb0..0b88e9b 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/TextField+Extension.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/TextField+Extension.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// TextField+Extension.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 14/09/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/FoodieFolioApp.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/FoodieFolioApp.swift index 5ee6937..960785d 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/FoodieFolioApp.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/FoodieFolioApp.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// FoodieFolioApp.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 08/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift index 7feb2b6..2d965d1 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/AuthenticationManager.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// AuthenticationManager.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 26/09/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import Foundation import RealmSwift diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift index e14e5e5..b86bd50 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// RealmManager.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 09/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import Foundation import RealmSwift diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift index 67b51fd..872be03 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// StoreKitManager.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 31/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import Foundation import StoreKit diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Purchase.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Purchase.swift index 605ffac..8e88e5e 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Purchase.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Purchase.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// Purchase.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 06/10/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import Foundation import RealmSwift diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift index 7368232..7134967 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// Recipe.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 09/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import Foundation import RealmSwift diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/AccountView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/AccountView.swift index dd43bdb..b928196 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/AccountView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/AccountView.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// AccountView.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 02/10/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI import RealmSwift diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CapsuleButton.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CapsuleButton.swift index 28e2f70..f7c0ef8 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CapsuleButton.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CapsuleButton.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// CapsuleButton.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 05/10/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CircleImage.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CircleImage.swift index ea04146..c7ae2a7 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CircleImage.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CircleImage.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// CircleImage.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 10/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CuisineView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CuisineView.swift index ff7e0d5..f1054fb 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CuisineView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CuisineView.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// CuisineView.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 28/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/IngredientsView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/IngredientsView.swift index 31eaf91..a66425a 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/IngredientsView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/IngredientsView.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// IngredientsView.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 28/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift index 91e8697..4bb30e0 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// LoginFormCard.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 14/09/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI import RealmSwift diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift index 195fece..584bf3d 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// LoginView.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 11/09/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI import RealmSwift diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/ReadRecipeButton.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/ReadRecipeButton.swift index f14c906..0ed92c3 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/ReadRecipeButton.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/ReadRecipeButton.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// ReadRecipeButton.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 28/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetail.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetail.swift index 50201ac..bb0d8a1 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetail.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetail.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// RecipeDetail.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 10/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetailInfoView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetailInfoView.swift index f668e0e..73699af 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetailInfoView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetailInfoView.swift @@ -1,10 +1,21 @@ +//////////////////////////////////////////////////////////////////////////// // -// RecipeDetailInfoView.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 11/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // - +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// +/// import SwiftUI struct RecipeDetailInfoView: View { diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeRow.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeRow.swift index 8b3cf9e..21dbe74 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeRow.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeRow.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// RecipeRow.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 10/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift index 858a9fc..cad7181 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// RecipesListView.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 09/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI import RealmSwift diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/SafariView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/SafariView.swift index ba1988b..3ac397d 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/SafariView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/SafariView.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// SafariView.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 28/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI import SafariServices diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift index 6d1938f..40a540b 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift @@ -1,9 +1,20 @@ +//////////////////////////////////////////////////////////////////////////// // -// StorePurchaseView.swift -// FoodieFolio +// Copyright 2023 Realm Inc. // -// Created by Mar Cabrera on 30/08/2023. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// import SwiftUI import StoreKit From 09fd301ee673ede26e56c6400a34d39718102b8b Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:00:48 +0000 Subject: [PATCH 07/40] Remove commented code --- .../FoodieFolio/FoodieFolio/ContentView.swift | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift index bd7aa33..3ef94ff 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift @@ -52,12 +52,4 @@ struct ContentView: View { EmptyView() } } -} - -/* -struct ContentView_Previews: PreviewProvider { - static var previews: some View { - ContentView() - } -} -*/ +}g From 9a4f07064f26d2fdff358c1048aec7d4e9da4e37 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:01:30 +0000 Subject: [PATCH 08/40] Remove typo --- .../FoodieFolio/FoodieFolio/ContentView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift index 3ef94ff..14c4c06 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/ContentView.swift @@ -52,4 +52,4 @@ struct ContentView: View { EmptyView() } } -}g +} From 564d117082ece1b1922dc6689db56a38ddb8c4fd Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:07:27 +0000 Subject: [PATCH 09/40] Update SPM Realm dependency to latest stable version --- .../FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj index 45b9f25..50e2d06 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj @@ -506,8 +506,8 @@ isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/realm/realm-swift.git"; requirement = { - branch = master; - kind = branch; + kind = exactVersion; + version = 10.44.0; }; }; /* End XCRemoteSwiftPackageReference section */ From 6a2c0932516fb7b0230dc6c6bdce09870f7c0a93 Mon Sep 17 00:00:00 2001 From: Mar Cabrera <102970376+marcabreracast@users.noreply.github.com> Date: Tue, 7 Nov 2023 15:08:03 +0000 Subject: [PATCH 10/40] Update InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift Co-authored-by: Diana Perez Afanador --- .../FoodieFolio/Managers/RealmManager.swift | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift index e14e5e5..257c31a 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift @@ -17,16 +17,13 @@ class RealmManager: ObservableObject { // Configuration of subscription options let configuration = user.flexibleSyncConfiguration(initialSubscriptions: { subscription in - if subscription.first(named: "all-recipes") != nil && subscription.first(named: "all-purchases") != nil { - return - } else { - if subscription.first(named: "all-recipes") == nil { - subscription.append(QuerySubscription(name: "all-recipes")) - } - if subscription.first(named: "all-purchases") == nil { - subscription.append(QuerySubscription(name: "all-purchases")) - } - } + if subscription.first(named: "all-recipes") == nil { + subscription.append(QuerySubscription(name: "all-recipes")) + } + +if subscription.first(named: "all-purchases") == nil { + subscription.append(QuerySubscription(name: "all-purchases")) +} }, rerunOnOpen: true) do { From 4a041a478b442e35b6b9aeec59e67b567fcfa66d Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:11:53 +0000 Subject: [PATCH 11/40] Remove properties that are not needed --- .../FoodieFolio/FoodieFolio/Views/LoginView.swift | 3 --- 1 file changed, 3 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift index 584bf3d..baee039 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift @@ -20,10 +20,7 @@ import SwiftUI import RealmSwift struct LoginView: View { - @State private var email: String = "" - @State private var password: String = "" @State private var isAlertPresented = false - @State private var alertMessage = "" @State var isLoginSuccessful = false var body: some View { From 19ada49e4264cd48c42e8a1f67a4293539d9718f Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:15:00 +0000 Subject: [PATCH 12/40] Fix indentation --- .../FoodieFolio/Views/LoginFormCard.swift | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift index 4bb30e0..1acabbd 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift @@ -56,11 +56,11 @@ struct LoginFormCard: View { .cornerRadius(10) } .alert(isPresented: $isAlertPresented) { - Alert( - title: Text("Login Error"), - message: Text(alertMessage), - dismissButton: .default(Text("OK")) - ) + Alert( + title: Text("Login Error"), + message: Text(alertMessage), + dismissButton: .default(Text("OK")) + ) } Button { @@ -76,11 +76,11 @@ struct LoginFormCard: View { .cornerRadius(10) } .alert(isPresented: $isAlertPresented) { - Alert( - title: Text("Login Error"), - message: Text(alertMessage), - dismissButton: .default(Text("OK")) - ) + Alert( + title: Text("Login Error"), + message: Text(alertMessage), + dismissButton: .default(Text("OK")) + ) } } .padding(.horizontal, 20) From 7a7411e65a4c4e557e9595f99138c6dc0e9c45c3 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:19:56 +0000 Subject: [PATCH 13/40] Add modifier to textfield void having upper case letters by default --- .../FoodieFolio/FoodieFolio/Views/LoginFormCard.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift index 1acabbd..28ccbd4 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift @@ -34,6 +34,7 @@ struct LoginFormCard: View { TextField("Email", text: $email) .textFieldStyle() + .textInputAutocapitalization(.none) Text("Password") .headerStyle() From 63d748bddcb644f2bf3e04cd5dc4592e206d9c72 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:20:56 +0000 Subject: [PATCH 14/40] Remove var declaration since it won't be used --- .../FoodieFolio/FoodieFolio/Managers/RealmManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift index b86bd50..1adb927 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift @@ -41,7 +41,7 @@ class RealmManager: ObservableObject { }, rerunOnOpen: true) do { - self.realm = try await Realm(configuration: configuration, downloadBeforeOpen: .once) + _ = try await Realm(configuration: configuration, downloadBeforeOpen: .once) } catch { print("There was an error opening the realm: \(error.localizedDescription)") } From bfac08311d4a53480372833d3a4605a897bac57c Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:22:40 +0000 Subject: [PATCH 15/40] Change of method used to capitalized title since it's better suited --- .../FoodieFolio/FoodieFolio/Views/CapsuleButton.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CapsuleButton.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CapsuleButton.swift index f7c0ef8..c842fdf 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CapsuleButton.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/CapsuleButton.swift @@ -24,7 +24,7 @@ struct CapsuleButton: View { var body: some View { Button(action: action) { - Text(title.capitalizedWord) + Text(title.capitalized) .font(.system(size: 14, weight: .bold)) .padding(.horizontal, 10) .padding(.vertical, 4) From 5549de70cf66221f0c6475a925575ce45b6b6d3c Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:23:03 +0000 Subject: [PATCH 16/40] Remove reference to unused variable --- .../FoodieFolio/FoodieFolio/Views/RecipesListView.swift | 4 ---- 1 file changed, 4 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift index cad7181..cdf8483 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift @@ -99,8 +99,4 @@ struct RecipesListView: View { $0.userId == realmApp.currentUser?.id } } - - var hasPurchases: Bool { - return !filteredPurchases.isEmpty - } } From 82155a032a6a3da8bb756b68a4fab50e86ff98d8 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:30:07 +0000 Subject: [PATCH 17/40] Remove note that's not needed --- .../FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift index 872be03..c74875f 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift @@ -20,7 +20,7 @@ import Foundation import StoreKit /// `StoreKitManager` is responsible for managing in-app purchases and product information. -/// NOTE: + class StoreKitManager: ObservableObject { /// An array of published products available for purchase. @Published var storeProducts: [Product] = [] From 256fd9afbfcc21af854adca288b5e838adde9476 Mon Sep 17 00:00:00 2001 From: Mar Cabrera <102970376+marcabreracast@users.noreply.github.com> Date: Tue, 7 Nov 2023 15:30:47 +0000 Subject: [PATCH 18/40] Update InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift Correct typo Co-authored-by: Diana Perez Afanador --- .../FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift index 67b51fd..9b4387c 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift @@ -116,7 +116,7 @@ class StoreKitManager: ObservableObject { func updateCustomerProductStatus() async { var purchaseRecipes: [Product] = [] - // iterate through all the user's purcahsed products + // iterate through all the user's purchased products for await result in Transaction.currentEntitlements { do { // check if transaction is verified From 7484d4117c795d22ea3259bb633e68eb5e063264 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:34:05 +0000 Subject: [PATCH 19/40] Remove extension that's not needed due to this style only being used once --- .../FoodieFolio.xcodeproj/project.pbxproj | 4 --- .../Extensions/TextField+Extension.swift | 28 ------------------- .../FoodieFolio/Views/LoginFormCard.swift | 4 ++- 3 files changed, 3 insertions(+), 33 deletions(-) delete mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/TextField+Extension.swift diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj index 50e2d06..afe3d8c 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj @@ -35,7 +35,6 @@ 3E3A15192A852FBD0086F5B8 /* CircleImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A15182A852FBD0086F5B8 /* CircleImage.swift */; }; 3E9BDF062AAF616D00A73090 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E9BDF052AAF616D00A73090 /* LoginView.swift */; }; 3EA304C52AB35782003A6A1C /* LoginFormCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA304C42AB35782003A6A1C /* LoginFormCard.swift */; }; - 3EA304C72AB35F52003A6A1C /* TextField+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA304C62AB35F52003A6A1C /* TextField+Extension.swift */; }; 3EA304C92AB35F93003A6A1C /* Button+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA304C82AB35F93003A6A1C /* Button+Extension.swift */; }; 3EA304CB2AB36132003A6A1C /* Text+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA304CA2AB36132003A6A1C /* Text+Extension.swift */; }; 3EB573232A862A28005B8AF6 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EB573222A862A28005B8AF6 /* String+Extension.swift */; }; @@ -71,7 +70,6 @@ 3E3A15182A852FBD0086F5B8 /* CircleImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleImage.swift; sourceTree = ""; }; 3E9BDF052AAF616D00A73090 /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; 3EA304C42AB35782003A6A1C /* LoginFormCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginFormCard.swift; sourceTree = ""; }; - 3EA304C62AB35F52003A6A1C /* TextField+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TextField+Extension.swift"; sourceTree = ""; }; 3EA304C82AB35F93003A6A1C /* Button+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Button+Extension.swift"; sourceTree = ""; }; 3EA304CA2AB36132003A6A1C /* Text+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Text+Extension.swift"; sourceTree = ""; }; 3EB573222A862A28005B8AF6 /* String+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = ""; }; @@ -188,7 +186,6 @@ children = ( 3EB573222A862A28005B8AF6 /* String+Extension.swift */, 3E278CC02A8A193F002A784A /* Double+Extension.swift */, - 3EA304C62AB35F52003A6A1C /* TextField+Extension.swift */, 3EA304C82AB35F93003A6A1C /* Button+Extension.swift */, 3EA304CA2AB36132003A6A1C /* Text+Extension.swift */, ); @@ -296,7 +293,6 @@ 3E3A15102A83AEA10086F5B8 /* Recipe.swift in Sources */, 3E2CC8C12ACB17960013AF50 /* AccountView.swift in Sources */, 3E9BDF062AAF616D00A73090 /* LoginView.swift in Sources */, - 3EA304C72AB35F52003A6A1C /* TextField+Extension.swift in Sources */, 3E0467EF2A9CB9F1004CC947 /* ReadRecipeButton.swift in Sources */, 3E0467FC2A9F9065004CC947 /* StorePurchaseView.swift in Sources */, 3EA304C92AB35F93003A6A1C /* Button+Extension.swift in Sources */, diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/TextField+Extension.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/TextField+Extension.swift deleted file mode 100644 index 0b88e9b..0000000 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/TextField+Extension.swift +++ /dev/null @@ -1,28 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// -// Copyright 2023 Realm Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////// - -import SwiftUI - -extension TextField { - func textFieldStyle() -> some View { - self - .padding(.all) - .overlay(RoundedRectangle(cornerRadius: 10.0).strokeBorder(.white, style: StrokeStyle(lineWidth: 1.0))) - .foregroundColor(.white) - } -} diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift index 28ccbd4..4ba462d 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift @@ -33,7 +33,9 @@ struct LoginFormCard: View { .headerStyle() TextField("Email", text: $email) - .textFieldStyle() + .padding(.all) + .overlay(RoundedRectangle(cornerRadius: 10.0).strokeBorder(.white, style: StrokeStyle(lineWidth: 1.0))) + .foregroundColor(.white) .textInputAutocapitalization(.none) Text("Password") From 18153404bdaf9af2f344370cfa731f566cb63a94 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:42:26 +0000 Subject: [PATCH 20/40] Remove use of MainActor that's not needed --- .../FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift index 18d39b0..34fb958 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/StoreKitManager.swift @@ -123,7 +123,6 @@ class StoreKitManager: ObservableObject { } } - @MainActor func updateCustomerProductStatus() async { var purchaseRecipes: [Product] = [] From e69fee636ad5c858cb4e927e727c4e288d867a6c Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:45:23 +0000 Subject: [PATCH 21/40] Remove duplicated alert --- .../FoodieFolio/FoodieFolio/Views/LoginFormCard.swift | 7 ------- 1 file changed, 7 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift index 4ba462d..e9108b2 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift @@ -58,13 +58,6 @@ struct LoginFormCard: View { .foregroundColor(.white) .cornerRadius(10) } - .alert(isPresented: $isAlertPresented) { - Alert( - title: Text("Login Error"), - message: Text(alertMessage), - dismissButton: .default(Text("OK")) - ) - } Button { Task { From a9f1e7deefbf20c886438f3a72dc3cdf26896799 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 7 Nov 2023 15:46:30 +0000 Subject: [PATCH 22/40] Remove type declaration for vars since type is inferred on the wrapper --- .../FoodieFolio/FoodieFolio/Views/RecipesListView.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift index cdf8483..c3b12a1 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift @@ -20,8 +20,8 @@ import SwiftUI import RealmSwift struct RecipesListView: View { - @ObservedResults(Recipe.self) var recipes: Results - @ObservedResults(Purchase.self) var purchases: Results + @ObservedResults(Recipe.self) var recipes + @ObservedResults(Purchase.self) var purchases @State private var isPresentingModal = false @State private var selectedCategory: String = "general" From 83e0a9ee98eed3fb5cdadfb5f66744bb58feea66 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 8 Nov 2023 14:44:53 +0000 Subject: [PATCH 23/40] Remove reference to rerun subscriptions once they were added since it's not needed --- .../FoodieFolio/Managers/RealmManager.swift | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift index b442ec9..ac72b33 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift @@ -28,14 +28,14 @@ class RealmManager: ObservableObject { // Configuration of subscription options let configuration = user.flexibleSyncConfiguration(initialSubscriptions: { subscription in - if subscription.first(named: "all-recipes") == nil { + if subscription.first(named: "all-recipes") == nil { subscription.append(QuerySubscription(name: "all-recipes")) - } + } -if subscription.first(named: "all-purchases") == nil { + if subscription.first(named: "all-purchases") == nil { subscription.append(QuerySubscription(name: "all-purchases")) -} - }, rerunOnOpen: true) + } + }) do { _ = try await Realm(configuration: configuration, downloadBeforeOpen: .once) From 6592ec1585312d2ae0142a9603096ad854eb5d7d Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 8 Nov 2023 14:58:54 +0000 Subject: [PATCH 24/40] Replace .none with never to avoid capitalization in textfield --- .../FoodieFolio/FoodieFolio/Views/LoginFormCard.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift index e9108b2..734b2f5 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginFormCard.swift @@ -36,7 +36,7 @@ struct LoginFormCard: View { .padding(.all) .overlay(RoundedRectangle(cornerRadius: 10.0).strokeBorder(.white, style: StrokeStyle(lineWidth: 1.0))) .foregroundColor(.white) - .textInputAutocapitalization(.none) + .textInputAutocapitalization(.never) Text("Password") .headerStyle() From a4116c844167ebdf8b42c0cab3cfca1c8e0ee1a0 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 8 Nov 2023 15:37:27 +0000 Subject: [PATCH 25/40] Revert change to avoid screen loading forever --- .../FoodieFolio/FoodieFolio/Managers/RealmManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift index ac72b33..244a765 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Managers/RealmManager.swift @@ -38,7 +38,7 @@ class RealmManager: ObservableObject { }) do { - _ = try await Realm(configuration: configuration, downloadBeforeOpen: .once) + self.realm = try await Realm(configuration: configuration, downloadBeforeOpen: .once) } catch { print("There was an error opening the realm: \(error.localizedDescription)") } From 350b2afee26474e8f6a88e6e2a352d676fb7c410 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 8 Nov 2023 15:41:53 +0000 Subject: [PATCH 26/40] Replace ingredients type to use RealmList instead of an array of strings --- .../FoodieFolio/Views/IngredientsView.swift | 13 ++++--------- .../FoodieFolio/Views/RecipeDetail.swift | 2 +- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/IngredientsView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/IngredientsView.swift index a66425a..70813ba 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/IngredientsView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/IngredientsView.swift @@ -17,20 +17,21 @@ //////////////////////////////////////////////////////////////////////////// import SwiftUI +import RealmSwift struct IngredientsView: View { - var ingredients: [String] + var ingredients: RealmSwift.List var body: some View { VStack(alignment: .leading, spacing: 15) { Text("INGREDIENTS") .font(.system(.title2)) - ForEach(ingredients, id: \.self) { ingredient in + ForEach(0.. Date: Wed, 8 Nov 2023 15:44:13 +0000 Subject: [PATCH 27/40] Fix indentation --- .../FoodieFolio/Views/StorePurchaseView.swift | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift index 40a540b..06378b2 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/StorePurchaseView.swift @@ -118,11 +118,11 @@ struct StorePurchaseView: View { .cornerRadius(10) } .alert(isPresented: $isAlertPresented) { - Alert( - title: Text("Error"), - message: Text(alertMessage), - dismissButton: .default(Text("OK")) - ) + Alert( + title: Text("Error"), + message: Text(alertMessage), + dismissButton: .default(Text("OK")) + ) } .padding(.bottom) .disabled(!isAnyProductBundleSelected) // Disable the button if no circle button is selected From 54bf82b920dbcbe60f7af9eb8d6ad0639f1bd21b Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 8 Nov 2023 15:45:48 +0000 Subject: [PATCH 28/40] Remove unused Button extension --- .../FoodieFolio.xcodeproj/project.pbxproj | 4 --- .../Extensions/Button+Extension.swift | 30 ------------------- 2 files changed, 34 deletions(-) delete mode 100644 InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Button+Extension.swift diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj index afe3d8c..797b8e0 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio.xcodeproj/project.pbxproj @@ -35,7 +35,6 @@ 3E3A15192A852FBD0086F5B8 /* CircleImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A15182A852FBD0086F5B8 /* CircleImage.swift */; }; 3E9BDF062AAF616D00A73090 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E9BDF052AAF616D00A73090 /* LoginView.swift */; }; 3EA304C52AB35782003A6A1C /* LoginFormCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA304C42AB35782003A6A1C /* LoginFormCard.swift */; }; - 3EA304C92AB35F93003A6A1C /* Button+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA304C82AB35F93003A6A1C /* Button+Extension.swift */; }; 3EA304CB2AB36132003A6A1C /* Text+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA304CA2AB36132003A6A1C /* Text+Extension.swift */; }; 3EB573232A862A28005B8AF6 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EB573222A862A28005B8AF6 /* String+Extension.swift */; }; 3EB573252A862F57005B8AF6 /* RecipeDetailInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EB573242A862F57005B8AF6 /* RecipeDetailInfoView.swift */; }; @@ -70,7 +69,6 @@ 3E3A15182A852FBD0086F5B8 /* CircleImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleImage.swift; sourceTree = ""; }; 3E9BDF052AAF616D00A73090 /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; 3EA304C42AB35782003A6A1C /* LoginFormCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginFormCard.swift; sourceTree = ""; }; - 3EA304C82AB35F93003A6A1C /* Button+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Button+Extension.swift"; sourceTree = ""; }; 3EA304CA2AB36132003A6A1C /* Text+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Text+Extension.swift"; sourceTree = ""; }; 3EB573222A862A28005B8AF6 /* String+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = ""; }; 3EB573242A862F57005B8AF6 /* RecipeDetailInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecipeDetailInfoView.swift; sourceTree = ""; }; @@ -186,7 +184,6 @@ children = ( 3EB573222A862A28005B8AF6 /* String+Extension.swift */, 3E278CC02A8A193F002A784A /* Double+Extension.swift */, - 3EA304C82AB35F93003A6A1C /* Button+Extension.swift */, 3EA304CA2AB36132003A6A1C /* Text+Extension.swift */, ); path = Extensions; @@ -295,7 +292,6 @@ 3E9BDF062AAF616D00A73090 /* LoginView.swift in Sources */, 3E0467EF2A9CB9F1004CC947 /* ReadRecipeButton.swift in Sources */, 3E0467FC2A9F9065004CC947 /* StorePurchaseView.swift in Sources */, - 3EA304C92AB35F93003A6A1C /* Button+Extension.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Button+Extension.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Button+Extension.swift deleted file mode 100644 index ca93266..0000000 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Extensions/Button+Extension.swift +++ /dev/null @@ -1,30 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// -// Copyright 2023 Realm Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////// - -import SwiftUI - -extension Button { - func buttonStyle() -> some View { - self - .frame(maxWidth: .infinity) - .frame(height: 50) - .background(ColorPalette.violet) - .foregroundColor(.white) - .cornerRadius(10) - } -} From 04b6218f906d457ecdb513687be5abfe317624a9 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 8 Nov 2023 15:59:46 +0000 Subject: [PATCH 29/40] Change navigation modifiers to the main VStack instead of attaching it to the List to improve readability --- .../FoodieFolio/FoodieFolio/Views/RecipesListView.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift index c3b12a1..879cfdd 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift @@ -61,9 +61,9 @@ struct RecipesListView: View { Image(systemName: "gift.fill") .foregroundColor(ColorPalette.lightLilac) }) - .sheet(isPresented: $isPresentingModal) { - StorePurchaseView() - } + } + .sheet(isPresented: $isPresentingModal) { + StorePurchaseView() } } .tabItem { From 53e26e56e052fa28e4eb585ad932dd610692b877 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Fri, 10 Nov 2023 11:13:43 +0000 Subject: [PATCH 30/40] Update model name for Purchase so it matches camel case formatting --- .../FoodieFolio/FoodieFolio/Models/Purchase.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Purchase.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Purchase.swift index 8e88e5e..2c92702 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Purchase.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Purchase.swift @@ -21,11 +21,11 @@ import RealmSwift class Purchase: Object, Identifiable { @Persisted(primaryKey: true) var _id: ObjectId? - @Persisted var receipt: Purchase_receipt? + @Persisted var receipt: PurchaseReceipt? @Persisted var userId: String? } -class Purchase_receipt: EmbeddedObject { +class PurchaseReceipt: EmbeddedObject { @Persisted var bundleId: String? @Persisted var deviceVerification: String? From e83c139900f163ba33a6091e8d9a66f73cd271c2 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Fri, 10 Nov 2023 11:54:16 +0000 Subject: [PATCH 31/40] Update model name to IngredientList in order to match camel case formatting --- .../FoodieFolio/FoodieFolio/Models/Recipe.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift index 7134967..e70fea6 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift @@ -38,7 +38,7 @@ class Recipe: Object, Identifiable { @Persisted var ingredientLines: List - @Persisted var ingredients: List + @Persisted var ingredients: List @Persisted var label: String? @@ -61,7 +61,7 @@ class Recipe: Object, Identifiable { @Persisted var yield: Double? } -class Recipe_ingredients: EmbeddedObject { +class RecipeIngredients: EmbeddedObject { @Persisted var food: String? @Persisted var foodCategory: String? From 0ea7f80029ff27867434ee1db1ef8a126d572065 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Fri, 10 Nov 2023 11:54:29 +0000 Subject: [PATCH 32/40] Remove unnecesary comment --- .../FoodieFolio/FoodieFolio/Views/LoginView.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift index baee039..6fe8e0b 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift @@ -32,7 +32,6 @@ struct LoginView: View { VStack { ZStack { - // Background View ColorPalette.violet .opacity(0.8) .cornerRadius(20) From e0ba89508e98e53341c2d622ccf86348dfce855f Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Fri, 10 Nov 2023 12:28:52 +0000 Subject: [PATCH 33/40] Perform schema change for cuisine type so a string is returned instead of a List --- .../FoodieFolio/FoodieFolio/Models/Recipe.swift | 2 +- .../FoodieFolio/FoodieFolio/Views/RecipeDetail.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift index e70fea6..94054d6 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift @@ -26,7 +26,7 @@ class Recipe: Object, Identifiable { @Persisted var cautions: List - @Persisted var cuisineType: List + @Persisted var cuisineType: String? @Persisted var dietLabels: List diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetail.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetail.swift index 7a6bc26..483f908 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetail.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipeDetail.swift @@ -31,7 +31,7 @@ struct RecipeDetail: View { .font(.title) .padding(.bottom, 10) - let cuisineType = recipe.cuisineType.first ?? "Unspecified" + let cuisineType = recipe.cuisineType ?? "Unspecified" let calories = recipe.calories?.roundedUpToString() ?? "0 cal" CuisineView(cuisineType: cuisineType.capitalizedWord, calories: calories) From 26d44e42101a65a0b6527e71fd1e240ff38b2cb9 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Fri, 10 Nov 2023 12:31:12 +0000 Subject: [PATCH 34/40] Remove redundant code for login navigation --- .../FoodieFolio/FoodieFolio/Views/LoginView.swift | 3 --- 1 file changed, 3 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift index 6fe8e0b..03b7440 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/LoginView.swift @@ -51,9 +51,6 @@ struct LoginView: View { LoginFormCard(isLoginSuccessful: $isLoginSuccessful) } } - .navigationDestination(isPresented: $isLoginSuccessful) { - RecipesListView() - } } } } From 7efdd278eedceb58e96ca70886df56af91fb37db Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Fri, 10 Nov 2023 12:43:18 +0000 Subject: [PATCH 35/40] Update App Services app --- .../data_sources/mongodb-atlas/config.json | 2 +- .../foodie-folio/Purchases/relationships.json | 1 - .../foodie-folio/Purchases/rules.json | 19 --- .../foodie-folio/Purchases/schema.json | 64 ---------- .../foodie-folio/Recipes/relationships.json | 1 - .../foodie-folio/Recipes/rules.json | 19 --- .../foodie-folio/Recipes/schema.json | 115 ------------------ .../functions/addPurchaseReceipt.js | 2 +- .../functions/fetchPremiumRecipes.js | 13 +- .../functions/fetchRecipes.js | 6 +- .../App Services app/sync/config.json | 4 +- .../triggers/fetchPremiumRecipes.json | 2 +- .../triggers/fetchRecipes.json | 2 +- 13 files changed, 16 insertions(+), 234 deletions(-) delete mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/relationships.json delete mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/rules.json delete mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/schema.json delete mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/relationships.json delete mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/rules.json delete mode 100644 InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/schema.json diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/config.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/config.json index 17f4c55..c970461 100644 --- a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/config.json +++ b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/config.json @@ -2,7 +2,7 @@ "name": "mongodb-atlas", "type": "mongodb-atlas", "config": { - "clusterName": "AtlasCluster", + "clusterName": "YOUR_CLUSTER_NAME", "readPreference": "primary", "wireProtocolEnabled": false }, diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/relationships.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/relationships.json deleted file mode 100644 index 0967ef4..0000000 --- a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/relationships.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/rules.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/rules.json deleted file mode 100644 index c08a160..0000000 --- a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/rules.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "collection": "Purchases", - "database": "foodie-folio", - "roles": [ - { - "name": "readAndWriteAll", - "apply_when": {}, - "document_filters": { - "write": true, - "read": true - }, - "read": true, - "write": true, - "insert": true, - "delete": true, - "search": true - } - ] -} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/schema.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/schema.json deleted file mode 100644 index c09aac8..0000000 --- a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Purchases/schema.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "properties": { - "_id": { - "bsonType": "objectId" - }, - "receipt": { - "bsonType": "object", - "properties": { - "bundleId": { - "bsonType": "string" - }, - "deviceVerification": { - "bsonType": "string" - }, - "deviceVerificationNonce": { - "bsonType": "string" - }, - "environment": { - "bsonType": "string" - }, - "inAppOwnershipType": { - "bsonType": "string" - }, - "originalPurchaseDate": { - "bsonType": "double" - }, - "originalTransactionId": { - "bsonType": "string" - }, - "productId": { - "bsonType": "string" - }, - "purchaseDate": { - "bsonType": "double" - }, - "quantity": { - "bsonType": "double" - }, - "signedDate": { - "bsonType": "double" - }, - "storefront": { - "bsonType": "string" - }, - "storefrontId": { - "bsonType": "string" - }, - "transactionId": { - "bsonType": "string" - }, - "transactionReason": { - "bsonType": "string" - }, - "type": { - "bsonType": "string" - } - } - }, - "userId": { - "bsonType": "string" - } - }, - "title": "Purchase" -} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/relationships.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/relationships.json deleted file mode 100644 index 0967ef4..0000000 --- a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/relationships.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/rules.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/rules.json deleted file mode 100644 index 256e75a..0000000 --- a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/rules.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "collection": "Recipes", - "database": "foodie-folio", - "roles": [ - { - "name": "readAndWriteAll", - "apply_when": {}, - "document_filters": { - "write": true, - "read": true - }, - "read": true, - "write": true, - "insert": true, - "delete": true, - "search": true - } - ] -} diff --git a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/schema.json b/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/schema.json deleted file mode 100644 index c839233..0000000 --- a/InAppPurchasesAtlasAppServices/App Services app/data_sources/mongodb-atlas/foodie-folio/Recipes/schema.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "properties": { - "_id": { - "bsonType": "objectId" - }, - "calories": { - "bsonType": "double" - }, - "cautions": { - "bsonType": "array", - "items": { - "bsonType": "string" - } - }, - "cuisineType": { - "bsonType": "array", - "items": { - "bsonType": "string" - } - }, - "dietLabels": { - "bsonType": "array", - "items": { - "bsonType": "string" - } - }, - "dishType": { - "bsonType": "array", - "items": { - "bsonType": "string" - } - }, - "healthLabels": { - "bsonType": "array", - "items": { - "bsonType": "string" - } - }, - "image": { - "bsonType": "string" - }, - "ingredientLines": { - "bsonType": "array", - "items": { - "bsonType": "string" - } - }, - "ingredients": { - "bsonType": "array", - "items": { - "bsonType": "object", - "properties": { - "food": { - "bsonType": "string" - }, - "foodCategory": { - "bsonType": "string" - }, - "foodId": { - "bsonType": "string" - }, - "image": { - "bsonType": "string" - }, - "measure": { - "bsonType": "string" - }, - "quantity": { - "bsonType": "double" - }, - "text": { - "bsonType": "string" - }, - "weight": { - "bsonType": "double" - } - } - } - }, - "label": { - "bsonType": "string" - }, - "mealType": { - "bsonType": "array", - "items": { - "bsonType": "string" - } - }, - "shareAs": { - "bsonType": "string" - }, - "source": { - "bsonType": "string" - }, - "totalCO2Emissions": { - "bsonType": "double" - }, - "totalTime": { - "bsonType": "double" - }, - "totalWeight": { - "bsonType": "double" - }, - "uri": { - "bsonType": "string" - }, - "url": { - "bsonType": "string" - }, - "yield": { - "bsonType": "double" - } - }, - "title": "Recipe" -} diff --git a/InAppPurchasesAtlasAppServices/App Services app/functions/addPurchaseReceipt.js b/InAppPurchasesAtlasAppServices/App Services app/functions/addPurchaseReceipt.js index ca404e2..b4135d5 100644 --- a/InAppPurchasesAtlasAppServices/App Services app/functions/addPurchaseReceipt.js +++ b/InAppPurchasesAtlasAppServices/App Services app/functions/addPurchaseReceipt.js @@ -1,7 +1,7 @@ exports = async function(userId, transactionResult){ var serviceName = "mongodb-atlas"; var dbName = "foodie-folio"; - var collName = "Purchases"; + var collName = "Purchase"; var purchasesCollection = context.services.get(serviceName).db(dbName).collection(collName); diff --git a/InAppPurchasesAtlasAppServices/App Services app/functions/fetchPremiumRecipes.js b/InAppPurchasesAtlasAppServices/App Services app/functions/fetchPremiumRecipes.js index 9289f39..acd1e7a 100644 --- a/InAppPurchasesAtlasAppServices/App Services app/functions/fetchPremiumRecipes.js +++ b/InAppPurchasesAtlasAppServices/App Services app/functions/fetchPremiumRecipes.js @@ -3,15 +3,15 @@ exports = async function(arg){ var serviceName = "mongodb-atlas"; var dbName = "foodie-folio"; - var collName = "Recipes"; + var collName = "Recipe"; - var edamamAppID = context.values.get('YOUR_EDAMAM_APP_ID'); - var edamamAPIKey = context.values.get('YOUR_EDAMAM_API KEY'); + var edamamAppID = context.values.get('edamam-app-id-link-to-secret'); + var edamamAPIKey = context.values.get('edamam-api-key-link-to-secret'); // Change this and add it as url query parameters instead const diet = "low-carb"; - const premiumRecipes = "Japanese" - var queryString = `?type=any&app_id=${edamamAppID}&app_key=${edamamAPIKey}&cuisineType=${premiumRecipe}&diet=${diet}`; + const premiumRecipes = ["Japanese", "Greek"] + var queryString = `?type=any&app_id=${edamamAppID}&app_key=${edamamAPIKey}&cuisineType=${premiumRecipes[0]}&cuisineType=${premiumRecipes[1]}&diet=${diet}`; var baseURL = "https://api.edamam.com/api/recipes/v2"; const endpoint = baseURL + queryString; @@ -32,11 +32,12 @@ exports = async function(arg){ // Use the recipe URI as the unique identifier const filter = { uri: recipeURI }; + // SELECTION OF DATA I WANT TO insert const dataToUpsert = { uri: recipeObject.uri, calories: recipeObject.calories, cautions: recipeObject.cautions, - cuisineType: recipeObject.cuisineType, + cuisineType: recipeObject.cuisineType[0], dietLabels: recipeObject.dietLabels, dishType: recipeObject.dishType, healthLabels: recipeObject.healthLabels, diff --git a/InAppPurchasesAtlasAppServices/App Services app/functions/fetchRecipes.js b/InAppPurchasesAtlasAppServices/App Services app/functions/fetchRecipes.js index 951d63a..7553f73 100644 --- a/InAppPurchasesAtlasAppServices/App Services app/functions/fetchRecipes.js +++ b/InAppPurchasesAtlasAppServices/App Services app/functions/fetchRecipes.js @@ -3,7 +3,7 @@ exports = async function(arg){ var serviceName = "mongodb-atlas"; var dbName = "foodie-folio"; - var collName = "Recipes"; + var collName = "Recipe"; var edamamAppID = context.values.get('edamam-app-id-link-to-secret'); var edamamAPIKey = context.values.get('edamam-api-key-link-to-secret'); @@ -30,13 +30,13 @@ exports = async function(arg){ // Use the recipe URI as the unique identifier const filter = { uri: recipeURI }; - + // SELECTION OF DATA I WANT TO insert const dataToUpsert = { uri: recipeObject.uri, calories: recipeObject.calories, cautions: recipeObject.cautions, - cuisineType: recipeObject.cuisineType, + cuisineType: recipeObject.cuisineType[0], dietLabels: recipeObject.dietLabels, dishType: recipeObject.dishType, healthLabels: recipeObject.healthLabels, diff --git a/InAppPurchasesAtlasAppServices/App Services app/sync/config.json b/InAppPurchasesAtlasAppServices/App Services app/sync/config.json index 831c9dc..349e02b 100644 --- a/InAppPurchasesAtlasAppServices/App Services app/sync/config.json +++ b/InAppPurchasesAtlasAppServices/App Services app/sync/config.json @@ -1,9 +1,9 @@ { "type": "flexible", "state": "enabled", - "development_mode_enabled": true, + "development_mode_enabled": false, "service_name": "mongodb-atlas", - "database_name": "todo", + "database_name": "foodie-folio", "client_max_offline_days": 30, "is_recovery_mode_disabled": false, "permissions": { diff --git a/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchPremiumRecipes.json b/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchPremiumRecipes.json index 49c5a73..6672dc2 100644 --- a/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchPremiumRecipes.json +++ b/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchPremiumRecipes.json @@ -5,7 +5,7 @@ "schedule": "*/30 * * * *", "skip_catchup_events": false }, - "disabled": false, + "disabled": true, "event_processors": { "FUNCTION": { "config": { diff --git a/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchRecipes.json b/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchRecipes.json index 09f796d..3efb94d 100644 --- a/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchRecipes.json +++ b/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchRecipes.json @@ -5,7 +5,7 @@ "schedule": "*/30 * * * *", "skip_catchup_events": false }, - "disabled": false, + "disabled": true, "event_processors": { "FUNCTION": { "config": { From 0f38f9330ced74731055a846299cc22b6d6dc638 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Fri, 10 Nov 2023 14:02:58 +0000 Subject: [PATCH 36/40] Update Readme file to include steps for copying Atlas App Services app --- InAppPurchasesAtlasAppServices/README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/README.md b/InAppPurchasesAtlasAppServices/README.md index 6e6c8c9..204b22e 100644 --- a/InAppPurchasesAtlasAppServices/README.md +++ b/InAppPurchasesAtlasAppServices/README.md @@ -64,5 +64,9 @@ To use Email/Password Authentication in App Services, you must first: 1. Copy your [Atlas App ID](https://www.mongodb.com/docs/atlas/app-services/reference/find-your-project-or-app-id/#std-label-find-your-app-id) from the App Services UI. 2. Paste the copied ID as the value of the existing variable `appRealm` to `FoodieFolio/Managers/AuthenticationManager.swift`. -3. You can use the `App Services app` directory as an example for fetching the content of the recipes into your Atlas database. -3. Run the example. +3. You can use the `App Services app` directory as an example for fetching the content of the recipes into your Atlas database. As an alternative, you can use this app and import it to your own App Services app doing the following: +3.1. Create an App Services app following the steps provided in the above section. +3.2. Rename the main directory from `App Services app` to the name of the app that you have created in App Services. +3.3. Modify the parameters `clusterName`, `app_id` and `name` from the config files within the directory so it matches your own. +3.4. Import the app using the command `app services push --remote="your_app_id"` from the [App Services CLI](https://www.mongodb.com/docs/atlas/app-services/cli/#installation) +4. Run the example. From 85c4ebd1da7ded4732a60fbec4b7438ee08535e5 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Fri, 17 Nov 2023 14:43:07 +0000 Subject: [PATCH 37/40] Refactor functionality to avoid hardcoded recipe strings and use better terminology. Added category field on Recipe schema --- .../FoodieFolio/FoodieFolio/Models/Recipe.swift | 2 ++ .../FoodieFolio/Views/RecipesListView.swift | 17 +++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift index 94054d6..346c2ca 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Models/Recipe.swift @@ -22,6 +22,8 @@ import RealmSwift class Recipe: Object, Identifiable { @Persisted(primaryKey: true) var _id: ObjectId? + @Persisted var category: String? + @Persisted var calories: Double? @Persisted var cautions: List diff --git a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift index 879cfdd..4d1ae26 100644 --- a/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift +++ b/InAppPurchasesAtlasAppServices/FoodieFolio/FoodieFolio/Views/RecipesListView.swift @@ -23,7 +23,7 @@ struct RecipesListView: View { @ObservedResults(Recipe.self) var recipes @ObservedResults(Purchase.self) var purchases @State private var isPresentingModal = false - @State private var selectedCategory: String = "general" + @State private var selectedCategory: RecipeCategory = .general var body: some View { TabView { @@ -34,11 +34,11 @@ struct RecipesListView: View { .font(.system(size: 20, weight: .semibold)) HStack { CapsuleButton(title: "General") { - selectedCategory = "general" + selectedCategory = .general } if showPremiumButton { CapsuleButton(title: "Premium") { - selectedCategory = "premium" + selectedCategory = .premium } } } @@ -83,13 +83,13 @@ struct RecipesListView: View { } var filteredRecipes: Results { - if selectedCategory == "premium" { + if selectedCategory == .premium { return recipes.where { - ($0.cuisineType == "japanese") + ($0.category == "free") } } else { return recipes.where { - $0.cuisineType == "american" + $0.category == "purchased" } } } @@ -100,3 +100,8 @@ struct RecipesListView: View { } } } + +enum RecipeCategory: String { + case general + case premium +} From 291f01698ca9e3adc16ecbd6217697edfd665ed6 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Fri, 17 Nov 2023 14:50:57 +0000 Subject: [PATCH 38/40] Update App Services app with backend changes --- .../App Services app/functions/fetchPremiumRecipes.js | 9 +++++---- .../App Services app/functions/fetchRecipes.js | 3 ++- .../App Services app/triggers/fetchPremiumRecipes.json | 2 +- .../App Services app/triggers/fetchRecipes.json | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/InAppPurchasesAtlasAppServices/App Services app/functions/fetchPremiumRecipes.js b/InAppPurchasesAtlasAppServices/App Services app/functions/fetchPremiumRecipes.js index acd1e7a..83b86ac 100644 --- a/InAppPurchasesAtlasAppServices/App Services app/functions/fetchPremiumRecipes.js +++ b/InAppPurchasesAtlasAppServices/App Services app/functions/fetchPremiumRecipes.js @@ -10,12 +10,12 @@ exports = async function(arg){ // Change this and add it as url query parameters instead const diet = "low-carb"; - const premiumRecipes = ["Japanese", "Greek"] - var queryString = `?type=any&app_id=${edamamAppID}&app_key=${edamamAPIKey}&cuisineType=${premiumRecipes[0]}&cuisineType=${premiumRecipes[1]}&diet=${diet}`; + const premiumRecipes = "Japanese" + var queryString = `?type=any&app_id=${edamamAppID}&app_key=${edamamAPIKey}&cuisineType=${premiumRecipes}&diet=${diet}`; var baseURL = "https://api.edamam.com/api/recipes/v2"; const endpoint = baseURL + queryString; - + console.log(endpoint); // Get a collection from the context @@ -31,9 +31,10 @@ exports = async function(arg){ // Use the recipe URI as the unique identifier const filter = { uri: recipeURI }; - + // SELECTION OF DATA I WANT TO insert const dataToUpsert = { + category: "purchased", uri: recipeObject.uri, calories: recipeObject.calories, cautions: recipeObject.cautions, diff --git a/InAppPurchasesAtlasAppServices/App Services app/functions/fetchRecipes.js b/InAppPurchasesAtlasAppServices/App Services app/functions/fetchRecipes.js index 7553f73..15be94c 100644 --- a/InAppPurchasesAtlasAppServices/App Services app/functions/fetchRecipes.js +++ b/InAppPurchasesAtlasAppServices/App Services app/functions/fetchRecipes.js @@ -30,9 +30,10 @@ exports = async function(arg){ // Use the recipe URI as the unique identifier const filter = { uri: recipeURI }; - + // SELECTION OF DATA I WANT TO insert const dataToUpsert = { + category: "free", uri: recipeObject.uri, calories: recipeObject.calories, cautions: recipeObject.cautions, diff --git a/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchPremiumRecipes.json b/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchPremiumRecipes.json index 6672dc2..49c5a73 100644 --- a/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchPremiumRecipes.json +++ b/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchPremiumRecipes.json @@ -5,7 +5,7 @@ "schedule": "*/30 * * * *", "skip_catchup_events": false }, - "disabled": true, + "disabled": false, "event_processors": { "FUNCTION": { "config": { diff --git a/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchRecipes.json b/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchRecipes.json index 3efb94d..09f796d 100644 --- a/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchRecipes.json +++ b/InAppPurchasesAtlasAppServices/App Services app/triggers/fetchRecipes.json @@ -5,7 +5,7 @@ "schedule": "*/30 * * * *", "skip_catchup_events": false }, - "disabled": true, + "disabled": false, "event_processors": { "FUNCTION": { "config": { From 452d7835254db0ce7b4700b04290fccbc91d7ac3 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 22 Nov 2023 11:20:10 +0000 Subject: [PATCH 39/40] Update Readme.md details to match Realm SDK version in the app --- InAppPurchasesAtlasAppServices/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InAppPurchasesAtlasAppServices/README.md b/InAppPurchasesAtlasAppServices/README.md index 204b22e..d573e7b 100644 --- a/InAppPurchasesAtlasAppServices/README.md +++ b/InAppPurchasesAtlasAppServices/README.md @@ -39,7 +39,7 @@ The app addresses the following points: * Log user purchases in Atlas using Atlas App Services to be able to obtain all customer's purchases through Apple's purchase receipts. **Realm Details:** -* RealmSwift v10.43.0 +* RealmSwift v10.44.0 ## Version Support From 9e9ec63488a21c2179688370feae1623efc09780 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 22 Nov 2023 12:38:45 +0000 Subject: [PATCH 40/40] Add Readme description of app scope and explain integration purposes with StoreKit --- InAppPurchasesAtlasAppServices/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/InAppPurchasesAtlasAppServices/README.md b/InAppPurchasesAtlasAppServices/README.md index d573e7b..b6e5bc0 100644 --- a/InAppPurchasesAtlasAppServices/README.md +++ b/InAppPurchasesAtlasAppServices/README.md @@ -1,6 +1,9 @@ # Integrating In-App Purchases with Atlas App Services using Flexible Sync This example contains a skeleton app to be used as a reference on how to In App Purchase with a seamless integration in App Services using the [Swift SDK](https://www.mongodb.com/docs/realm/sdk/swift/#realm-swift-sdk). + +The scope of this app aims to demonstrate the effortless integration between Realm Device Sync, offering efficient data management and synchronization, and StoreKit for handling in-app purchases. The goal is to achieve a robust implementation that enables users to buy recipes stored in a Realm Database. After confirming the purchase through StoreKit, users can unlock premium content recipes and conveniently store purchase receipts on a separate collection for easy access on the developer's side in Atlas. + In this project you will be able to see an example of the following use case: * Authenticate users using the Swift SDK. * Fetch data into your app using Flexible Sync.