From 2fe398dbca2851988f05fdf91baf4b97520f9bdb Mon Sep 17 00:00:00 2001 From: nixzhu Date: Tue, 5 Jan 2016 13:40:14 +0800 Subject: [PATCH] tryMakeUploadingFeed beforeUploadingFeedAction --- Yep/Services/YepService.swift | 5 ++ .../Feeds/FeedsViewController.swift | 15 ++++++ .../NewFeed/NewFeedViewController.swift | 47 +++++++++++++++++-- 3 files changed, 62 insertions(+), 5 deletions(-) diff --git a/Yep/Services/YepService.swift b/Yep/Services/YepService.swift index 76e1ab7d..c90ebf16 100644 --- a/Yep/Services/YepService.swift +++ b/Yep/Services/YepService.swift @@ -1276,6 +1276,11 @@ struct DiscoveredUser: Hashable { return false } + + static func fromUser(user: User) -> DiscoveredUser { + + return DiscoveredUser(id: user.userID, username: user.username, nickname: user.nickname, introduction: user.introduction, avatarURLString: user.avatarURLString, badge: user.badge, createdUnixTime: user.createdUnixTime, lastSignInUnixTime: user.lastSignInUnixTime, longitude: user.longitude, latitude: user.latitude, distance: 0, masterSkills: [], learningSkills: [], socialAccountProviders: [], recently_updated_provider: nil) + } } func ==(lhs: DiscoveredUser, rhs: DiscoveredUser) -> Bool { diff --git a/Yep/ViewControllers/Feeds/FeedsViewController.swift b/Yep/ViewControllers/Feeds/FeedsViewController.swift index 07d08b86..b64ba58b 100644 --- a/Yep/ViewControllers/Feeds/FeedsViewController.swift +++ b/Yep/ViewControllers/Feeds/FeedsViewController.swift @@ -631,6 +631,20 @@ class FeedsViewController: BaseViewController { return } + let beforeUploadingFeedAction: DiscoveredFeed -> Void = { [weak self] feed in + + dispatch_async(dispatch_get_main_queue()) { + + if let strongSelf = self { + + strongSelf.uploadingFeeds.insert(feed, atIndex: 0) + + let indexPath = NSIndexPath(forRow: 0, inSection: Section.UploadingFeed.rawValue) + strongSelf.feedsTableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic) + } + } + } + let afterCreatedFeedAction: DiscoveredFeed -> Void = { [weak self] feed in dispatch_async(dispatch_get_main_queue()) { @@ -745,6 +759,7 @@ class FeedsViewController: BaseViewController { vc.preparedSkill = skill + vc.beforeUploadingFeedAction = beforeUploadingFeedAction vc.afterCreatedFeedAction = afterCreatedFeedAction case "presentNewFeedVoiceRecord": diff --git a/Yep/ViewControllers/NewFeed/NewFeedViewController.swift b/Yep/ViewControllers/NewFeed/NewFeedViewController.swift index 5cb0e38b..05c728e4 100644 --- a/Yep/ViewControllers/NewFeed/NewFeedViewController.swift +++ b/Yep/ViewControllers/NewFeed/NewFeedViewController.swift @@ -49,6 +49,7 @@ class NewFeedViewController: SegueViewController { var attachment: Attachment = .Default + var beforeUploadingFeedAction: ((feed: DiscoveredFeed) -> Void)? var afterCreatedFeedAction: ((feed: DiscoveredFeed) -> Void)? var preparedSkill: Skill? @@ -530,12 +531,42 @@ class NewFeedViewController: SegueViewController { self.dismissViewControllerAnimated(true, completion: nil) } - private struct UploadImageInfo { - - let s3UploadParams: S3UploadParams - let metaDataString: String? +// private struct UploadImageInfo { +// +// let s3UploadParams: S3UploadParams +// let metaDataString: String? +// } + + func tryMakeUploadingFeed() -> DiscoveredFeed? { + + guard let + myUserID = YepUserDefaults.userID.value, + realm = try? Realm(), + me = userWithUserID(myUserID, inRealm: realm) else { + return nil + } + + let creator = DiscoveredUser.fromUser(me) + + var kind: FeedKind = .Text + + let createdUnixTime = NSDate().timeIntervalSince1970 + let updatedUnixTime = createdUnixTime + + let message = messageTextView.text.trimming(.WhitespaceAndNewline) + + switch attachment { + case .Default: + if !mediaImages.isEmpty { + kind = .Image + } + default: + break + } + + return DiscoveredFeed(id: "", allowComment: true, kind: kind, createdUnixTime: createdUnixTime, updatedUnixTime: updatedUnixTime, creator: creator, body: message, attachment: nil, distance: 0, skill: nil, groupID: "", messagesCount: 0) } - + @objc private func post(sender: UIBarButtonItem) { let messageLength = (messageTextView.text as NSString).length @@ -546,6 +577,12 @@ class NewFeedViewController: SegueViewController { return } + + if let feed = tryMakeUploadingFeed() { + beforeUploadingFeedAction?(feed: feed) + } + + dismissViewControllerAnimated(true, completion: nil) uploadState = .Uploading