summaryrefslogtreecommitdiff
path: root/Juick
diff options
context:
space:
mode:
Diffstat (limited to 'Juick')
-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
6 files changed, 15 insertions, 339 deletions
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