Skip to content

Commit

Permalink
Sockets & UI
Browse files Browse the repository at this point in the history
- send data
- refresh ui on new ws message
- remove avatar
- change send button and input placeholder
- no input while no companion
  • Loading branch information
stleon committed Nov 3, 2018
1 parent 45814d9 commit c12b79d
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 17 deletions.
10 changes: 4 additions & 6 deletions Chatios.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,26 @@
28DE88F30B32A4FD170C07B6 /* Pods_Chatios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF1647A50CF9A4300180BD9 /* Pods_Chatios.framework */; };
A4042ACD218C2CE3001E096D /* ChatViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4042ACC218C2CE3001E096D /* ChatViewController.swift */; };
A4042ACF218C3789001E096D /* WsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4042ACE218C3789001E096D /* WsManager.swift */; };
A4042AD3218CA84D001E096D /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4042AD2218CA84D001E096D /* Message.swift */; };
A4138989218A2B710052605C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4138988218A2B710052605C /* AppDelegate.swift */; };
A413898B218A2B710052605C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A413898A218A2B710052605C /* ViewController.swift */; };
A413898E218A2B710052605C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A413898C218A2B710052605C /* Main.storyboard */; };
A4138990218A2B730052605C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A413898F218A2B730052605C /* Assets.xcassets */; };
A4138993218A2B730052605C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A4138991218A2B730052605C /* LaunchScreen.storyboard */; };
A4BAEC90218D9974008337AD /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4BAEC8F218D9974008337AD /* Message.swift */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
4BF1647A50CF9A4300180BD9 /* Pods_Chatios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Chatios.framework; sourceTree = BUILT_PRODUCTS_DIR; };
A4042ACC218C2CE3001E096D /* ChatViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatViewController.swift; sourceTree = "<group>"; };
A4042ACE218C3789001E096D /* WsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WsManager.swift; sourceTree = "<group>"; };
A4042AD2218CA84D001E096D /* Message.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Message.swift; sourceTree = "<group>"; };
A4138985218A2B710052605C /* Chatios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Chatios.app; sourceTree = BUILT_PRODUCTS_DIR; };
A4138988218A2B710052605C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
A413898A218A2B710052605C /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
A413898D218A2B710052605C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
A413898F218A2B730052605C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
A4138992218A2B730052605C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
A4138994218A2B730052605C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
A4BAEC8F218D9974008337AD /* Message.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Message.swift; sourceTree = "<group>"; };
E36B11CB4FA4980E0B1B1ACB /* Pods-Chatios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Chatios.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Chatios/Pods-Chatios.debug.xcconfig"; sourceTree = "<group>"; };
FAFE785A9A06B640D0AC0145 /* Pods-Chatios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Chatios.release.xcconfig"; path = "Pods/Target Support Files/Pods-Chatios/Pods-Chatios.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
Expand Down Expand Up @@ -92,7 +92,7 @@
A4138991218A2B730052605C /* LaunchScreen.storyboard */,
A4138994218A2B730052605C /* Info.plist */,
A4042ACE218C3789001E096D /* WsManager.swift */,
A4042AD2218CA84D001E096D /* Message.swift */,
A4BAEC8F218D9974008337AD /* Message.swift */,
);
path = Chatios;
sourceTree = "<group>";
Expand Down Expand Up @@ -223,7 +223,7 @@
files = (
A413898B218A2B710052605C /* ViewController.swift in Sources */,
A4042ACD218C2CE3001E096D /* ChatViewController.swift in Sources */,
A4042AD3218CA84D001E096D /* Message.swift in Sources */,
A4BAEC90218D9974008337AD /* Message.swift in Sources */,
A4138989218A2B710052605C /* AppDelegate.swift in Sources */,
A4042ACF218C3789001E096D /* WsManager.swift in Sources */,
);
Expand Down Expand Up @@ -379,7 +379,6 @@
"$(inherited)",
"\"${PODS_CONFIGURATION_BUILD_DIR}/MessageInputBar\"",
"\"${PODS_CONFIGURATION_BUILD_DIR}/MessageKit\"",
"\"${PODS_CONFIGURATION_BUILD_DIR}/Socket.IO-Client-Swift\"",
"\"${PODS_CONFIGURATION_BUILD_DIR}/Starscream\"",
);
INFOPLIST_FILE = Chatios/Info.plist;
Expand Down Expand Up @@ -407,7 +406,6 @@
"$(inherited)",
"\"${PODS_CONFIGURATION_BUILD_DIR}/MessageInputBar\"",
"\"${PODS_CONFIGURATION_BUILD_DIR}/MessageKit\"",
"\"${PODS_CONFIGURATION_BUILD_DIR}/Socket.IO-Client-Swift\"",
"\"${PODS_CONFIGURATION_BUILD_DIR}/Starscream\"",
);
INFOPLIST_FILE = Chatios/Info.plist;
Expand Down
8 changes: 4 additions & 4 deletions Chatios/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Анонимный чат-->
<!--Anonym Chat-->
<scene sceneID="Yyi-YI-gI8">
<objects>
<tableViewController id="LxO-gF-qDb" sceneMemberID="viewController">
Expand All @@ -28,7 +28,7 @@
<rect key="frame" x="0.0" y="0.0" width="376" height="43.666666666666664"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Начать новый чат" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="YuK-Qf-oLO">
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Start new chat" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="YuK-Qf-oLO">
<rect key="frame" x="20" y="0.0" width="356" height="43.666666666666664"/>
<autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
Expand All @@ -49,8 +49,8 @@
<outlet property="delegate" destination="LxO-gF-qDb" id="P6T-M5-rzX"/>
</connections>
</tableView>
<navigationItem key="navigationItem" title="Анонимный чат" id="37H-9T-60V">
<barButtonItem key="backBarButtonItem" title="Разъединить" id="cWn-Rg-2ao"/>
<navigationItem key="navigationItem" title="Anonym Chat" id="37H-9T-60V">
<barButtonItem key="backBarButtonItem" title="Disconnect" id="cWn-Rg-2ao"/>
</navigationItem>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Zmd-pl-3nQ" userLabel="First Responder" sceneMemberID="firstResponder"/>
Expand Down
56 changes: 49 additions & 7 deletions Chatios/ChatViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,49 @@ class ChatViewController: MessagesViewController {
override func viewDidLoad() {
super.viewDidLoad()
WsManager.connection.establish()
sender = Sender(id: "1", displayName: "123")

sender = Sender(id: "0", displayName: "_")

WsManager.connection.socket.onText = { (text: String) in

let message = Message(
sender: Sender(id: "1", displayName: "_"),
text: text,
messageId: Message.generateId())

if text == "Got companion!" {
self.inputIsActive(flag: true)
}

self.messages.append(message)
self.messagesCollectionView.reloadData()
self.messagesCollectionView.scrollToBottom(animated: true)
}

messagesCollectionView.messagesDataSource = self
messagesCollectionView.messagesLayoutDelegate = self
messageInputBar.delegate = self
messagesCollectionView.messagesDisplayDelegate = self

messageInputBar.delegate = self
messageInputBar.sendButton.title = "->"
messageInputBar.inputTextView.placeholder = ""
messageInputBar.inputTextView.isImagePasteEnabled = false

if let layout = messagesCollectionView.collectionViewLayout as? MessagesCollectionViewFlowLayout {
layout.setMessageIncomingAvatarSize(.zero)
layout.setMessageOutgoingAvatarSize(.zero)
}

self.inputIsActive(flag: false)

WsManager.connection.socket.onDisconnect = { (error: Error?) in
self.inputIsActive(flag: false)
}
}

func inputIsActive(flag: Bool) -> Void {
self.messageInputBar.sendButton.isEnabled = flag
self.messageInputBar.shouldManageSendButtonEnabledState = flag
}

override func viewWillDisappear(_ animated: Bool) {
Expand Down Expand Up @@ -58,10 +96,6 @@ extension ChatViewController: MessagesDataSource {
}

extension ChatViewController: MessagesLayoutDelegate {
func avatarSize(for message: MessageType, at indexPath: IndexPath,
in messagesCollectionView: MessagesCollectionView) -> CGSize {
return .zero
}

func heightForLocation(message: MessageType,
at indexPath: IndexPath,
Expand All @@ -79,19 +113,27 @@ extension ChatViewController: MessagesDisplayDelegate {
return isFromCurrentSender(message: message) ? .blue : .gray
}

func configureAvatarView(_ avatarView: AvatarView, for message: MessageType,
at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) {
avatarView.isHidden = true
}

}

extension ChatViewController: MessageInputBarDelegate {

func messageInputBar(
_ inputBar: MessageInputBar,
didPressSendButtonWith text: String) {

let newMessage = Message(
sender: sender,
text: text,
messageId: UUID().uuidString)
messageId: Message.generateId())

messages.append(newMessage)
WsManager.connection.send(text: newMessage.text)

inputBar.inputTextView.text = ""
messagesCollectionView.reloadData()
messagesCollectionView.scrollToBottom(animated: true)
Expand Down
5 changes: 5 additions & 0 deletions Chatios/Message.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,9 @@ extension Message: MessageType {
var kind: MessageKind {
return .text(text)
}

static func generateId() -> String {
return UUID().uuidString
}

}
6 changes: 6 additions & 0 deletions Chatios/WsManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ class WsManager: WebSocketDelegate {
}
}

func send(text: String) {
if socket.isConnected {
socket.write(string: text)
}
}

func websocketDidConnect(socket: WebSocketClient) {
print("websocketDidConnect")
}
Expand Down

0 comments on commit c12b79d

Please sign in to comment.