소스 검색

replace InputBarAccessoryView pod with submodule, update from 4.3.1 to 5.1.0

cyberta 3 년 전
부모
커밋
01b8585c98
72개의 변경된 파일2883개의 추가작업 그리고 2352개의 파일을 삭제
  1. 3 0
      .gitmodules
  2. 1 1
      Podfile
  3. 1 7
      Podfile.lock
  4. 0 22
      Pods/InputBarAccessoryView/LICENSE
  5. 0 140
      Pods/InputBarAccessoryView/README.md
  6. 1 7
      Pods/Manifest.lock
  7. 1860 1957
      Pods/Pods.xcodeproj/project.pbxproj
  8. 0 26
      Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView-Info.plist
  9. 0 5
      Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView-dummy.m
  10. 0 12
      Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView-prefix.pch
  11. 0 16
      Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView-umbrella.h
  12. 0 14
      Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView.debug.xcconfig
  13. 0 6
      Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView.modulemap
  14. 0 14
      Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView.release.xcconfig
  15. 0 11
      Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView.xcconfig
  16. 0 26
      Pods/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios-acknowledgements.markdown
  17. 0 32
      Pods/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios-acknowledgements.plist
  18. 0 2
      Pods/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios-frameworks.sh
  19. 4 4
      Pods/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios.debug.xcconfig
  20. 4 4
      Pods/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios.release.xcconfig
  21. 3 3
      Pods/Target Support Files/Pods-deltachat-iosTests/Pods-deltachat-iosTests.debug.xcconfig
  22. 3 3
      Pods/Target Support Files/Pods-deltachat-iosTests/Pods-deltachat-iosTests.release.xcconfig
  23. 287 4
      deltachat-ios.xcodeproj/project.pbxproj
  24. 1 1
      deltachat-ios/Chat/ChatViewController.swift
  25. 1 1
      deltachat-ios/Chat/Views/ChatContactRequestBar.swift
  26. 1 1
      deltachat-ios/Chat/Views/ChatEditingBar.swift
  27. 1 1
      deltachat-ios/Chat/Views/ChatInputBar.swift
  28. 2 1
      deltachat-ios/Chat/Views/ChatInputTextView.swift
  29. 1 1
      deltachat-ios/Chat/Views/ChatSearchAccessoryBar.swift
  30. 1 1
      deltachat-ios/Chat/Views/ChatTableView.swift
  31. 1 1
      deltachat-ios/Chat/Views/DraftArea.swift
  32. 1 1
      deltachat-ios/Chat/Views/QuotePreview.swift
  33. 1 0
      deltachat-ios/InputBarAccessoryView
  34. 0 0
      deltachat-ios/View/InputBarAccessoryView/Controls/InputBarButtonItem.swift
  35. 0 0
      deltachat-ios/View/InputBarAccessoryView/Controls/InputBarSendButton.swift
  36. 0 0
      deltachat-ios/View/InputBarAccessoryView/Extensions/NSMutableAttributedString+Extensions.swift
  37. 0 2
      deltachat-ios/View/InputBarAccessoryView/Extensions/NSNotification+Extensions.swift
  38. 0 0
      deltachat-ios/View/InputBarAccessoryView/Extensions/String+Extensions.swift
  39. 4 4
      deltachat-ios/View/InputBarAccessoryView/Extensions/UITextView+Extensions.swift
  40. 0 0
      deltachat-ios/View/InputBarAccessoryView/Extensions/UIView+AutoLayout.swift
  41. 3 3
      deltachat-ios/View/InputBarAccessoryView/InputBarAccessoryView.swift
  42. 354 0
      deltachat-ios/View/InputBarAccessoryView/InputBarButtonItem.swift
  43. 96 0
      deltachat-ios/View/InputBarAccessoryView/InputBarSendButton.swift
  44. 0 0
      deltachat-ios/View/InputBarAccessoryView/KeyboardManager/KeyboardEvent.swift
  45. 3 1
      deltachat-ios/View/InputBarAccessoryView/KeyboardManager/KeyboardManager.swift
  46. 0 0
      deltachat-ios/View/InputBarAccessoryView/KeyboardManager/KeyboardNotification.swift
  47. 0 0
      deltachat-ios/View/InputBarAccessoryView/Models/HorizontalEdgeInsets.swift.swift
  48. 4 8
      deltachat-ios/View/InputBarAccessoryView/Models/NSConstraintLayoutSet.swift
  49. 4 4
      deltachat-ios/View/InputBarAccessoryView/Plugins/AttachmentManager/AttachmentManager.swift
  50. 0 0
      deltachat-ios/View/InputBarAccessoryView/Plugins/AttachmentManager/Protocols/AttachmentManagerDataSource.swift
  51. 0 0
      deltachat-ios/View/InputBarAccessoryView/Plugins/AttachmentManager/Protocols/AttachmentManagerDelegate.swift
  52. 0 0
      deltachat-ios/View/InputBarAccessoryView/Plugins/AttachmentManager/Views/AttachmentCell.swift
  53. 0 0
      deltachat-ios/View/InputBarAccessoryView/Plugins/AttachmentManager/Views/AttachmentsView.swift
  54. 0 0
      deltachat-ios/View/InputBarAccessoryView/Plugins/AttachmentManager/Views/ImageAttachmentCell.swift
  55. 5 2
      deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/AutocompleteManager.swift
  56. 0 0
      deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/Models/AutocompleteCompletion.swift
  57. 0 0
      deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/Models/AutocompleteSession.swift
  58. 0 0
      deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/Protocols/AutocompleteManagerDataSource.swift
  59. 0 0
      deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/Protocols/AutocompleteManagerDelegate.swift
  60. 2 1
      deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/Views/AutocompleteCell.swift
  61. 0 0
      deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/Views/AutocompleteTableView.swift
  62. 0 0
      deltachat-ios/View/InputBarAccessoryView/Protocols/InputBarAccessoryViewDelegate.swift
  63. 0 0
      deltachat-ios/View/InputBarAccessoryView/Protocols/InputItem.swift
  64. 0 0
      deltachat-ios/View/InputBarAccessoryView/Protocols/InputPlugin.swift
  65. 185 0
      deltachat-ios/View/InputBarAccessoryView/RxInputBarAccessoryView/RxInputBarAccessoryView.swift
  66. 24 0
      deltachat-ios/View/InputBarAccessoryView/Supporting Files/Info.plist
  67. 0 0
      deltachat-ios/View/InputBarAccessoryView/Supporting Files/InputBarAccessoryView+Availability.swift
  68. 19 0
      deltachat-ios/View/InputBarAccessoryView/Supporting Files/InputBarAccessoryView-Bridging-Header.h
  69. 0 0
      deltachat-ios/View/InputBarAccessoryView/ViewControllers/InputBarViewController.swift
  70. 0 0
      deltachat-ios/View/InputBarAccessoryView/Views/InputStackView.swift
  71. 2 2
      deltachat-ios/View/InputBarAccessoryView/Views/InputTextView.swift
  72. 0 0
      deltachat-ios/View/InputBarAccessoryView/Views/SeparatorLine.swift

+ 3 - 0
.gitmodules

@@ -1,3 +1,6 @@
 [submodule "deltachat-ios/libraries/deltachat-core-rust"]
 	path = deltachat-ios/libraries/deltachat-core-rust
 	url = https://github.com/deltachat/deltachat-core-rust.git
+[submodule "deltachat-ios/InputBarAccessoryView"]
+	path = deltachat-ios/InputBarAccessoryView
+	url = https://github.com/nathantannar4/InputBarAccessoryView.git

+ 1 - 1
Podfile

@@ -12,7 +12,7 @@ target 'deltachat-ios' do
   pod 'ReachabilitySwift'
   pod 'SwiftyBeaver'
   pod 'DBDebugToolkit'
-  pod 'InputBarAccessoryView'
+  #pod 'InputBarAccessoryView'
   pod 'SCSiriWaveformView'
   pod 'SDWebImage', '~> 5.9.1'
   pod 'SDWebImageWebPCoder'

+ 1 - 7
Podfile.lock

@@ -3,9 +3,6 @@ PODS:
     - CocoaLumberjack/Core (= 3.7.2)
   - CocoaLumberjack/Core (3.7.2)
   - DBDebugToolkit (0.6.0)
-  - InputBarAccessoryView (4.3.1):
-    - InputBarAccessoryView/Core (= 4.3.1)
-  - InputBarAccessoryView/Core (4.3.1)
   - libwebp (1.2.0):
     - libwebp/demux (= 1.2.0)
     - libwebp/mux (= 1.2.0)
@@ -34,7 +31,6 @@ PODS:
 
 DEPENDENCIES:
   - DBDebugToolkit
-  - InputBarAccessoryView
   - ReachabilitySwift
   - SCSiriWaveformView
   - SDWebImage (~> 5.9.1)
@@ -49,7 +45,6 @@ SPEC REPOS:
   trunk:
     - CocoaLumberjack
     - DBDebugToolkit
-    - InputBarAccessoryView
     - libwebp
     - ReachabilitySwift
     - SCSiriWaveformView
@@ -73,7 +68,6 @@ CHECKOUT OPTIONS:
 SPEC CHECKSUMS:
   CocoaLumberjack: b7e05132ff94f6ae4dfa9d5bce9141893a21d9da
   DBDebugToolkit: 03eb3483da4daf03b853b83ade5a8da9c8b7aff4
-  InputBarAccessoryView: 58a348be7ea2736c7eec60e5c315511c2dbb39fd
   libwebp: e90b9c01d99205d03b6bb8f2c8c415e5a4ef66f0
   ReachabilitySwift: 4032e2f59586e11e3b0ebe15b167abdd587a388b
   SCSiriWaveformView: 15b9dd6f94c7536e2032b34a35c6ff74d38c7411
@@ -85,6 +79,6 @@ SPEC CHECKSUMS:
   SwiftLint: 99f82d07b837b942dd563c668de129a03fc3fb52
   SwiftyBeaver: 576177b2c5c94b3aedd5993914e91271a0524e88
 
-PODFILE CHECKSUM: 632fce258414c6c6231891ec0ba5fb604075674b
+PODFILE CHECKSUM: 97bc315677e285dd2701a1aa743ea4d871fac3bc
 
 COCOAPODS: 1.11.2

+ 0 - 22
Pods/InputBarAccessoryView/LICENSE

@@ -1,22 +0,0 @@
-
-The MIT License (MIT)
-
-Copyright (c) Nathan Tannar <nathantannar4@gmail.com> 2017-2019
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.

+ 0 - 140
Pods/InputBarAccessoryView/README.md

@@ -1,140 +0,0 @@
-[![Image](./Screenshots/Preview.gif)]()
-
-# InputBarAccessoryView
-
-### Features
-
-- [x] Autocomplete text with @mention, #hashtag or any other prefix 
-- [x] A self-sizing `UITextView` with an optional fixed height (can be replaced with any other view)
-- [x] Image paste support   
-- [x] Autocomplete attributed text highlighting
-- [x] Reactive components that respond to given events
-- [x] Top/Bottom/Left/Right `InputStackView`s that act as toolbars to place buttons
-- [x] `RxSwift`/`RxCocoa` Support with `RxExtensions` Cocoapod subspec
-- [x] Drop in attachment view for file/photo management
-- [x] Plugin support for your own `InputPlugin`s
-- [x] Compatible with all iPhones and iPads
-- [x] RTL Support
-
-### Installation via CocoaPods
-
-```ruby
-# Swift 5.0
-pod 'InputBarAccessoryView'
-# Swift 4.2
-pod 'InputBarAccessoryView', '4.2.2'
-```
-
-### Installation via Carthage
-
-```ruby
-# Swift 5.0
-github "nathantannar4/InputBarAccessoryView"
-# Swift 4.2
-github "nathantannar4/InputBarAccessoryView" "4.2.2"
-```
-
-### Requirements
-
-iOS 9.0+
-Swift 5.0
-
-> The latest Swift 4.2 release is v4.2.2 
-
-### Documentation
-
-[Getting Started](./GETTING_STARTED.md)
-
-> See the Example project to see how you can make the iMessage, Slack, Facebook and GitHawk input bars!
-
-### Example Usage
-
-<img src="https://raw.githubusercontent.com/nathantannar4/InputBarAccessoryView/master/Screenshots/ScreenshotA.png" width="242" height="432"> <img src="https://raw.githubusercontent.com/nathantannar4/InputBarAccessoryView/master/Screenshots/ScreenshotB.png" width="242" height="432"> <img src="https://raw.githubusercontent.com/nathantannar4/InputBarAccessoryView/master/Screenshots/ScreenshotC.png" width="242" height="432"> <img src="https://raw.githubusercontent.com/nathantannar4/InputBarAccessoryView/master/Screenshots/ScreenshotD.png" width="242" height="432"> <img src="https://raw.githubusercontent.com/nathantannar4/InputBarAccessoryView/master/Screenshots/ScreenshotE.png" width="242" height="432"> <img src="https://raw.githubusercontent.com/nathantannar4/InputBarAccessoryView/master/Screenshots/ScreenshotF.png" width="242" height="432">
-
-### Featured In
-
-Add your app to the list of apps using this library and make a pull request.
-
-- [MessageKit](https://github.com/MessageKit/MessageKit) *(renamed to MessageInputBar)*
-<p>
-  <img src="https://raw.githubusercontent.com/MessageKit/MessageKit/master/Assets/mklogo.png" title="MessageKit Logo" height="50">
-</p>
-
-- [MessageViewController](https://github.com/GitHawkApp/MessageViewController) *(Autocomplete Highlighting Algorithm)*
-<p>
-  <img src="https://avatars3.githubusercontent.com/u/32285710?s=200&v=4" title="GitHawk Logo" height="50">
-</p>
-
-### See Also
-
-iMessage style [TypingIndicator](https://github.com/nathantannar4/TypingIndicator) for chat apps
-
-## Latest Releases
-- 4.3.1
-    - Add `RxSwift`/`RxCocoa` support through extensions and delegate proxies, requires Cocoapods installation of  `InputBarAccessoryView/RxExtensions`
-- 4.3.0
-    - Swift 5 support
-- 4.2.2
-    - Fixed image paste orientation issue in `InputTextView`
-- 4.2.1
-    - Fixed autocompletes of completions that contain spaces
-    - Depricated `isCaseSensitive` in favor of a function asignment to pre-process autocompletions
-- 4.2.0
-    - Added new API for overriding the main middle view, normally the `InputTextView` so it can be replaced with views such as a "Join" button", `setMiddleContentView(_ view: UIView?, animated: Bool)`
-- 4.1.2
-        - Add `InputBarViewController` which contains an `InputBarAccessoryView` as the `inputAccessoryView` by default with a convenient `isInputBarHidden: Bool` property to show/hide it 
-- 4.1.1
-        - Add `frameInsets: HorizontalEdgePadding` property to `InputBarAccessoryView` to inset the view to be compatible with `UISplitViewController` or other custom containers where the view should not be the full width
-- 4.1.0
-        - Fix issue where setting long strings in `viewDidLoad` broke inital layout, Issue #41
-        - Add `deleteCompletionByParts: Bool` flag to `AutocompleteManager` to allow for partial deletions of autocompletes rather than just the entire substring. 
-        - Add `InputBarSendButton` to use as the `sendButton` in `InputBarAccessoryView`. This subclass of `InputBarButtonItem` has a `UIActivityIndicatorView` to show a spinner when making HTTP requests
-
-### [CHANGELOG](./CHANGELOG.md)
-
-**Find a bug? Open an issue!**
-
-## Layout
-
-The layout of the `InputBarAccessoryView` is made of of 4  `InputStackView`'s and an `InputTextView`. The padding of the subviews can be easily adjusted by changing the `padding` and `textViewPadding` properties. The constraints will automatically be updated.
-
-<img src="https://raw.githubusercontent.com/nathantannar4/InputBarAccessoryView/master/Screenshots/Layout.png">
-
-It is important to note that each of the `InputStackView `'s to the left and right of the `InputTextView` are anchored by a width constraint. This way the `InputTextView` will always fill the space inbetween in addition to providing methods that can easily be called to hide all buttons to the right or left of the `InputTextView` by setting the width constraint constant to 0. The bottom and top stack views are not height constraint and rely on their `intrinsicContentSize`
-
-```swift
-func setLeftStackViewWidthConstant(to newValue: CGFloat, animated: Bool)
-
-func setRightStackViewWidthConstant(to newValue: CGFloat, animated: Bool)
-```
-
-### Reactive Hooks
-
-Each `InputBarButtonItem` has properties that can hold actions that will be executed during various hooks such as the button being touched, the `UITextView `text changing and more! Thanks to these easy hooks with a few lines of code the items can be easily resized and animated similar to that of the Facebook messenger app.
-
-```swift
-// MARK: - Hooks
-    
-public typealias InputBarButtonItemAction = ((InputBarButtonItem) -> Void)    
-    
-private var onTouchUpInsideAction: InputBarButtonItemAction?
-private var onKeyboardEditingBeginsAction: InputBarButtonItemAction?
-private var onKeyboardEditingEndsAction: InputBarButtonItemAction?
-private var onKeyboardSwipeGestureAction: ((InputBarButtonItem, UISwipeGestureRecognizer) -> Void)?
-private var onTextViewDidChangeAction: ((InputBarButtonItem, InputTextView) -> Void)?
-private var onSelectedAction: InputBarButtonItemAction?
-private var onDeselectedAction: InputBarButtonItemAction?
-private var onEnabledAction: InputBarButtonItemAction?
-private var onDisabledAction: InputBarButtonItemAction?
-```
-
-## Author
-<p>
-	<img src="https://github.com/nathantannar4/NTComponents/raw/master/NTComponents/Assets/Nathan.png" width="100" height="100">
-</p>
-
-**Nathan Tannar** - [https://nathantannar.me](https://nathantannar.me)
-
-## License
-
-Distributed under the MIT license. See ``LICENSE`` for more information.

+ 1 - 7
Pods/Manifest.lock

@@ -3,9 +3,6 @@ PODS:
     - CocoaLumberjack/Core (= 3.7.2)
   - CocoaLumberjack/Core (3.7.2)
   - DBDebugToolkit (0.6.0)
-  - InputBarAccessoryView (4.3.1):
-    - InputBarAccessoryView/Core (= 4.3.1)
-  - InputBarAccessoryView/Core (4.3.1)
   - libwebp (1.2.0):
     - libwebp/demux (= 1.2.0)
     - libwebp/mux (= 1.2.0)
@@ -34,7 +31,6 @@ PODS:
 
 DEPENDENCIES:
   - DBDebugToolkit
-  - InputBarAccessoryView
   - ReachabilitySwift
   - SCSiriWaveformView
   - SDWebImage (~> 5.9.1)
@@ -49,7 +45,6 @@ SPEC REPOS:
   trunk:
     - CocoaLumberjack
     - DBDebugToolkit
-    - InputBarAccessoryView
     - libwebp
     - ReachabilitySwift
     - SCSiriWaveformView
@@ -73,7 +68,6 @@ CHECKOUT OPTIONS:
 SPEC CHECKSUMS:
   CocoaLumberjack: b7e05132ff94f6ae4dfa9d5bce9141893a21d9da
   DBDebugToolkit: 03eb3483da4daf03b853b83ade5a8da9c8b7aff4
-  InputBarAccessoryView: 58a348be7ea2736c7eec60e5c315511c2dbb39fd
   libwebp: e90b9c01d99205d03b6bb8f2c8c415e5a4ef66f0
   ReachabilitySwift: 4032e2f59586e11e3b0ebe15b167abdd587a388b
   SCSiriWaveformView: 15b9dd6f94c7536e2032b34a35c6ff74d38c7411
@@ -85,6 +79,6 @@ SPEC CHECKSUMS:
   SwiftLint: 99f82d07b837b942dd563c668de129a03fc3fb52
   SwiftyBeaver: 576177b2c5c94b3aedd5993914e91271a0524e88
 
-PODFILE CHECKSUM: 632fce258414c6c6231891ec0ba5fb604075674b
+PODFILE CHECKSUM: 97bc315677e285dd2701a1aa743ea4d871fac3bc
 
 COCOAPODS: 1.11.2

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1860 - 1957
Pods/Pods.xcodeproj/project.pbxproj


+ 0 - 26
Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView-Info.plist

@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-  <key>CFBundleDevelopmentRegion</key>
-  <string>en</string>
-  <key>CFBundleExecutable</key>
-  <string>${EXECUTABLE_NAME}</string>
-  <key>CFBundleIdentifier</key>
-  <string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
-  <key>CFBundleInfoDictionaryVersion</key>
-  <string>6.0</string>
-  <key>CFBundleName</key>
-  <string>${PRODUCT_NAME}</string>
-  <key>CFBundlePackageType</key>
-  <string>FMWK</string>
-  <key>CFBundleShortVersionString</key>
-  <string>4.3.1</string>
-  <key>CFBundleSignature</key>
-  <string>????</string>
-  <key>CFBundleVersion</key>
-  <string>${CURRENT_PROJECT_VERSION}</string>
-  <key>NSPrincipalClass</key>
-  <string></string>
-</dict>
-</plist>

+ 0 - 5
Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView-dummy.m

@@ -1,5 +0,0 @@
-#import <Foundation/Foundation.h>
-@interface PodsDummy_InputBarAccessoryView : NSObject
-@end
-@implementation PodsDummy_InputBarAccessoryView
-@end

+ 0 - 12
Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView-prefix.pch

@@ -1,12 +0,0 @@
-#ifdef __OBJC__
-#import <UIKit/UIKit.h>
-#else
-#ifndef FOUNDATION_EXPORT
-#if defined(__cplusplus)
-#define FOUNDATION_EXPORT extern "C"
-#else
-#define FOUNDATION_EXPORT extern
-#endif
-#endif
-#endif
-

+ 0 - 16
Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView-umbrella.h

@@ -1,16 +0,0 @@
-#ifdef __OBJC__
-#import <UIKit/UIKit.h>
-#else
-#ifndef FOUNDATION_EXPORT
-#if defined(__cplusplus)
-#define FOUNDATION_EXPORT extern "C"
-#else
-#define FOUNDATION_EXPORT extern
-#endif
-#endif
-#endif
-
-
-FOUNDATION_EXPORT double InputBarAccessoryViewVersionNumber;
-FOUNDATION_EXPORT const unsigned char InputBarAccessoryViewVersionString[];
-

+ 0 - 14
Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView.debug.xcconfig

@@ -1,14 +0,0 @@
-CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView
-GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
-OTHER_LDFLAGS = $(inherited) -framework "UIKit"
-OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings
-PODS_BUILD_DIR = ${BUILD_DIR}
-PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
-PODS_ROOT = ${SRCROOT}
-PODS_TARGET_SRCROOT = ${PODS_ROOT}/InputBarAccessoryView
-PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
-PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
-SKIP_INSTALL = YES
-USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

+ 0 - 6
Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView.modulemap

@@ -1,6 +0,0 @@
-framework module InputBarAccessoryView {
-  umbrella header "InputBarAccessoryView-umbrella.h"
-
-  export *
-  module * { export * }
-}

+ 0 - 14
Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView.release.xcconfig

@@ -1,14 +0,0 @@
-CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView
-GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
-OTHER_LDFLAGS = $(inherited) -framework "UIKit"
-OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings
-PODS_BUILD_DIR = ${BUILD_DIR}
-PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
-PODS_ROOT = ${SRCROOT}
-PODS_TARGET_SRCROOT = ${PODS_ROOT}/InputBarAccessoryView
-PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
-PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
-SKIP_INSTALL = YES
-USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

+ 0 - 11
Pods/Target Support Files/InputBarAccessoryView/InputBarAccessoryView.xcconfig

@@ -1,11 +0,0 @@
-CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView
-GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-OTHER_LDFLAGS = $(inherited) -framework "UIKit"
-OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings
-PODS_BUILD_DIR = ${BUILD_DIR}
-PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
-PODS_ROOT = ${SRCROOT}
-PODS_TARGET_SRCROOT = ${PODS_ROOT}/InputBarAccessoryView
-PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
-SKIP_INSTALL = YES
-USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

+ 0 - 26
Pods/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios-acknowledgements.markdown

@@ -42,32 +42,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 
 
-## InputBarAccessoryView
-
-
-The MIT License (MIT)
-
-Copyright (c) Nathan Tannar <nathantannar4@gmail.com> 2017-2019
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-
 ## ReachabilitySwift
 
 Copyright (c) 2016 Ashley Mills

+ 0 - 32
Pods/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios-acknowledgements.plist

@@ -65,38 +65,6 @@ THE SOFTWARE.
 			<key>Type</key>
 			<string>PSGroupSpecifier</string>
 		</dict>
-		<dict>
-			<key>FooterText</key>
-			<string>
-The MIT License (MIT)
-
-Copyright (c) Nathan Tannar &lt;nathantannar4@gmail.com&gt; 2017-2019
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-</string>
-			<key>License</key>
-			<string>MIT</string>
-			<key>Title</key>
-			<string>InputBarAccessoryView</string>
-			<key>Type</key>
-			<string>PSGroupSpecifier</string>
-		</dict>
 		<dict>
 			<key>FooterText</key>
 			<string>Copyright (c) 2016 Ashley Mills

+ 0 - 2
Pods/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios-frameworks.sh

@@ -178,7 +178,6 @@ code_sign_if_enabled() {
 if [[ "$CONFIGURATION" == "Debug" ]]; then
   install_framework "${BUILT_PRODUCTS_DIR}/CocoaLumberjack/CocoaLumberjack.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/DBDebugToolkit/DBDebugToolkit.framework"
-  install_framework "${BUILT_PRODUCTS_DIR}/InputBarAccessoryView/InputBarAccessoryView.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ReachabilitySwift/Reachability.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework"
@@ -191,7 +190,6 @@ fi
 if [[ "$CONFIGURATION" == "Release" ]]; then
   install_framework "${BUILT_PRODUCTS_DIR}/CocoaLumberjack/CocoaLumberjack.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/DBDebugToolkit/DBDebugToolkit.framework"
-  install_framework "${BUILT_PRODUCTS_DIR}/InputBarAccessoryView/InputBarAccessoryView.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ReachabilitySwift/Reachability.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework"

+ 4 - 4
Pods/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios.debug.xcconfig

@@ -1,12 +1,12 @@
 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit" "${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) SD_WEBP=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit/DBDebugToolkit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView/InputBarAccessoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin/SDWebImageSVGKitPlugin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit/SVGKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver/SwiftyBeaver.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit/DBDebugToolkit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin/SDWebImageSVGKitPlugin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit/SVGKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver/SwiftyBeaver.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers"
 LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
 LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
-OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit/DBDebugToolkit.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView/InputBarAccessoryView.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin/SDWebImageSVGKitPlugin.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit/SVGKit.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver/SwiftyBeaver.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
-OTHER_LDFLAGS = $(inherited) -l"xml2" -framework "AVFoundation" -framework "CocoaLumberjack" -framework "CoreGraphics" -framework "CoreTelephony" -framework "CoreText" -framework "DBDebugToolkit" -framework "Foundation" -framework "ImageIO" -framework "InputBarAccessoryView" -framework "QuartzCore" -framework "Reachability" -framework "SCSiriWaveformView" -framework "SDWebImage" -framework "SDWebImageSVGKitPlugin" -framework "SDWebImageWebPCoder" -framework "SVGKit" -framework "SwiftyBeaver" -framework "SystemConfiguration" -framework "UIKit" -framework "libwebp"
+OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit/DBDebugToolkit.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin/SDWebImageSVGKitPlugin.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit/SVGKit.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver/SwiftyBeaver.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
+OTHER_LDFLAGS = $(inherited) -l"xml2" -framework "AVFoundation" -framework "CocoaLumberjack" -framework "CoreGraphics" -framework "CoreTelephony" -framework "CoreText" -framework "DBDebugToolkit" -framework "Foundation" -framework "ImageIO" -framework "QuartzCore" -framework "Reachability" -framework "SCSiriWaveformView" -framework "SDWebImage" -framework "SDWebImageSVGKitPlugin" -framework "SDWebImageWebPCoder" -framework "SVGKit" -framework "SwiftyBeaver" -framework "SystemConfiguration" -framework "UIKit" -framework "libwebp"
 OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

+ 4 - 4
Pods/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios.release.xcconfig

@@ -1,12 +1,12 @@
 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit" "${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) SD_WEBP=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit/DBDebugToolkit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView/InputBarAccessoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin/SDWebImageSVGKitPlugin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit/SVGKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver/SwiftyBeaver.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit/DBDebugToolkit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin/SDWebImageSVGKitPlugin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit/SVGKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver/SwiftyBeaver.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers"
 LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
 LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
-OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit/DBDebugToolkit.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView/InputBarAccessoryView.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin/SDWebImageSVGKitPlugin.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit/SVGKit.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver/SwiftyBeaver.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
-OTHER_LDFLAGS = $(inherited) -l"xml2" -framework "AVFoundation" -framework "CocoaLumberjack" -framework "CoreGraphics" -framework "CoreTelephony" -framework "CoreText" -framework "DBDebugToolkit" -framework "Foundation" -framework "ImageIO" -framework "InputBarAccessoryView" -framework "QuartzCore" -framework "Reachability" -framework "SCSiriWaveformView" -framework "SDWebImage" -framework "SDWebImageSVGKitPlugin" -framework "SDWebImageWebPCoder" -framework "SVGKit" -framework "SwiftyBeaver" -framework "SystemConfiguration" -framework "UIKit" -framework "libwebp"
+OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit/DBDebugToolkit.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin/SDWebImageSVGKitPlugin.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit/SVGKit.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver/SwiftyBeaver.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
+OTHER_LDFLAGS = $(inherited) -l"xml2" -framework "AVFoundation" -framework "CocoaLumberjack" -framework "CoreGraphics" -framework "CoreTelephony" -framework "CoreText" -framework "DBDebugToolkit" -framework "Foundation" -framework "ImageIO" -framework "QuartzCore" -framework "Reachability" -framework "SCSiriWaveformView" -framework "SDWebImage" -framework "SDWebImageSVGKitPlugin" -framework "SDWebImageWebPCoder" -framework "SVGKit" -framework "SwiftyBeaver" -framework "SystemConfiguration" -framework "UIKit" -framework "libwebp"
 OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

+ 3 - 3
Pods/Target Support Files/Pods-deltachat-iosTests/Pods-deltachat-iosTests.debug.xcconfig

@@ -1,8 +1,8 @@
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit" "${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) SD_WEBP=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit/DBDebugToolkit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView/InputBarAccessoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin/SDWebImageSVGKitPlugin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit/SVGKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver/SwiftyBeaver.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers"
-OTHER_LDFLAGS = $(inherited) -l"xml2" -framework "AVFoundation" -framework "CocoaLumberjack" -framework "CoreGraphics" -framework "CoreTelephony" -framework "CoreText" -framework "DBDebugToolkit" -framework "Foundation" -framework "ImageIO" -framework "InputBarAccessoryView" -framework "QuartzCore" -framework "Reachability" -framework "SCSiriWaveformView" -framework "SDWebImage" -framework "SDWebImageSVGKitPlugin" -framework "SDWebImageWebPCoder" -framework "SVGKit" -framework "SwiftyBeaver" -framework "SystemConfiguration" -framework "UIKit" -framework "libwebp"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit/DBDebugToolkit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin/SDWebImageSVGKitPlugin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit/SVGKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver/SwiftyBeaver.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers"
+OTHER_LDFLAGS = $(inherited) -l"xml2" -framework "AVFoundation" -framework "CocoaLumberjack" -framework "CoreGraphics" -framework "CoreTelephony" -framework "CoreText" -framework "DBDebugToolkit" -framework "Foundation" -framework "ImageIO" -framework "QuartzCore" -framework "Reachability" -framework "SCSiriWaveformView" -framework "SDWebImage" -framework "SDWebImageSVGKitPlugin" -framework "SDWebImageWebPCoder" -framework "SVGKit" -framework "SwiftyBeaver" -framework "SystemConfiguration" -framework "UIKit" -framework "libwebp"
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_PODFILE_DIR_PATH = ${SRCROOT}/.

+ 3 - 3
Pods/Target Support Files/Pods-deltachat-iosTests/Pods-deltachat-iosTests.release.xcconfig

@@ -1,8 +1,8 @@
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit" "${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) SD_WEBP=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit/DBDebugToolkit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/InputBarAccessoryView/InputBarAccessoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin/SDWebImageSVGKitPlugin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit/SVGKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver/SwiftyBeaver.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers"
-OTHER_LDFLAGS = $(inherited) -l"xml2" -framework "AVFoundation" -framework "CocoaLumberjack" -framework "CoreGraphics" -framework "CoreTelephony" -framework "CoreText" -framework "DBDebugToolkit" -framework "Foundation" -framework "ImageIO" -framework "InputBarAccessoryView" -framework "QuartzCore" -framework "Reachability" -framework "SCSiriWaveformView" -framework "SDWebImage" -framework "SDWebImageSVGKitPlugin" -framework "SDWebImageWebPCoder" -framework "SVGKit" -framework "SwiftyBeaver" -framework "SystemConfiguration" -framework "UIKit" -framework "libwebp"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack/CocoaLumberjack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DBDebugToolkit/DBDebugToolkit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSVGKitPlugin/SDWebImageSVGKitPlugin.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder/SDWebImageWebPCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGKit/SVGKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyBeaver/SwiftyBeaver.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers"
+OTHER_LDFLAGS = $(inherited) -l"xml2" -framework "AVFoundation" -framework "CocoaLumberjack" -framework "CoreGraphics" -framework "CoreTelephony" -framework "CoreText" -framework "DBDebugToolkit" -framework "Foundation" -framework "ImageIO" -framework "QuartzCore" -framework "Reachability" -framework "SCSiriWaveformView" -framework "SDWebImage" -framework "SDWebImageSVGKitPlugin" -framework "SDWebImageWebPCoder" -framework "SVGKit" -framework "SwiftyBeaver" -framework "SystemConfiguration" -framework "UIKit" -framework "libwebp"
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_PODFILE_DIR_PATH = ${SRCROOT}/.

+ 287 - 4
deltachat-ios.xcodeproj/project.pbxproj

@@ -45,6 +45,41 @@
 		304F769925DD23D70094B5E2 /* FullMessageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 304F769825DD23D70094B5E2 /* FullMessageViewController.swift */; };
 		3052C60A253F082E007D13EA /* MessageLabelDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3052C609253F082E007D13EA /* MessageLabelDelegate.swift */; };
 		3052C60E253F088E007D13EA /* DetectorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3052C60D253F088E007D13EA /* DetectorType.swift */; };
+		30558A3927709AFA008781EE /* NSNotification+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A0427709AF5008781EE /* NSNotification+Extensions.swift */; };
+		30558A3A27709AFA008781EE /* String+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A0527709AF5008781EE /* String+Extensions.swift */; };
+		30558A3B27709AFA008781EE /* UITextView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A0627709AF5008781EE /* UITextView+Extensions.swift */; };
+		30558A3C27709AFA008781EE /* NSMutableAttributedString+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A0727709AF5008781EE /* NSMutableAttributedString+Extensions.swift */; };
+		30558A3D27709AFA008781EE /* UIView+AutoLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A0827709AF5008781EE /* UIView+AutoLayout.swift */; };
+		30558A3E27709AFA008781EE /* KeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A0A27709AF6008781EE /* KeyboardManager.swift */; };
+		30558A3F27709AFA008781EE /* KeyboardNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A0B27709AF6008781EE /* KeyboardNotification.swift */; };
+		30558A4027709AFA008781EE /* KeyboardEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A0C27709AF6008781EE /* KeyboardEvent.swift */; };
+		30558A4127709AFA008781EE /* RxInputBarAccessoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A0E27709AF6008781EE /* RxInputBarAccessoryView.swift */; };
+		30558A4227709AFA008781EE /* AttachmentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A1127709AF7008781EE /* AttachmentManager.swift */; };
+		30558A4327709AFA008781EE /* ImageAttachmentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A1327709AF7008781EE /* ImageAttachmentCell.swift */; };
+		30558A4427709AFA008781EE /* AttachmentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A1427709AF7008781EE /* AttachmentCell.swift */; };
+		30558A4527709AFA008781EE /* AttachmentsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A1527709AF7008781EE /* AttachmentsView.swift */; };
+		30558A4627709AFA008781EE /* AttachmentManagerDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A1727709AF7008781EE /* AttachmentManagerDataSource.swift */; };
+		30558A4727709AFA008781EE /* AttachmentManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A1827709AF7008781EE /* AttachmentManagerDelegate.swift */; };
+		30558A4827709AFA008781EE /* AutocompleteManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A1A27709AF7008781EE /* AutocompleteManager.swift */; };
+		30558A4927709AFA008781EE /* AutocompleteSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A1C27709AF7008781EE /* AutocompleteSession.swift */; };
+		30558A4A27709AFA008781EE /* AutocompleteCompletion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A1D27709AF7008781EE /* AutocompleteCompletion.swift */; };
+		30558A4B27709AFA008781EE /* AutocompleteTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A1F27709AF7008781EE /* AutocompleteTableView.swift */; };
+		30558A4C27709AFA008781EE /* AutocompleteCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A2027709AF7008781EE /* AutocompleteCell.swift */; };
+		30558A4D27709AFA008781EE /* AutocompleteManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A2227709AF7008781EE /* AutocompleteManagerDelegate.swift */; };
+		30558A4E27709AFA008781EE /* AutocompleteManagerDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A2327709AF7008781EE /* AutocompleteManagerDataSource.swift */; };
+		30558A4F27709AFA008781EE /* InputStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A2527709AF7008781EE /* InputStackView.swift */; };
+		30558A5027709AFA008781EE /* InputTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A2627709AF7008781EE /* InputTextView.swift */; };
+		30558A5127709AFA008781EE /* SeparatorLine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A2727709AF7008781EE /* SeparatorLine.swift */; };
+		30558A5227709AFA008781EE /* InputBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A2927709AF8008781EE /* InputBarButtonItem.swift */; };
+		30558A5327709AFA008781EE /* InputBarSendButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A2A27709AF8008781EE /* InputBarSendButton.swift */; };
+		30558A5427709AFA008781EE /* InputBarAccessoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A2B27709AF8008781EE /* InputBarAccessoryView.swift */; };
+		30558A5527709AFA008781EE /* HorizontalEdgeInsets.swift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A2D27709AF8008781EE /* HorizontalEdgeInsets.swift.swift */; };
+		30558A5627709AFA008781EE /* NSConstraintLayoutSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A2E27709AF8008781EE /* NSConstraintLayoutSet.swift */; };
+		30558A5727709AFA008781EE /* InputPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A3027709AF9008781EE /* InputPlugin.swift */; };
+		30558A5827709AFA008781EE /* InputBarAccessoryViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A3127709AF9008781EE /* InputBarAccessoryViewDelegate.swift */; };
+		30558A5927709AFA008781EE /* InputItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A3227709AF9008781EE /* InputItem.swift */; };
+		30558A5A27709AFA008781EE /* InputBarAccessoryView+Availability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A3527709AF9008781EE /* InputBarAccessoryView+Availability.swift */; };
+		30558A5C27709AFA008781EE /* InputBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30558A3827709AFA008781EE /* InputBarViewController.swift */; };
 		3057027F24C5B2F800D84EFC /* ChatListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3057027E24C5B2F800D84EFC /* ChatListViewModel.swift */; };
 		3057028724C5C88300D84EFC /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = 306011B422E5E7FB00C1CE6F /* Localizable.stringsdict */; };
 		3057028C24C5E7B600D84EFC /* ContactCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE77838E23E4276D0093EABD /* ContactCellViewModel.swift */; };
@@ -106,7 +141,6 @@
 		78E45E3A21D3CFBC00D4B15E /* SettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78E45E3921D3CFBC00D4B15E /* SettingsController.swift */; };
 		78E45E4421D3F14A00D4B15E /* UIImage+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78E45E4321D3F14A00D4B15E /* UIImage+Extension.swift */; };
 		78ED838321D5379000243125 /* TextFieldCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78ED838221D5379000243125 /* TextFieldCell.swift */; };
-		78ED839421D5AF8A00243125 /* QrCodeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78ED839321D5AF8A00243125 /* QrCodeView.swift */; };
 		7A0052C81FBE6CB40048C3BF /* NewContactController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A0052C71FBE6CB40048C3BF /* NewContactController.swift */; };
 		7A451DB01FB1F84900177250 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A451DAF1FB1F84900177250 /* AppCoordinator.swift */; };
 		7A9FB1441FB061E2001FEA36 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A9FB1431FB061E2001FEA36 /* AppDelegate.swift */; };
@@ -264,6 +298,42 @@
 		304F769825DD23D70094B5E2 /* FullMessageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullMessageViewController.swift; sourceTree = "<group>"; };
 		3052C609253F082E007D13EA /* MessageLabelDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageLabelDelegate.swift; sourceTree = "<group>"; };
 		3052C60D253F088E007D13EA /* DetectorType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetectorType.swift; sourceTree = "<group>"; };
+		30558A0427709AF5008781EE /* NSNotification+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSNotification+Extensions.swift"; sourceTree = "<group>"; };
+		30558A0527709AF5008781EE /* String+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+Extensions.swift"; sourceTree = "<group>"; };
+		30558A0627709AF5008781EE /* UITextView+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITextView+Extensions.swift"; sourceTree = "<group>"; };
+		30558A0727709AF5008781EE /* NSMutableAttributedString+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSMutableAttributedString+Extensions.swift"; sourceTree = "<group>"; };
+		30558A0827709AF5008781EE /* UIView+AutoLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+AutoLayout.swift"; sourceTree = "<group>"; };
+		30558A0A27709AF6008781EE /* KeyboardManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyboardManager.swift; sourceTree = "<group>"; };
+		30558A0B27709AF6008781EE /* KeyboardNotification.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyboardNotification.swift; sourceTree = "<group>"; };
+		30558A0C27709AF6008781EE /* KeyboardEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyboardEvent.swift; sourceTree = "<group>"; };
+		30558A0E27709AF6008781EE /* RxInputBarAccessoryView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxInputBarAccessoryView.swift; sourceTree = "<group>"; };
+		30558A1127709AF7008781EE /* AttachmentManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttachmentManager.swift; sourceTree = "<group>"; };
+		30558A1327709AF7008781EE /* ImageAttachmentCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageAttachmentCell.swift; sourceTree = "<group>"; };
+		30558A1427709AF7008781EE /* AttachmentCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttachmentCell.swift; sourceTree = "<group>"; };
+		30558A1527709AF7008781EE /* AttachmentsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttachmentsView.swift; sourceTree = "<group>"; };
+		30558A1727709AF7008781EE /* AttachmentManagerDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttachmentManagerDataSource.swift; sourceTree = "<group>"; };
+		30558A1827709AF7008781EE /* AttachmentManagerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttachmentManagerDelegate.swift; sourceTree = "<group>"; };
+		30558A1A27709AF7008781EE /* AutocompleteManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutocompleteManager.swift; sourceTree = "<group>"; };
+		30558A1C27709AF7008781EE /* AutocompleteSession.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutocompleteSession.swift; sourceTree = "<group>"; };
+		30558A1D27709AF7008781EE /* AutocompleteCompletion.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutocompleteCompletion.swift; sourceTree = "<group>"; };
+		30558A1F27709AF7008781EE /* AutocompleteTableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutocompleteTableView.swift; sourceTree = "<group>"; };
+		30558A2027709AF7008781EE /* AutocompleteCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutocompleteCell.swift; sourceTree = "<group>"; };
+		30558A2227709AF7008781EE /* AutocompleteManagerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutocompleteManagerDelegate.swift; sourceTree = "<group>"; };
+		30558A2327709AF7008781EE /* AutocompleteManagerDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutocompleteManagerDataSource.swift; sourceTree = "<group>"; };
+		30558A2527709AF7008781EE /* InputStackView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputStackView.swift; sourceTree = "<group>"; };
+		30558A2627709AF7008781EE /* InputTextView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputTextView.swift; sourceTree = "<group>"; };
+		30558A2727709AF7008781EE /* SeparatorLine.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SeparatorLine.swift; sourceTree = "<group>"; };
+		30558A2927709AF8008781EE /* InputBarButtonItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputBarButtonItem.swift; sourceTree = "<group>"; };
+		30558A2A27709AF8008781EE /* InputBarSendButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputBarSendButton.swift; sourceTree = "<group>"; };
+		30558A2B27709AF8008781EE /* InputBarAccessoryView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputBarAccessoryView.swift; sourceTree = "<group>"; };
+		30558A2D27709AF8008781EE /* HorizontalEdgeInsets.swift.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalEdgeInsets.swift.swift; sourceTree = "<group>"; };
+		30558A2E27709AF8008781EE /* NSConstraintLayoutSet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSConstraintLayoutSet.swift; sourceTree = "<group>"; };
+		30558A3027709AF9008781EE /* InputPlugin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputPlugin.swift; sourceTree = "<group>"; };
+		30558A3127709AF9008781EE /* InputBarAccessoryViewDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputBarAccessoryViewDelegate.swift; sourceTree = "<group>"; };
+		30558A3227709AF9008781EE /* InputItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputItem.swift; sourceTree = "<group>"; };
+		30558A3427709AF9008781EE /* InputBarAccessoryView-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "InputBarAccessoryView-Bridging-Header.h"; sourceTree = "<group>"; };
+		30558A3527709AF9008781EE /* InputBarAccessoryView+Availability.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "InputBarAccessoryView+Availability.swift"; sourceTree = "<group>"; };
+		30558A3827709AFA008781EE /* InputBarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputBarViewController.swift; sourceTree = "<group>"; };
 		3057027E24C5B2F800D84EFC /* ChatListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListViewModel.swift; sourceTree = "<group>"; };
 		3057029A24C6441300D84EFC /* EmptyStateLabel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmptyStateLabel.swift; sourceTree = "<group>"; };
 		305702A024C6453700D84EFC /* TypeAlias.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypeAlias.swift; sourceTree = "<group>"; };
@@ -555,6 +625,186 @@
 			path = View;
 			sourceTree = "<group>";
 		};
+		305589FD27709A6A008781EE /* InputBarAccessoryView */ = {
+			isa = PBXGroup;
+			children = (
+				30558A2827709AF8008781EE /* Controls */,
+				30558A0327709AF5008781EE /* Extensions */,
+				30558A2B27709AF8008781EE /* InputBarAccessoryView.swift */,
+				30558A0927709AF6008781EE /* KeyboardManager */,
+				30558A2C27709AF8008781EE /* Models */,
+				30558A0F27709AF7008781EE /* Plugins */,
+				30558A2F27709AF9008781EE /* Protocols */,
+				30558A0D27709AF6008781EE /* RxInputBarAccessoryView */,
+				30558A3327709AF9008781EE /* Supporting Files */,
+				30558A3727709AFA008781EE /* ViewControllers */,
+				30558A2427709AF7008781EE /* Views */,
+			);
+			name = InputBarAccessoryView;
+			path = View/InputBarAccessoryView;
+			sourceTree = "<group>";
+		};
+		30558A0327709AF5008781EE /* Extensions */ = {
+			isa = PBXGroup;
+			children = (
+				30558A0427709AF5008781EE /* NSNotification+Extensions.swift */,
+				30558A0527709AF5008781EE /* String+Extensions.swift */,
+				30558A0627709AF5008781EE /* UITextView+Extensions.swift */,
+				30558A0727709AF5008781EE /* NSMutableAttributedString+Extensions.swift */,
+				30558A0827709AF5008781EE /* UIView+AutoLayout.swift */,
+			);
+			path = Extensions;
+			sourceTree = "<group>";
+		};
+		30558A0927709AF6008781EE /* KeyboardManager */ = {
+			isa = PBXGroup;
+			children = (
+				30558A0A27709AF6008781EE /* KeyboardManager.swift */,
+				30558A0B27709AF6008781EE /* KeyboardNotification.swift */,
+				30558A0C27709AF6008781EE /* KeyboardEvent.swift */,
+			);
+			path = KeyboardManager;
+			sourceTree = "<group>";
+		};
+		30558A0D27709AF6008781EE /* RxInputBarAccessoryView */ = {
+			isa = PBXGroup;
+			children = (
+				30558A0E27709AF6008781EE /* RxInputBarAccessoryView.swift */,
+			);
+			path = RxInputBarAccessoryView;
+			sourceTree = "<group>";
+		};
+		30558A0F27709AF7008781EE /* Plugins */ = {
+			isa = PBXGroup;
+			children = (
+				30558A1027709AF7008781EE /* AttachmentManager */,
+				30558A1927709AF7008781EE /* AutocompleteManager */,
+			);
+			path = Plugins;
+			sourceTree = "<group>";
+		};
+		30558A1027709AF7008781EE /* AttachmentManager */ = {
+			isa = PBXGroup;
+			children = (
+				30558A1127709AF7008781EE /* AttachmentManager.swift */,
+				30558A1227709AF7008781EE /* Views */,
+				30558A1627709AF7008781EE /* Protocols */,
+			);
+			path = AttachmentManager;
+			sourceTree = "<group>";
+		};
+		30558A1227709AF7008781EE /* Views */ = {
+			isa = PBXGroup;
+			children = (
+				30558A1327709AF7008781EE /* ImageAttachmentCell.swift */,
+				30558A1427709AF7008781EE /* AttachmentCell.swift */,
+				30558A1527709AF7008781EE /* AttachmentsView.swift */,
+			);
+			path = Views;
+			sourceTree = "<group>";
+		};
+		30558A1627709AF7008781EE /* Protocols */ = {
+			isa = PBXGroup;
+			children = (
+				30558A1727709AF7008781EE /* AttachmentManagerDataSource.swift */,
+				30558A1827709AF7008781EE /* AttachmentManagerDelegate.swift */,
+			);
+			path = Protocols;
+			sourceTree = "<group>";
+		};
+		30558A1927709AF7008781EE /* AutocompleteManager */ = {
+			isa = PBXGroup;
+			children = (
+				30558A1A27709AF7008781EE /* AutocompleteManager.swift */,
+				30558A1B27709AF7008781EE /* Models */,
+				30558A1E27709AF7008781EE /* Views */,
+				30558A2127709AF7008781EE /* Protocols */,
+			);
+			path = AutocompleteManager;
+			sourceTree = "<group>";
+		};
+		30558A1B27709AF7008781EE /* Models */ = {
+			isa = PBXGroup;
+			children = (
+				30558A1C27709AF7008781EE /* AutocompleteSession.swift */,
+				30558A1D27709AF7008781EE /* AutocompleteCompletion.swift */,
+			);
+			path = Models;
+			sourceTree = "<group>";
+		};
+		30558A1E27709AF7008781EE /* Views */ = {
+			isa = PBXGroup;
+			children = (
+				30558A1F27709AF7008781EE /* AutocompleteTableView.swift */,
+				30558A2027709AF7008781EE /* AutocompleteCell.swift */,
+			);
+			path = Views;
+			sourceTree = "<group>";
+		};
+		30558A2127709AF7008781EE /* Protocols */ = {
+			isa = PBXGroup;
+			children = (
+				30558A2227709AF7008781EE /* AutocompleteManagerDelegate.swift */,
+				30558A2327709AF7008781EE /* AutocompleteManagerDataSource.swift */,
+			);
+			path = Protocols;
+			sourceTree = "<group>";
+		};
+		30558A2427709AF7008781EE /* Views */ = {
+			isa = PBXGroup;
+			children = (
+				30558A2527709AF7008781EE /* InputStackView.swift */,
+				30558A2627709AF7008781EE /* InputTextView.swift */,
+				30558A2727709AF7008781EE /* SeparatorLine.swift */,
+			);
+			path = Views;
+			sourceTree = "<group>";
+		};
+		30558A2827709AF8008781EE /* Controls */ = {
+			isa = PBXGroup;
+			children = (
+				30558A2927709AF8008781EE /* InputBarButtonItem.swift */,
+				30558A2A27709AF8008781EE /* InputBarSendButton.swift */,
+			);
+			path = Controls;
+			sourceTree = "<group>";
+		};
+		30558A2C27709AF8008781EE /* Models */ = {
+			isa = PBXGroup;
+			children = (
+				30558A2D27709AF8008781EE /* HorizontalEdgeInsets.swift.swift */,
+				30558A2E27709AF8008781EE /* NSConstraintLayoutSet.swift */,
+			);
+			path = Models;
+			sourceTree = "<group>";
+		};
+		30558A2F27709AF9008781EE /* Protocols */ = {
+			isa = PBXGroup;
+			children = (
+				30558A3027709AF9008781EE /* InputPlugin.swift */,
+				30558A3127709AF9008781EE /* InputBarAccessoryViewDelegate.swift */,
+				30558A3227709AF9008781EE /* InputItem.swift */,
+			);
+			path = Protocols;
+			sourceTree = "<group>";
+		};
+		30558A3327709AF9008781EE /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				30558A3427709AF9008781EE /* InputBarAccessoryView-Bridging-Header.h */,
+				30558A3527709AF9008781EE /* InputBarAccessoryView+Availability.swift */,
+			);
+			path = "Supporting Files";
+			sourceTree = "<group>";
+		};
+		30558A3727709AFA008781EE /* ViewControllers */ = {
+			isa = PBXGroup;
+			children = (
+				30558A3827709AFA008781EE /* InputBarViewController.swift */,
+			);
+			path = ViewControllers;
+			sourceTree = "<group>";
+		};
 		3057027D24C5B2C700D84EFC /* ViewModel */ = {
 			isa = PBXGroup;
 			children = (
@@ -680,6 +930,7 @@
 		7A9FB1421FB061E2001FEA36 /* deltachat-ios */ = {
 			isa = PBXGroup;
 			children = (
+				305589FD27709A6A008781EE /* InputBarAccessoryView */,
 				AE57C07E2552BBC0003CFE70 /* Model */,
 				304219D7244072E600516852 /* DC */,
 				AE1988AA23EB3C7600B4CD5F /* Assets */,
@@ -1108,7 +1359,6 @@
 				"${PODS_ROOT}/Target Support Files/Pods-deltachat-ios/Pods-deltachat-ios-frameworks.sh",
 				"${BUILT_PRODUCTS_DIR}/CocoaLumberjack/CocoaLumberjack.framework",
 				"${BUILT_PRODUCTS_DIR}/DBDebugToolkit/DBDebugToolkit.framework",
-				"${BUILT_PRODUCTS_DIR}/InputBarAccessoryView/InputBarAccessoryView.framework",
 				"${BUILT_PRODUCTS_DIR}/ReachabilitySwift/Reachability.framework",
 				"${BUILT_PRODUCTS_DIR}/SCSiriWaveformView/SCSiriWaveformView.framework",
 				"${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework",
@@ -1122,7 +1372,6 @@
 			outputPaths = (
 				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CocoaLumberjack.framework",
 				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DBDebugToolkit.framework",
-				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/InputBarAccessoryView.framework",
 				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework",
 				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SCSiriWaveformView.framework",
 				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
@@ -1280,8 +1529,8 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				78ED839421D5AF8A00243125 /* QrCodeView.swift in Sources */,
 				3059620E234614E700C80F33 /* DcContact+Extension.swift in Sources */,
+				30558A5227709AFA008781EE /* InputBarButtonItem.swift in Sources */,
 				AED423D7249F580700B6B2BB /* BlockedContactsViewController.swift in Sources */,
 				303492B32577E40700A523D0 /* DocumentPreview.swift in Sources */,
 				3008CB7424F9436C00E6A617 /* AudioPlayerView.swift in Sources */,
@@ -1290,46 +1539,63 @@
 				AE9DAF0F22C278C6004C9591 /* ChatTitleView.swift in Sources */,
 				AE4AEE3522B1030D000AA495 /* PreviewController.swift in Sources */,
 				7070FB9B2101ECBB000DC258 /* NewGroupController.swift in Sources */,
+				30558A4827709AFA008781EE /* AutocompleteManager.swift in Sources */,
 				AE57C084255310BB003CFE70 /* ContextMenuController.swift in Sources */,
 				304219D92440734A00516852 /* DcMsg+Extension.swift in Sources */,
 				303492CF2587C2DC00A523D0 /* ChatInputBar.swift in Sources */,
 				AE52EA19229EB53C00C586C9 /* ContactDetailHeader.swift in Sources */,
+				30558A4D27709AFA008781EE /* AutocompleteManagerDelegate.swift in Sources */,
 				78E45E4421D3F14A00D4B15E /* UIImage+Extension.swift in Sources */,
+				30558A4227709AFA008781EE /* AttachmentManager.swift in Sources */,
+				30558A3F27709AFA008781EE /* KeyboardNotification.swift in Sources */,
 				30734326249A280B00BF9AD1 /* MediaQualityController.swift in Sources */,
 				AE6EC5282497B9B200A400E4 /* ThumbnailCache.swift in Sources */,
+				30558A5327709AFA008781EE /* InputBarSendButton.swift in Sources */,
+				30558A4B27709AFA008781EE /* AutocompleteTableView.swift in Sources */,
+				30558A5127709AFA008781EE /* SeparatorLine.swift in Sources */,
 				30FDB70524D1C1000066C48D /* ChatViewController.swift in Sources */,
 				AE52EA20229EB9F000C586C9 /* EditGroupViewController.swift in Sources */,
+				30558A5627709AFA008781EE /* NSConstraintLayoutSet.swift in Sources */,
+				30558A4127709AFA008781EE /* RxInputBarAccessoryView.swift in Sources */,
 				AE18F294228C602A0007B1BE /* SecuritySettingsController.swift in Sources */,
+				30558A3B27709AFA008781EE /* UITextView+Extensions.swift in Sources */,
 				30C2BFFE27032375005505DA /* ChatSearchAccessoryBar.swift in Sources */,
 				AE39D323249CFC1A007346A1 /* DocumentGalleryController.swift in Sources */,
 				AE8DD451249D1DFB009A4BC1 /* DocumentGalleryFileCell.swift in Sources */,
+				30558A3A27709AFA008781EE /* String+Extensions.swift in Sources */,
 				3095A351237DD1F700AB07F7 /* MediaPicker.swift in Sources */,
 				B21005DB23383664004C70C5 /* SettingsClassicViewController.swift in Sources */,
 				AEC67A1C241CE9E4007DDBE1 /* AppStateRestorer.swift in Sources */,
 				3008CB7224F93EB900E6A617 /* AudioMessageCell.swift in Sources */,
 				302E1BB4252B5AB4008F4264 /* PlayButtonView.swift in Sources */,
+				30558A3927709AFA008781EE /* NSNotification+Extensions.swift in Sources */,
 				303492AD2577CAC300A523D0 /* FileView.swift in Sources */,
 				7AE0A5491FC42F65005ECB4B /* NewChatViewController.swift in Sources */,
+				30558A3E27709AFA008781EE /* KeyboardManager.swift in Sources */,
 				AE77838F23E4276D0093EABD /* ContactCellViewModel.swift in Sources */,
 				B20462E62440C99600367A57 /* SettingsAutodelSetController.swift in Sources */,
 				3015634423A003BA00E9DEF4 /* AudioRecorderController.swift in Sources */,
 				AE57C0802552BBD0003CFE70 /* GalleryItem.swift in Sources */,
 				AE25F09022807AD800CDEA66 /* AvatarSelectionCell.swift in Sources */,
 				30A4149724F6EFBE00EC91EB /* InfoMessageCell.swift in Sources */,
+				30558A5727709AFA008781EE /* InputPlugin.swift in Sources */,
 				302B84C6239676F0001C261F /* AvatarHelper.swift in Sources */,
 				AE77838D23E32ED20093EABD /* ContactDetailViewModel.swift in Sources */,
 				30DAF71C275901610073C154 /* SettingsBackgroundSelectionController.swift in Sources */,
 				3010968926838A050032CBA0 /* VideoInviteCell.swift in Sources */,
 				303492CB257A814200A523D0 /* DraftArea.swift in Sources */,
 				AEE6EC3F2282C59C00EDC689 /* GroupMembersViewController.swift in Sources */,
+				30558A4527709AFA008781EE /* AttachmentsView.swift in Sources */,
 				B26B3BC7236DC3DC008ED35A /* SwitchCell.swift in Sources */,
 				AEE700252438E0E500D6992E /* ProgressAlertHandler.swift in Sources */,
 				30E348E524F6647D005C93D1 /* FileTextCell.swift in Sources */,
 				306C32322445CDE9001D89F3 /* DcLogger.swift in Sources */,
+				30558A5827709AFA008781EE /* InputBarAccessoryViewDelegate.swift in Sources */,
 				307A82CC25B8D26700748B57 /* ChatEditingBar.swift in Sources */,
 				303492952565AABC00A523D0 /* DraftModel.swift in Sources */,
 				78E45E3A21D3CFBC00D4B15E /* SettingsController.swift in Sources */,
 				AE8519EA2272FDCA00ED86F0 /* DeviceContactsHandler.swift in Sources */,
+				30558A4327709AFA008781EE /* ImageAttachmentCell.swift in Sources */,
 				302E592426A5CF4800DD4F58 /* ConnectivityViewController.swift in Sources */,
 				78ED838321D5379000243125 /* TextFieldCell.swift in Sources */,
 				305702A124C6453700D84EFC /* TypeAlias.swift in Sources */,
@@ -1337,18 +1603,23 @@
 				AE0D26FD1FB1FE88002FAFCE /* ChatListController.swift in Sources */,
 				302D5450268B6B2300A8B271 /* MessageUtils.swift in Sources */,
 				30149D9322F21129003C12B5 /* QrViewController.swift in Sources */,
+				30558A4C27709AFA008781EE /* AutocompleteCell.swift in Sources */,
 				AEE56D80225504DB007DC082 /* Extensions.swift in Sources */,
 				7A0052C81FBE6CB40048C3BF /* NewContactController.swift in Sources */,
+				30558A3D27709AFA008781EE /* UIView+AutoLayout.swift in Sources */,
 				30860EE926F49E64002651A6 /* DownloadOnDemandViewController.swift in Sources */,
 				AEE56D762253431E007DC082 /* AccountSetupController.swift in Sources */,
 				AE8F503524753DFE007FEE0B /* GalleryViewController.swift in Sources */,
 				B2C42570265C325C00B95377 /* MultilineLabelCell.swift in Sources */,
 				AEF53BD5248904BF00D309C1 /* GalleryTimeLabel.swift in Sources */,
+				30558A5C27709AFA008781EE /* InputBarViewController.swift in Sources */,
 				AEE6EC482283045D00EDC689 /* EditSettingsController.swift in Sources */,
 				30653081254358B10093E196 /* QuoteView.swift in Sources */,
 				3067AAC62667F3FE00525036 /* ImageFormat.swift in Sources */,
+				30558A4F27709AFA008781EE /* InputStackView.swift in Sources */,
 				30E348DF24F3F819005C93D1 /* ChatTableView.swift in Sources */,
 				30EF7308252F6A3300E2C54A /* PaddingTextView.swift in Sources */,
+				30558A4E27709AFA008781EE /* AutocompleteManagerDataSource.swift in Sources */,
 				30E348E124F53772005C93D1 /* ImageTextCell.swift in Sources */,
 				3008CB7624F95B6D00E6A617 /* AudioController.swift in Sources */,
 				302B84CE2397F6CD001C261F /* URL+Extension.swift in Sources */,
@@ -1360,14 +1631,19 @@
 				AEA0F6A124474146009F887B /* ProfileInfoViewController.swift in Sources */,
 				303492A5257546B400A523D0 /* DraftPreview.swift in Sources */,
 				305961D02346125100C80F33 /* NSAttributedString+Extensions.swift in Sources */,
+				30558A5A27709AFA008781EE /* InputBarAccessoryView+Availability.swift in Sources */,
 				21D6C941260623F500D0755A /* NotificationManager.swift in Sources */,
+				30558A5527709AFA008781EE /* HorizontalEdgeInsets.swift.swift in Sources */,
 				302B84C72396770B001C261F /* RelayHelper.swift in Sources */,
 				305961CF2346125100C80F33 /* UIColor+Extensions.swift in Sources */,
+				30558A5027709AFA008781EE /* InputTextView.swift in Sources */,
 				AEACE2E51FB32E1900DCDD78 /* Utils.swift in Sources */,
 				3052C60E253F088E007D13EA /* DetectorType.swift in Sources */,
+				30558A4A27709AFA008781EE /* AutocompleteCompletion.swift in Sources */,
 				30349291256441E200A523D0 /* QuotePreview.swift in Sources */,
 				AEC67A1E241FCFE0007DDBE1 /* ChatListViewModel.swift in Sources */,
 				30FDB71F24D8170E0066C48D /* TextMessageCell.swift in Sources */,
+				30558A3C27709AFA008781EE /* NSMutableAttributedString+Extensions.swift in Sources */,
 				AE1988A523EB2FBA00B4CD5F /* Errors.swift in Sources */,
 				302D5454268B84CB00A8B271 /* SettingsVideoChatViewController.swift in Sources */,
 				AEFBE22F23FEF23D0045327A /* ProviderInfoCell.swift in Sources */,
@@ -1381,17 +1657,22 @@
 				305961D22346125100C80F33 /* CGRect+Extensions.swift in Sources */,
 				3057029B24C6441300D84EFC /* EmptyStateLabel.swift in Sources */,
 				30260CA7238F02F700D8D52C /* MultilineTextFieldCell.swift in Sources */,
+				30558A5427709AFA008781EE /* InputBarAccessoryView.swift in Sources */,
 				70B8882E2091B8550074812E /* ContactCell.swift in Sources */,
 				305961CD2346125100C80F33 /* UIEdgeInsets+Extensions.swift in Sources */,
 				30EF7324252FF15F00E2C54A /* MessageLabel.swift in Sources */,
 				30C0D49D237C4908008E2A0E /* CertificateCheckController.swift in Sources */,
+				30558A4727709AFA008781EE /* AttachmentManagerDelegate.swift in Sources */,
 				304F769525DD237B0094B5E2 /* WebViewViewController.swift in Sources */,
 				7092474120B3869500AF8799 /* ContactDetailViewController.swift in Sources */,
+				30558A4627709AFA008781EE /* AttachmentManagerDataSource.swift in Sources */,
 				30F9B9EC235F2116006E7ACF /* MessageCounter.swift in Sources */,
 				304F769925DD23D70094B5E2 /* FullMessageViewController.swift in Sources */,
 				AE0AA952247800E700D42A7F /* GalleryCell.swift in Sources */,
 				AE0AA958247834A400D42A7F /* Date+Extension.swift in Sources */,
+				30558A4427709AFA008781EE /* AttachmentCell.swift in Sources */,
 				307D822E241669C7006D2490 /* LocationManager.swift in Sources */,
+				30558A4927709AFA008781EE /* AutocompleteSession.swift in Sources */,
 				AE851AD0227DF50900ED86F0 /* GroupChatDetailViewController.swift in Sources */,
 				30FDB72124D838240066C48D /* BaseMessageCell.swift in Sources */,
 				7A451DB01FB1F84900177250 /* AppCoordinator.swift in Sources */,
@@ -1399,9 +1680,11 @@
 				AE9DAF0D22C1215D004C9591 /* EditContactController.swift in Sources */,
 				302D546A2693591700A8B271 /* ChatContactRequestBar.swift in Sources */,
 				305DDD8725DD97BF00974489 /* DynamicFontButton.swift in Sources */,
+				30558A4027709AFA008781EE /* KeyboardEvent.swift in Sources */,
 				785BE16821E247F1003BE98C /* MessageInfoViewController.swift in Sources */,
 				AED423D3249F578B00B6B2BB /* AddGroupMembersViewController.swift in Sources */,
 				AE851AC5227C755A00ED86F0 /* Protocols.swift in Sources */,
+				30558A5927709AFA008781EE /* InputItem.swift in Sources */,
 				AE728F15229D5C390047565B /* PhotoPickerAlertAction.swift in Sources */,
 				AECEF03E244F2D55006C90DA /* QrPageController.swift in Sources */,
 				AEACE2E31FB32B5C00DCDD78 /* Constants.swift in Sources */,

+ 1 - 1
deltachat-ios/Chat/ChatViewController.swift

@@ -1,7 +1,7 @@
 import MapKit
 import QuickLook
 import UIKit
-import InputBarAccessoryView
+//import InputBarAccessoryView
 import AVFoundation
 import DcCore
 import SDWebImage

+ 1 - 1
deltachat-ios/Chat/Views/ChatContactRequestBar.swift

@@ -1,5 +1,5 @@
 import UIKit
-import InputBarAccessoryView
+//import InputBarAccessoryView
 import DcCore
 
 public protocol ChatContactRequestDelegate: class {

+ 1 - 1
deltachat-ios/Chat/Views/ChatEditingBar.swift

@@ -1,5 +1,5 @@
 import UIKit
-import InputBarAccessoryView
+//import InputBarAccessoryView
 import DcCore
 
 public protocol ChatEditingDelegate: class {

+ 1 - 1
deltachat-ios/Chat/Views/ChatInputBar.swift

@@ -1,5 +1,5 @@
 import UIKit
-import InputBarAccessoryView
+//import InputBarAccessoryView
 import DcCore
 
 

+ 2 - 1
deltachat-ios/Chat/Views/ChatInputTextView.swift

@@ -1,5 +1,6 @@
 import Foundation
-import InputBarAccessoryView
+//import InputBarAccessoryView
+import UIKit
 
 public class ChatInputTextView: InputTextView {
 

+ 1 - 1
deltachat-ios/Chat/Views/ChatSearchAccessoryBar.swift

@@ -1,5 +1,5 @@
 import UIKit
-import InputBarAccessoryView
+//import InputBarAccessoryView
 import DcCore
 
 public protocol ChatSearchDelegate: class {

+ 1 - 1
deltachat-ios/Chat/Views/ChatTableView.swift

@@ -1,5 +1,5 @@
 import UIKit
-import InputBarAccessoryView
+//import InputBarAccessoryView
 
 class ChatTableView: UITableView {
 

+ 1 - 1
deltachat-ios/Chat/Views/DraftArea.swift

@@ -1,6 +1,6 @@
 import UIKit
 import DcCore
-import InputBarAccessoryView
+//import InputBarAccessoryView
 
 public class DraftArea: UIView, InputItem {
     public var inputBarAccessoryView: InputBarAccessoryView?

+ 1 - 1
deltachat-ios/Chat/Views/QuotePreview.swift

@@ -1,5 +1,5 @@
 import UIKit
-import InputBarAccessoryView
+//import InputBarAccessoryView
 import DcCore
 
 public class QuotePreview: DraftPreview {

+ 1 - 0
deltachat-ios/InputBarAccessoryView

@@ -0,0 +1 @@
+Subproject commit d5de101e07fbf950eb84b68f2f91aee563e46ceb

+ 0 - 0
Pods/InputBarAccessoryView/Sources/Controls/InputBarButtonItem.swift → deltachat-ios/View/InputBarAccessoryView/Controls/InputBarButtonItem.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Controls/InputBarSendButton.swift → deltachat-ios/View/InputBarAccessoryView/Controls/InputBarSendButton.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Extensions/NSMutableAttributedString+Extensions.swift → deltachat-ios/View/InputBarAccessoryView/Extensions/NSMutableAttributedString+Extensions.swift


+ 0 - 2
Pods/InputBarAccessoryView/Sources/Extensions/NSNotification+Extensions.swift → deltachat-ios/View/InputBarAccessoryView/Extensions/NSNotification+Extensions.swift

@@ -70,8 +70,6 @@ internal extension NSNotification {
             return .curveEaseInOut
         case .linear:
             return .curveLinear
-        @unknown default:
-            return .curveLinear
         }
     }
     

+ 0 - 0
Pods/InputBarAccessoryView/Sources/Extensions/String+Extensions.swift → deltachat-ios/View/InputBarAccessoryView/Extensions/String+Extensions.swift


+ 4 - 4
Pods/InputBarAccessoryView/Sources/Extensions/UITextView+Extensions.swift → deltachat-ios/View/InputBarAccessoryView/Extensions/UITextView+Extensions.swift

@@ -13,7 +13,7 @@ internal extension UITextView {
     typealias Match = (prefix: String, word: String, range: NSRange)
     
     func find(prefixes: Set<String>, with delimiterSet: CharacterSet) -> Match? {
-        guard prefixes.count > 0 else { return nil }
+        guard !prefixes.isEmpty else { return nil }
 
         for prefix in prefixes {
             if let match = find(prefix: prefix, with: delimiterSet) {
@@ -34,7 +34,7 @@ internal extension UITextView {
             guard let index = leadingText.lastIndex(of: char) else { return nil }
             if i == 0 {
                 prefixStartIndex = index
-            } else if index.utf16Offset(in: leadingText) == prefixStartIndex.utf16Offset(in: leadingText) + 1 {
+            } else if index.encodedOffset == prefixStartIndex.encodedOffset + 1 {
                 prefixStartIndex = index
             } else {
                 return nil
@@ -44,8 +44,8 @@ internal extension UITextView {
         let wordRange = prefixStartIndex..<cursorRange.upperBound
         let word = leadingText[wordRange]
         
-        let location = wordRange.lowerBound.utf16Offset(in: leadingText)
-        let length = wordRange.upperBound.utf16Offset(in: word) - location
+        let location = wordRange.lowerBound.encodedOffset
+        let length = wordRange.upperBound.encodedOffset - location
         let range = NSRange(location: location, length: length)
         
         return (String(prefix), String(word), range)

+ 0 - 0
Pods/InputBarAccessoryView/Sources/Extensions/UIView+AutoLayout.swift → deltachat-ios/View/InputBarAccessoryView/Extensions/UIView+AutoLayout.swift


+ 3 - 3
Pods/InputBarAccessoryView/Sources/InputBarAccessoryView.swift → deltachat-ios/View/InputBarAccessoryView/InputBarAccessoryView.swift

@@ -579,8 +579,8 @@ open class InputBarAccessoryView: UIView {
         
         // Calculate the required height
         let totalPadding = padding.top + padding.bottom + topStackViewPadding.top + middleContentViewPadding.top + middleContentViewPadding.bottom
-        let topStackViewHeight = topStackView.arrangedSubviews.count > 0 ? topStackView.bounds.height : 0
-        let bottomStackViewHeight = bottomStackView.arrangedSubviews.count > 0 ? bottomStackView.bounds.height : 0
+        let topStackViewHeight = !topStackView.arrangedSubviews.isEmpty ? topStackView.bounds.height : 0
+        let bottomStackViewHeight = !bottomStackView.arrangedSubviews.isEmpty ? bottomStackView.bounds.height : 0
         let verticalStackViewHeight = topStackViewHeight + bottomStackViewHeight
         let requiredHeight = inputTextViewHeight + totalPadding + verticalStackViewHeight
         return CGSize(width: UIView.noIntrinsicMetric, height: requiredHeight)
@@ -843,7 +843,7 @@ open class InputBarAccessoryView: UIView {
             var isEnabled = !trimmedText.isEmpty
             if !isEnabled {
                 // The images property is more resource intensive so only use it if needed
-                isEnabled = inputTextView.images.count > 0
+                isEnabled = !inputTextView.images.isEmpty
             }
             sendButton.isEnabled = isEnabled
         }

+ 354 - 0
deltachat-ios/View/InputBarAccessoryView/InputBarButtonItem.swift

@@ -0,0 +1,354 @@
+//
+//  InputBarButtonItem.swift
+//  InputBarAccessoryView
+//
+//  Copyright © 2017-2019 Nathan Tannar.
+//
+//  Permission is hereby granted, free of charge, to any person obtaining a copy
+//  of this software and associated documentation files (the "Software"), to deal
+//  in the Software without restriction, including without limitation the rights
+//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+//  copies of the Software, and to permit persons to whom the Software is
+//  furnished to do so, subject to the following conditions:
+//
+//  The above copyright notice and this permission notice shall be included in all
+//  copies or substantial portions of the Software.
+//
+//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+//  SOFTWARE.
+//
+//  Created by Nathan Tannar on 8/18/17.
+//
+
+import UIKit
+
+/**
+ A InputItem that inherits from UIButton
+ 
+ ## Important Notes ##
+ 1. Intended to be used in an `InputStackView`
+ */
+open class InputBarButtonItem: UIButton, InputItem {
+    
+    /// The spacing properties of the InputBarButtonItem
+    ///
+    /// - fixed: The spacing is fixed
+    /// - flexible: The spacing is flexible
+    /// - none: There is no spacing
+    public enum Spacing {
+        case fixed(CGFloat)
+        case flexible
+        case none
+    }
+    
+    public typealias InputBarButtonItemAction = ((InputBarButtonItem) -> Void)
+    
+    // MARK: - Properties
+    
+    /// A weak reference to the InputBarAccessoryView that the InputBarButtonItem used in
+    open weak var inputBarAccessoryView: InputBarAccessoryView?
+    
+    /// The spacing property of the InputBarButtonItem that determines the contentHuggingPriority and any
+    /// additional space to the intrinsicContentSize
+    open var spacing: Spacing = .none {
+        didSet {
+            switch spacing {
+            case .flexible:
+                setContentHuggingPriority(UILayoutPriority(rawValue: 1), for: .horizontal)
+            case .fixed:
+                setContentHuggingPriority(UILayoutPriority(rawValue: 1000), for: .horizontal)
+            case .none:
+                setContentHuggingPriority(UILayoutPriority(rawValue: 500), for: .horizontal)
+            }
+        }
+    }
+    
+    /// When not nil this size overrides the intrinsicContentSize
+    private var size: CGSize? = CGSize(width: 20, height: 20) {
+        didSet {
+            invalidateIntrinsicContentSize()
+        }
+    }
+    
+    open override var intrinsicContentSize: CGSize {
+        var contentSize = size ?? super.intrinsicContentSize
+        switch spacing {
+        case .fixed(let width):
+            contentSize.width += width
+        case .flexible, .none:
+            break
+        }
+        return contentSize
+    }
+    
+    /// A reference to the stack view position that the InputBarButtonItem is held in
+    open var parentStackViewPosition: InputStackView.Position?
+    
+    /// The title for the UIControlState.normal
+    open var title: String? {
+        get {
+            return title(for: .normal)
+        }
+        set {
+            setTitle(newValue, for: .normal)
+        }
+    }
+    
+    /// The image for the UIControlState.normal
+    open var image: UIImage? {
+        get {
+            return image(for: .normal)
+        }
+        set {
+            setImage(newValue, for: .normal)
+        }
+    }
+    
+    /// Calls the onSelectedAction or onDeselectedAction when set
+    open override var isHighlighted: Bool {
+        get {
+            return super.isHighlighted
+        }
+        set {
+            guard newValue != isHighlighted else { return }
+            super.isHighlighted = newValue
+            if newValue {
+                onSelectedAction?(self)
+            } else {
+                onDeselectedAction?(self)
+            }
+
+        }
+    }
+
+    /// Calls the onEnabledAction or onDisabledAction when set
+    open override var isEnabled: Bool {
+        didSet {
+            if isEnabled {
+                onEnabledAction?(self)
+            } else {
+                onDisabledAction?(self)
+            }
+        }
+    }
+    
+    // MARK: - Reactive Hooks
+    
+    private var onTouchUpInsideAction: InputBarButtonItemAction?
+    private var onKeyboardEditingBeginsAction: InputBarButtonItemAction?
+    private var onKeyboardEditingEndsAction: InputBarButtonItemAction?
+    private var onKeyboardSwipeGestureAction: ((InputBarButtonItem, UISwipeGestureRecognizer) -> Void)?
+    private var onTextViewDidChangeAction: ((InputBarButtonItem, InputTextView) -> Void)?
+    private var onSelectedAction: InputBarButtonItemAction?
+    private var onDeselectedAction: InputBarButtonItemAction?
+    private var onEnabledAction: InputBarButtonItemAction?
+    private var onDisabledAction: InputBarButtonItemAction?
+    
+    // MARK: - Initialization
+    
+    public convenience init() {
+        self.init(frame: .zero)
+    }
+    
+    public override init(frame: CGRect) {
+        super.init(frame: frame)
+        setup()
+    }
+    
+    required public init?(coder aDecoder: NSCoder) {
+        super.init(coder: aDecoder)
+        setup()
+    }
+    
+    // MARK: - Setup
+    
+    /// Sets up the default properties
+    open func setup() {
+        contentVerticalAlignment = .center
+        contentHorizontalAlignment = .center
+        imageView?.contentMode = .scaleAspectFit
+        setContentHuggingPriority(UILayoutPriority(rawValue: 500), for: .horizontal)
+        setContentHuggingPriority(UILayoutPriority(rawValue: 500), for: .vertical)
+        setTitleColor(UIColor(red: 0, green: 122/255, blue: 1, alpha: 1), for: .normal)
+        setTitleColor(UIColor(red: 0, green: 122/255, blue: 1, alpha: 0.3), for: .highlighted)
+        setTitleColor(.lightGray, for: .disabled)
+        adjustsImageWhenHighlighted = false
+        addTarget(self, action: #selector(InputBarButtonItem.touchUpInsideAction), for: .touchUpInside)
+    }
+    
+    // MARK: - Size Adjustment
+    
+    /// Sets the size of the InputBarButtonItem which overrides the intrinsicContentSize. When set to nil
+    /// the default intrinsicContentSize is used. The new size will be laid out in the UIStackView that
+    /// the InputBarButtonItem is held in
+    ///
+    /// - Parameters:
+    ///   - newValue: The new size
+    ///   - animated: If the layout should be animated
+    open func setSize(_ newValue: CGSize?, animated: Bool) {
+        size = newValue
+        if animated, let position = parentStackViewPosition {
+            inputBarAccessoryView?.performLayout(animated) { [weak self] in
+                self?.inputBarAccessoryView?.layoutStackViews([position])
+            }
+        }
+    }
+    
+    // MARK: - Hook Setup Methods
+    
+    /// Used to setup your own initial properties
+    ///
+    /// - Parameter item: A reference to Self
+    /// - Returns: Self
+    @discardableResult
+    open func configure(_ item: InputBarButtonItemAction) -> Self {
+        item(self)
+        return self
+    }
+    
+    /// Sets the onKeyboardEditingBeginsAction
+    ///
+    /// - Parameter action: The new onKeyboardEditingBeginsAction
+    /// - Returns: Self
+    @discardableResult
+    open func onKeyboardEditingBegins(_ action: @escaping InputBarButtonItemAction) -> Self {
+        onKeyboardEditingBeginsAction = action
+        return self
+    }
+    
+    /// Sets the onKeyboardEditingEndsAction
+    ///
+    /// - Parameter action: The new onKeyboardEditingEndsAction
+    /// - Returns: Self
+    @discardableResult
+    open func onKeyboardEditingEnds(_ action: @escaping InputBarButtonItemAction) -> Self {
+        onKeyboardEditingEndsAction = action
+        return self
+    }
+    
+    
+    /// Sets the onKeyboardSwipeGestureAction
+    ///
+    /// - Parameter action: The new onKeyboardSwipeGestureAction
+    /// - Returns: Self
+    @discardableResult
+    open func onKeyboardSwipeGesture(_ action: @escaping (_ item: InputBarButtonItem, _ gesture: UISwipeGestureRecognizer) -> Void) -> Self {
+        onKeyboardSwipeGestureAction = action
+        return self
+    }
+    
+    /// Sets the onTextViewDidChangeAction
+    ///
+    /// - Parameter action: The new onTextViewDidChangeAction
+    /// - Returns: Self
+    @discardableResult
+    open func onTextViewDidChange(_ action: @escaping (_ item: InputBarButtonItem, _ textView: InputTextView) -> Void) -> Self {
+        onTextViewDidChangeAction = action
+        return self
+    }
+    
+    /// Sets the onTouchUpInsideAction
+    ///
+    /// - Parameter action: The new onTouchUpInsideAction
+    /// - Returns: Self
+    @discardableResult
+    open func onTouchUpInside(_ action: @escaping InputBarButtonItemAction) -> Self {
+        onTouchUpInsideAction = action
+        return self
+    }
+    
+    /// Sets the onSelectedAction
+    ///
+    /// - Parameter action: The new onSelectedAction
+    /// - Returns: Self
+    @discardableResult
+    open func onSelected(_ action: @escaping InputBarButtonItemAction) -> Self {
+        onSelectedAction = action
+        return self
+    }
+    
+    /// Sets the onDeselectedAction
+    ///
+    /// - Parameter action: The new onDeselectedAction
+    /// - Returns: Self
+    @discardableResult
+    open func onDeselected(_ action: @escaping InputBarButtonItemAction) -> Self {
+        onDeselectedAction = action
+        return self
+    }
+    
+    /// Sets the onEnabledAction
+    ///
+    /// - Parameter action: The new onEnabledAction
+    /// - Returns: Self
+    @discardableResult
+    open func onEnabled(_ action: @escaping InputBarButtonItemAction) -> Self {
+        onEnabledAction = action
+        return self
+    }
+    
+    /// Sets the onDisabledAction
+    ///
+    /// - Parameter action: The new onDisabledAction
+    /// - Returns: Self
+    @discardableResult
+    open func onDisabled(_ action: @escaping InputBarButtonItemAction) -> Self {
+        onDisabledAction = action
+        return self
+    }
+    
+    // MARK: - InputItem Protocol
+    
+    /// Executes the onTextViewDidChangeAction with the given textView
+    ///
+    /// - Parameter textView: A reference to the InputTextView
+    open func textViewDidChangeAction(with textView: InputTextView) {
+        onTextViewDidChangeAction?(self, textView)
+    }
+    
+    /// Executes the onKeyboardSwipeGestureAction with the given gesture
+    ///
+    /// - Parameter gesture: A reference to the gesture that was recognized
+    open func keyboardSwipeGestureAction(with gesture: UISwipeGestureRecognizer) {
+        onKeyboardSwipeGestureAction?(self, gesture)
+    }
+    
+    /// Executes the onKeyboardEditingEndsAction
+    open func keyboardEditingEndsAction() {
+        onKeyboardEditingEndsAction?(self)
+    }
+    
+    /// Executes the onKeyboardEditingBeginsAction
+    open func keyboardEditingBeginsAction() {
+        onKeyboardEditingBeginsAction?(self)
+    }
+    
+    /// Executes the onTouchUpInsideAction
+    @objc
+    open func touchUpInsideAction() {
+        onTouchUpInsideAction?(self)
+    }
+    
+    // MARK: - Static Spacers
+    
+    /// An InputBarButtonItem that's spacing property is set to be .flexible
+    public static var flexibleSpace: InputBarButtonItem {
+        let item = InputBarButtonItem()
+        item.setSize(.zero, animated: false)
+        item.spacing = .flexible
+        return item
+    }
+    
+    /// An InputBarButtonItem that's spacing property is set to be .fixed with the width arguement
+    public static func fixedSpace(_ width: CGFloat) -> InputBarButtonItem {
+        let item = InputBarButtonItem()
+        item.setSize(.zero, animated: false)
+        item.spacing = .fixed(width)
+        return item
+    }
+}

+ 96 - 0
deltachat-ios/View/InputBarAccessoryView/InputBarSendButton.swift

@@ -0,0 +1,96 @@
+//
+//  InputBarSendButton.swift
+//  InputBarAccessoryView
+//
+//  Copyright © 2017-2019 Nathan Tannar.
+//
+//  Permission is hereby granted, free of charge, to any person obtaining a copy
+//  of this software and associated documentation files (the "Software"), to deal
+//  in the Software without restriction, including without limitation the rights
+//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+//  copies of the Software, and to permit persons to whom the Software is
+//  furnished to do so, subject to the following conditions:
+//
+//  The above copyright notice and this permission notice shall be included in all
+//  copies or substantial portions of the Software.
+//
+//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+//  SOFTWARE.
+//
+//  Created by Nathan Tannar on 8/18/17.
+//
+
+import UIKit
+
+open class InputBarSendButton: InputBarButtonItem {
+
+    /// A flag indicating the animation state of the `InputBarSendButton`
+    open private(set) var isAnimating: Bool = false
+
+    /// Accessor to modify the color of the activity view
+    open var activityViewColor: UIColor! {
+        get {
+            return activityView.color
+        }
+        set {
+            activityView.color = newValue
+        }
+    }
+
+    private let activityView: UIActivityIndicatorView = {
+        let view = UIActivityIndicatorView(style: .gray)
+        view.isUserInteractionEnabled = false
+        view.isHidden = true
+        return view
+    }()
+
+    public convenience init() {
+        self.init(frame: .zero)
+    }
+
+    public override init(frame: CGRect) {
+        super.init(frame: frame)
+        setupSendButton()
+    }
+
+    required public init?(coder aDecoder: NSCoder) {
+        super.init(coder: aDecoder)
+        setupSendButton()
+    }
+
+    private func setupSendButton() {
+        addSubview(activityView)
+    }
+
+    open override func layoutSubviews() {
+        super.layoutSubviews()
+        activityView.frame = bounds
+    }
+
+    /// Starts the animation of the activity view, hiding other elements
+    open func startAnimating() {
+        guard !isAnimating else { return }
+        defer { isAnimating = true }
+        activityView.startAnimating()
+        activityView.isHidden = false
+        // Setting isHidden doesn't hide the elements
+        titleLabel?.alpha = 0
+        imageView?.layer.transform = CATransform3DMakeScale(0.0, 0.0, 0.0)
+    }
+
+    /// Stops the animation of the activity view, shows other elements
+    open func stopAnimating() {
+        guard isAnimating else { return }
+        defer { isAnimating = false }
+        activityView.stopAnimating()
+        activityView.isHidden = true
+        titleLabel?.alpha = 1
+        imageView?.layer.transform = CATransform3DIdentity
+    }
+
+}

+ 0 - 0
Pods/InputBarAccessoryView/Sources/KeyboardManager/KeyboardEvent.swift → deltachat-ios/View/InputBarAccessoryView/KeyboardManager/KeyboardEvent.swift


+ 3 - 1
Pods/InputBarAccessoryView/Sources/KeyboardManager/KeyboardManager.swift → deltachat-ios/View/InputBarAccessoryView/KeyboardManager/KeyboardManager.swift

@@ -259,7 +259,9 @@ open class KeyboardManager: NSObject, UIGestureRecognizerDelegate {
     // MARK: - Helper Methods
     
     private func animateAlongside(_ notification: KeyboardNotification, animations: @escaping ()->Void) {
-        UIView.animate(withDuration: notification.timeInterval, delay: 0, options: [notification.animationOptions, .allowAnimatedContent, .beginFromCurrentState], animations: animations, completion: nil)
+        UIView.animate(withDuration: notification.timeInterval, delay: 0,
+                       options: [notification.animationOptions, .allowAnimatedContent, .beginFromCurrentState],
+                       animations: animations, completion: nil)
     }
     
     // MARK: - UIGestureRecognizerDelegate

+ 0 - 0
Pods/InputBarAccessoryView/Sources/KeyboardManager/KeyboardNotification.swift → deltachat-ios/View/InputBarAccessoryView/KeyboardManager/KeyboardNotification.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Models/HorizontalEdgeInsets.swift.swift → deltachat-ios/View/InputBarAccessoryView/Models/HorizontalEdgeInsets.swift.swift


+ 4 - 8
Pods/InputBarAccessoryView/Sources/Models/NSConstraintLayoutSet.swift → deltachat-ios/View/InputBarAccessoryView/Models/NSConstraintLayoutSet.swift

@@ -39,14 +39,10 @@ class NSLayoutConstraintSet {
     var width: NSLayoutConstraint?
     var height: NSLayoutConstraint?
     
-    public init(top: NSLayoutConstraint? = nil,
-                bottom: NSLayoutConstraint? = nil,
-                left: NSLayoutConstraint? = nil,
-                right: NSLayoutConstraint? = nil,
-                centerX: NSLayoutConstraint? = nil,
-                centerY: NSLayoutConstraint? = nil,
-                width: NSLayoutConstraint? = nil,
-                height: NSLayoutConstraint? = nil) {
+    public init(top: NSLayoutConstraint? = nil, bottom: NSLayoutConstraint? = nil,
+                left: NSLayoutConstraint? = nil, right: NSLayoutConstraint? = nil,
+                centerX: NSLayoutConstraint? = nil, centerY: NSLayoutConstraint? = nil,
+                width: NSLayoutConstraint? = nil, height: NSLayoutConstraint? = nil) {
         self.top = top
         self.bottom = bottom
         self.left = left

+ 4 - 4
Pods/InputBarAccessoryView/Sources/Plugins/AttachmentManager/AttachmentManager.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AttachmentManager/AttachmentManager.swift

@@ -76,7 +76,7 @@ open class AttachmentManager: NSObject, InputPlugin {
     open func reloadData() {
         attachmentView.reloadData()
         delegate?.attachmentManager(self, didReloadTo: attachments)
-        delegate?.attachmentManager(self, shouldBecomeVisible: attachments.count > 0 || isPersistent)
+        delegate?.attachmentManager(self, shouldBecomeVisible: !attachments.isEmpty || isPersistent)
     }
     
     /// Invalidates the `AttachmentManagers` session by removing all attachments
@@ -117,7 +117,7 @@ open class AttachmentManager: NSObject, InputPlugin {
         }, completion: { success in
             self.attachmentView.reloadData()
             self.delegate?.attachmentManager(self, didInsert: attachment, at: index)
-            self.delegate?.attachmentManager(self, shouldBecomeVisible: self.attachments.count > 0 || self.isPersistent)
+            self.delegate?.attachmentManager(self, shouldBecomeVisible: !self.attachments.isEmpty || self.isPersistent)
         })
     }
     
@@ -133,7 +133,7 @@ open class AttachmentManager: NSObject, InputPlugin {
         }, completion: { success in
             self.attachmentView.reloadData()
             self.delegate?.attachmentManager(self, didRemove: attachment, at: index)
-            self.delegate?.attachmentManager(self, shouldBecomeVisible: self.attachments.count > 0 || self.isPersistent)
+            self.delegate?.attachmentManager(self, shouldBecomeVisible: !self.attachments.isEmpty || self.isPersistent)
         })
     }
     
@@ -146,7 +146,7 @@ extension AttachmentManager: UICollectionViewDataSource, UICollectionViewDelegat
     final public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
         if indexPath.row == attachments.count {
             delegate?.attachmentManager(self, didSelectAddAttachmentAt: indexPath.row)
-            delegate?.attachmentManager(self, shouldBecomeVisible: attachments.count > 0 || isPersistent)
+            delegate?.attachmentManager(self, shouldBecomeVisible: !attachments.isEmpty || isPersistent)
         }
     }
     

+ 0 - 0
Pods/InputBarAccessoryView/Sources/Plugins/AttachmentManager/Protocols/AttachmentManagerDataSource.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AttachmentManager/Protocols/AttachmentManagerDataSource.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Plugins/AttachmentManager/Protocols/AttachmentManagerDelegate.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AttachmentManager/Protocols/AttachmentManagerDelegate.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Plugins/AttachmentManager/Views/AttachmentCell.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AttachmentManager/Views/AttachmentCell.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Plugins/AttachmentManager/Views/AttachmentsView.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AttachmentManager/Views/AttachmentsView.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Plugins/AttachmentManager/Views/ImageAttachmentCell.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AttachmentManager/Views/ImageAttachmentCell.swift


+ 5 - 2
Pods/InputBarAccessoryView/Sources/Plugins/AutocompleteManager/AutocompleteManager.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/AutocompleteManager.swift

@@ -429,14 +429,17 @@ open class AutocompleteManager: NSObject, InputPlugin, UITextViewDelegate, UITab
                     let nothing = NSAttributedString(string: "", attributes: typingTextAttributes)
 
                     let textToReplace = textView.attributedText.attributedSubstring(from: subrange).string
-                    guard deleteCompletionByParts, let delimiterRange = textToReplace.rangeOfCharacter(from: .whitespacesAndNewlines, options: .backwards, range: Range(subrange, in: textToReplace)) else {
+                    guard deleteCompletionByParts,
+                            let delimiterRange = textToReplace.rangeOfCharacter(from: .whitespacesAndNewlines,
+                                                                                options: .backwards,
+                                                                                range: Range(subrange, in: textToReplace)) else {
                         // Replace entire autocomplete
                         textView.attributedText = textView.attributedText.replacingCharacters(in: subrange, with: nothing)
                         textView.selectedRange = NSRange(location: subrange.location, length: 0)
                         return
                     }
                     // Delete up to delimiter
-                    let delimiterLocation = delimiterRange.lowerBound.utf16Offset(in: textToReplace)
+                    let delimiterLocation = delimiterRange.lowerBound.encodedOffset
                     let length = subrange.length - delimiterLocation
                     let rangeFromDelimiter = NSRange(location: delimiterLocation + subrange.location, length: length)
                     textView.attributedText = textView.attributedText.replacingCharacters(in: rangeFromDelimiter, with: nothing)

+ 0 - 0
Pods/InputBarAccessoryView/Sources/Plugins/AutocompleteManager/Models/AutocompleteCompletion.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/Models/AutocompleteCompletion.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Plugins/AutocompleteManager/Models/AutocompleteSession.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/Models/AutocompleteSession.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Plugins/AutocompleteManager/Protocols/AutocompleteManagerDataSource.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/Protocols/AutocompleteManagerDataSource.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Plugins/AutocompleteManager/Protocols/AutocompleteManagerDelegate.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/Protocols/AutocompleteManagerDelegate.swift


+ 2 - 1
Pods/InputBarAccessoryView/Sources/Plugins/AutocompleteManager/Views/AutocompleteCell.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/Views/AutocompleteCell.swift

@@ -84,7 +84,8 @@ open class AutocompleteCell: UITableViewCell {
         super.layoutSubviews()
         guard let imageViewFrame = imageView?.frame else { return }
         let imageViewOrigin = CGPoint(x: imageViewFrame.origin.x + imageViewEdgeInsets.left, y: imageViewFrame.origin.y + imageViewEdgeInsets.top)
-        let imageViewSize = CGSize(width: imageViewFrame.size.width - imageViewEdgeInsets.left - imageViewEdgeInsets.right, height: imageViewFrame.size.height - imageViewEdgeInsets.top - imageViewEdgeInsets.bottom)
+        let imageViewSize = CGSize(width: imageViewFrame.size.width - imageViewEdgeInsets.left - imageViewEdgeInsets.right,
+                                   height: imageViewFrame.size.height - imageViewEdgeInsets.top - imageViewEdgeInsets.bottom)
         imageView?.frame = CGRect(origin: imageViewOrigin, size: imageViewSize)
     }
     

+ 0 - 0
Pods/InputBarAccessoryView/Sources/Plugins/AutocompleteManager/Views/AutocompleteTableView.swift → deltachat-ios/View/InputBarAccessoryView/Plugins/AutocompleteManager/Views/AutocompleteTableView.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Protocols/InputBarAccessoryViewDelegate.swift → deltachat-ios/View/InputBarAccessoryView/Protocols/InputBarAccessoryViewDelegate.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Protocols/InputItem.swift → deltachat-ios/View/InputBarAccessoryView/Protocols/InputItem.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Protocols/InputPlugin.swift → deltachat-ios/View/InputBarAccessoryView/Protocols/InputPlugin.swift


+ 185 - 0
deltachat-ios/View/InputBarAccessoryView/RxInputBarAccessoryView/RxInputBarAccessoryView.swift

@@ -0,0 +1,185 @@
+//
+//  RxInputBarAccessoryView.swift
+//  InputBarAccessoryView
+//
+//  Copyright © 2017-2019 Nathan Tannar.
+//
+//  Permission is hereby granted, free of charge, to any person obtaining a copy
+//  of this software and associated documentation files (the "Software"), to deal
+//  in the Software without restriction, including without limitation the rights
+//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+//  copies of the Software, and to permit persons to whom the Software is
+//  furnished to do so, subject to the following conditions:
+//
+//  The above copyright notice and this permission notice shall be included in all
+//  copies or substantial portions of the Software.
+//
+//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+//  SOFTWARE.
+//
+//  Created by Nathan Tannar on 9/13/18.
+//
+
+import UIKit
+#if canImport(RxSwift) && canImport(RxCocoa)
+import RxSwift
+import RxCocoa
+
+final class RxInputBarAccessoryViewDelegate:
+    DelegateProxy<InputBarAccessoryView, InputBarAccessoryViewDelegate>,
+    DelegateProxyType,
+InputBarAccessoryViewDelegate {
+
+    let sendText = PublishSubject<String>()
+    let currentText = PublishSubject<String>()
+    let intrinsicContentSize = PublishSubject<CGSize>()
+    let swipeGesture = PublishSubject<UISwipeGestureRecognizer>()
+
+    func inputBar(_ inputBar: InputBarAccessoryView, didPressSendButtonWith text: String) {
+        sendText.onNext(text)
+    }
+
+    func inputBar(_ inputBar: InputBarAccessoryView, textViewTextDidChangeTo text: String) {
+        currentText.onNext(text)
+    }
+
+    func inputBar(_ inputBar: InputBarAccessoryView, didChangeIntrinsicContentTo size: CGSize) {
+        intrinsicContentSize.onNext(size)
+    }
+
+    func inputBar(_ inputBar: InputBarAccessoryView, didSwipeTextViewWith gesture: UISwipeGestureRecognizer) {
+        swipeGesture.onNext(gesture)
+    }
+
+    static func registerKnownImplementations() {
+        register {
+            RxInputBarAccessoryViewDelegate(
+                parentObject: $0,
+                delegateProxy: RxInputBarAccessoryViewDelegate.self
+            )
+        }
+    }
+
+    static func currentDelegate(for object: InputBarAccessoryView) -> InputBarAccessoryViewDelegate? {
+        return object.delegate
+    }
+
+    static func setCurrentDelegate(_ delegate: InputBarAccessoryViewDelegate?, to object: InputBarAccessoryView) {
+        object.delegate = delegate
+    }
+}
+
+extension InputBarAccessoryView {
+    var rxDelegate: RxInputBarAccessoryViewDelegate {
+        return RxInputBarAccessoryViewDelegate.proxy(for: self)
+    }
+}
+
+extension Reactive where Base: InputBarAccessoryView {
+    public var isTranslucent: Binder<Bool> {
+        return Binder(base) { inputBar, newValue in
+            inputBar.isTranslucent = newValue
+        }
+    }
+
+    public var shouldAutoUpdateMaxTextViewHeight: Binder<Bool> {
+        return Binder(base) { inputBar, newValue in
+            inputBar.shouldAutoUpdateMaxTextViewHeight = newValue
+        }
+    }
+
+    public var maxTextViewHeight: Binder<CGFloat> {
+        return Binder(base) { inputBar, newValue in
+            inputBar.maxTextViewHeight = newValue
+        }
+    }
+
+    public var shouldManageSendButtonEnabledState: Binder<Bool> {
+        return Binder(base) { inputBar, newValue in
+            inputBar.shouldManageSendButtonEnabledState = newValue
+        }
+    }
+
+    public var leftStackViewItems: Binder<[InputItem]> {
+        return Binder(base) { inputBar, newValue in
+            inputBar.setStackViewItems(newValue, forStack: .left, animated: false)
+        }
+    }
+
+    public var rightStackViewItems: Binder<[InputItem]> {
+        return Binder(base) { inputBar, newValue in
+            inputBar.setStackViewItems(newValue, forStack: .right, animated: false)
+        }
+    }
+
+    public var topStackViewItems: Binder<[InputItem]> {
+        return Binder(base) { inputBar, newValue in
+            inputBar.setStackViewItems(newValue, forStack: .top, animated: false)
+        }
+    }
+
+    public var bottomStackViewItems: Binder<[InputItem]> {
+        return Binder(base) { inputBar, newValue in
+            inputBar.setStackViewItems(newValue, forStack: .bottom, animated: false)
+        }
+    }
+
+    public var leftStackViewWidthConstant: Binder<CGFloat> {
+        return Binder(base) { inputBar, newValue in
+            inputBar.setLeftStackViewWidthConstant(to: newValue, animated: false)
+        }
+    }
+
+    public var rightStackViewWidthConstant: Binder<CGFloat> {
+        return Binder(base) { inputBar, newValue in
+            inputBar.setRightStackViewWidthConstant(to: newValue, animated: false)
+        }
+    }
+
+    public var shouldForceMaxTextViewHeight: Binder<Bool> {
+        return Binder(base) { inputBar, newValue in
+            inputBar.setShouldForceMaxTextViewHeight(to: newValue, animated: false)
+        }
+    }
+}
+
+extension Reactive where Base: InputBarButtonItem {
+    public var size: Binder<CGSize?> {
+        return Binder(base) { item, newValue in
+            item.setSize(newValue, animated: false)
+        }
+    }
+
+    public var spacing: Binder<InputBarButtonItem.Spacing> {
+        return Binder(base) { item, newValue in
+            item.spacing = newValue
+        }
+    }
+}
+
+extension Reactive where Base: InputBarSendButton {
+    public var isAnimating: Binder<Bool> {
+        return Binder(base) { item, newValue in
+            if newValue {
+                item.startAnimating()
+            } else {
+                item.stopAnimating()
+            }
+        }
+    }
+}
+
+extension Reactive where Base: InputBarViewController {
+    public var isInputBarHidden: Binder<Bool> {
+        return Binder(base) { viewController, newValue in
+            viewController.isInputBarHidden = newValue
+        }
+    }
+}
+
+#endif

+ 24 - 0
deltachat-ios/View/InputBarAccessoryView/Supporting Files/Info.plist

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleShortVersionString</key>
+	<string>4.2.1</string>
+	<key>CFBundleVersion</key>
+	<string>$(CURRENT_PROJECT_VERSION)</string>
+	<key>NSPrincipalClass</key>
+	<string></string>
+</dict>
+</plist>

+ 0 - 0
Pods/InputBarAccessoryView/Sources/Supporting Files/InputBarAccessoryView+Availability.swift → deltachat-ios/View/InputBarAccessoryView/Supporting Files/InputBarAccessoryView+Availability.swift


+ 19 - 0
deltachat-ios/View/InputBarAccessoryView/Supporting Files/InputBarAccessoryView-Bridging-Header.h

@@ -0,0 +1,19 @@
+//
+//  InputBarAccessoryView.h
+//  InputBarAccessoryView
+//
+//  Created by Nathan Tannar on 8/18/17.
+//  Copyright © 2017-2019 Nathan Tannar. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+//! Project version number for InputBarAccessoryView.
+FOUNDATION_EXPORT double InputBarAccessoryViewVersionNumber;
+
+//! Project version string for InputBarAccessoryView.
+FOUNDATION_EXPORT const unsigned char InputBarAccessoryViewVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <InputBarAccessoryView/PublicHeader.h>
+
+

+ 0 - 0
Pods/InputBarAccessoryView/Sources/ViewControllers/InputBarViewController.swift → deltachat-ios/View/InputBarAccessoryView/ViewControllers/InputBarViewController.swift


+ 0 - 0
Pods/InputBarAccessoryView/Sources/Views/InputStackView.swift → deltachat-ios/View/InputBarAccessoryView/Views/InputStackView.swift


+ 2 - 2
Pods/InputBarAccessoryView/Sources/Views/InputTextView.swift → deltachat-ios/View/InputBarAccessoryView/Views/InputTextView.swift

@@ -348,7 +348,7 @@ open class InputTextView: UITextView {
         }
         
         var curLocation = 0
-        if attachments.count == 0 {
+        if attachments.isEmpty {
             let text = attributedText.string.trimmingCharacters(in: .whitespacesAndNewlines)
             if !text.isEmpty {
                 components.append(text)
@@ -383,7 +383,7 @@ open class InputTextView: UITextView {
     @objc
     private func redrawTextAttachments() {
         
-        guard images.count > 0 else { return }
+        guard !images.isEmpty else { return }
         let range = NSRange(location: 0, length: attributedText.length)
         attributedText.enumerateAttribute(.attachment, in: range, options: [], using: { value, _, _ -> Void in
             if let attachment = value as? NSTextAttachment, let image = attachment.image {

+ 0 - 0
Pods/InputBarAccessoryView/Sources/Views/SeparatorLine.swift → deltachat-ios/View/InputBarAccessoryView/Views/SeparatorLine.swift


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.