From d9b1eb18dcabf4cbd3878ae3a08ce4071a45b038 Mon Sep 17 00:00:00 2001 From: Pedro da Matta Date: Tue, 2 Mar 2021 09:26:55 -0300 Subject: [PATCH] Hotfix(Remove-History): Removes history and improve code --- OuviFalar.xcodeproj/project.pbxproj | 100 +++++-- .../UserInterfaceState.xcuserstate | Bin 0 -> 54177 bytes .../xcschemes/xcschememanagement.plist | 47 ++++ OuviFalar/.DS_Store | Bin 6148 -> 6148 bytes .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../Group 37logoOFIC-1024.png | Bin .../Group 37logoOFIC-20.png | Bin .../Group 37logoOFIC-20@2x.png | Bin .../Group 37logoOFIC-20@3x.png | Bin .../Group 37logoOFIC-29.png | Bin .../Group 37logoOFIC-29@2x.png | Bin .../Group 37logoOFIC-29@3x.png | Bin .../Group 37logoOFIC-40.png | Bin .../Group 37logoOFIC-40@2x.png | Bin .../Group 37logoOFIC-40@3x.png | Bin .../Group 37logoOFIC-60@2x.png | Bin .../Group 37logoOFIC-60@3x.png | Bin .../Group 37logoOFIC-76.png | Bin .../Group 37logoOFIC-76@2x.png | Bin .../Group 37logoOFIC-83.5@2x.png | Bin .../Assets.xcassets/Contents.json | 0 .../NegativeResult.imageset/Contents.json | 0 .../NegativeResult.imageset/Frame-3.png | Bin .../PositiveResult.imageset/Contents 2.json | 0 .../PositiveResult.imageset/Contents.json | 0 .../PositiveResult.imageset/Frame.png | Bin .../Base.lproj/LaunchScreen.storyboard | 0 .../Contents.swift | 0 .../Resources/testing_tweets_tratados.json | 0 .../Resources/tweets_tratados.json | 0 .../contents.xcplayground | 0 .../OuviFalar.xcdatamodeld/.xccurrentversion | 0 .../OuviFalar.xcdatamodel/contents | 0 .../TweetDesinfoClassifier.mlmodel | Bin .../TweetIntentClassifier.mlmodel | Bin OuviFalar/ContentView.swift | 21 -- OuviFalar/{ => Global}/AppDelegate.swift | 0 .../Modifiers}/View+ResignKeyboard.swift | 0 OuviFalar/{ => Global}/SceneDelegate.swift | 0 OuviFalar/{ => Global}/SearchingBank.swift | 6 +- OuviFalar/Models/History.swift | 28 ++ OuviFalar/OuviFalar.entitlements | 4 +- OuviFalar/Views/SearchView/SearchView.swift | 252 +++++++++--------- .../ViewModifiers/MainModifier.swift | 23 ++ .../NavigationViewModifier.swift | 22 ++ .../ViewModifiers/PickerModifier.swift | 26 ++ SharedExtension/ShareViewController.swift | 5 +- SharedExtension/SharedExtension.entitlements | 4 +- 49 files changed, 351 insertions(+), 187 deletions(-) create mode 100644 OuviFalar.xcodeproj/project.xcworkspace/xcuserdata/pedromoura.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 OuviFalar.xcodeproj/xcuserdata/pedromoura.xcuserdatad/xcschemes/xcschememanagement.plist rename OuviFalar/{ => Assets}/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-1024.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20@2x.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20@3x.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29@2x.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29@3x.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40@2x.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40@3x.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-60@2x.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-60@3x.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-76.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-76@2x.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-83.5@2x.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/Contents.json (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/NegativeResult.imageset/Contents.json (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/NegativeResult.imageset/Frame-3.png (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/PositiveResult.imageset/Contents 2.json (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/PositiveResult.imageset/Contents.json (100%) rename OuviFalar/{ => Assets}/Assets.xcassets/PositiveResult.imageset/Frame.png (100%) rename OuviFalar/{ => Assets}/Base.lproj/LaunchScreen.storyboard (100%) rename OuviFalar/{ => Assets}/ClassifierPlayground.playground/Contents.swift (100%) rename OuviFalar/{ => Assets}/ClassifierPlayground.playground/Resources/testing_tweets_tratados.json (100%) rename OuviFalar/{ => Assets}/ClassifierPlayground.playground/Resources/tweets_tratados.json (100%) rename OuviFalar/{ => Assets}/ClassifierPlayground.playground/contents.xcplayground (100%) rename OuviFalar/{ => Assets}/OuviFalar.xcdatamodeld/.xccurrentversion (100%) rename OuviFalar/{ => Assets}/OuviFalar.xcdatamodeld/OuviFalar.xcdatamodel/contents (100%) rename OuviFalar/{ => Assets}/TweetDesinfoClassifier.mlmodel (100%) rename OuviFalar/{ => Assets}/TweetIntentClassifier.mlmodel (100%) delete mode 100644 OuviFalar/ContentView.swift rename OuviFalar/{ => Global}/AppDelegate.swift (100%) rename OuviFalar/{ => Global/Modifiers}/View+ResignKeyboard.swift (100%) rename OuviFalar/{ => Global}/SceneDelegate.swift (100%) rename OuviFalar/{ => Global}/SearchingBank.swift (99%) create mode 100644 OuviFalar/Models/History.swift create mode 100644 OuviFalar/Views/SearchView/ViewModifiers/MainModifier.swift create mode 100644 OuviFalar/Views/SearchView/ViewModifiers/NavigationViewModifier.swift create mode 100644 OuviFalar/Views/SearchView/ViewModifiers/PickerModifier.swift diff --git a/OuviFalar.xcodeproj/project.pbxproj b/OuviFalar.xcodeproj/project.pbxproj index c2e7dec..c8645c8 100644 --- a/OuviFalar.xcodeproj/project.pbxproj +++ b/OuviFalar.xcodeproj/project.pbxproj @@ -11,7 +11,6 @@ 0CAEB279257ACA82003091FC /* SearchingBank.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CAEB278257ACA82003091FC /* SearchingBank.swift */; }; 0CCC36D2257AC73700FD0454 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCC36D1257AC73700FD0454 /* AppDelegate.swift */; }; 0CCC36D4257AC73700FD0454 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCC36D3257AC73700FD0454 /* SceneDelegate.swift */; }; - 0CCC36D6257AC73700FD0454 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCC36D5257AC73700FD0454 /* ContentView.swift */; }; 0CCC36D9257AC73700FD0454 /* OuviFalar.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 0CCC36D7257AC73700FD0454 /* OuviFalar.xcdatamodeld */; }; 0CCC36DB257AC74100FD0454 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0CCC36DA257AC74100FD0454 /* Assets.xcassets */; }; 0CCC36DE257AC74100FD0454 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0CCC36DD257AC74100FD0454 /* Preview Assets.xcassets */; }; @@ -37,6 +36,10 @@ 857EAF3E257D539100D0014E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0CCC36DA257AC74100FD0454 /* Assets.xcassets */; }; ACFC5E90257ACDC700881712 /* PositiveResultCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACFC5E8F257ACDC700881712 /* PositiveResultCard.swift */; }; ACFC5E94257AD73B00881712 /* NegativeResultCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACFC5E93257AD73B00881712 /* NegativeResultCard.swift */; }; + C1AC2EED25EE612D00502881 /* MainModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1AC2EEC25EE612D00502881 /* MainModifier.swift */; }; + C1AC2EF325EE628E00502881 /* NavigationViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1AC2EF225EE628E00502881 /* NavigationViewModifier.swift */; }; + C1AC2EF725EE62ED00502881 /* PickerModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1AC2EF625EE62ED00502881 /* PickerModifier.swift */; }; + C1AC2F0225EE645C00502881 /* History.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1AC2F0125EE645C00502881 /* History.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -69,7 +72,6 @@ 0CCC36CE257AC73700FD0454 /* OuviFalar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OuviFalar.app; sourceTree = BUILT_PRODUCTS_DIR; }; 0CCC36D1257AC73700FD0454 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 0CCC36D3257AC73700FD0454 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - 0CCC36D5257AC73700FD0454 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 0CCC36D8257AC73700FD0454 /* OuviFalar.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = OuviFalar.xcdatamodel; sourceTree = ""; }; 0CCC36DA257AC74100FD0454 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 0CCC36DD257AC74100FD0454 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; @@ -91,6 +93,10 @@ 35DACB34257D1074009D4A60 /* OuviFalar.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = OuviFalar.entitlements; sourceTree = ""; }; ACFC5E8F257ACDC700881712 /* PositiveResultCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositiveResultCard.swift; sourceTree = ""; }; ACFC5E93257AD73B00881712 /* NegativeResultCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NegativeResultCard.swift; sourceTree = ""; }; + C1AC2EEC25EE612D00502881 /* MainModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainModifier.swift; sourceTree = ""; }; + C1AC2EF225EE628E00502881 /* NavigationViewModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationViewModifier.swift; sourceTree = ""; }; + C1AC2EF625EE62ED00502881 /* PickerModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickerModifier.swift; sourceTree = ""; }; + C1AC2F0125EE645C00502881 /* History.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = History.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -133,19 +139,11 @@ isa = PBXGroup; children = ( 35DACB34257D1074009D4A60 /* OuviFalar.entitlements */, - 0CCC36E9257AC82D00FD0454 /* Views */, - 0CCC36D1257AC73700FD0454 /* AppDelegate.swift */, - 35DACB11257C2E6D009D4A60 /* View+ResignKeyboard.swift */, - 0CAEB278257ACA82003091FC /* SearchingBank.swift */, - 0CCC36D3257AC73700FD0454 /* SceneDelegate.swift */, - 0CCC36D5257AC73700FD0454 /* ContentView.swift */, - 353EDF6A257DC67A00A2D528 /* TweetIntentClassifier.mlmodel */, - 353EDF6F257DC68000A2D528 /* TweetDesinfoClassifier.mlmodel */, - 353EDF65257DC5FA00A2D528 /* ClassifierPlayground.playground */, - 0CCC36DA257AC74100FD0454 /* Assets.xcassets */, - 0CCC36DF257AC74100FD0454 /* LaunchScreen.storyboard */, 0CCC36E2257AC74100FD0454 /* Info.plist */, - 0CCC36D7257AC73700FD0454 /* OuviFalar.xcdatamodeld */, + C1AC2F0725EE646000502881 /* Models */, + C1AC2EFF25EE642D00502881 /* Global */, + C1AC2EFC25EE63F800502881 /* Assets */, + 0CCC36E9257AC82D00FD0454 /* Views */, 0CCC36DC257AC74100FD0454 /* Preview Content */, ); path = OuviFalar; @@ -162,10 +160,10 @@ 0CCC36E9257AC82D00FD0454 /* Views */ = { isa = PBXGroup; children = ( + 0CD0B4F8257AC95600F2005E /* WaitingRoomView */, 0CD0B4FF257AC9C400F2005E /* OnboardingView */, 0CD0B4FE257AC9B400F2005E /* ResultView */, 0CD0B4FD257AC9A300F2005E /* SearchView */, - 0CD0B4F8257AC95600F2005E /* WaitingRoomView */, ); path = Views; sourceTree = ""; @@ -182,6 +180,7 @@ 0CD0B4FD257AC9A300F2005E /* SearchView */ = { isa = PBXGroup; children = ( + C1AC2EEB25EE611D00502881 /* ViewModifiers */, 0CD0B4EE257AC8CD00F2005E /* SearchView.swift */, ); path = SearchView; @@ -216,6 +215,56 @@ path = SharedExtension; sourceTree = ""; }; + C1AC2EEB25EE611D00502881 /* ViewModifiers */ = { + isa = PBXGroup; + children = ( + C1AC2EEC25EE612D00502881 /* MainModifier.swift */, + C1AC2EF225EE628E00502881 /* NavigationViewModifier.swift */, + C1AC2EF625EE62ED00502881 /* PickerModifier.swift */, + ); + path = ViewModifiers; + sourceTree = ""; + }; + C1AC2EFC25EE63F800502881 /* Assets */ = { + isa = PBXGroup; + children = ( + 353EDF6A257DC67A00A2D528 /* TweetIntentClassifier.mlmodel */, + 353EDF6F257DC68000A2D528 /* TweetDesinfoClassifier.mlmodel */, + 353EDF65257DC5FA00A2D528 /* ClassifierPlayground.playground */, + 0CCC36DA257AC74100FD0454 /* Assets.xcassets */, + 0CCC36DF257AC74100FD0454 /* LaunchScreen.storyboard */, + 0CCC36D7257AC73700FD0454 /* OuviFalar.xcdatamodeld */, + ); + path = Assets; + sourceTree = ""; + }; + C1AC2EFF25EE642D00502881 /* Global */ = { + isa = PBXGroup; + children = ( + 0CCC36D1257AC73700FD0454 /* AppDelegate.swift */, + 0CAEB278257ACA82003091FC /* SearchingBank.swift */, + 0CCC36D3257AC73700FD0454 /* SceneDelegate.swift */, + C1AC2F0025EE643400502881 /* Modifiers */, + ); + path = Global; + sourceTree = ""; + }; + C1AC2F0025EE643400502881 /* Modifiers */ = { + isa = PBXGroup; + children = ( + 35DACB11257C2E6D009D4A60 /* View+ResignKeyboard.swift */, + ); + path = Modifiers; + sourceTree = ""; + }; + C1AC2F0725EE646000502881 /* Models */ = { + isa = PBXGroup; + children = ( + C1AC2F0125EE645C00502881 /* History.swift */, + ); + path = Models; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -318,14 +367,17 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + C1AC2F0225EE645C00502881 /* History.swift in Sources */, 0CCC36D2257AC73700FD0454 /* AppDelegate.swift in Sources */, + C1AC2EED25EE612D00502881 /* MainModifier.swift in Sources */, 0CCC36D4257AC73700FD0454 /* SceneDelegate.swift in Sources */, - 0CCC36D6257AC73700FD0454 /* ContentView.swift in Sources */, 353EDF70257DC68000A2D528 /* TweetDesinfoClassifier.mlmodel in Sources */, 353EDF6B257DC67A00A2D528 /* TweetIntentClassifier.mlmodel in Sources */, + C1AC2EF725EE62ED00502881 /* PickerModifier.swift in Sources */, 0CD0B4FA257AC96C00F2005E /* WaitingRoomView.swift in Sources */, ACFC5E90257ACDC700881712 /* PositiveResultCard.swift in Sources */, 0CD0B4F3257AC8EF00F2005E /* OnboardingView.swift in Sources */, + C1AC2EF325EE628E00502881 /* NavigationViewModifier.swift in Sources */, 0CD0B4EF257AC8CD00F2005E /* SearchView.swift in Sources */, 0CD0B4F6257AC90700F2005E /* ResultView.swift in Sources */, 0C1404BA257AE21000716069 /* WaitingRoomIcons.swift in Sources */, @@ -508,14 +560,14 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 4; DEVELOPMENT_ASSET_PATHS = "\"OuviFalar/Preview Content\""; - DEVELOPMENT_TEAM = P63952MS7L; + DEVELOPMENT_TEAM = 2529YUQTU2; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = OuviFalar/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = br.ufpe.academy.OuviFalar; + PRODUCT_BUNDLE_IDENTIFIER = br.ufpe.academy.OuviFalar2; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -532,14 +584,14 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 4; DEVELOPMENT_ASSET_PATHS = "\"OuviFalar/Preview Content\""; - DEVELOPMENT_TEAM = P63952MS7L; + DEVELOPMENT_TEAM = 2529YUQTU2; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = OuviFalar/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = br.ufpe.academy.OuviFalar; + PRODUCT_BUNDLE_IDENTIFIER = br.ufpe.academy.OuviFalar2; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -552,14 +604,14 @@ CODE_SIGN_ENTITLEMENTS = SharedExtension/SharedExtension.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 4; - DEVELOPMENT_TEAM = P63952MS7L; + DEVELOPMENT_TEAM = 2529YUQTU2; INFOPLIST_FILE = SharedExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = br.ufpe.academy.OuviFalar.SharedExtension; + PRODUCT_BUNDLE_IDENTIFIER = br.ufpe.academy.OuviFalar2.SharedExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; @@ -573,14 +625,14 @@ CODE_SIGN_ENTITLEMENTS = SharedExtension/SharedExtension.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 4; - DEVELOPMENT_TEAM = P63952MS7L; + DEVELOPMENT_TEAM = 2529YUQTU2; INFOPLIST_FILE = SharedExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = br.ufpe.academy.OuviFalar.SharedExtension; + PRODUCT_BUNDLE_IDENTIFIER = br.ufpe.academy.OuviFalar2.SharedExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; diff --git a/OuviFalar.xcodeproj/project.xcworkspace/xcuserdata/pedromoura.xcuserdatad/UserInterfaceState.xcuserstate b/OuviFalar.xcodeproj/project.xcworkspace/xcuserdata/pedromoura.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..f9d141a785a72dc3f64069687e75596685deb35d GIT binary patch literal 54177 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 KQ1Eh7>wf@3)TIyr literal 0 HcmV?d00001 diff --git a/OuviFalar.xcodeproj/xcuserdata/pedromoura.xcuserdatad/xcschemes/xcschememanagement.plist b/OuviFalar.xcodeproj/xcuserdata/pedromoura.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..e4b112b --- /dev/null +++ b/OuviFalar.xcodeproj/xcuserdata/pedromoura.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,47 @@ + + + + + SchemeUserState + + ClassifierPlayground (Playground) 1.xcscheme + + isShown + + orderHint + 2 + + ClassifierPlayground (Playground) 2.xcscheme + + isShown + + orderHint + 4 + + ClassifierPlayground (Playground) 3.xcscheme + + isShown + + orderHint + 5 + + ClassifierPlayground (Playground).xcscheme + + isShown + + orderHint + 3 + + OuviFalar.xcscheme_^#shared#^_ + + orderHint + 1 + + SharedExtension.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/OuviFalar/.DS_Store b/OuviFalar/.DS_Store index d5c6cbaf11bf3266f869eb36511c6fc79cc64aed..e87ffaad46227d6d87ef33e536040759140fdf94 100644 GIT binary patch delta 103 zcmZoMXfc=|#>B`mu~2NHo}wrV0|Nsi1A_nqgC0WxLk>eGLoq|i#KPr_ER&g7nrt$ zSGI3vx50LZ;DiwDShH`vo|&C}>-Bm8nD#9B1T+EEse-izi+e<#i!R6;-?B|=%>wEfDAQ|g4?E`tl^BJ2(QeO4I(`!|~p z#uDZd#+_1!%q?NG6iGQ2gu!B7YdBygRx=Y8qB1*WZ{@P+{T@B`DxhBzeGB6Mr2n@^_kncl86^uRR4)xQ)LXQB%8k<#EmmdW2i9E(0 zbBBCFG0v6fT#Y|s80XIR$lJvpbBE3y#veY6@7eehiqYN~KT>m;*kLFG1A&1u18?1J zQ}+KaT*FJw|7E9e7Z?Z(yeI}tt<&qYIV8WgE(}ig+K75g6%o7Kp}Mf}+p$(;E8d{0 a@L41kV(c+@$QDZY5l|XJ5g2$<2L1tp2+=tJ diff --git a/OuviFalar/Assets.xcassets/AccentColor.colorset/Contents.json b/OuviFalar/Assets/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from OuviFalar/Assets.xcassets/AccentColor.colorset/Contents.json rename to OuviFalar/Assets/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Contents.json b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Contents.json rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-1024.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-1024.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-1024.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-1024.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20@2x.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20@2x.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20@2x.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20@2x.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20@3x.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20@3x.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20@3x.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-20@3x.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29@2x.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29@2x.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29@2x.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29@2x.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29@3x.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29@3x.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29@3x.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-29@3x.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40@2x.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40@2x.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40@2x.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40@2x.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40@3x.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40@3x.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40@3x.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-40@3x.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-60@2x.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-60@2x.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-60@2x.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-60@2x.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-60@3x.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-60@3x.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-60@3x.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-60@3x.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-76.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-76.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-76.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-76.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-76@2x.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-76@2x.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-76@2x.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-76@2x.png diff --git a/OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-83.5@2x.png b/OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-83.5@2x.png similarity index 100% rename from OuviFalar/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-83.5@2x.png rename to OuviFalar/Assets/Assets.xcassets/AppIcon.appiconset/Group 37logoOFIC-83.5@2x.png diff --git a/OuviFalar/Assets.xcassets/Contents.json b/OuviFalar/Assets/Assets.xcassets/Contents.json similarity index 100% rename from OuviFalar/Assets.xcassets/Contents.json rename to OuviFalar/Assets/Assets.xcassets/Contents.json diff --git a/OuviFalar/Assets.xcassets/NegativeResult.imageset/Contents.json b/OuviFalar/Assets/Assets.xcassets/NegativeResult.imageset/Contents.json similarity index 100% rename from OuviFalar/Assets.xcassets/NegativeResult.imageset/Contents.json rename to OuviFalar/Assets/Assets.xcassets/NegativeResult.imageset/Contents.json diff --git a/OuviFalar/Assets.xcassets/NegativeResult.imageset/Frame-3.png b/OuviFalar/Assets/Assets.xcassets/NegativeResult.imageset/Frame-3.png similarity index 100% rename from OuviFalar/Assets.xcassets/NegativeResult.imageset/Frame-3.png rename to OuviFalar/Assets/Assets.xcassets/NegativeResult.imageset/Frame-3.png diff --git a/OuviFalar/Assets.xcassets/PositiveResult.imageset/Contents 2.json b/OuviFalar/Assets/Assets.xcassets/PositiveResult.imageset/Contents 2.json similarity index 100% rename from OuviFalar/Assets.xcassets/PositiveResult.imageset/Contents 2.json rename to OuviFalar/Assets/Assets.xcassets/PositiveResult.imageset/Contents 2.json diff --git a/OuviFalar/Assets.xcassets/PositiveResult.imageset/Contents.json b/OuviFalar/Assets/Assets.xcassets/PositiveResult.imageset/Contents.json similarity index 100% rename from OuviFalar/Assets.xcassets/PositiveResult.imageset/Contents.json rename to OuviFalar/Assets/Assets.xcassets/PositiveResult.imageset/Contents.json diff --git a/OuviFalar/Assets.xcassets/PositiveResult.imageset/Frame.png b/OuviFalar/Assets/Assets.xcassets/PositiveResult.imageset/Frame.png similarity index 100% rename from OuviFalar/Assets.xcassets/PositiveResult.imageset/Frame.png rename to OuviFalar/Assets/Assets.xcassets/PositiveResult.imageset/Frame.png diff --git a/OuviFalar/Base.lproj/LaunchScreen.storyboard b/OuviFalar/Assets/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from OuviFalar/Base.lproj/LaunchScreen.storyboard rename to OuviFalar/Assets/Base.lproj/LaunchScreen.storyboard diff --git a/OuviFalar/ClassifierPlayground.playground/Contents.swift b/OuviFalar/Assets/ClassifierPlayground.playground/Contents.swift similarity index 100% rename from OuviFalar/ClassifierPlayground.playground/Contents.swift rename to OuviFalar/Assets/ClassifierPlayground.playground/Contents.swift diff --git a/OuviFalar/ClassifierPlayground.playground/Resources/testing_tweets_tratados.json b/OuviFalar/Assets/ClassifierPlayground.playground/Resources/testing_tweets_tratados.json similarity index 100% rename from OuviFalar/ClassifierPlayground.playground/Resources/testing_tweets_tratados.json rename to OuviFalar/Assets/ClassifierPlayground.playground/Resources/testing_tweets_tratados.json diff --git a/OuviFalar/ClassifierPlayground.playground/Resources/tweets_tratados.json b/OuviFalar/Assets/ClassifierPlayground.playground/Resources/tweets_tratados.json similarity index 100% rename from OuviFalar/ClassifierPlayground.playground/Resources/tweets_tratados.json rename to OuviFalar/Assets/ClassifierPlayground.playground/Resources/tweets_tratados.json diff --git a/OuviFalar/ClassifierPlayground.playground/contents.xcplayground b/OuviFalar/Assets/ClassifierPlayground.playground/contents.xcplayground similarity index 100% rename from OuviFalar/ClassifierPlayground.playground/contents.xcplayground rename to OuviFalar/Assets/ClassifierPlayground.playground/contents.xcplayground diff --git a/OuviFalar/OuviFalar.xcdatamodeld/.xccurrentversion b/OuviFalar/Assets/OuviFalar.xcdatamodeld/.xccurrentversion similarity index 100% rename from OuviFalar/OuviFalar.xcdatamodeld/.xccurrentversion rename to OuviFalar/Assets/OuviFalar.xcdatamodeld/.xccurrentversion diff --git a/OuviFalar/OuviFalar.xcdatamodeld/OuviFalar.xcdatamodel/contents b/OuviFalar/Assets/OuviFalar.xcdatamodeld/OuviFalar.xcdatamodel/contents similarity index 100% rename from OuviFalar/OuviFalar.xcdatamodeld/OuviFalar.xcdatamodel/contents rename to OuviFalar/Assets/OuviFalar.xcdatamodeld/OuviFalar.xcdatamodel/contents diff --git a/OuviFalar/TweetDesinfoClassifier.mlmodel b/OuviFalar/Assets/TweetDesinfoClassifier.mlmodel similarity index 100% rename from OuviFalar/TweetDesinfoClassifier.mlmodel rename to OuviFalar/Assets/TweetDesinfoClassifier.mlmodel diff --git a/OuviFalar/TweetIntentClassifier.mlmodel b/OuviFalar/Assets/TweetIntentClassifier.mlmodel similarity index 100% rename from OuviFalar/TweetIntentClassifier.mlmodel rename to OuviFalar/Assets/TweetIntentClassifier.mlmodel diff --git a/OuviFalar/ContentView.swift b/OuviFalar/ContentView.swift deleted file mode 100644 index 1d3e0e9..0000000 --- a/OuviFalar/ContentView.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// ContentView.swift -// OuviFalar -// -// Created by Danilo Araújo on 04/12/20. -// - -import SwiftUI - -struct ContentView: View { - var body: some View { - Text("Hello, world!") - .padding() - } -} - -struct ContentView_Previews: PreviewProvider { - static var previews: some View { - ContentView() - } -} diff --git a/OuviFalar/AppDelegate.swift b/OuviFalar/Global/AppDelegate.swift similarity index 100% rename from OuviFalar/AppDelegate.swift rename to OuviFalar/Global/AppDelegate.swift diff --git a/OuviFalar/View+ResignKeyboard.swift b/OuviFalar/Global/Modifiers/View+ResignKeyboard.swift similarity index 100% rename from OuviFalar/View+ResignKeyboard.swift rename to OuviFalar/Global/Modifiers/View+ResignKeyboard.swift diff --git a/OuviFalar/SceneDelegate.swift b/OuviFalar/Global/SceneDelegate.swift similarity index 100% rename from OuviFalar/SceneDelegate.swift rename to OuviFalar/Global/SceneDelegate.swift diff --git a/OuviFalar/SearchingBank.swift b/OuviFalar/Global/SearchingBank.swift similarity index 99% rename from OuviFalar/SearchingBank.swift rename to OuviFalar/Global/SearchingBank.swift index 0409483..3e19d8f 100644 --- a/OuviFalar/SearchingBank.swift +++ b/OuviFalar/Global/SearchingBank.swift @@ -8,6 +8,7 @@ import Foundation import NaturalLanguage import SwiftUI + class SearchingBank: ObservableObject { @Published var searchItem: Search? @@ -15,11 +16,8 @@ class SearchingBank: ObservableObject { init(){ } - - - - } + enum Intent: String{ case favor case contra diff --git a/OuviFalar/Models/History.swift b/OuviFalar/Models/History.swift new file mode 100644 index 0000000..2c1307c --- /dev/null +++ b/OuviFalar/Models/History.swift @@ -0,0 +1,28 @@ +// +// History.swift +// OuviFalar +// +// Created by Pedro Moura on 02/03/21. +// + +import SwiftUI + +struct History { + var title: String = "" + var description: String = "" +} + +var history: [History] = [ + History( + title: "Cloroquina é recomendável para a Covid", + description: "- Acreditamos que esse tema tem grande potencial de ser fake news e por isso não recomendamos seu compartilhamento." + ), + History( + title: "Cloroquina pode causar infarto", + description: "- Não encontramos indícios claros de que se trata de uma Fake News, mas recomendamos que você avalie a fonte antes de compartilhá-la." + ), + History( + title: "Cloroquina é usada para Covid desde 2005", + description: "- Acreditamos que esse tema tem grande potencial de ser fake news e por isso não recomendamos seu compartilhamento." + ) +] diff --git a/OuviFalar/OuviFalar.entitlements b/OuviFalar/OuviFalar.entitlements index 8626419..2eb7e33 100644 --- a/OuviFalar/OuviFalar.entitlements +++ b/OuviFalar/OuviFalar.entitlements @@ -3,8 +3,6 @@ com.apple.security.application-groups - - group.br.ufpe.academy.OuviFalar - + diff --git a/OuviFalar/Views/SearchView/SearchView.swift b/OuviFalar/Views/SearchView/SearchView.swift index 65c436c..28ae466 100644 --- a/OuviFalar/Views/SearchView/SearchView.swift +++ b/OuviFalar/Views/SearchView/SearchView.swift @@ -10,128 +10,22 @@ import SwiftUI struct SearchView: View { @State var searchText: String = "" - - var category = ["Cloroquina", "Vacina", "Covid"] @State private var selectedCategory = 0 - @State private var isPickerShown: Bool = false - - struct Historico { - var title: String = "" - var description: String = "" - } - - var historico: [Historico] = [Historico(title: "Cloroquina é recomendável para a Covid", description: "- Acreditamos que esse tema tem grande potencial de ser fake news e por isso não recomendamos seu compartilhamento."), Historico(title: "Cloroquina pode causar infarto", description: "- Não encontramos indícios claros de que se trata de uma Fake News, mas recomendamos que você avalie a fonte antes de compartilhá-la."), Historico(title: "Cloroquina é usada para Covid desde 2005", description: "- Acreditamos que esse tema tem grande potencial de ser fake news e por isso não recomendamos seu compartilhamento.")] - + + var category = ["Cloroquina", "Vacina", "Covid"] + let textField = UITextView() - var body: some View { ZStack(alignment: .bottom){ VStack{ - - HStack(){ - Text("Selecione a categoria") - .font(.title3) - .fontWeight(.semibold) - - Spacer() - } - .padding() - Button(action:{ - isPickerShown = true - }){ - HStack{ - Spacer() - Text(category[selectedCategory]) - .padding() - .foregroundColor(.primary) - Spacer() - } - } - .background(Color(.systemGray6)) - .cornerRadius(10) - .padding(.horizontal) - - HStack(){ - Text("O que tu ouviu falar?") - .font(.title3) - .fontWeight(.semibold) - Spacer() - } - .padding([.leading, .top]) - - TextEditor(text: $searchText) - .cornerRadius(5) - .border(Color(.systemGray3)) - .padding(.horizontal) - - - NavigationLink(destination: WaitingRoomView(item: Search(text: searchText))){ - Text("Checar") - .padding() - .padding(.horizontal, 40) - .background(Color.primaryColor) - .foregroundColor(Color(.systemBackground)) - .cornerRadius(10) - .shadow(radius: 7) - } - .padding(.top) - .disabled(searchText.isEmpty) - HStack { - Text("Histórico") - .font(.headline) - Spacer() - } - - .padding([.top, .leading]) - - ScrollView(.horizontal) { - LazyHStack(spacing: 1) { - - ForEach(0..<(historico.count)){ index in - - VStack{ - HStack { - Text(historico[index].title) - .fontWeight(.bold) - .foregroundColor(.white) - .padding([.top, .leading, .trailing]) - Image(systemName: "xmark.circle") - .padding() - .foregroundColor(.red) - - Spacer() - } - - - Text(historico[index].description) - .padding([.leading, .bottom, .trailing]) - .padding(.top, 5) - .foregroundColor(Color(.systemGray6)) - - Spacer() - } - - .frame(maxWidth: 320) - .background(Color.primaryColor) - .cornerRadius(20) - .padding() - - } - } - } - - - } - .resingKeyboardOnTapGesture() - .blur(radius: isPickerShown ? 3.0 : 0) - .disabled(isPickerShown) - .onTapGesture { - if isPickerShown{ - isPickerShown = false - } + SelectCategory(isPickerShown: $isPickerShown, selectedCategory: $selectedCategory, category: category) + Spacer() + SearchBox(searchText: $searchText) + .padding(.bottom) } + .modifier(MainModifier(isPickerShown: $isPickerShown)) VStack{ Picker(selection: $selectedCategory, label: Text("Selecione a categoria: ")) { @@ -139,23 +33,11 @@ struct SearchView: View { Text(self.category[$0]) } } - .pickerStyle(WheelPickerStyle()) - .padding() + .modifier(PickerModifier()) } - .background(Color(.systemGray6)) - .offset(y: isPickerShown ? 0 : UIScreen.main.bounds.height) - .animation(.spring()) - - - } - .navigationTitle("Pesquisa") - .navigationBarHidden(false) - .onAppear{ -// let userDefaults = UserDefaults(suiteName: "group.br.ufpe.academy.OuviFalar") -// if let text = userDefaults?.string(forKey: "start-text-key"){ -// searchText = text -// } + .modifier(PickerStackModifier(isPickerShown: $isPickerShown)) } + .modifier(NavigationViewModifier()) } } @@ -169,6 +51,118 @@ struct WaitingView: View { } } +struct SearchBox: View { + @Binding var searchText: String + var body: some View { + HStack(){ + Text("O que tu ouviu falar?") + .font(.title3) + .fontWeight(.semibold) + Spacer() + } + .padding([.leading, .top]) + + TextEditor(text: $searchText) + .cornerRadius(5) + .border(Color(.systemGray3)) + .padding(.horizontal) + .frame(height: 300) + + NavigationLink(destination: WaitingRoomView(item: Search(text: searchText))){ + Text("Checar") + .padding() + .padding(.horizontal, 40) + .background(Color.primaryColor) + .foregroundColor(Color(.systemBackground)) + .cornerRadius(10) + .shadow(radius: 7) + } + .padding(.top) + .disabled(searchText.isEmpty) + Spacer() + } +} + +struct SelectCategory: View { + @Binding var isPickerShown: Bool + @Binding var selectedCategory: Int + var category: [String] + var body: some View { + HStack(){ + Text("Selecione a categoria") + .font(.title3) + .fontWeight(.semibold) + + Spacer() + } + .padding() + + Button(action:{ + isPickerShown = true + }){ + HStack{ + Spacer() + Text(category[selectedCategory]) + .padding() + .foregroundColor(.primary) + Spacer() + } + } + .background(Color(.systemGray6)) + .cornerRadius(10) + .padding(.horizontal) + .shadow(color: .gray, radius: 3, x: 0, y: 2) + } +} + +//struct History: View { +// var body: some View { +// HStack { +// Text("Histórico") +// .font(.headline) +// Spacer() +// } +// +// .padding([.top, .leading]) +// +// ScrollView(.horizontal) { +// LazyHStack(spacing: 1) { +// +// ForEach(0..<(historico.count)){ index in +// +// VStack{ +// HStack { +// Text(historico[index].title) +// .fontWeight(.bold) +// .foregroundColor(.white) +// .padding([.top, .leading, .trailing]) +// Image(systemName: "xmark.circle") +// .padding() +// .foregroundColor(.red) +// +// Spacer() +// } +// +// +// Text(historico[index].description) +// .padding([.leading, .bottom, .trailing]) +// .padding(.top, 5) +// .foregroundColor(Color(.systemGray6)) +// +// Spacer() +// } +// +// .frame(maxWidth: 320) +// .background(Color.primaryColor) +// .cornerRadius(20) +// .padding() +// +// } +// } +// } +// } +//} + struct SearchView_Previews: PreviewProvider { static var previews: some View { NavigationView{ diff --git a/OuviFalar/Views/SearchView/ViewModifiers/MainModifier.swift b/OuviFalar/Views/SearchView/ViewModifiers/MainModifier.swift new file mode 100644 index 0000000..6cc3067 --- /dev/null +++ b/OuviFalar/Views/SearchView/ViewModifiers/MainModifier.swift @@ -0,0 +1,23 @@ +// +// MainModifier.swift +// OuviFalar +// +// Created by Pedro Moura on 02/03/21. +// + +import SwiftUI + +struct MainModifier: ViewModifier { + @Binding var isPickerShown: Bool + func body(content: Content) -> some View { + content + .resingKeyboardOnTapGesture() + .blur(radius: isPickerShown ? 3.0 : 0) + .disabled(isPickerShown) + .onTapGesture { + if isPickerShown{ + isPickerShown = false + } + } + } +} diff --git a/OuviFalar/Views/SearchView/ViewModifiers/NavigationViewModifier.swift b/OuviFalar/Views/SearchView/ViewModifiers/NavigationViewModifier.swift new file mode 100644 index 0000000..370ddbf --- /dev/null +++ b/OuviFalar/Views/SearchView/ViewModifiers/NavigationViewModifier.swift @@ -0,0 +1,22 @@ +// +// NavigationViewModifier.swift +// OuviFalar +// +// Created by Pedro Moura on 02/03/21. +// + +import SwiftUI + +struct NavigationViewModifier: ViewModifier { + func body(content: Content) -> some View { + content + .navigationTitle("Pesquisa") + .navigationBarHidden(false) + .onAppear{ + // let userDefaults = UserDefaults(suiteName: "group.br.ufpe.academy.OuviFalar") + // if let text = userDefaults?.string(forKey: "start-text-key"){ + // searchText = text + // } + } + } +} diff --git a/OuviFalar/Views/SearchView/ViewModifiers/PickerModifier.swift b/OuviFalar/Views/SearchView/ViewModifiers/PickerModifier.swift new file mode 100644 index 0000000..4d63df3 --- /dev/null +++ b/OuviFalar/Views/SearchView/ViewModifiers/PickerModifier.swift @@ -0,0 +1,26 @@ +// +// PickerModifier.swift +// OuviFalar +// +// Created by Pedro Moura on 02/03/21. +// + +import SwiftUI + +struct PickerModifier: ViewModifier { + func body(content: Content) -> some View { + content + .pickerStyle(WheelPickerStyle()) + .padding() + } +} + +struct PickerStackModifier: ViewModifier { + @Binding var isPickerShown: Bool + func body(content: Content) -> some View { + content + .background(Color(.systemGray6)) + .offset(y: isPickerShown ? 0 : UIScreen.main.bounds.height) + .animation(.spring()) + } +} diff --git a/SharedExtension/ShareViewController.swift b/SharedExtension/ShareViewController.swift index c19078f..8bac4f4 100644 --- a/SharedExtension/ShareViewController.swift +++ b/SharedExtension/ShareViewController.swift @@ -42,7 +42,7 @@ class ShareViewController: UIViewController, ShareViewDelegate { } private func save(_ value: Any, key: String) { - let userDefaults = UserDefaults(suiteName: "group.br.ufpe.academy.OuviFalar") + let userDefaults = UserDefaults(suiteName: "group.br.ufpe.academy.OuviFalar2") userDefaults!.set(value, forKey: key) print(userDefaults?.string(forKey: key) as Any) searchItem = Search(text: (userDefaults?.string(forKey: key))!, delegate: self) @@ -52,13 +52,12 @@ class ShareViewController: UIViewController, ShareViewDelegate { waitingRoomView.view.translatesAutoresizingMaskIntoConstraints = false self.view.addSubview(waitingRoomView.view) - let constraints = [ waitingRoomView.view.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor, constant: 0), waitingRoomView.view.centerXAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerXAnchor, constant: 0), waitingRoomView.view.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor, constant: 0), waitingRoomView.view.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: 0), - waitingRoomView.view.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, constant: 0) + waitingRoomView.view.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, constant: 0), ] NSLayoutConstraint.activate(constraints) } diff --git a/SharedExtension/SharedExtension.entitlements b/SharedExtension/SharedExtension.entitlements index 8626419..2eb7e33 100644 --- a/SharedExtension/SharedExtension.entitlements +++ b/SharedExtension/SharedExtension.entitlements @@ -3,8 +3,6 @@ com.apple.security.application-groups - - group.br.ufpe.academy.OuviFalar - +