diff --git a/Blink/Blink.xcodeproj/project.pbxproj b/Blink/Blink.xcodeproj/project.pbxproj index 590f0de..46e0df4 100644 --- a/Blink/Blink.xcodeproj/project.pbxproj +++ b/Blink/Blink.xcodeproj/project.pbxproj @@ -7,6 +7,17 @@ objects = { /* Begin PBXBuildFile section */ + 4F5F12D224B639FA00A7D9E7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F5F12D124B639FA00A7D9E7 /* AppDelegate.swift */; }; + 4F5F12D424B639FA00A7D9E7 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F5F12D324B639FA00A7D9E7 /* SceneDelegate.swift */; }; + 4F5F12D624B639FA00A7D9E7 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F5F12D524B639FA00A7D9E7 /* ContentView.swift */; }; + 4F5F12D824B639FC00A7D9E7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4F5F12D724B639FC00A7D9E7 /* Assets.xcassets */; }; + 4F5F12DB24B639FC00A7D9E7 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4F5F12DA24B639FC00A7D9E7 /* Preview Assets.xcassets */; }; + 4F5F12DE24B639FC00A7D9E7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4F5F12DC24B639FC00A7D9E7 /* LaunchScreen.storyboard */; }; + 4F5F12E924B639FD00A7D9E7 /* Blink_iOSTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F5F12E824B639FD00A7D9E7 /* Blink_iOSTests.swift */; }; + 4F5F12F224B63A5600A7D9E7 /* MenuViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F5F12F124B63A5600A7D9E7 /* MenuViewModel.swift */; }; + 4F5F12FD24B63E8200A7D9E7 /* Multipeer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F5F12FC24B63E8200A7D9E7 /* Multipeer.swift */; }; + 4F5F130024B65AC200A7D9E7 /* BrainstormingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F5F12FF24B65AC200A7D9E7 /* BrainstormingViewModel.swift */; }; + 4F5F130224B65D8E00A7D9E7 /* VotingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F5F130124B65D8E00A7D9E7 /* VotingViewModel.swift */; }; A418231A24B39DDF0082962F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A418231924B39DDF0082962F /* AppDelegate.swift */; }; A418231C24B39DDF0082962F /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A418231B24B39DDF0082962F /* ContentView.swift */; }; A418231E24B39DE10082962F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A418231D24B39DE10082962F /* Assets.xcassets */; }; @@ -16,6 +27,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 4F5F12E524B639FD00A7D9E7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A418230E24B39DDF0082962F /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4F5F12CE24B639FA00A7D9E7; + remoteInfo = Blink_iOS; + }; A418232B24B39DE10082962F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = A418230E24B39DDF0082962F /* Project object */; @@ -26,6 +44,21 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 4F5F12CF24B639FA00A7D9E7 /* Blink_iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Blink_iOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4F5F12D124B639FA00A7D9E7 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 4F5F12D324B639FA00A7D9E7 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 4F5F12D524B639FA00A7D9E7 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 4F5F12D724B639FC00A7D9E7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 4F5F12DA24B639FC00A7D9E7 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 4F5F12DD24B639FC00A7D9E7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 4F5F12DF24B639FC00A7D9E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4F5F12E424B639FD00A7D9E7 /* Blink_iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Blink_iOSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 4F5F12E824B639FD00A7D9E7 /* Blink_iOSTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Blink_iOSTests.swift; sourceTree = ""; }; + 4F5F12EA24B639FD00A7D9E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4F5F12F124B63A5600A7D9E7 /* MenuViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuViewModel.swift; sourceTree = ""; }; + 4F5F12FC24B63E8200A7D9E7 /* Multipeer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Multipeer.swift; sourceTree = ""; }; + 4F5F12FF24B65AC200A7D9E7 /* BrainstormingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrainstormingViewModel.swift; sourceTree = ""; }; + 4F5F130124B65D8E00A7D9E7 /* VotingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VotingViewModel.swift; sourceTree = ""; }; A418231624B39DDF0082962F /* Blink.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Blink.app; sourceTree = BUILT_PRODUCTS_DIR; }; A418231924B39DDF0082962F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; A418231B24B39DDF0082962F /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; @@ -39,6 +72,20 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 4F5F12CC24B639FA00A7D9E7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4F5F12E124B639FD00A7D9E7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; A418231324B39DDF0082962F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -56,11 +103,116 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 4F5F12D024B639FA00A7D9E7 /* Blink_iOS */ = { + isa = PBXGroup; + children = ( + 4F5F12D124B639FA00A7D9E7 /* AppDelegate.swift */, + 4F5F12D324B639FA00A7D9E7 /* SceneDelegate.swift */, + 4F5F12D524B639FA00A7D9E7 /* ContentView.swift */, + 4F5F12D724B639FC00A7D9E7 /* Assets.xcassets */, + 4F5F12DC24B639FC00A7D9E7 /* LaunchScreen.storyboard */, + 4F5F12DF24B639FC00A7D9E7 /* Info.plist */, + 4F5F12D924B639FC00A7D9E7 /* Preview Content */, + ); + path = Blink_iOS; + sourceTree = ""; + }; + 4F5F12D924B639FC00A7D9E7 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 4F5F12DA24B639FC00A7D9E7 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 4F5F12E724B639FD00A7D9E7 /* Blink_iOSTests */ = { + isa = PBXGroup; + children = ( + 4F5F12E824B639FD00A7D9E7 /* Blink_iOSTests.swift */, + 4F5F12EA24B639FD00A7D9E7 /* Info.plist */, + ); + path = Blink_iOSTests; + sourceTree = ""; + }; + 4F5F12F324B63D9300A7D9E7 /* Menu */ = { + isa = PBXGroup; + children = ( + 4F5F12F424B63DBD00A7D9E7 /* Views */, + 4F5F12F524B63DCA00A7D9E7 /* ViewModels */, + ); + path = Menu; + sourceTree = ""; + }; + 4F5F12F424B63DBD00A7D9E7 /* Views */ = { + isa = PBXGroup; + children = ( + ); + path = Views; + sourceTree = ""; + }; + 4F5F12F524B63DCA00A7D9E7 /* ViewModels */ = { + isa = PBXGroup; + children = ( + 4F5F12F124B63A5600A7D9E7 /* MenuViewModel.swift */, + ); + path = ViewModels; + sourceTree = ""; + }; + 4F5F12F624B63DED00A7D9E7 /* Brainstorming */ = { + isa = PBXGroup; + children = ( + 4F5F12F724B63DF700A7D9E7 /* Views */, + 4F5F12F824B63E0000A7D9E7 /* ViewModels */, + ); + path = Brainstorming; + sourceTree = ""; + }; + 4F5F12F724B63DF700A7D9E7 /* Views */ = { + isa = PBXGroup; + children = ( + ); + path = Views; + sourceTree = ""; + }; + 4F5F12F824B63E0000A7D9E7 /* ViewModels */ = { + isa = PBXGroup; + children = ( + 4F5F12FF24B65AC200A7D9E7 /* BrainstormingViewModel.swift */, + ); + path = ViewModels; + sourceTree = ""; + }; + 4F5F12F924B63E1400A7D9E7 /* Voting */ = { + isa = PBXGroup; + children = ( + 4F5F12FA24B63E2200A7D9E7 /* Views */, + 4F5F12FB24B63E2E00A7D9E7 /* ViewModel */, + ); + path = Voting; + sourceTree = ""; + }; + 4F5F12FA24B63E2200A7D9E7 /* Views */ = { + isa = PBXGroup; + children = ( + ); + path = Views; + sourceTree = ""; + }; + 4F5F12FB24B63E2E00A7D9E7 /* ViewModel */ = { + isa = PBXGroup; + children = ( + 4F5F130124B65D8E00A7D9E7 /* VotingViewModel.swift */, + ); + path = ViewModel; + sourceTree = ""; + }; A418230D24B39DDF0082962F = { isa = PBXGroup; children = ( A418231824B39DDF0082962F /* Blink */, A418232D24B39DE10082962F /* BlinkTests */, + 4F5F12D024B639FA00A7D9E7 /* Blink_iOS */, + 4F5F12E724B639FD00A7D9E7 /* Blink_iOSTests */, A418231724B39DDF0082962F /* Products */, ); sourceTree = ""; @@ -70,6 +222,8 @@ children = ( A418231624B39DDF0082962F /* Blink.app */, A418232A24B39DE10082962F /* BlinkTests.xctest */, + 4F5F12CF24B639FA00A7D9E7 /* Blink_iOS.app */, + 4F5F12E424B639FD00A7D9E7 /* Blink_iOSTests.xctest */, ); name = Products; sourceTree = ""; @@ -77,6 +231,10 @@ A418231824B39DDF0082962F /* Blink */ = { isa = PBXGroup; children = ( + 4F5F12F324B63D9300A7D9E7 /* Menu */, + 4F5F12F624B63DED00A7D9E7 /* Brainstorming */, + 4F5F12F924B63E1400A7D9E7 /* Voting */, + 4F5F12FC24B63E8200A7D9E7 /* Multipeer.swift */, A418231924B39DDF0082962F /* AppDelegate.swift */, A418231B24B39DDF0082962F /* ContentView.swift */, A418231D24B39DE10082962F /* Assets.xcassets */, @@ -107,6 +265,41 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 4F5F12CE24B639FA00A7D9E7 /* Blink_iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4F5F12EF24B639FD00A7D9E7 /* Build configuration list for PBXNativeTarget "Blink_iOS" */; + buildPhases = ( + 4F5F12CB24B639FA00A7D9E7 /* Sources */, + 4F5F12CC24B639FA00A7D9E7 /* Frameworks */, + 4F5F12CD24B639FA00A7D9E7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Blink_iOS; + productName = Blink_iOS; + productReference = 4F5F12CF24B639FA00A7D9E7 /* Blink_iOS.app */; + productType = "com.apple.product-type.application"; + }; + 4F5F12E324B639FD00A7D9E7 /* Blink_iOSTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4F5F12F024B639FD00A7D9E7 /* Build configuration list for PBXNativeTarget "Blink_iOSTests" */; + buildPhases = ( + 4F5F12E024B639FD00A7D9E7 /* Sources */, + 4F5F12E124B639FD00A7D9E7 /* Frameworks */, + 4F5F12E224B639FD00A7D9E7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 4F5F12E624B639FD00A7D9E7 /* PBXTargetDependency */, + ); + name = Blink_iOSTests; + productName = Blink_iOSTests; + productReference = 4F5F12E424B639FD00A7D9E7 /* Blink_iOSTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; A418231524B39DDF0082962F /* Blink */ = { isa = PBXNativeTarget; buildConfigurationList = A418233324B39DE10082962F /* Build configuration list for PBXNativeTarget "Blink" */; @@ -148,10 +341,17 @@ A418230E24B39DDF0082962F /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1150; + LastSwiftUpdateCheck = 1140; LastUpgradeCheck = 1150; ORGANIZATIONNAME = "Artur Carneiro"; TargetAttributes = { + 4F5F12CE24B639FA00A7D9E7 = { + CreatedOnToolsVersion = 11.4; + }; + 4F5F12E324B639FD00A7D9E7 = { + CreatedOnToolsVersion = 11.4; + TestTargetID = 4F5F12CE24B639FA00A7D9E7; + }; A418231524B39DDF0082962F = { CreatedOnToolsVersion = 11.5; }; @@ -176,11 +376,30 @@ targets = ( A418231524B39DDF0082962F /* Blink */, A418232924B39DE10082962F /* BlinkTests */, + 4F5F12CE24B639FA00A7D9E7 /* Blink_iOS */, + 4F5F12E324B639FD00A7D9E7 /* Blink_iOSTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 4F5F12CD24B639FA00A7D9E7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4F5F12DE24B639FC00A7D9E7 /* LaunchScreen.storyboard in Resources */, + 4F5F12DB24B639FC00A7D9E7 /* Preview Assets.xcassets in Resources */, + 4F5F12D824B639FC00A7D9E7 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4F5F12E224B639FD00A7D9E7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; A418231424B39DDF0082962F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -201,11 +420,33 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 4F5F12CB24B639FA00A7D9E7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4F5F12D224B639FA00A7D9E7 /* AppDelegate.swift in Sources */, + 4F5F12D424B639FA00A7D9E7 /* SceneDelegate.swift in Sources */, + 4F5F12D624B639FA00A7D9E7 /* ContentView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4F5F12E024B639FD00A7D9E7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4F5F12E924B639FD00A7D9E7 /* Blink_iOSTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; A418231224B39DDF0082962F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4F5F130024B65AC200A7D9E7 /* BrainstormingViewModel.swift in Sources */, + 4F5F130224B65D8E00A7D9E7 /* VotingViewModel.swift in Sources */, A418231C24B39DDF0082962F /* ContentView.swift in Sources */, + 4F5F12FD24B63E8200A7D9E7 /* Multipeer.swift in Sources */, + 4F5F12F224B63A5600A7D9E7 /* MenuViewModel.swift in Sources */, A418231A24B39DDF0082962F /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -221,6 +462,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 4F5F12E624B639FD00A7D9E7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4F5F12CE24B639FA00A7D9E7 /* Blink_iOS */; + targetProxy = 4F5F12E524B639FD00A7D9E7 /* PBXContainerItemProxy */; + }; A418232C24B39DE10082962F /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = A418231524B39DDF0082962F /* Blink */; @@ -229,6 +475,14 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ + 4F5F12DC24B639FC00A7D9E7 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 4F5F12DD24B639FC00A7D9E7 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; A418232224B39DE10082962F /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( @@ -240,6 +494,96 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 4F5F12EB24B639FD00A7D9E7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"Blink_iOS/Preview Content\""; + DEVELOPMENT_TEAM = 93JG72P729; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = Blink_iOS/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.edgarsgroi.Blink-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 4F5F12EC24B639FD00A7D9E7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"Blink_iOS/Preview Content\""; + DEVELOPMENT_TEAM = 93JG72P729; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = Blink_iOS/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.edgarsgroi.Blink-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 4F5F12ED24B639FD00A7D9E7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 93JG72P729; + INFOPLIST_FILE = Blink_iOSTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.edgarsgroi.Blink-iOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Blink_iOS.app/Blink_iOS"; + }; + name = Debug; + }; + 4F5F12EE24B639FD00A7D9E7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 93JG72P729; + INFOPLIST_FILE = Blink_iOSTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.edgarsgroi.Blink-iOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Blink_iOS.app/Blink_iOS"; + }; + name = Release; + }; A418233124B39DE10082962F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -441,6 +785,24 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 4F5F12EF24B639FD00A7D9E7 /* Build configuration list for PBXNativeTarget "Blink_iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4F5F12EB24B639FD00A7D9E7 /* Debug */, + 4F5F12EC24B639FD00A7D9E7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4F5F12F024B639FD00A7D9E7 /* Build configuration list for PBXNativeTarget "Blink_iOSTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4F5F12ED24B639FD00A7D9E7 /* Debug */, + 4F5F12EE24B639FD00A7D9E7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; A418231124B39DDF0082962F /* Build configuration list for PBXProject "Blink" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Blink/Blink/Brainstorming/ViewModels/BrainstormingViewModel.swift b/Blink/Blink/Brainstorming/ViewModels/BrainstormingViewModel.swift new file mode 100644 index 0000000..81fce6d --- /dev/null +++ b/Blink/Blink/Brainstorming/ViewModels/BrainstormingViewModel.swift @@ -0,0 +1,55 @@ +// +// BrainstormingViewModel.swift +// Blink +// +// Created by Edgar Sgroi on 08/07/20. +// Copyright © 2020 Artur Carneiro. All rights reserved. +// + +import Foundation +import MultipeerConnectivity + +class BrainstormingViewModel: NSObject, MCSessionDelegate { + + let multipeerConnection = Multipeer.shared + + var ideas: [String] + + override init() { + ideas = [] + super.init() + multipeerConnection.delegate = self + } + + func session(_ session: MCSession, peer peerID: MCPeerID, didChange state: MCSessionState) { + switch state { + case MCSessionState.connected: + multipeerConnection.connectionStatus = .connected + case MCSessionState.connecting: + multipeerConnection.connectionStatus = .connecting + case MCSessionState.notConnected: + multipeerConnection.connectionStatus = .notConnected + @unknown default: + multipeerConnection.connectionStatus = .unknown + } + } + + func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) { + if let text = String(data: data, encoding: .utf8) { + DispatchQueue.main.async { + if !self.ideas.contains(text) { + self.ideas.append(text) + } + } + } + } + + func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID) { + } + + func session(_ session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, with progress: Progress) { + } + + func session(_ session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, at localURL: URL?, withError error: Error?) { + } +} diff --git a/Blink/Blink/Menu/ViewModels/MenuViewModel.swift b/Blink/Blink/Menu/ViewModels/MenuViewModel.swift new file mode 100644 index 0000000..66b54dc --- /dev/null +++ b/Blink/Blink/Menu/ViewModels/MenuViewModel.swift @@ -0,0 +1,52 @@ +// +// MenuViewModel.swift +// Blink +// +// Created by Edgar Sgroi on 08/07/20. +// Copyright © 2020 Artur Carneiro. All rights reserved. +// + +import Foundation +import MultipeerConnectivity + +class MenuViewModel: NSObject, MCSessionDelegate { + + let multipeerConnection = Multipeer.shared + + override init() { + super.init() + multipeerConnection.delegate = self + } + + func session(_ session: MCSession, peer peerID: MCPeerID, didChange state: MCSessionState) { + switch state { + case MCSessionState.connected: + multipeerConnection.connectionStatus = .connected + case MCSessionState.connecting: + multipeerConnection.connectionStatus = .connecting + case MCSessionState.notConnected: + multipeerConnection.connectionStatus = .notConnected + @unknown default: + multipeerConnection.connectionStatus = .unknown + } + } + + func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) { + } + + func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID) { + } + + func session(_ session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, with progress: Progress) { + } + + func session(_ session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, at localURL: URL?, withError error: Error?) { + } + + func startHosting(action: UIAlertAction!) { + multipeerConnection.mcAdvertiserAssistant = MCAdvertiserAssistant(serviceType: "blnk-kb", discoveryInfo: nil, session: multipeerConnection.mcSession) + multipeerConnection.mcAdvertiserAssistant.start() + print("You are hosting now!") + } + +} diff --git a/Blink/Blink/Multipeer.swift b/Blink/Blink/Multipeer.swift new file mode 100644 index 0000000..3611db7 --- /dev/null +++ b/Blink/Blink/Multipeer.swift @@ -0,0 +1,38 @@ +// +// Multipeer.swift +// Blink +// +// Created by Edgar Sgroi on 08/07/20. +// Copyright © 2020 Artur Carneiro. All rights reserved. +// + +import Foundation +import MultipeerConnectivity + +enum ConnectionStatus { + case connected + case connecting + case notConnected + case unknown +} + +class Multipeer: NSObject { + + static let shared = Multipeer() + + var peerID: MCPeerID + var mcSession: MCSession + var mcAdvertiserAssistant: MCAdvertiserAssistant + + var connectionStatus: ConnectionStatus + var delegate: MCSessionDelegate? + + override init() { + peerID = MCPeerID(displayName: UIDevice.current.name) + mcSession = MCSession(peer: peerID, securityIdentity: nil, encryptionPreference: .required) + connectionStatus = .notConnected + mcAdvertiserAssistant = MCAdvertiserAssistant(serviceType: "blink-kb", discoveryInfo: nil, session: mcSession) + super.init() + + } +} diff --git a/Blink/Blink/Voting/ViewModel/VotingViewModel.swift b/Blink/Blink/Voting/ViewModel/VotingViewModel.swift new file mode 100644 index 0000000..f68865e --- /dev/null +++ b/Blink/Blink/Voting/ViewModel/VotingViewModel.swift @@ -0,0 +1,45 @@ +// +// VotingViewModel.swift +// Blink +// +// Created by Edgar Sgroi on 08/07/20. +// Copyright © 2020 Artur Carneiro. All rights reserved. +// + +import Foundation +import MultipeerConnectivity + +class VotingViewModel: NSObject, MCSessionDelegate { + + let multipeerConnection = Multipeer.shared + + override init() { + super.init() + multipeerConnection.delegate = self + } + + func session(_ session: MCSession, peer peerID: MCPeerID, didChange state: MCSessionState) { + switch state { + case MCSessionState.connected: + multipeerConnection.connectionStatus = .connected + case MCSessionState.connecting: + multipeerConnection.connectionStatus = .connecting + case MCSessionState.notConnected: + multipeerConnection.connectionStatus = .notConnected + @unknown default: + multipeerConnection.connectionStatus = .unknown + } + } + + func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) { + } + + func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID) { + } + + func session(_ session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, with progress: Progress) { + } + + func session(_ session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, at localURL: URL?, withError error: Error?) { + } +} diff --git a/Blink/Blink_iOS/AppDelegate.swift b/Blink/Blink_iOS/AppDelegate.swift new file mode 100644 index 0000000..35c2cc6 --- /dev/null +++ b/Blink/Blink_iOS/AppDelegate.swift @@ -0,0 +1,37 @@ +// +// AppDelegate.swift +// Blink_iOS +// +// Created by Edgar Sgroi on 08/07/20. +// Copyright © 2020 Artur Carneiro. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/Blink/Blink_iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/Blink/Blink_iOS/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9221b9b --- /dev/null +++ b/Blink/Blink_iOS/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Blink/Blink_iOS/Assets.xcassets/Contents.json b/Blink/Blink_iOS/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Blink/Blink_iOS/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Blink/Blink_iOS/Base.lproj/LaunchScreen.storyboard b/Blink/Blink_iOS/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/Blink/Blink_iOS/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Blink/Blink_iOS/ContentView.swift b/Blink/Blink_iOS/ContentView.swift new file mode 100644 index 0000000..0e5873d --- /dev/null +++ b/Blink/Blink_iOS/ContentView.swift @@ -0,0 +1,21 @@ +// +// ContentView.swift +// Blink_iOS +// +// Created by Edgar Sgroi on 08/07/20. +// Copyright © 2020 Artur Carneiro. All rights reserved. +// + +import SwiftUI + +struct ContentView: View { + var body: some View { + Text("Hello, World!") + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/Blink/Blink_iOS/Info.plist b/Blink/Blink_iOS/Info.plist new file mode 100644 index 0000000..9742bf0 --- /dev/null +++ b/Blink/Blink_iOS/Info.plist @@ -0,0 +1,60 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + + + + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Blink/Blink_iOS/Preview Content/Preview Assets.xcassets/Contents.json b/Blink/Blink_iOS/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Blink/Blink_iOS/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Blink/Blink_iOS/SceneDelegate.swift b/Blink/Blink_iOS/SceneDelegate.swift new file mode 100644 index 0000000..ceb7965 --- /dev/null +++ b/Blink/Blink_iOS/SceneDelegate.swift @@ -0,0 +1,64 @@ +// +// SceneDelegate.swift +// Blink_iOS +// +// Created by Edgar Sgroi on 08/07/20. +// Copyright © 2020 Artur Carneiro. All rights reserved. +// + +import UIKit +import SwiftUI + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + + // Create the SwiftUI view that provides the window contents. + let contentView = ContentView() + + // Use a UIHostingController as window root view controller. + if let windowScene = scene as? UIWindowScene { + let window = UIWindow(windowScene: windowScene) + window.rootViewController = UIHostingController(rootView: contentView) + self.window = window + window.makeKeyAndVisible() + } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/Blink/Blink_iOSTests/Blink_iOSTests.swift b/Blink/Blink_iOSTests/Blink_iOSTests.swift new file mode 100644 index 0000000..4e51a37 --- /dev/null +++ b/Blink/Blink_iOSTests/Blink_iOSTests.swift @@ -0,0 +1,34 @@ +// +// Blink_iOSTests.swift +// Blink_iOSTests +// +// Created by Edgar Sgroi on 08/07/20. +// Copyright © 2020 Artur Carneiro. All rights reserved. +// + +import XCTest +@testable import Blink_iOS + +class Blink_iOSTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/Blink/Blink_iOSTests/Info.plist b/Blink/Blink_iOSTests/Info.plist new file mode 100644 index 0000000..64d65ca --- /dev/null +++ b/Blink/Blink_iOSTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + +