summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Juick.xcodeproj/project.pbxproj41
-rw-r--r--Juick/CoreDataStack.h189
-rw-r--r--Juick/CoreDataStack.m133
-rw-r--r--Juick/Views/BubbleMessageCell.xib18
-rw-r--r--Juick/Views/ConversationCell.xib7
-rw-r--r--Juick/Views/MessageInputView.xib7
-rw-r--r--Juick/buttons.pngbin2392 -> 0 bytes
-rw-r--r--JuickTests/JuickTests.m36
-rw-r--r--JuickTests/Supporting Files/JuickTests-Info.plist22
-rw-r--r--JuickTests/Supporting Files/en.lproj/InfoPlist.strings2
10 files changed, 15 insertions, 440 deletions
diff --git a/Juick.xcodeproj/project.pbxproj b/Juick.xcodeproj/project.pbxproj
index cd9032d..3b9d2fd 100644
--- a/Juick.xcodeproj/project.pbxproj
+++ b/Juick.xcodeproj/project.pbxproj
@@ -32,7 +32,6 @@
774153CE1F92A61500A19A50 /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 774153CD1F92A61500A19A50 /* UserNotifications.framework */; };
77418CBD182FB9B6004111B7 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77418CBC182FB9B6004111B7 /* ImageIO.framework */; };
774528C21F930C06004D110B /* Attachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 774528C11F930C06004D110B /* Attachment.m */; };
- 774528C51F93AC0F004D110B /* CoreDataStack.m in Sources */ = {isa = PBXBuildFile; fileRef = 774528C41F93AC0F004D110B /* CoreDataStack.m */; };
7761133821766A3000D350CD /* ContentLoadingCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 7761133621766A3000D350CD /* ContentLoadingCell.m */; };
7761133921766A3000D350CD /* ContentLoadingCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7761133721766A3000D350CD /* ContentLoadingCell.xib */; };
776C41BD1FD3EF180063B82E /* MessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 776C41BB1FD3EF180063B82E /* MessageCell.m */; };
@@ -49,7 +48,6 @@
77B8DCD62093FC03000DBB04 /* BlogViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 77B8DCD52093FC03000DBB04 /* BlogViewController.m */; };
77C67EE51828342000427098 /* NSURL+PathParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 77C67EE41828342000427098 /* NSURL+PathParameters.m */; };
77C67EE81828379700427098 /* ColorScheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 77C67EE71828379700427098 /* ColorScheme.m */; };
- 77C67EEA18283C8D00427098 /* buttons.png in Resources */ = {isa = PBXBuildFile; fileRef = 77C67EE918283C8D00427098 /* buttons.png */; };
77C67EEC18283F2D00427098 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77C67EEB18283F2D00427098 /* QuartzCore.framework */; };
77C6ADDE1F770EB2000AEA8C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 77C6ADDD1F770EB2000AEA8C /* Main.storyboard */; };
77C6ADE41F7717BC000AEA8C /* ThreadViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 77C6ADE31F7717BC000AEA8C /* ThreadViewController.m */; };
@@ -75,9 +73,6 @@
77317BC0181BBE8500D60005 /* MessagesViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessagesViewController.h; sourceTree = "<group>"; };
77317BC1181BBE8500D60005 /* MessagesViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessagesViewController.m; sourceTree = "<group>"; };
77317BC6181BBE8500D60005 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
- 77317BD5181BBE8500D60005 /* JuickTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "JuickTests-Info.plist"; sourceTree = "<group>"; };
- 77317BD7181BBE8500D60005 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
- 77317BD9181BBE8500D60005 /* JuickTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JuickTests.m; sourceTree = "<group>"; };
773E6391204BCAD6008B8F8D /* BubbleMessageCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BubbleMessageCell.xib; sourceTree = "<group>"; };
773E6392204BCAD6008B8F8D /* ConversationCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConversationCell.xib; sourceTree = "<group>"; };
773E6395204BCB64008B8F8D /* ConversationCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConversationCell.h; sourceTree = "<group>"; };
@@ -101,8 +96,6 @@
77418CBC182FB9B6004111B7 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; };
774528C01F930C06004D110B /* Attachment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Attachment.h; sourceTree = "<group>"; };
774528C11F930C06004D110B /* Attachment.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Attachment.m; sourceTree = "<group>"; };
- 774528C31F93AC0F004D110B /* CoreDataStack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreDataStack.h; sourceTree = "<group>"; };
- 774528C41F93AC0F004D110B /* CoreDataStack.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CoreDataStack.m; sourceTree = "<group>"; };
774528C91F93EE83004D110B /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; };
774528CB1F93EE9F004D110B /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
774528CD1F96B39C004D110B /* Juick.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Juick.entitlements; sourceTree = "<group>"; };
@@ -133,7 +126,6 @@
77C67EE41828342000427098 /* NSURL+PathParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSURL+PathParameters.m"; sourceTree = "<group>"; };
77C67EE61828379700427098 /* ColorScheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorScheme.h; sourceTree = "<group>"; };
77C67EE71828379700427098 /* ColorScheme.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ColorScheme.m; sourceTree = "<group>"; };
- 77C67EE918283C8D00427098 /* buttons.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = buttons.png; sourceTree = "<group>"; };
77C67EEB18283F2D00427098 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
77C6ADDD1F770EB2000AEA8C /* Main.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
77C6ADE21F7717BC000AEA8C /* ThreadViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThreadViewController.h; sourceTree = "<group>"; };
@@ -174,7 +166,6 @@
children = (
77317BAA181BBE8500D60005 /* Frameworks */,
77317BB1181BBE8500D60005 /* Juick */,
- 77317BD3181BBE8500D60005 /* JuickTests */,
77317BA9181BBE8500D60005 /* Products */,
F5489793EBFBBE7FFA7ABC1E /* Pods */,
);
@@ -224,10 +215,7 @@
77317BBA181BBE8500D60005 /* AppDelegate.h */,
77317BBB181BBE8500D60005 /* AppDelegate.m */,
77317BC6181BBE8500D60005 /* Images.xcassets */,
- 77C67EE918283C8D00427098 /* buttons.png */,
77C6ADDD1F770EB2000AEA8C /* Main.storyboard */,
- 774528C31F93AC0F004D110B /* CoreDataStack.h */,
- 774528C41F93AC0F004D110B /* CoreDataStack.m */,
);
path = Juick;
sourceTree = "<group>";
@@ -244,24 +232,6 @@
path = "Supporting Files";
sourceTree = "<group>";
};
- 77317BD3181BBE8500D60005 /* JuickTests */ = {
- isa = PBXGroup;
- children = (
- 77317BD4181BBE8500D60005 /* Supporting Files */,
- 77317BD9181BBE8500D60005 /* JuickTests.m */,
- );
- path = JuickTests;
- sourceTree = "<group>";
- };
- 77317BD4181BBE8500D60005 /* Supporting Files */ = {
- isa = PBXGroup;
- children = (
- 77317BD6181BBE8500D60005 /* InfoPlist.strings */,
- 77317BD5181BBE8500D60005 /* JuickTests-Info.plist */,
- );
- path = "Supporting Files";
- sourceTree = "<group>";
- };
774DD45D1D735DDD00C7F290 /* Model */ = {
isa = PBXGroup;
children = (
@@ -418,7 +388,6 @@
buildActionMask = 2147483647;
files = (
77317BC7181BBE8500D60005 /* Images.xcassets in Resources */,
- 77C67EEA18283C8D00427098 /* buttons.png in Resources */,
773F23391F76ED5E00B5B0DF /* Splash@3x.png in Resources */,
77B8B399207A52BD005CB20C /* MessageInputView.xib in Resources */,
77C6ADDE1F770EB2000AEA8C /* Main.storyboard in Resources */,
@@ -497,7 +466,6 @@
773E639D204BD0F2008B8F8D /* Chat.m in Sources */,
77B8DCD62093FC03000DBB04 /* BlogViewController.m in Sources */,
773E639A204BCE6D008B8F8D /* DialogsViewController.m in Sources */,
- 774528C51F93AC0F004D110B /* CoreDataStack.m in Sources */,
77B09994189D0B9900A84F59 /* UIImage+Utils.m in Sources */,
77317BC2181BBE8500D60005 /* MessagesViewController.m in Sources */,
77B099A6189D57F000A84F59 /* User.m in Sources */,
@@ -528,15 +496,6 @@
path = .;
sourceTree = "<group>";
};
- 77317BD6181BBE8500D60005 /* InfoPlist.strings */ = {
- isa = PBXVariantGroup;
- children = (
- 77317BD7181BBE8500D60005 /* en */,
- );
- name = InfoPlist.strings;
- path = .;
- sourceTree = "<group>";
- };
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
diff --git a/Juick/CoreDataStack.h b/Juick/CoreDataStack.h
deleted file mode 100644
index b430654..0000000
--- a/Juick/CoreDataStack.h
+++ /dev/null
@@ -1,189 +0,0 @@
-//
-// CoreDataStack.h
-// Juick
-//
-// Created by Vitaly Takmazov on 15/10/2017.
-// Copyright © 2017 com.juick. All rights reserved.
-//
-
-@import Foundation;
-@import CoreData;
-
-NS_ASSUME_NONNULL_BEGIN
-
-API_AVAILABLE(macosx(10.12),ios(10.0),tvos(10.0),watchos(3.0))
-@interface CoreDataStack : NSObject
-
-/**
- The default directory for the persistent stores on the current platform.
- @return An `NSURL` for the directory containing the persistent store(s). If the
- persistent store does not exist it will be created by default in this location
- when loaded.
- */
-+ (NSURL *)defaultDirectoryURL;
-
-///---------------------
-/// @name Properties
-///---------------------
-
-/**
- A read-only flag indicating if the persistent store is loaded.
- */
-@property (readonly, assign, getter=isStoreLoaded) BOOL storeLoaded;
-
-/**
- The managed object context associated with the main queue (read-only). To
- perform tasks on a private background queue see `performBackgroundTask:` and
- `newPrivateContext`.
- The context is configured to be generational and to automatically consume save
- notifications from other contexts.
- */
-@property (readonly, strong) NSManagedObjectContext *viewContext;
-
-/**
- The `URL` of the persistent store for this Core Data Stack. If there are more
- than one stores this property returns the first store it finds. The store may
- not yet exist. It will be created at this URL by default when first loaded.
-
- This is a readonly property to create a persistent store in a different
- location use `loadStoreAtURL:withCompletionHandler`. To move an existing
- persistent store use `replacePersistentStoreAtURL:withPersistentStoreFromURL:`.
- */
-@property (readonly, copy) NSURL *storeURL;
-
-/**
- A flag that indicates whether this store is read-only. Set this value to YES
- before loading the persistent store if you want a read-only store (for example
- if you are loading a store from the application bundle).
-
- Default is NO.
- */
-@property (assign, getter=isReadOnly) BOOL readOnly;
-
-/**
- A flag that indicates whether the store is added asynchronously. Set this
- value before loading the persistent store.
-
- Default is YES.
- */
-@property (assign) BOOL shouldAddStoreAsynchronously;
-
-/**
- A flag that indicates whether the store should be migrated
- automatically if the store model version does not match the
- coordinators model version.
-
- Set this value before loading the persistent store.
- Default is YES.
- */
-@property (assign) BOOL shouldMigrateStoreAutomatically;
-
-/**
- A flag that indicates whether a mapping model should be inferred
- when migrating a store.
- Set this value before loading the persistent store.
-
- Default is YES.
- */
-@property (assign) BOOL shouldInferMappingModelAutomatically;
-
-///---------------------
-/// @name Initialization
-///---------------------
-
-- (instancetype)init NS_UNAVAILABLE;
-
-/**
- Creates and returns a `CoreDataController` object. This is the designated
- initializer for the class. It creates the managed object model, persistent
- store coordinator and main managed object context but does not load the
- persistent store.
-
- @param name The name of the `NSManagedObjectModel` and by default the name used
- for the persistent store
- @return A `CoreDataController` object initialized with the given name.
- */
-- (instancetype)initWithName:(NSString *)name NS_DESIGNATED_INITIALIZER;
-
-///---------------------------------
-/// @name Loading a Persistent Store
-///---------------------------------
-
-/**
- Load the persistent store.
- @param handler This handler block is executed on the calling thread when the
- loading of the persistent store has completed.
-
- To override the default name and location of the persistent store use
- `loadStoreAtURL:withCompletionHandler:`.
- */
-- (void)loadStoreWithCompletionHandler:(void(^)(NSError *))handler;
-
-/**
- Load the persistent store.
- @param storeURL The URL for the location of the persistent store. It will be created if it does not exist.
- @param handler This handler block is executed on the calling thread when the
- loading of the persistent store has completed.
- */
-- (void)loadStoreAtURL:(NSURL *)storeURL withCompletionHandler:(void(^)(NSError * _Nullable))handler;
-
-///----------------------------------
-/// @name Managing a Persistent Store
-///----------------------------------
-
-/**
- A flag indicating if the persistent store exists at the specified URL.
- @param storeURL An `NSURL` object for the location of the peristent store.
- @return YES if a file exists at the specified URL otherwise NO.
- @warning This method checks if a file exists at the specified location but
- does not verify if it is a valid persistent store.
- */
-- (BOOL)persistentStoreExistsAtURL:(NSURL *)storeURL;
-
-/**
- Replace a persistent store.
- @param destinationURL An `NSURL` for the persistent store to be replaced.
- @param sourceURL An `NSURL` for the source persistent store.
- @return A flag indicating if the operation was successful.
- */
-- (BOOL)replacePersistentStoreAtURL:(NSURL *)destinationURL withPersistentStoreFromURL:(NSURL *)sourceURL;
-
-/**
- Destroy a persistent store.
- @param storeURL An `NSURL` for the persistent store to be destroyed.
- @return A flag indicating if the operation was successful.
- */
-- (BOOL)destroyPersistentStoreAtURL:(NSURL *)storeURL;
-
-///----------------------------------
-/// @name Performing Background tasks
-///----------------------------------
-
-/**
- Execute a block on a new private queue context.
- @param block A block to execute on a newly created private context. The context
- is passed to the block as a paramater.
- */
-- (void)performBackgroundTask:(void(^)(NSManagedObjectContext *))block;
-
-/**
- Create and return a new private queue `NSManagedObjectContext`. The new context
- is set to consume `NSManagedObjectContextSave` broadcasts automatically.
- @return A new private managed object context.
- */
-- (NSManagedObjectContext *)newPrivateContext NS_RETURNS_RETAINED;
-
-///------------------------
-/// @name NSManagedObjectID
-///------------------------
-
-/**
- Return an object ID for the specified URI representation if a matching
- store is available.
- @param url An `NSURL` containing a URI of a managed object.
- @return An `NSManagedObjectID` or `nil`.
- */
-- (NSManagedObjectID *)managedObjectIDForURIRepresentation:(NSURL *)url;
-
-@end
-NS_ASSUME_NONNULL_END
diff --git a/Juick/CoreDataStack.m b/Juick/CoreDataStack.m
deleted file mode 100644
index 6122731..0000000
--- a/Juick/CoreDataStack.m
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// CoreDataStack.m
-// Juick
-//
-// Created by Vitaly Takmazov on 15/10/2017.
-// Copyright © 2017 com.juick. All rights reserved.
-//
-
-#import "CoreDataStack.h"
-
-@interface CoreDataStack ()
-@property (nonatomic, getter=isStoreLoaded) BOOL storeLoaded;
-@property (nonatomic, strong) NSPersistentContainer *persistentContainer;
-@end
-
-@implementation CoreDataStack
-
-+ (NSURL *)defaultDirectoryURL {
- return [NSPersistentContainer defaultDirectoryURL];
-}
-
-- (instancetype)initWithName:(NSString *)name {
-
- NSManagedObjectModel *mom = [NSManagedObjectModel mergedModelFromBundles:nil];
- if (mom == nil) return nil;
-
- self = [super init];
- if (self) {
- _storeLoaded = NO;
- _shouldAddStoreAsynchronously = YES;
- _shouldMigrateStoreAutomatically = YES;
- _shouldInferMappingModelAutomatically = YES;
- _readOnly = NO;
- _persistentContainer = [NSPersistentContainer persistentContainerWithName:name managedObjectModel:mom];
- _persistentContainer.viewContext.automaticallyMergesChangesFromParent = YES;
- }
- return self;
-}
-
-- (void)loadStoreWithCompletionHandler:(void(^)(NSError *))handler {
-
- [self loadStoreAtURL:self.storeURL withCompletionHandler:handler];
-}
-
-- (void)loadStoreAtURL:(NSURL *)storeURL withCompletionHandler:(void(^)(NSError *))handler {
-
- if (!self.persistentContainer) {
- NSError *error = [NSError errorWithDomain:NSCocoaErrorDomain code:NSNotFound userInfo:nil];
- if (handler) {
- dispatch_async(dispatch_get_main_queue(), ^{
- handler(error);
- });
- }
- return;
- }
-
- self.persistentContainer.persistentStoreDescriptions = @[[self storeDescriptionWithURL:storeURL]];
- [self.persistentContainer loadPersistentStoresWithCompletionHandler:
- ^(NSPersistentStoreDescription *storeDescription, NSError *error) {
- if (error == nil) {
- self.storeLoaded = YES;
- }
- if (handler) {
- dispatch_async(dispatch_get_main_queue(), ^{
- handler(error);
- });
- }
- }];
-}
-
-- (BOOL)persistentStoreExistsAtURL:(NSURL *)storeURL {
-
- if (storeURL.isFileURL &&
- [NSFileManager.defaultManager fileExistsAtPath:storeURL.path]) {
- return YES;
- }
- return NO;
-}
-
-- (NSURL *)storeURL {
- NSArray *descriptions = self.persistentContainer.persistentStoreDescriptions;
- NSPersistentStoreDescription *description = [descriptions firstObject];
- return description.URL;
-}
-
-- (BOOL)destroyPersistentStoreAtURL:(NSURL *)storeURL {
-
- NSError *error = nil;
- BOOL result = [self.persistentContainer.persistentStoreCoordinator destroyPersistentStoreAtURL:storeURL withType:NSSQLiteStoreType options:nil error:&error];
- return result;
-}
-
-- (BOOL)replacePersistentStoreAtURL:(NSURL *)destinationURL withPersistentStoreFromURL:(NSURL *)sourceURL {
-
- NSError *error = nil;
- BOOL result = [self.persistentContainer.persistentStoreCoordinator replacePersistentStoreAtURL:destinationURL destinationOptions:nil withPersistentStoreFromURL:sourceURL sourceOptions:nil storeType:NSSQLiteStoreType error:&error];
- return result;
-}
-
-- (NSManagedObjectContext *)viewContext {
-
- return self.persistentContainer.viewContext;
-}
-
-- (NSManagedObjectContext *)newPrivateContext {
-
- return [self.persistentContainer newBackgroundContext];
-}
-
-- (void)performBackgroundTask:(void(^)(NSManagedObjectContext *))block {
-
- [self.persistentContainer performBackgroundTask:block];
-}
-
-- (NSManagedObjectID *)managedObjectIDForURIRepresentation:(NSURL *)url {
- return [self.persistentContainer.persistentStoreCoordinator managedObjectIDForURIRepresentation:url];
-}
-
-#pragma mark -
-#pragma mark === Private methods ===
-#pragma mark -
-
-- (NSPersistentStoreDescription *)storeDescriptionWithURL:(NSURL *)URL {
-
- NSPersistentStoreDescription *description = [NSPersistentStoreDescription persistentStoreDescriptionWithURL:URL];
- description.shouldAddStoreAsynchronously = self.shouldAddStoreAsynchronously;
- description.shouldMigrateStoreAutomatically = self.shouldMigrateStoreAutomatically;
- description.shouldInferMappingModelAutomatically = self.shouldInferMappingModelAutomatically;
- description.readOnly = self.isReadOnly;
- return description;
-}
-
-@end
diff --git a/Juick/Views/BubbleMessageCell.xib b/Juick/Views/BubbleMessageCell.xib
index b88ab17..3f9670e 100644
--- a/Juick/Views/BubbleMessageCell.xib
+++ b/Juick/Views/BubbleMessageCell.xib
@@ -1,25 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14283.14"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="bubbleMessageCell" rowHeight="192" id="8qR-do-bgA" customClass="BubbleMessageCell">
- <rect key="frame" x="0.0" y="0.0" width="320" height="192"/>
+ <rect key="frame" x="0.0" y="0.0" width="377" height="192"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="8qR-do-bgA" id="PhM-Oe-eqm">
- <rect key="frame" x="0.0" y="0.0" width="320" height="191.5"/>
+ <rect key="frame" x="0.0" y="0.0" width="377" height="191.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillProportionally" alignment="center" spacing="12" translatesAutoresizingMaskIntoConstraints="NO" id="W9k-Ah-WF5">
- <rect key="frame" x="6" y="6" width="308" height="179.5"/>
+ <rect key="frame" x="6" y="6" width="365" height="179.5"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" spacing="6" translatesAutoresizingMaskIntoConstraints="NO" id="qtf-Wj-Irh">
<rect key="frame" x="0.0" y="60.5" width="42" height="58.5"/>
@@ -43,16 +43,16 @@
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="12" translatesAutoresizingMaskIntoConstraints="NO" id="xm7-By-6oe">
- <rect key="frame" x="54" y="0.0" width="254" height="179.5"/>
+ <rect key="frame" x="54" y="10.5" width="311" height="158.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" text="ermine" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UEj-yl-U0d">
- <rect key="frame" x="0.0" y="0.0" width="254" height="0.0"/>
+ <rect key="frame" x="0.0" y="0.0" width="311" height="16"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleFootnote"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="1000" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="1000" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yf3-FC-T1Y" customClass="FixedLabel">
- <rect key="frame" x="0.0" y="12" width="254" height="167.5"/>
+ <rect key="frame" x="0.0" y="28" width="311" height="130.5"/>
<string key="text">Lorem sdsdasds sdsada ddas dsad asdsadas dasd asdsa sadsa dasdsad asd asdas dasd asdas dasd asdas dasdasdasd asdasdasdadasdasd asdasd asdas dasdsa dasdasdasdasdas dasdas</string>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
@@ -79,7 +79,7 @@
<outlet property="name" destination="UEj-yl-U0d" id="unG-q9-Kwv"/>
<outlet property="unreadMarker" destination="5rl-Qo-5oW" id="an8-JJ-Gbb"/>
</connections>
- <point key="canvasLocation" x="461" y="234"/>
+ <point key="canvasLocation" x="610.39999999999998" y="216.79160419790108"/>
</tableViewCell>
</objects>
</document>
diff --git a/Juick/Views/ConversationCell.xib b/Juick/Views/ConversationCell.xib
index 504f7a4..65f9766 100644
--- a/Juick/Views/ConversationCell.xib
+++ b/Juick/Views/ConversationCell.xib
@@ -1,12 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
- <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14283.14"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@@ -77,7 +76,7 @@
<outlet property="lastMessage" destination="EiA-lG-gV5" id="Eq9-zQ-ivW"/>
<outlet property="unreadMarker" destination="jW2-kr-sJn" id="E5Q-wn-yln"/>
</connections>
- <point key="canvasLocation" x="-1164" y="-1"/>
+ <point key="canvasLocation" x="-1846" y="27"/>
</tableViewCell>
</objects>
</document>
diff --git a/Juick/Views/MessageInputView.xib b/Juick/Views/MessageInputView.xib
index 70fcdef..240391c 100644
--- a/Juick/Views/MessageInputView.xib
+++ b/Juick/Views/MessageInputView.xib
@@ -1,12 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
- <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14283.14"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@@ -53,7 +52,7 @@
<outlet property="bottomConstraint" destination="hsT-4s-U3s" id="b1V-Gk-1At"/>
<outlet property="textView" destination="Dkb-8O-5u6" id="6YC-Bn-7P6"/>
</connections>
- <point key="canvasLocation" x="-85" y="105"/>
+ <point key="canvasLocation" x="-387" y="95"/>
</visualEffectView>
</objects>
</document>
diff --git a/Juick/buttons.png b/Juick/buttons.png
deleted file mode 100644
index 14879e4..0000000
--- a/Juick/buttons.png
+++ /dev/null
Binary files differ
diff --git a/JuickTests/JuickTests.m b/JuickTests/JuickTests.m
deleted file mode 100644
index bb57f28..0000000
--- a/JuickTests/JuickTests.m
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// JuickTests.m
-// JuickTests
-//
-// Created by Vitaly Takmazov on 26.10.13.
-// Copyright (c) 2013 com.juick. All rights reserved.
-//
-
-#import <XCTest/XCTest.h>
-
-@interface JuickTests : XCTestCase
-
-@end
-
-@implementation JuickTests
-
-- (void)setUp
-{
- [super setUp];
- // Put setup code here. This method is called before the invocation of each test method in the class.
-}
-
-- (void)tearDown
-{
- // Put teardown code here. This method is called after the invocation of each test method in the class.
- [super tearDown];
-}
-
-- (void)testExample
-{
- NSNumberFormatter *f = [NSNumberFormatter new];
- f.numberStyle = NSNumberFormatterNoStyle;
- XCTAssertEqual(123456, [[f numberFromString:@"123456"] integerValue]);
-}
-
-@end
diff --git a/JuickTests/Supporting Files/JuickTests-Info.plist b/JuickTests/Supporting Files/JuickTests-Info.plist
deleted file mode 100644
index 169b6f7..0000000
--- a/JuickTests/Supporting Files/JuickTests-Info.plist
+++ /dev/null
@@ -1,22 +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>CFBundlePackageType</key>
- <string>BNDL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/JuickTests/Supporting Files/en.lproj/InfoPlist.strings b/JuickTests/Supporting Files/en.lproj/InfoPlist.strings
deleted file mode 100644
index 477b28f..0000000
--- a/JuickTests/Supporting Files/en.lproj/InfoPlist.strings
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Localized versions of Info.plist keys */
-