diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 00000000..18f175cb --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,32 @@ +codecov: + branch: develop + +coverage: + precision: 2 + round: nearest + range: "60...100" + ignore: + - Tests/* + +status: + project: + default: + target: auto + threshold: 2.0 + branches: + - master + - develop + + patch: + default: + target: auto + branches: + - master + - develop + +comment: + layout: "header, diff, changes, sunburst, uncovered" + branches: + - master + - develop + behavior: default diff --git a/.gitignore b/.gitignore index d5340449..066a002f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,11 @@ +# OS X +.DS_Store + # Xcode -# -# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore ## Build generated build/ -DerivedData/ +DerivedData ## Various settings *.pbxuser @@ -15,53 +16,22 @@ DerivedData/ !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata/ +xcuserdata ## Other -*.moved-aside *.xccheckout +*.moved-aside +*.xcuserstate *.xcscmblueprint ## Obj-C/Swift specific *.hmap *.ipa -*.dSYM.zip -*.dSYM - -## Playgrounds -timeline.xctimeline -playground.xcworkspace - -# Swift Package Manager -# -# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. -# Packages/ -# Package.pins -.build/ # CocoaPods -# -# We recommend against adding the Pods directory to your .gitignore. However -# you should judge for yourself, the pros and cons are mentioned at: -# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# -# Pods/ +Pods/ # Carthage -# -# Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts Carthage/Build - -# fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. -# For more information about the recommended setup visit: -# https://docs.fastlane.tools/best-practices/source-control/#source-control - -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots -fastlane/test_output diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..a67cae29 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,57 @@ +language: objective-c +osx_image: xcode8.1 + +env: + global: + - LANG=en_US.UTF-8 + + - PROJECT="MessageKit.xcodeproj" + - IOS_SCHEME="MessageKit" + - IOS_SDK=iphonesimulator10.1 + + matrix: + - DESTINATION="OS=8.1,name=iPhone 4s" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" RUN_TESTS="NO" BUILD_EXAMPLE="YES" POD_LINT="YES" RUN_UI_TESTS="NO" + - DESTINATION="OS=8.2,name=iPhone 5" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" RUN_TESTS="NO" BUILD_EXAMPLE="NO" POD_LINT="NO" RUN_UI_TESTS="NO" + - DESTINATION="OS=8.3,name=iPhone 5s" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" RUN_TESTS="NO" BUILD_EXAMPLE="NO" POD_LINT="NO" RUN_UI_TESTS="NO" + - DESTINATION="OS=8.4,name=iPhone 6" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" RUN_TESTS="NO" BUILD_EXAMPLE="NO" POD_LINT="NO" RUN_UI_TESTS="NO" + + - DESTINATION="OS=9.0,name=iPhone 6 Plus" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="YES" POD_LINT="NO" RUN_UI_TESTS="YES" + - DESTINATION="OS=9.1,name=iPhone 6s" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="NO" POD_LINT="NO" RUN_UI_TESTS="NO" + - DESTINATION="OS=9.2,name=iPhone 6s" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="NO" POD_LINT="NO" RUN_UI_TESTS="NO" + - DESTINATION="OS=9.3,name=iPad Pro" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="NO" POD_LINT="NO" RUN_UI_TESTS="NO" + + - DESTINATION="OS=10.0,name=iPhone 6s" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="YES" POD_LINT="NO" RUN_UI_TESTS="YES" + - DESTINATION="OS=10.1,name=iPhone 7" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" RUN_TESTS="YES" BUILD_EXAMPLE="NO" POD_LINT="NO" RUN_UI_TESTS="NO" + +script: + +- if [ $POD_LINT == "YES" ]; then + pod lib lint; + fi + + +- if [ $BUILD_EXAMPLE == "YES" ]; then + xcodebuild build analyze -project Example/ChatExample.xcodeproj -scheme ChatExample -sdk "$SDK" -destination "$DESTINATION" ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO | xcpretty -c; + fi + + +- if [ $RUN_TESTS == "YES" ]; then + xcodebuild analyze test -project "$PROJECT" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO | xcpretty -c; + else + xcodebuild build analyze -project "$PROJECT" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO | xcpretty -c; + fi + + +- if [ $RUN_UI_TESTS == "YES" ]; then + xcodebuild test -project Example/ChatExample.xcodeproj -scheme ChatExampleUITests -sdk "$SDK" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO | xcpretty -c; + fi + + +# Build for reporting test coverage +- if [ $RUN_TESTS == "YES" ]; then + xcodebuild test -project MessageKit.xcodeproj -scheme MessageKit -destination "platform=iOS Simulator,name=iPhone 7" CODE_SIGNING_REQUIRED=NO; + fi + + +after_success: +- bash <(curl -s https://codecov.io/bash) diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..82e1cdcf --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,12 @@ +# CHANGELOG + +The changelog for `MessageKit`. Also see the [releases](https://github.com/MessageKit/MessageKit/releases) on GitHub. + +-------------------------------------- + +Upcoming release +---------------- + +This release closes the [0.1 milestone](https://github.com/MessageKit/MessageKit/milestone/1?closed=1). + +Initial release. :tada: diff --git a/Example/ChatExample.xcodeproj/project.pbxproj b/Example/ChatExample.xcodeproj/project.pbxproj new file mode 100644 index 00000000..32ff41d7 --- /dev/null +++ b/Example/ChatExample.xcodeproj/project.pbxproj @@ -0,0 +1,614 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 882B5E811CF7D53600B6E160 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 882B5E781CF7D53600B6E160 /* AppDelegate.swift */; }; + 882B5E821CF7D53600B6E160 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 882B5E791CF7D53600B6E160 /* Assets.xcassets */; }; + 882B5E831CF7D53600B6E160 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 882B5E7A1CF7D53600B6E160 /* LaunchScreen.storyboard */; }; + 882B5E841CF7D53600B6E160 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 882B5E7C1CF7D53600B6E160 /* Main.storyboard */; }; + 882B5E851CF7D53600B6E160 /* InboxViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 882B5E7E1CF7D53600B6E160 /* InboxViewController.swift */; }; + 882B5E871CF7D53600B6E160 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 882B5E801CF7D53600B6E160 /* SettingsViewController.swift */; }; + 882B5E901CF7D56000B6E160 /* ChatExampleUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 882B5E8E1CF7D56000B6E160 /* ChatExampleUITests.swift */; }; + 882B5E951CF7D56E00B6E160 /* ChatExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 882B5E931CF7D56E00B6E160 /* ChatExampleTests.swift */; }; + 882B5EA01CF7D8D100B6E160 /* MessageKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 882B5E9D1CF7D8CA00B6E160 /* MessageKit.framework */; }; + 882B5EA11CF7D8D100B6E160 /* MessageKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 882B5E9D1CF7D8CA00B6E160 /* MessageKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 882B5E4A1CF7D4B900B6E160 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 882B5E2B1CF7D4B900B6E160 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 882B5E321CF7D4B900B6E160; + remoteInfo = ChatExample; + }; + 882B5E551CF7D4B900B6E160 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 882B5E2B1CF7D4B900B6E160 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 882B5E321CF7D4B900B6E160; + remoteInfo = ChatExample; + }; + 882B5E9C1CF7D8CA00B6E160 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 882B5E971CF7D8CA00B6E160 /* MessageKit.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 88916B221CF0DF2F00469F91; + remoteInfo = MessageKit; + }; + 882B5E9E1CF7D8CA00B6E160 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 882B5E971CF7D8CA00B6E160 /* MessageKit.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 88916B2C1CF0DF2F00469F91; + remoteInfo = MessageKitTests; + }; + 882B5EA21CF7D8D100B6E160 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 882B5E971CF7D8CA00B6E160 /* MessageKit.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 88916B211CF0DF2F00469F91; + remoteInfo = MessageKit; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 882B5EA41CF7D8D100B6E160 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 882B5EA11CF7D8D100B6E160 /* MessageKit.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 882B5E331CF7D4B900B6E160 /* ChatExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ChatExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 882B5E491CF7D4B900B6E160 /* ChatExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ChatExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 882B5E541CF7D4B900B6E160 /* ChatExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ChatExampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 882B5E781CF7D53600B6E160 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 882B5E791CF7D53600B6E160 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 882B5E7B1CF7D53600B6E160 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 882B5E7D1CF7D53600B6E160 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 882B5E7E1CF7D53600B6E160 /* InboxViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InboxViewController.swift; sourceTree = ""; }; + 882B5E7F1CF7D53600B6E160 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 882B5E801CF7D53600B6E160 /* SettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; + 882B5E8E1CF7D56000B6E160 /* ChatExampleUITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatExampleUITests.swift; sourceTree = ""; }; + 882B5E8F1CF7D56000B6E160 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 882B5E931CF7D56E00B6E160 /* ChatExampleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatExampleTests.swift; sourceTree = ""; }; + 882B5E941CF7D56E00B6E160 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 882B5E971CF7D8CA00B6E160 /* MessageKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MessageKit.xcodeproj; path = ../MessageKit.xcodeproj; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 882B5E301CF7D4B900B6E160 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 882B5EA01CF7D8D100B6E160 /* MessageKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 882B5E461CF7D4B900B6E160 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 882B5E511CF7D4B900B6E160 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 882B5E2A1CF7D4B900B6E160 = { + isa = PBXGroup; + children = ( + 882B5E771CF7D53600B6E160 /* Sources */, + 882B5E921CF7D56D00B6E160 /* Tests */, + 882B5E8D1CF7D56000B6E160 /* UITests */, + 882B5E341CF7D4B900B6E160 /* Products */, + 882B5E971CF7D8CA00B6E160 /* MessageKit.xcodeproj */, + ); + sourceTree = ""; + }; + 882B5E341CF7D4B900B6E160 /* Products */ = { + isa = PBXGroup; + children = ( + 882B5E331CF7D4B900B6E160 /* ChatExample.app */, + 882B5E491CF7D4B900B6E160 /* ChatExampleTests.xctest */, + 882B5E541CF7D4B900B6E160 /* ChatExampleUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 882B5E771CF7D53600B6E160 /* Sources */ = { + isa = PBXGroup; + children = ( + 882B5E781CF7D53600B6E160 /* AppDelegate.swift */, + 882B5E791CF7D53600B6E160 /* Assets.xcassets */, + 882B5E7E1CF7D53600B6E160 /* InboxViewController.swift */, + 882B5E7F1CF7D53600B6E160 /* Info.plist */, + 882B5E7A1CF7D53600B6E160 /* LaunchScreen.storyboard */, + 882B5E7C1CF7D53600B6E160 /* Main.storyboard */, + 882B5E801CF7D53600B6E160 /* SettingsViewController.swift */, + ); + path = Sources; + sourceTree = ""; + }; + 882B5E8D1CF7D56000B6E160 /* UITests */ = { + isa = PBXGroup; + children = ( + 882B5E8E1CF7D56000B6E160 /* ChatExampleUITests.swift */, + 882B5E8F1CF7D56000B6E160 /* Info.plist */, + ); + path = UITests; + sourceTree = ""; + }; + 882B5E921CF7D56D00B6E160 /* Tests */ = { + isa = PBXGroup; + children = ( + 882B5E931CF7D56E00B6E160 /* ChatExampleTests.swift */, + 882B5E941CF7D56E00B6E160 /* Info.plist */, + ); + path = Tests; + sourceTree = ""; + }; + 882B5E981CF7D8CA00B6E160 /* Products */ = { + isa = PBXGroup; + children = ( + 882B5E9D1CF7D8CA00B6E160 /* MessageKit.framework */, + 882B5E9F1CF7D8CA00B6E160 /* MessageKitTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 882B5E321CF7D4B900B6E160 /* ChatExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 882B5E5D1CF7D4B900B6E160 /* Build configuration list for PBXNativeTarget "ChatExample" */; + buildPhases = ( + 882B5E2F1CF7D4B900B6E160 /* Sources */, + 882B5E301CF7D4B900B6E160 /* Frameworks */, + 882B5E311CF7D4B900B6E160 /* Resources */, + 882B5EA41CF7D8D100B6E160 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 882B5EA31CF7D8D100B6E160 /* PBXTargetDependency */, + ); + name = ChatExample; + productName = ChatExample; + productReference = 882B5E331CF7D4B900B6E160 /* ChatExample.app */; + productType = "com.apple.product-type.application"; + }; + 882B5E481CF7D4B900B6E160 /* ChatExampleTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 882B5E601CF7D4B900B6E160 /* Build configuration list for PBXNativeTarget "ChatExampleTests" */; + buildPhases = ( + 882B5E451CF7D4B900B6E160 /* Sources */, + 882B5E461CF7D4B900B6E160 /* Frameworks */, + 882B5E471CF7D4B900B6E160 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 882B5E4B1CF7D4B900B6E160 /* PBXTargetDependency */, + ); + name = ChatExampleTests; + productName = ChatExampleTests; + productReference = 882B5E491CF7D4B900B6E160 /* ChatExampleTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 882B5E531CF7D4B900B6E160 /* ChatExampleUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 882B5E631CF7D4B900B6E160 /* Build configuration list for PBXNativeTarget "ChatExampleUITests" */; + buildPhases = ( + 882B5E501CF7D4B900B6E160 /* Sources */, + 882B5E511CF7D4B900B6E160 /* Frameworks */, + 882B5E521CF7D4B900B6E160 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 882B5E561CF7D4B900B6E160 /* PBXTargetDependency */, + ); + name = ChatExampleUITests; + productName = ChatExampleUITests; + productReference = 882B5E541CF7D4B900B6E160 /* ChatExampleUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 882B5E2B1CF7D4B900B6E160 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0730; + LastUpgradeCheck = 0810; + ORGANIZATIONNAME = "Hexed Bits"; + TargetAttributes = { + 882B5E321CF7D4B900B6E160 = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 0800; + }; + 882B5E481CF7D4B900B6E160 = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 0800; + TestTargetID = 882B5E321CF7D4B900B6E160; + }; + 882B5E531CF7D4B900B6E160 = { + CreatedOnToolsVersion = 7.3.1; + TestTargetID = 882B5E321CF7D4B900B6E160; + }; + }; + }; + buildConfigurationList = 882B5E2E1CF7D4B900B6E160 /* Build configuration list for PBXProject "ChatExample" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 882B5E2A1CF7D4B900B6E160; + productRefGroup = 882B5E341CF7D4B900B6E160 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 882B5E981CF7D8CA00B6E160 /* Products */; + ProjectRef = 882B5E971CF7D8CA00B6E160 /* MessageKit.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 882B5E321CF7D4B900B6E160 /* ChatExample */, + 882B5E481CF7D4B900B6E160 /* ChatExampleTests */, + 882B5E531CF7D4B900B6E160 /* ChatExampleUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 882B5E9D1CF7D8CA00B6E160 /* MessageKit.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = MessageKit.framework; + remoteRef = 882B5E9C1CF7D8CA00B6E160 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 882B5E9F1CF7D8CA00B6E160 /* MessageKitTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = MessageKitTests.xctest; + remoteRef = 882B5E9E1CF7D8CA00B6E160 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 882B5E311CF7D4B900B6E160 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 882B5E841CF7D53600B6E160 /* Main.storyboard in Resources */, + 882B5E821CF7D53600B6E160 /* Assets.xcassets in Resources */, + 882B5E831CF7D53600B6E160 /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 882B5E471CF7D4B900B6E160 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 882B5E521CF7D4B900B6E160 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 882B5E2F1CF7D4B900B6E160 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 882B5E871CF7D53600B6E160 /* SettingsViewController.swift in Sources */, + 882B5E811CF7D53600B6E160 /* AppDelegate.swift in Sources */, + 882B5E851CF7D53600B6E160 /* InboxViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 882B5E451CF7D4B900B6E160 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 882B5E951CF7D56E00B6E160 /* ChatExampleTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 882B5E501CF7D4B900B6E160 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 882B5E901CF7D56000B6E160 /* ChatExampleUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 882B5E4B1CF7D4B900B6E160 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 882B5E321CF7D4B900B6E160 /* ChatExample */; + targetProxy = 882B5E4A1CF7D4B900B6E160 /* PBXContainerItemProxy */; + }; + 882B5E561CF7D4B900B6E160 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 882B5E321CF7D4B900B6E160 /* ChatExample */; + targetProxy = 882B5E551CF7D4B900B6E160 /* PBXContainerItemProxy */; + }; + 882B5EA31CF7D8D100B6E160 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MessageKit; + targetProxy = 882B5EA21CF7D8D100B6E160 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 882B5E7A1CF7D53600B6E160 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 882B5E7B1CF7D53600B6E160 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; + 882B5E7C1CF7D53600B6E160 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 882B5E7D1CF7D53600B6E160 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 882B5E5B1CF7D4B900B6E160 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + 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 = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 882B5E5C1CF7D4B900B6E160 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + 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 = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 882B5E5E1CF7D4B900B6E160 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.ChatExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + }; + name = Debug; + }; + 882B5E5F1CF7D4B900B6E160 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.ChatExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + }; + name = Release; + }; + 882B5E611CF7D4B900B6E160 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + INFOPLIST_FILE = Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.ChatExampleTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ChatExample.app/ChatExample"; + }; + name = Debug; + }; + 882B5E621CF7D4B900B6E160 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + INFOPLIST_FILE = Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.ChatExampleTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ChatExample.app/ChatExample"; + }; + name = Release; + }; + 882B5E641CF7D4B900B6E160 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = UITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.ChatExampleUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + TEST_TARGET_NAME = ChatExample; + }; + name = Debug; + }; + 882B5E651CF7D4B900B6E160 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = UITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.ChatExampleUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + TEST_TARGET_NAME = ChatExample; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 882B5E2E1CF7D4B900B6E160 /* Build configuration list for PBXProject "ChatExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 882B5E5B1CF7D4B900B6E160 /* Debug */, + 882B5E5C1CF7D4B900B6E160 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 882B5E5D1CF7D4B900B6E160 /* Build configuration list for PBXNativeTarget "ChatExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 882B5E5E1CF7D4B900B6E160 /* Debug */, + 882B5E5F1CF7D4B900B6E160 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 882B5E601CF7D4B900B6E160 /* Build configuration list for PBXNativeTarget "ChatExampleTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 882B5E611CF7D4B900B6E160 /* Debug */, + 882B5E621CF7D4B900B6E160 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 882B5E631CF7D4B900B6E160 /* Build configuration list for PBXNativeTarget "ChatExampleUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 882B5E641CF7D4B900B6E160 /* Debug */, + 882B5E651CF7D4B900B6E160 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 882B5E2B1CF7D4B900B6E160 /* Project object */; +} diff --git a/Example/ChatExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/ChatExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..831fce3b --- /dev/null +++ b/Example/ChatExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/MessageKit.xcodeproj/xcuserdata/steven.xcuserdatad/xcschemes/MessageKit.xcscheme b/Example/ChatExample.xcodeproj/xcshareddata/xcschemes/ChatExample.xcscheme similarity index 56% rename from MessageKit.xcodeproj/xcuserdata/steven.xcuserdatad/xcschemes/MessageKit.xcscheme rename to Example/ChatExample.xcodeproj/xcshareddata/xcschemes/ChatExample.xcscheme index 28794fa1..4bfd027d 100644 --- a/MessageKit.xcodeproj/xcuserdata/steven.xcuserdatad/xcschemes/MessageKit.xcscheme +++ b/Example/ChatExample.xcodeproj/xcshareddata/xcschemes/ChatExample.xcscheme @@ -1,6 +1,6 @@ + ReferencedContainer = "container:../MessageKit.xcodeproj"> + + + + @@ -26,26 +40,27 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES" + codeCoverageEnabled = "YES"> + BlueprintIdentifier = "882B5E481CF7D4B900B6E160" + BuildableName = "ChatExampleTests.xctest" + BlueprintName = "ChatExampleTests" + ReferencedContainer = "container:ChatExample.xcodeproj"> + BlueprintIdentifier = "882B5E321CF7D4B900B6E160" + BuildableName = "ChatExample.app" + BlueprintName = "ChatExample" + ReferencedContainer = "container:ChatExample.xcodeproj"> @@ -61,15 +76,16 @@ debugDocumentVersioning = "YES" debugServiceExtension = "internal" allowLocationSimulation = "YES"> - + + BlueprintIdentifier = "882B5E321CF7D4B900B6E160" + BuildableName = "ChatExample.app" + BlueprintName = "ChatExample" + ReferencedContainer = "container:ChatExample.xcodeproj"> - + @@ -79,15 +95,16 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES"> - + + BlueprintIdentifier = "882B5E321CF7D4B900B6E160" + BuildableName = "ChatExample.app" + BlueprintName = "ChatExample" + ReferencedContainer = "container:ChatExample.xcodeproj"> - + diff --git a/Example/ChatExample.xcodeproj/xcshareddata/xcschemes/ChatExampleUITests.xcscheme b/Example/ChatExample.xcodeproj/xcshareddata/xcschemes/ChatExampleUITests.xcscheme new file mode 100644 index 00000000..2cefbe63 --- /dev/null +++ b/Example/ChatExample.xcodeproj/xcshareddata/xcschemes/ChatExampleUITests.xcscheme @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Sources/AppDelegate.swift b/Example/Sources/AppDelegate.swift new file mode 100644 index 00000000..98ae1b0b --- /dev/null +++ b/Example/Sources/AppDelegate.swift @@ -0,0 +1,30 @@ +// +// Created by Jesse Squires +// http://www.jessesquires.com +// +// +// Documentation +// http://messagekit.github.io +// +// +// GitHub +// https://github.com/MessageKit/MessageKit +// +// +// License +// Copyright (c) 2016-present Jesse Squires +// Released under an MIT license: http://opensource.org/licenses/MIT +// + +import UIKit + +@UIApplicationMain +final class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(_ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { + return true + } +} diff --git a/Example/Sources/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/Sources/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..eeea76c2 --- /dev/null +++ b/Example/Sources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,73 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Example/Sources/Assets.xcassets/Contents.json b/Example/Sources/Assets.xcassets/Contents.json new file mode 100644 index 00000000..da4a164c --- /dev/null +++ b/Example/Sources/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Example/Sources/Base.lproj/LaunchScreen.storyboard b/Example/Sources/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..8e945dee --- /dev/null +++ b/Example/Sources/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Sources/Base.lproj/Main.storyboard b/Example/Sources/Base.lproj/Main.storyboard new file mode 100644 index 00000000..e113f6c0 --- /dev/null +++ b/Example/Sources/Base.lproj/Main.storyboard @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Sources/InboxViewController.swift b/Example/Sources/InboxViewController.swift new file mode 100644 index 00000000..79442319 --- /dev/null +++ b/Example/Sources/InboxViewController.swift @@ -0,0 +1,30 @@ +// +// Created by Jesse Squires +// http://www.jessesquires.com +// +// +// Documentation +// http://messagekit.github.io +// +// +// GitHub +// https://github.com/MessageKit/MessageKit +// +// +// License +// Copyright (c) 2016-present Jesse Squires +// Released under an MIT license: http://opensource.org/licenses/MIT +// + +import UIKit + +import MessageKit + + +final class InboxViewController: UITableViewController { + + override func viewDidLoad() { + super.viewDidLoad() + } +} + diff --git a/Example/Sources/Info.plist b/Example/Sources/Info.plist new file mode 100644 index 00000000..fd1ab7c3 --- /dev/null +++ b/Example/Sources/Info.plist @@ -0,0 +1,57 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UIStatusBarTintParameters + + UINavigationBar + + Style + UIBarStyleDefault + Translucent + + + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Example/Sources/SettingsViewController.swift b/Example/Sources/SettingsViewController.swift new file mode 100644 index 00000000..bb82dc15 --- /dev/null +++ b/Example/Sources/SettingsViewController.swift @@ -0,0 +1,30 @@ +// +// Created by Jesse Squires +// http://www.jessesquires.com +// +// +// Documentation +// http://messagekit.github.io +// +// +// GitHub +// https://github.com/MessageKit/MessageKit +// +// +// License +// Copyright (c) 2016-present Jesse Squires +// Released under an MIT license: http://opensource.org/licenses/MIT +// + +import UIKit + +import MessageKit + + +final class SettingsViewController: UITableViewController { + + override func viewDidLoad() { + super.viewDidLoad() + } +} + diff --git a/Example/Tests/ChatExampleTests.swift b/Example/Tests/ChatExampleTests.swift new file mode 100644 index 00000000..128a25e2 --- /dev/null +++ b/Example/Tests/ChatExampleTests.swift @@ -0,0 +1,36 @@ +// +// Created by Jesse Squires +// http://www.jessesquires.com +// +// +// Documentation +// http://messagekit.github.io +// +// +// GitHub +// https://github.com/MessageKit/MessageKit +// +// +// License +// Copyright (c) 2016-present Jesse Squires +// Released under an MIT license: http://opensource.org/licenses/MIT +// + +import XCTest +@testable import ChatExample + +final class ChatExampleTests: XCTestCase { + + override func setUp() { + super.setUp() + } + + override func tearDown() { + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } +} diff --git a/MessageKitTests/Info.plist b/Example/Tests/Info.plist similarity index 92% rename from MessageKitTests/Info.plist rename to Example/Tests/Info.plist index 6c6c23c4..ba72822e 100644 --- a/MessageKitTests/Info.plist +++ b/Example/Tests/Info.plist @@ -16,6 +16,8 @@ BNDL CFBundleShortVersionString 1.0 + CFBundleSignature + ???? CFBundleVersion 1 diff --git a/Example/UITests/ChatExampleUITests.swift b/Example/UITests/ChatExampleUITests.swift new file mode 100644 index 00000000..3fa22105 --- /dev/null +++ b/Example/UITests/ChatExampleUITests.swift @@ -0,0 +1,48 @@ +// +// Created by Jesse Squires +// http://www.jessesquires.com +// +// +// Documentation +// http://messagekit.github.io +// +// +// GitHub +// https://github.com/MessageKit/MessageKit +// +// +// License +// Copyright (c) 2016-present Jesse Squires +// Released under an MIT license: http://opensource.org/licenses/MIT +// + +import XCTest +@testable import ChatExample + +final class ChatExampleUITests: XCTestCase { + + override func setUp() { + super.setUp() + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. + if #available(iOS 9.0, *) { + XCUIApplication().launch() + } else { + // Fallback on earlier versions + } + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. + // The setUp method is a good place to do this. + } + + override func tearDown() { + super.tearDown() + } + + func testExample() { + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } +} diff --git a/Example/UITests/Info.plist b/Example/UITests/Info.plist new file mode 100644 index 00000000..ba72822e --- /dev/null +++ b/Example/UITests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/MessageKit.podspec b/MessageKit.podspec index f96e7cb6..8f42c3ba 100644 --- a/MessageKit.podspec +++ b/MessageKit.podspec @@ -1,17 +1,21 @@ Pod::Spec.new do |s| + s.name = 'MessageKit' + s.version = '0.0.1' + s.license = { :type => "MIT", :file => "LICENSE" } - s.name = "MessageKit" - s.version = "0.0.1" - s.summary = "Super easy to use client for Hacker News API" - s.license = { :type => "MIT", :file => "LICENSE" } - s.homepage = "https://github.com/SD10/MessageKit" - s.author = { "Steven Deutsch" => "stevensdeutsch@yahoo.com" } - s.social_media_url = "https://twitter.com/_SD10_" - s.platform = :ios, "9.0" - s.requires_arc = "true" - s.source = { git: "https://github.com/SD10/MessageKit.git", tag: "#{s.version}" } - s.source_files = "MessageKit/**/*.*" - s.pod_target_xcconfig = { - "SWIFT_VERSION" => "3.0", - } + s.summary = 'An elegant messages UI library for iOS.' + s.homepage = 'https://github.com/MessageKit/MessageKit' + s.social_media_url = 'https://twitter.com/_SD10_' + s.author = { "Steven Deutsch" => "stevensdeutsch@yahoo.com" } + + s.source = { :git => 'https://github.com/MessageKit/MessageKit.git', :tag => s.version } + s.source_files = 'Sources/*.swift' + + s.pod_target_xcconfig = { + "SWIFT_VERSION" => "3.0", + } + + s.ios.deployment_target = '8.0' + + s.requires_arc = true end diff --git a/MessageKit.xcodeproj/project.pbxproj b/MessageKit.xcodeproj/project.pbxproj index c68e301c..ce49afe8 100644 --- a/MessageKit.xcodeproj/project.pbxproj +++ b/MessageKit.xcodeproj/project.pbxproj @@ -7,168 +7,116 @@ objects = { /* Begin PBXBuildFile section */ - B011FD661F1D48E700CE0D6A /* MessageKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B011FD5C1F1D48E600CE0D6A /* MessageKit.framework */; }; - B011FD6B1F1D48E700CE0D6A /* MessageKitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B011FD6A1F1D48E700CE0D6A /* MessageKitTests.swift */; }; - B011FD6D1F1D48E700CE0D6A /* MessageKit.h in Headers */ = {isa = PBXBuildFile; fileRef = B011FD5F1F1D48E600CE0D6A /* MessageKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B04FA5241F1F287B00149F7B /* MessagesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B04FA5231F1F287B00149F7B /* MessagesViewController.swift */; }; - B04FA5261F1F28E000149F7B /* MessagesCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B04FA5251F1F28E000149F7B /* MessagesCollectionView.swift */; }; - B04FA5281F1F298A00149F7B /* Sender.swift in Sources */ = {isa = PBXBuildFile; fileRef = B04FA5271F1F298A00149F7B /* Sender.swift */; }; - B04FA52A1F1F571F00149F7B /* MessageType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B04FA5291F1F571F00149F7B /* MessageType.swift */; }; - B04FA52C1F1F57CF00149F7B /* MessageData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B04FA52B1F1F57CF00149F7B /* MessageData.swift */; }; - B04FA52E1F1F586200149F7B /* MessageBubble.swift in Sources */ = {isa = PBXBuildFile; fileRef = B04FA52D1F1F586200149F7B /* MessageBubble.swift */; }; - B04FA5301F1F58CC00149F7B /* Avatar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B04FA52F1F1F58CC00149F7B /* Avatar.swift */; }; - B04FA5321F1F594400149F7B /* MessagesDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = B04FA5311F1F594400149F7B /* MessagesDataSource.swift */; }; - B04FA5341F1F598700149F7B /* MessagesDisplayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = B04FA5331F1F598700149F7B /* MessagesDisplayDataSource.swift */; }; - BC45179D4196151E0FD7A189 /* Pods_MessageKitTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5ED3F40490956A74E35BFD58 /* Pods_MessageKitTests.framework */; }; - D6AE5064A8D0E2FD15DB2F3F /* Pods_MessageKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03A7B19053F1302354AE9741 /* Pods_MessageKit.framework */; }; + 882D75841DE507320033F95F /* MessagesDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 882D75831DE507320033F95F /* MessagesDataSource.swift */; }; + 888CEBFC1D3FD525005178DE /* MessagesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 888CEBFB1D3FD525005178DE /* MessagesViewController.swift */; }; + 88916B2D1CF0DF2F00469F91 /* MessageKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88916B221CF0DF2F00469F91 /* MessageKit.framework */; }; + 88916B401CF0DF5100469F91 /* MessageKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 88916B3E1CF0DF5100469F91 /* MessageKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88916B451CF0DF5900469F91 /* MessageKitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88916B431CF0DF5900469F91 /* MessageKitTests.swift */; }; + 88916B471CF0DFE600469F91 /* MessageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88916B461CF0DFE600469F91 /* MessageProtocol.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - B011FD671F1D48E700CE0D6A /* PBXContainerItemProxy */ = { + 88916B2E1CF0DF2F00469F91 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = B011FD531F1D48E600CE0D6A /* Project object */; + containerPortal = 88916B191CF0DF2F00469F91 /* Project object */; proxyType = 1; - remoteGlobalIDString = B011FD5B1F1D48E600CE0D6A; + remoteGlobalIDString = 88916B211CF0DF2F00469F91; remoteInfo = MessageKit; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 03A7B19053F1302354AE9741 /* Pods_MessageKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MessageKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 15F571E7B0E9FFD6A34E4E39 /* Pods-MessageKitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MessageKitTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-MessageKitTests/Pods-MessageKitTests.debug.xcconfig"; sourceTree = ""; }; - 37685864038ED9ED95D54A6B /* Pods-MessageKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MessageKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-MessageKit/Pods-MessageKit.release.xcconfig"; sourceTree = ""; }; - 5ED3F40490956A74E35BFD58 /* Pods_MessageKitTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MessageKitTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90AE798D8AF4DF5A08FA0857 /* Pods-MessageKitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MessageKitTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-MessageKitTests/Pods-MessageKitTests.release.xcconfig"; sourceTree = ""; }; - B011FD5C1F1D48E600CE0D6A /* MessageKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MessageKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B011FD5F1F1D48E600CE0D6A /* MessageKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageKit.h; sourceTree = ""; }; - B011FD601F1D48E700CE0D6A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B011FD651F1D48E700CE0D6A /* MessageKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MessageKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - B011FD6A1F1D48E700CE0D6A /* MessageKitTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageKitTests.swift; sourceTree = ""; }; - B011FD6C1F1D48E700CE0D6A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B04FA5231F1F287B00149F7B /* MessagesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessagesViewController.swift; sourceTree = ""; }; - B04FA5251F1F28E000149F7B /* MessagesCollectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessagesCollectionView.swift; sourceTree = ""; }; - B04FA5271F1F298A00149F7B /* Sender.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sender.swift; sourceTree = ""; }; - B04FA5291F1F571F00149F7B /* MessageType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageType.swift; sourceTree = ""; }; - B04FA52B1F1F57CF00149F7B /* MessageData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageData.swift; sourceTree = ""; }; - B04FA52D1F1F586200149F7B /* MessageBubble.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageBubble.swift; sourceTree = ""; }; - B04FA52F1F1F58CC00149F7B /* Avatar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Avatar.swift; sourceTree = ""; }; - B04FA5311F1F594400149F7B /* MessagesDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessagesDataSource.swift; sourceTree = ""; }; - B04FA5331F1F598700149F7B /* MessagesDisplayDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessagesDisplayDataSource.swift; sourceTree = ""; }; - CE5C38D25AA833DD1F0F3CDD /* Pods-MessageKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MessageKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-MessageKit/Pods-MessageKit.debug.xcconfig"; sourceTree = ""; }; + 882D75831DE507320033F95F /* MessagesDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessagesDataSource.swift; sourceTree = ""; }; + 888CEBFB1D3FD525005178DE /* MessagesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessagesViewController.swift; sourceTree = ""; }; + 88916B221CF0DF2F00469F91 /* MessageKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MessageKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 88916B2C1CF0DF2F00469F91 /* MessageKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MessageKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 88916B3D1CF0DF5100469F91 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 88916B3E1CF0DF5100469F91 /* MessageKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageKit.h; sourceTree = ""; }; + 88916B421CF0DF5900469F91 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 88916B431CF0DF5900469F91 /* MessageKitTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageKitTests.swift; sourceTree = ""; }; + 88916B461CF0DFE600469F91 /* MessageProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageProtocol.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B011FD581F1D48E600CE0D6A /* Frameworks */ = { + 88916B1E1CF0DF2F00469F91 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D6AE5064A8D0E2FD15DB2F3F /* Pods_MessageKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B011FD621F1D48E700CE0D6A /* Frameworks */ = { + 88916B291CF0DF2F00469F91 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B011FD661F1D48E700CE0D6A /* MessageKit.framework in Frameworks */, - BC45179D4196151E0FD7A189 /* Pods_MessageKitTests.framework in Frameworks */, + 88916B2D1CF0DF2F00469F91 /* MessageKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 21774BC7B716CD53B997A91A /* Pods */ = { + 88916B181CF0DF2F00469F91 = { isa = PBXGroup; children = ( - CE5C38D25AA833DD1F0F3CDD /* Pods-MessageKit.debug.xcconfig */, - 37685864038ED9ED95D54A6B /* Pods-MessageKit.release.xcconfig */, - 15F571E7B0E9FFD6A34E4E39 /* Pods-MessageKitTests.debug.xcconfig */, - 90AE798D8AF4DF5A08FA0857 /* Pods-MessageKitTests.release.xcconfig */, + 88916B3C1CF0DF5100469F91 /* Sources */, + 88916B411CF0DF5900469F91 /* Tests */, + 88916B231CF0DF2F00469F91 /* Products */, ); - name = Pods; sourceTree = ""; }; - 8AC462B02AB45AF2E88DFCE0 /* Frameworks */ = { + 88916B231CF0DF2F00469F91 /* Products */ = { isa = PBXGroup; children = ( - 03A7B19053F1302354AE9741 /* Pods_MessageKit.framework */, - 5ED3F40490956A74E35BFD58 /* Pods_MessageKitTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - B011FD521F1D48E600CE0D6A = { - isa = PBXGroup; - children = ( - B011FD5E1F1D48E600CE0D6A /* MessageKit */, - B011FD691F1D48E700CE0D6A /* MessageKitTests */, - B011FD5D1F1D48E600CE0D6A /* Products */, - 21774BC7B716CD53B997A91A /* Pods */, - 8AC462B02AB45AF2E88DFCE0 /* Frameworks */, - ); - sourceTree = ""; - }; - B011FD5D1F1D48E600CE0D6A /* Products */ = { - isa = PBXGroup; - children = ( - B011FD5C1F1D48E600CE0D6A /* MessageKit.framework */, - B011FD651F1D48E700CE0D6A /* MessageKitTests.xctest */, + 88916B221CF0DF2F00469F91 /* MessageKit.framework */, + 88916B2C1CF0DF2F00469F91 /* MessageKitTests.xctest */, ); name = Products; sourceTree = ""; }; - B011FD5E1F1D48E600CE0D6A /* MessageKit */ = { + 88916B3C1CF0DF5100469F91 /* Sources */ = { isa = PBXGroup; children = ( - B04FA5231F1F287B00149F7B /* MessagesViewController.swift */, - B04FA5251F1F28E000149F7B /* MessagesCollectionView.swift */, - B04FA5291F1F571F00149F7B /* MessageType.swift */, - B04FA52B1F1F57CF00149F7B /* MessageData.swift */, - B04FA52D1F1F586200149F7B /* MessageBubble.swift */, - B04FA5311F1F594400149F7B /* MessagesDataSource.swift */, - B04FA5331F1F598700149F7B /* MessagesDisplayDataSource.swift */, - B04FA52F1F1F58CC00149F7B /* Avatar.swift */, - B04FA5271F1F298A00149F7B /* Sender.swift */, - B011FD5F1F1D48E600CE0D6A /* MessageKit.h */, - B011FD601F1D48E700CE0D6A /* Info.plist */, + 88916B3D1CF0DF5100469F91 /* Info.plist */, + 88916B3E1CF0DF5100469F91 /* MessageKit.h */, + 88916B461CF0DFE600469F91 /* MessageProtocol.swift */, + 882D75831DE507320033F95F /* MessagesDataSource.swift */, + 888CEBFB1D3FD525005178DE /* MessagesViewController.swift */, ); - path = MessageKit; + path = Sources; sourceTree = ""; }; - B011FD691F1D48E700CE0D6A /* MessageKitTests */ = { + 88916B411CF0DF5900469F91 /* Tests */ = { isa = PBXGroup; children = ( - B011FD6A1F1D48E700CE0D6A /* MessageKitTests.swift */, - B011FD6C1F1D48E700CE0D6A /* Info.plist */, + 88916B421CF0DF5900469F91 /* Info.plist */, + 88916B431CF0DF5900469F91 /* MessageKitTests.swift */, ); - path = MessageKitTests; - sourceTree = ""; + path = Tests; + sourceTree = SOURCE_ROOT; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - B011FD591F1D48E600CE0D6A /* Headers */ = { + 88916B1F1CF0DF2F00469F91 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B011FD6D1F1D48E700CE0D6A /* MessageKit.h in Headers */, + 88916B401CF0DF5100469F91 /* MessageKit.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - B011FD5B1F1D48E600CE0D6A /* MessageKit */ = { + 88916B211CF0DF2F00469F91 /* MessageKit */ = { isa = PBXNativeTarget; - buildConfigurationList = B011FD701F1D48E700CE0D6A /* Build configuration list for PBXNativeTarget "MessageKit" */; + buildConfigurationList = 88916B361CF0DF2F00469F91 /* Build configuration list for PBXNativeTarget "MessageKit" */; buildPhases = ( - 50657C327C29354A89F15E95 /* [CP] Check Pods Manifest.lock */, - B011FD571F1D48E600CE0D6A /* Sources */, - B011FD581F1D48E600CE0D6A /* Frameworks */, - B011FD591F1D48E600CE0D6A /* Headers */, - B011FD5A1F1D48E600CE0D6A /* Resources */, - 358B4AC0BD39D8779CB51726 /* [CP] Copy Pods Resources */, + 88916B1D1CF0DF2F00469F91 /* Sources */, + 88916B1E1CF0DF2F00469F91 /* Frameworks */, + 88916B1F1CF0DF2F00469F91 /* Headers */, + 88916B201CF0DF2F00469F91 /* Resources */, ); buildRules = ( ); @@ -176,78 +124,73 @@ ); name = MessageKit; productName = MessageKit; - productReference = B011FD5C1F1D48E600CE0D6A /* MessageKit.framework */; + productReference = 88916B221CF0DF2F00469F91 /* MessageKit.framework */; productType = "com.apple.product-type.framework"; }; - B011FD641F1D48E700CE0D6A /* MessageKitTests */ = { + 88916B2B1CF0DF2F00469F91 /* MessageKitTests */ = { isa = PBXNativeTarget; - buildConfigurationList = B011FD731F1D48E700CE0D6A /* Build configuration list for PBXNativeTarget "MessageKitTests" */; + buildConfigurationList = 88916B391CF0DF2F00469F91 /* Build configuration list for PBXNativeTarget "MessageKitTests" */; buildPhases = ( - 504AFAE755BAE7332732F276 /* [CP] Check Pods Manifest.lock */, - B011FD611F1D48E700CE0D6A /* Sources */, - B011FD621F1D48E700CE0D6A /* Frameworks */, - B011FD631F1D48E700CE0D6A /* Resources */, - 4A35689F82E911BFAD7F2CBA /* [CP] Embed Pods Frameworks */, - F27300DBC43E309D9688EE4C /* [CP] Copy Pods Resources */, + 88916B281CF0DF2F00469F91 /* Sources */, + 88916B291CF0DF2F00469F91 /* Frameworks */, + 88916B2A1CF0DF2F00469F91 /* Resources */, ); buildRules = ( ); dependencies = ( - B011FD681F1D48E700CE0D6A /* PBXTargetDependency */, + 88916B2F1CF0DF2F00469F91 /* PBXTargetDependency */, ); name = MessageKitTests; productName = MessageKitTests; - productReference = B011FD651F1D48E700CE0D6A /* MessageKitTests.xctest */; + productReference = 88916B2C1CF0DF2F00469F91 /* MessageKitTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - B011FD531F1D48E600CE0D6A /* Project object */ = { + 88916B191CF0DF2F00469F91 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0830; - ORGANIZATIONNAME = MessageKit; + LastSwiftUpdateCheck = 0730; + LastUpgradeCheck = 0810; + ORGANIZATIONNAME = "Hexed Bits"; TargetAttributes = { - B011FD5B1F1D48E600CE0D6A = { - CreatedOnToolsVersion = 8.3.2; - LastSwiftMigration = 0830; - ProvisioningStyle = Automatic; + 88916B211CF0DF2F00469F91 = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 0800; }; - B011FD641F1D48E700CE0D6A = { - CreatedOnToolsVersion = 8.3.2; - ProvisioningStyle = Automatic; + 88916B2B1CF0DF2F00469F91 = { + CreatedOnToolsVersion = 7.3.1; }; }; }; - buildConfigurationList = B011FD561F1D48E600CE0D6A /* Build configuration list for PBXProject "MessageKit" */; + buildConfigurationList = 88916B1C1CF0DF2F00469F91 /* Build configuration list for PBXProject "MessageKit" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = B011FD521F1D48E600CE0D6A; - productRefGroup = B011FD5D1F1D48E600CE0D6A /* Products */; + mainGroup = 88916B181CF0DF2F00469F91; + productRefGroup = 88916B231CF0DF2F00469F91 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - B011FD5B1F1D48E600CE0D6A /* MessageKit */, - B011FD641F1D48E700CE0D6A /* MessageKitTests */, + 88916B211CF0DF2F00469F91 /* MessageKit */, + 88916B2B1CF0DF2F00469F91 /* MessageKitTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - B011FD5A1F1D48E600CE0D6A /* Resources */ = { + 88916B201CF0DF2F00469F91 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B011FD631F1D48E700CE0D6A /* Resources */ = { + 88916B2A1CF0DF2F00469F91 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -256,126 +199,41 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 358B4AC0BD39D8779CB51726 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-MessageKit/Pods-MessageKit-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 4A35689F82E911BFAD7F2CBA /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-MessageKitTests/Pods-MessageKitTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 504AFAE755BAE7332732F276 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - 50657C327C29354A89F15E95 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - F27300DBC43E309D9688EE4C /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-MessageKitTests/Pods-MessageKitTests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ - B011FD571F1D48E600CE0D6A /* Sources */ = { + 88916B1D1CF0DF2F00469F91 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B04FA52C1F1F57CF00149F7B /* MessageData.swift in Sources */, - B04FA52E1F1F586200149F7B /* MessageBubble.swift in Sources */, - B04FA5261F1F28E000149F7B /* MessagesCollectionView.swift in Sources */, - B04FA5281F1F298A00149F7B /* Sender.swift in Sources */, - B04FA5341F1F598700149F7B /* MessagesDisplayDataSource.swift in Sources */, - B04FA5301F1F58CC00149F7B /* Avatar.swift in Sources */, - B04FA5241F1F287B00149F7B /* MessagesViewController.swift in Sources */, - B04FA5321F1F594400149F7B /* MessagesDataSource.swift in Sources */, - B04FA52A1F1F571F00149F7B /* MessageType.swift in Sources */, + 882D75841DE507320033F95F /* MessagesDataSource.swift in Sources */, + 888CEBFC1D3FD525005178DE /* MessagesViewController.swift in Sources */, + 88916B471CF0DFE600469F91 /* MessageProtocol.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B011FD611F1D48E700CE0D6A /* Sources */ = { + 88916B281CF0DF2F00469F91 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B011FD6B1F1D48E700CE0D6A /* MessageKitTests.swift in Sources */, + 88916B451CF0DF5900469F91 /* MessageKitTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - B011FD681F1D48E700CE0D6A /* PBXTargetDependency */ = { + 88916B2F1CF0DF2F00469F91 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B011FD5B1F1D48E600CE0D6A /* MessageKit */; - targetProxy = B011FD671F1D48E700CE0D6A /* PBXContainerItemProxy */; + target = 88916B211CF0DF2F00469F91 /* MessageKit */; + targetProxy = 88916B2E1CF0DF2F00469F91 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - B011FD6E1F1D48E700CE0D6A /* Debug */ = { + 88916B341CF0DF2F00469F91 /* 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++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -383,7 +241,6 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = 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; @@ -412,24 +269,23 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - B011FD6F1F1D48E700CE0D6A /* Release */ = { + 88916B351CF0DF2F00469F91 /* 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++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -437,7 +293,6 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = 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; @@ -460,10 +315,10 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -471,20 +326,20 @@ }; name = Release; }; - B011FD711F1D48E700CE0D6A /* Debug */ = { + 88916B371CF0DF2F00469F91 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CE5C38D25AA833DD1F0F3CDD /* Pods-MessageKit.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = MessageKit/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = MessageKit.MessageKit; + PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.MessageKit; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -492,83 +347,79 @@ }; name = Debug; }; - B011FD721F1D48E700CE0D6A /* Release */ = { + 88916B381CF0DF2F00469F91 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 37685864038ED9ED95D54A6B /* Pods-MessageKit.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = MessageKit/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = MessageKit.MessageKit; + PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.MessageKit; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 3.0; }; name = Release; }; - B011FD741F1D48E700CE0D6A /* Debug */ = { + 88916B3A1CF0DF2F00469F91 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 15F571E7B0E9FFD6A34E4E39 /* Pods-MessageKitTests.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - INFOPLIST_FILE = MessageKitTests/Info.plist; + INFOPLIST_FILE = Tests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = MessageKit.MessageKitTests; + PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.MessageKitTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; }; name = Debug; }; - B011FD751F1D48E700CE0D6A /* Release */ = { + 88916B3B1CF0DF2F00469F91 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 90AE798D8AF4DF5A08FA0857 /* Pods-MessageKitTests.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - INFOPLIST_FILE = MessageKitTests/Info.plist; + INFOPLIST_FILE = Tests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = MessageKit.MessageKitTests; + PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.MessageKitTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B011FD561F1D48E600CE0D6A /* Build configuration list for PBXProject "MessageKit" */ = { + 88916B1C1CF0DF2F00469F91 /* Build configuration list for PBXProject "MessageKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - B011FD6E1F1D48E700CE0D6A /* Debug */, - B011FD6F1F1D48E700CE0D6A /* Release */, + 88916B341CF0DF2F00469F91 /* Debug */, + 88916B351CF0DF2F00469F91 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B011FD701F1D48E700CE0D6A /* Build configuration list for PBXNativeTarget "MessageKit" */ = { + 88916B361CF0DF2F00469F91 /* Build configuration list for PBXNativeTarget "MessageKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - B011FD711F1D48E700CE0D6A /* Debug */, - B011FD721F1D48E700CE0D6A /* Release */, + 88916B371CF0DF2F00469F91 /* Debug */, + 88916B381CF0DF2F00469F91 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B011FD731F1D48E700CE0D6A /* Build configuration list for PBXNativeTarget "MessageKitTests" */ = { + 88916B391CF0DF2F00469F91 /* Build configuration list for PBXNativeTarget "MessageKitTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - B011FD741F1D48E700CE0D6A /* Debug */, - B011FD751F1D48E700CE0D6A /* Release */, + 88916B3A1CF0DF2F00469F91 /* Debug */, + 88916B3B1CF0DF2F00469F91 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = B011FD531F1D48E600CE0D6A /* Project object */; + rootObject = 88916B191CF0DF2F00469F91 /* Project object */; } diff --git a/MessageKit.xcodeproj/project.xcworkspace/xcuserdata/steven.xcuserdatad/UserInterfaceState.xcuserstate b/MessageKit.xcodeproj/project.xcworkspace/xcuserdata/steven.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 5aba0a39..00000000 Binary files a/MessageKit.xcodeproj/project.xcworkspace/xcuserdata/steven.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/MessageKit.xcodeproj/xcuserdata/omar.xcuserdatad/xcschemes/MessageKit.xcscheme b/MessageKit.xcodeproj/xcshareddata/xcschemes/MessageKit.xcscheme similarity index 88% rename from MessageKit.xcodeproj/xcuserdata/omar.xcuserdatad/xcschemes/MessageKit.xcscheme rename to MessageKit.xcodeproj/xcshareddata/xcschemes/MessageKit.xcscheme index 28794fa1..a3344571 100644 --- a/MessageKit.xcodeproj/xcuserdata/omar.xcuserdatad/xcschemes/MessageKit.xcscheme +++ b/MessageKit.xcodeproj/xcshareddata/xcschemes/MessageKit.xcscheme @@ -1,6 +1,6 @@ @@ -26,13 +26,14 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES" + codeCoverageEnabled = "YES"> @@ -42,7 +43,7 @@ @@ -64,7 +65,7 @@ @@ -82,7 +83,7 @@ diff --git a/MessageKit.xcodeproj/xcuserdata/omar.xcuserdatad/xcschemes/xcschememanagement.plist b/MessageKit.xcodeproj/xcuserdata/omar.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 665fbbde..00000000 --- a/MessageKit.xcodeproj/xcuserdata/omar.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - SchemeUserState - - MessageKit.xcscheme - - orderHint - 2 - - - SuppressBuildableAutocreation - - B011FD5B1F1D48E600CE0D6A - - primary - - - B011FD641F1D48E700CE0D6A - - primary - - - - - diff --git a/MessageKit.xcodeproj/xcuserdata/steven.xcuserdatad/xcschemes/xcschememanagement.plist b/MessageKit.xcodeproj/xcuserdata/steven.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 17146323..00000000 --- a/MessageKit.xcodeproj/xcuserdata/steven.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - SchemeUserState - - MessageKit.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - B011FD5B1F1D48E600CE0D6A - - primary - - - B011FD641F1D48E700CE0D6A - - primary - - - - - diff --git a/MessageKit/Avatar.swift b/MessageKit/Avatar.swift deleted file mode 100644 index 0af348ee..00000000 --- a/MessageKit/Avatar.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// Avatar.swift -// MessageKit -// -// Created by Steven on 7/19/17. -// Copyright © 2017 MessageKit. All rights reserved. -// - -import Foundation - -// MARK: - Avatar - -public struct Avatar { - - // MARK: - Properties - - public let image: UIImage? - - public let highlightedImage: UIImage? - - public let placeholderImage: UIImage - - // MARK: - Initializers - - public init(image: UIImage? = nil, highlightedImage: UIImage? = nil, placeholderImage: UIImage) { - self.image = image - self.highlightedImage = highlightedImage - self.placeholderImage = placeholderImage - } - - // MARK: - Methods - - public func image(highlighted: Bool) -> UIImage { - return (highlighted ? highlightedImage : image) ?? placeholderImage - } -} diff --git a/MessageKit/MessageBubble.swift b/MessageKit/MessageBubble.swift deleted file mode 100644 index 9e73da4f..00000000 --- a/MessageKit/MessageBubble.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// MessageBubble.swift -// MessageKit -// -// Created by Steven on 7/19/17. -// Copyright © 2017 MessageKit. All rights reserved. -// - -import UIKit - -// MARK: - MessageBubble - -public struct MessageBubble { - - // MARK: - Properties - - public let image: UIImage - - public let highlightedImage: UIImage - - // MARK: - Methods - - public func image(highlighted: Bool) -> UIImage { - return highlighted ? image : highlightedImage - } -} diff --git a/MessageKit/MessageData.swift b/MessageKit/MessageData.swift deleted file mode 100644 index edcfdc68..00000000 --- a/MessageKit/MessageData.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// MessageData.swift -// MessageKit -// -// Created by Steven on 7/19/17. -// Copyright © 2017 MessageKit. All rights reserved. -// - -import Foundation -import class CoreLocation.CLLocation - -// MARK: - MessageData - -public enum MessageData { - - case text(String) - - case attributedText(NSAttributedString) - - case audio(Data) - - case location(CLLocation) - - case photo(UIImage) - - case video(file: NSURL, thumbnail: UIImage) - - case system(String) - - case custom(Any) - - case placeholder -} diff --git a/MessageKit/MessageKit.h b/MessageKit/MessageKit.h deleted file mode 100644 index ed93fa12..00000000 --- a/MessageKit/MessageKit.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// MessageKit.h -// MessageKit -// -// Created by Steven on 7/17/17. -// Copyright © 2017 MessageKit. All rights reserved. -// - -#import - -//! Project version number for MessageKit. -FOUNDATION_EXPORT double MessageKitVersionNumber; - -//! Project version string for MessageKit. -FOUNDATION_EXPORT const unsigned char MessageKitVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/MessageKit/MessageType.swift b/MessageKit/MessageType.swift deleted file mode 100644 index b5d68eba..00000000 --- a/MessageKit/MessageType.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// MessageType.swift -// MessageKit -// -// Created by Steven on 7/19/17. -// Copyright © 2017 MessageKit. All rights reserved. -// - -import Foundation - -// MARK: - MessageType - -public protocol MessageType { - - var sender: Sender { get } - - var messageId: String { get } - - var sentDate: Date { get } - - var messageData: MessageData { get } - -} diff --git a/MessageKit/MessagesCollectionView.swift b/MessageKit/MessagesCollectionView.swift deleted file mode 100644 index 1a704631..00000000 --- a/MessageKit/MessagesCollectionView.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// MessagesCollectionView.swift -// MessageKit -// -// Created by Steven on 7/19/17. -// Copyright © 2017 MessageKit. All rights reserved. -// - -import UIKit - -// MARK: - MessagesCollectionView - -open class MessagesCollectionView: UICollectionView { - - /* - // Only override draw() if you perform custom drawing. - // An empty implementation adversely affects performance during animation. - override func draw(_ rect: CGRect) { - // Drawing code - } - */ - -} diff --git a/MessageKit/MessagesDataSource.swift b/MessageKit/MessagesDataSource.swift deleted file mode 100644 index 65694dcd..00000000 --- a/MessageKit/MessagesDataSource.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// MessagesDataSource.swift -// MessageKit -// -// Created by Steven on 7/19/17. -// Copyright © 2017 MessageKit. All rights reserved. -// - -import Foundation - -// MARK: - MessagesDataSource - -public protocol MessagesDataSource { - - var currentSender: Sender { get } - - func messageForItem(at indexPath: IndexPath, in collectionView: UICollectionView) -> MessageType -} - -// MARK: - MessagesDataSource Default - -extension MessagesDataSource { - - func isFromCurrentSender(message: MessageType) -> Bool { - return message.sender == currentSender - } -} diff --git a/MessageKit/MessagesDisplayDataSource.swift b/MessageKit/MessagesDisplayDataSource.swift deleted file mode 100644 index e858405d..00000000 --- a/MessageKit/MessagesDisplayDataSource.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// MessagesDisplayDataSource.swift -// MessageKit -// -// Created by Steven on 7/19/17. -// Copyright © 2017 MessageKit. All rights reserved. -// - -import Foundation - -// MARK: - MessagesDisplayDataSource - -public protocol MessagesDisplayDataSource { - - func bubbleForMessage(_ message: MessageType, at indexPath: IndexPath, in collectionView: UICollectionView) -> MessageBubble - - func avatarForMessage(_ message: MessageType, at indexPath: IndexPath, in collectionView: UICollectionView) -> Avatar -} diff --git a/MessageKit/MessagesViewController.swift b/MessageKit/MessagesViewController.swift deleted file mode 100644 index 3e49a63d..00000000 --- a/MessageKit/MessagesViewController.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// MessagesViewController.swift -// MessageKit -// -// Created by Steven on 7/19/17. -// Copyright © 2017 MessageKit. All rights reserved. -// - -import UIKit - -// MARK: - MessagesViewController - -open class MessagesViewController: UIViewController { - - // MARK: - View Life Cycle - - override open func viewDidLoad() { - super.viewDidLoad() - } - -} - diff --git a/MessageKit/Sender.swift b/MessageKit/Sender.swift deleted file mode 100644 index 01c62aa8..00000000 --- a/MessageKit/Sender.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// Sender.swift -// MessageKit -// -// Created by Steven on 7/19/17. -// Copyright © 2017 MessageKit. All rights reserved. -// - -import Foundation - -// MARK: - Sender - -public struct Sender { - - // MARK: - Properties - - let id: String - - let displayName: String - -} - -// MARK: - Equatable Conformance - -extension Sender: Equatable { - - static public func ==(lhs: Sender, rhs: Sender) -> Bool { - return lhs.id == rhs.id - } - -} diff --git a/MessageKitTests/MessageKitTests.swift b/MessageKitTests/MessageKitTests.swift deleted file mode 100644 index 8a05d70f..00000000 --- a/MessageKitTests/MessageKitTests.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// MessageKitTests.swift -// MessageKitTests -// -// Created by Steven on 7/17/17. -// Copyright © 2017 MessageKit. All rights reserved. -// - -import XCTest -@testable import MessageKit - -class MessageKitTests: XCTestCase { - - override func setUp() { - super.setUp() - // Put setup code here. This method is called before the invocation of each test method in the class. - } - - override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. - super.tearDown() - } - - func testExample() { - // This is an example of a functional test case. - // Use XCTAssert and related functions to verify your tests produce the correct results. - } - - func testPerformanceExample() { - // 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/README.md b/README.md index 11cd012f..d8a6ee12 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # MessageKit -This project is intended to be a rewrite of the recently deprecated [JSQMessagesViewController](https://github.com/jessesquires/JSQMessagesViewController) in Swift. +[![Build Status](https://travis-ci.org/MessageKit/MessageKit.svg)](https://travis-ci.org/MessageKit/MessageKit) [![codecov](https://codecov.io/gh/MessageKit/MessageKit/branch/master/graph/badge.svg)](https://codecov.io/gh/MessageKit/MessageKit) + +**In-progress**, this project is intended to be a Swift rewrite of the recently deprecated [JSQMessagesViewController](https://github.com/jessesquires/JSQMessagesViewController) in Swift. ## Want to contribute? diff --git a/MessageKit/Info.plist b/Sources/Info.plist similarity index 90% rename from MessageKit/Info.plist rename to Sources/Info.plist index 259d58ea..60b9c008 100644 --- a/MessageKit/Info.plist +++ b/Sources/Info.plist @@ -15,7 +15,9 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.0.1 + 1.0.0 + CFBundleSignature + ???? CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/Sources/MessageKit.h b/Sources/MessageKit.h new file mode 100644 index 00000000..57dfdc11 --- /dev/null +++ b/Sources/MessageKit.h @@ -0,0 +1,23 @@ +// +// Created by Jesse Squires +// http://www.jessesquires.com +// +// +// Documentation +// http://messagekit.github.io +// +// +// GitHub +// https://github.com/MessageKit/MessageKit +// +// +// License +// Copyright (c) 2016-present Jesse Squires +// Released under an MIT license: http://opensource.org/licenses/MIT +// + +#import + +FOUNDATION_EXPORT double MessageKitVersionNumber; + +FOUNDATION_EXPORT const unsigned char MessageKitVersionString[]; diff --git a/Sources/MessageProtocol.swift b/Sources/MessageProtocol.swift new file mode 100644 index 00000000..fa35a158 --- /dev/null +++ b/Sources/MessageProtocol.swift @@ -0,0 +1,69 @@ +// +// Created by Jesse Squires +// http://www.jessesquires.com +// +// +// Documentation +// http://messagekit.github.io +// +// +// GitHub +// https://github.com/MessageKit/MessageKit +// +// +// License +// Copyright (c) 2016-present Jesse Squires +// Released under an MIT license: http://opensource.org/licenses/MIT +// + +import Foundation +import CoreLocation + + +public struct Sender { + + public let id: String + + public let displayName: String +} + + +extension Sender: Equatable { + static public func ==(left: Sender, right: Sender) -> Bool { + return left.id == right.id + } +} + + +public enum MessageData { + + case text(String) + + case attributedText(NSAttributedString) + + case audio(Data) + + case location(CLLocation) + + case photo(UIImage) + + case video(file: NSURL, thumbnail: UIImage) + + case system(String) + + case custom(Any) + + case placeholder +} + + +public protocol MessageType { + + var sender: Sender { get } + + var messageId: String { get } + + var sentDate: Date { get } + + var data: MessageData { get } +} diff --git a/Sources/MessagesDataSource.swift b/Sources/MessagesDataSource.swift new file mode 100644 index 00000000..2ac2fe71 --- /dev/null +++ b/Sources/MessagesDataSource.swift @@ -0,0 +1,84 @@ +// +// Created by Jesse Squires +// http://www.jessesquires.com +// +// +// Documentation +// http://messagekit.github.io +// +// +// GitHub +// https://github.com/MessageKit/MessageKit +// +// +// License +// Copyright (c) 2016-present Jesse Squires +// Released under an MIT license: http://opensource.org/licenses/MIT +// + +import Foundation +import UIKit + + +public struct MessageBubble { + + public let image: UIImage + + public let highlightedImage: UIImage + + public func image(highlighted: Bool) -> UIImage { + return highlighted ? image : highlightedImage + } +} + + +public struct Avatar { + + public let image: UIImage? + + public let highlightedImage: UIImage? + + public let placeholderImage: UIImage + + public init(image: UIImage? = nil, highlightedImage: UIImage? = nil, placeholderImage: UIImage) { + self.image = image + self.highlightedImage = highlightedImage + self.placeholderImage = placeholderImage + } + + public func image(highlighted: Bool) -> UIImage { + guard let image = image else { + return placeholderImage + } + + guard let highlightedImage = highlightedImage else { + return image + } + + return highlighted ? image : highlightedImage + } +} + + +public protocol MessagesDataSource { + + var currentSender: Sender { get } + + func messageForItem(at indexPath: IndexPath, in collectionView: UICollectionView) -> MessageType +} + + +extension MessagesDataSource { + + func isFromCurrentSender(message: MessageType) -> Bool { + return message.sender == currentSender + } +} + + +public protocol MessagesDisplayDataSource { + + func bubbleForMessage(_ message: MessageType, at indexPath: IndexPath, in collectionView: UICollectionView) -> MessageBubble + + func avatarForMessage(_ message: MessageType, at indexPath: IndexPath, in collectionView: UICollectionView) -> Avatar +} diff --git a/Sources/MessagesViewController.swift b/Sources/MessagesViewController.swift new file mode 100644 index 00000000..2326ce5b --- /dev/null +++ b/Sources/MessagesViewController.swift @@ -0,0 +1,28 @@ +// +// Created by Jesse Squires +// http://www.jessesquires.com +// +// +// Documentation +// http://messagekit.github.io +// +// +// GitHub +// https://github.com/MessageKit/MessageKit +// +// +// License +// Copyright (c) 2016-present Jesse Squires +// Released under an MIT license: http://opensource.org/licenses/MIT +// + +import UIKit +import Foundation + + +public final class MessagesViewController: UICollectionViewController { + + override public func viewDidLoad() { + super.viewDidLoad() + } +} diff --git a/Tests/Info.plist b/Tests/Info.plist new file mode 100644 index 00000000..ba72822e --- /dev/null +++ b/Tests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/Tests/MessageKitTests.swift b/Tests/MessageKitTests.swift new file mode 100644 index 00000000..babf355f --- /dev/null +++ b/Tests/MessageKitTests.swift @@ -0,0 +1,38 @@ +// +// Created by Jesse Squires +// http://www.jessesquires.com +// +// +// Documentation +// http://messagekit.github.io +// +// +// GitHub +// https://github.com/MessageKit/MessageKit +// +// +// License +// Copyright (c) 2016-present Jesse Squires +// Released under an MIT license: http://opensource.org/licenses/MIT +// + +import XCTest +@testable import MessageKit + + +final class MessageKitTests: XCTestCase { + + override func setUp() { + super.setUp() + } + + override func tearDown() { + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + +}