Skip to content
This repository has been archived by the owner on Aug 14, 2019. It is now read-only.

RELEASE 6.0 — ongoing release notes #476

Closed
jessesquires opened this issue Sep 6, 2014 · 84 comments
Closed

RELEASE 6.0 — ongoing release notes #476

jessesquires opened this issue Sep 6, 2014 · 84 comments

Comments

@jessesquires
Copy link
Owner

Welcome to JSQMessagesViewController 6.0!

This issue serves to document ongoing and upcoming changes in release 6.0 of this library, which is scheduled to finally include media message support (#223), as well as many more exciting improvements. The goal is to release 6.0 by the end of September.

All development will take place on the release-6.0 branch. Feel free to checkout this branch at anytime, but be aware that it will be rapidly changing and will not be guaranteed to be 100% functional 100% of the time.

FAQs

Will this version of the library support iOS 8?
Yes. However, during development I will be targeting iOS 7. After iOS 8 is public, I will address any iOS 8-specific issues.

Will this version of the library support interoperability with Swift?
Yes. This library currently uses uses modern Objective-C and follows current best practices to facilitate Swift interoperability. However, no specific efforts will be made to support compatibility with Swift until it reaches 1.0.

What about iOS 8 frameworks?
Once iOS 8 is public and Cocoapods supports CocoaTouch Frameworks, this library will be distributed as such. It will also include a bridging header for interoperability with Swift.

Want to help?

Any and all feedback from the community will be greatly appreciated as we move forward with this release. Please let me know what you like, dislike, and what will or will not work for your specific uses of this library. Is that any documentation that doesn't make sense? Let me know. Is there an API that could be improved, or changed completely? Let me know.

Major API changes

Version 6.0 will not be backwards compatible with 5.x.x. I will be documenting all major library API changes below as they happen. Note, these will likely be brief as they are not intended to be a guide for migrating from 5.x.x to 6.0. This type of more in-depth documentation will happen at the time that 6.0 is released.

// Changes in JSQMessagesCollectionViewDataSource

// OLD
- (UIImageView *)collectionView:(JSQMessagesCollectionView *)collectionView bubbleImageViewForItemAtIndexPath:(NSIndexPath *)indexPath;

// NEW
- (id<JSQMessageBubbleImageDataSource>)collectionView:(JSQMessagesCollectionView *)collectionView messageBubbleImageDataForItemAtIndexPath:(NSIndexPath *)indexPath;
  • REFACTOR JSQMessagesBubbleImageFactory
  • RENAME JSQMessagesAvatarFactory --> JSQMessagesAvatarImageFactory
  • NEW JSQMessageAvatarImageDataSource Protocol: this new data source protocol replaces the use of imageView objects for avatar image views. The avatarImageView of a JSQMessagesCollectionViewCell is now part of the cell prototype. This change is reflected in JSQMessagesCollectionViewDataSource as well as JSQMessagesAvatarImageFactory. See Improve performance: new bubbleImage and avatarImage dataSource #319 for further details.
// Changes in JSQMessagesCollectionViewDataSource

// OLD
- (UIImageView *)collectionView:(JSQMessagesCollectionView *)collectionView avatarImageViewForItemAtIndexPath:(NSIndexPath *)indexPath;

// NEW
- (id<JSQMessageAvatarImageDataSource>)collectionView:(JSQMessagesCollectionView *)collectionView avatarImageDataForItemAtIndexPath:(NSIndexPath *)indexPath;
  • REFACTOR JSQMessagesAvatarImageFactory
  • REMOVE JSQMessagesViewController --> typingIndicatorColor
  • ADD JSQMessagesCollectionView
    • typingIndicatorDisplaysOnLeft
    • typingIndicatorMessageBubbleColor
    • typingIndicatorEllipsisColor
    • loadEarlierMessagesHeaderTextColor
  • REFACTOR JSQMessage model object, now an abstract base class (removed text property)
  • REFACTOR JSQMessageData protocol
    • - (NSString *)text method now optional
    • added optional - (id<JSQMessageMediaData>)media method
  • NEW JSQMessageMediaData protocol - similar to JSQMessageData, but for media data
  • NEW JSQTextMessage : concrete model object, represents text messages
  • NEW JSQMediaMessage : concrete model object, represents media messages
  • UPDATE JSQMessagesCollectionViewCell now has a mediaView property
  • REFACTOR Demo project heavily refactored
  • UPDATE JSQMessagesCollectionViewCell now has a mediaCellReuseIdentifier method
  • UPDATE JSQMessagesViewController now has outgoingMediaCellIdentifier and incomingMediaCellIdentifier properties
  • NEW JSQPhotoMediaItem model object for representing photo media
  • NEW JSQMessagesMediaPlaceholderView view for async loading media
  • NEW JSQLocationMediaItem model object for representing location media

6.0-beta1 released



6.0-beta2 released



6.0-beta3 released


  • Update JSQSystemSoundPlayer 2.0.0

6.0-beta4 released



6.0-beta5 released



6.0-beta6 released


@jessesquires jessesquires modified the milestone: Release 6.0 Sep 6, 2014
@jessesquires jessesquires mentioned this issue Sep 7, 2014
6 tasks
@FredericJacobs
Copy link

Really excited about this. Let me know if you need help with anything.

@jessesquires
Copy link
Owner Author

Thanks @FredericJacobs - any feedback would be great! And even small things like fixing typos are way more helpful than they seem!

@FredericJacobs
Copy link

I'm more than happy to provide feedback and edit/write documentation.

@jessesquires
Copy link
Owner Author

@FredericJacobs - awesome! I'll post here when the first beta is ready. 👍

@piercifani
Copy link

Awesome @jessesquires. One question: #453 won't be included in this release? I'm more than happy to give you a hand with whatever you need

@jessesquires
Copy link
Owner Author

Thanks @piercifani! That's right, unfortunately. I attempted #453 and ran into some design issues so I decided to hold off for now as media is a higher priority. The use cases noted in objc.io are much simpler than what we have here, and our data source is not as generic. Hopefully this change will come with 7.0 -- or maybe a complete re-write/re-design in Swift. :) but that would be very long term.

jessesquires added a commit that referenced this issue Sep 8, 2014
…icatorColor from view controller. refinements for #476
jessesquires added a commit that referenced this issue Sep 21, 2014
…to be abstract base class. add JSQTextMessage. add JSQMediaMessage. add JSQMessageMediaData protocol. Update demo. ref #223, #476.
@jessesquires
Copy link
Owner Author

Release notes updated.

Core media support has been implemented on branch release-6.0.

Concrete media objects are not yet available, only the protocols are finished.

Demo has not yet been updated to include media messages. Coming soon. Stay tuned.

@jessesquires
Copy link
Owner Author

The demo project now has a concrete implementation for sending photo messages.

This is still not 100% complete, but it's getting there and you should be able to get the hang of how it will work for any type of media. Essentially, as long as your model object (whatever that is, it can be whatever you want) implements the JSQMessageData and JSQMessageMediaData protocols successfully, the library should "just work".

Async loading should work within this framework, but more testing is needed. I'll be updating the demo with examples of async media message sending and avatar loading in the coming weeks.

@mohammad19991
Copy link

Awesome @jessesquires great work man.

@mikrobi
Copy link

mikrobi commented Sep 22, 2014

Awesome!

@estemendoza
Copy link

Thanks for including #389, it's weird that this issue wasn't reported earlier. And thanks again for the hard work on this tool, it's awesome.

@jessesquires
Copy link
Owner Author

Thanks everyone! Planning on getting a beta release up this weekend.

@wdcurry
Copy link

wdcurry commented Sep 26, 2014

thanks Jesse.. u-da-man. Have no fear, once my process starts rolling, you will receive some monetary love!

@jessesquires
Copy link
Owner Author

UPDATE: Xcode decided to shit all over me today. Beta will be out this coming week.

@jessesquires
Copy link
Owner Author

UPDATE: All docs completed. Photo media items completed.

Demo has been updated to simulate async loading for images.
How to:

  1. Tap 📎 icon in toolbar (this sends a photo)
  2. Tap the "receive message" button (top right nav bar button). This always simulates receiving a new message by copying the last message that you sent. It now works for media and will load media asynchronously.

@jessesquires
Copy link
Owner Author

Demo updated to be much better.

Now has a settings view to customize the view controller dynamically (especially useful for testing). PRs are welcome for adding additional config options. Please follow the existing pattern if you do.

@jfyles
Copy link

jfyles commented Oct 3, 2014

Awesome! Any update on the beta? I'd love to help.

@jessesquires
Copy link
Owner Author

@jfyles - everything is basically done, except the library only provides 1 concrete media type (photos). I want to add more concrete items (#504) before tagging a beta.

Beta should be out by the weekend. Any help with testing that once it is out would be great! Finding bugs, reporting any design concerns, finding any documentation errors, etc.

@jfyles
Copy link

jfyles commented Oct 3, 2014

Sounds great! Our beta is contingent on the photos so it goes hand-in-hand

@AnthonyMDev
Copy link

Ahhh, makes much more sense now. Thanks!

@robj
Copy link

robj commented Oct 22, 2014

Here is an example of subclassing JSQPhotoMediaItem to use SDWebImage. Using this method I have not been required to do any manual reloading of the collectionView or setNeedsDisplay anywhere.

viewWithActivityIndicator is added as a subview of mediaView that always exists, and later removed upon image download completion.

It is in RubyMotion... but the equivalent in ObjC/Swift should be trivial to work out

class CustomPhotoMediaItem < JSQPhotoMediaItem


  attr_accessor :managedView


  def initWithURL(url)

        me = init

        size = self.mediaViewDisplaySize

        self.managedView = UIImageView.alloc.init
        self.managedView.frame = CGRectMake(0, 0, size.width, size.height)
        self.managedView.contentMode = UIViewContentModeScaleAspectFill
        self.managedView.clipsToBounds = true
        self.managedView.layer.cornerRadius = 20

        activityIndicator = JSQMessagesMediaPlaceholderView.viewWithActivityIndicator
        self.managedView.addSubview(activityIndicator)

        self.managedView.setImageWithURL(url, 
                                         placeholderImage:nil,
                                         completed: lambda do |image, error, cacheType|

                                             activityIndicator.removeFromSuperview


                               end)


        me

  end



  def mediaView 
      return self.managedView
  end


end

@jessesquires
Copy link
Owner Author

nice! thanks for sharing @robj ! 😄

@dereck009
Copy link

This high priority usability issue should also be on the 6.0 release list I think:

#256

@AnthonyMDev
Copy link

I think that it would be part of 6.0 if someone had a viable solution to the issue. But since it hasn't been solved yet, it looks like this issue is going to remain for the foreseeable future.

Maybe iOS 9 will fix the bug in UIKit next year... ;)

Sent from my iPhone

On Oct 24, 2014, at 12:28 AM, dereck009 notifications@github.com wrote:

This high priority usability issue should also be on the 6.0 release list I think:

#256


Reply to this email directly or view it on GitHub.

@jessesquires
Copy link
Owner Author

@AnthonyMDev - Perfect answer. Thanks! 👍

@jfyles
Copy link

jfyles commented Oct 28, 2014

After updating to beta6, chat bubbles (and outgoing chat messages) are no longer showing up on users devices. They are showing up on our dev devices though. Was anything changed to the pod that would change how those resources are copied?

We were able to reproduce by changing our build scheme to build for Release. Any thoughts?

@jessesquires
Copy link
Owner Author

hey @jfyles - yes, actually 😊 the image and audio assets are now in a .bundle

see: https://github.com/jessesquires/JSQMessagesViewController/tree/develop/JSQMessagesViewController/Assets

it doesn't look like anyone else has had this problem. i'll investigate. please open a new issue for this and we'll track it there 👍

@wdcurry
Copy link

wdcurry commented Oct 28, 2014

no issues here of similar nature, just an fyi..

@AnthonyMDev
Copy link

Any idea when to expect the 6.0 release version?

@jessesquires
Copy link
Owner Author

@AnthonyMDev - I've updated the milestone with the release date goal. (Nov 2)
https://github.com/jessesquires/JSQMessagesViewController/milestones

@jessesquires
Copy link
Owner Author

I recommend that everyone here on the last beta now pull directly from develop. Had lots of bug fixes this weekend. Didn't get the official 6.0 out, but it will be here this week. Sorry for the delay.

pod 'JSQMessagesViewController', :git => 'https://github.com/jessesquires/JSQMessagesViewController.git', :branch => 'develop'

@AnthonyMDev
Copy link

Is there going to be a pod spec update? I'm using the pod in a current project, and if there are bug fixes, that would be nice to have.
Sent from my iPhone

On Nov 3, 2014, at 9:47 AM, Jesse Squires notifications@github.com wrote:

I recommend that everyone here on the last beta now pull directly from develop. Had lots of bug fixes this weekend. Didn't get the official 6.0 out, but it will be here this week. Sorry for the delay.

pod 'JSQMessagesViewController', :git => 'https://github.com/jessesquires/JSQMessagesViewController.git', :branch => 'develop'

Reply to this email directly or view it on GitHub.

@jessesquires
Copy link
Owner Author

@AnthonyMDev - yeah, this will get those fixes for you.

The next spec update will be the final release.

@jessesquires
Copy link
Owner Author

Hello all!

There have been a decent number of bug fixes and refinements since the last beta. Also I just closed #602 which re-combines JSQTextMessage and JSQMediaMessage into a single class, JSQMessage (like before). See #602 for more details.

The only changes necessary on your part will be changing class names (e.g., "JSQTextMessage" --> "JSQMessage"), all functionality and method signatures have remained the same.

At this point, I'm satisfied with the 6.0 release (and I know many are waiting on this), so it will be out today!

I'll report back once CocoaPods is updated.

@jessesquires
Copy link
Owner Author

v6.0 is out! 🎉 pod update now 😄

img

@wdcurry
Copy link

wdcurry commented Nov 10, 2014

^^ that is priceless. Hey Jesse, i am still a newb with pods. Is there another way to update just your pod without creating an ignore file for all the others?

@jessesquires
Copy link
Owner Author

@wdcurry - not exactly sure what you mean. running pod update will only update pods that have new versions (based on your Podfile). regarding your .gitignore, the common practice is to add Pods/.

@mohammad19991
Copy link

That's great news thank you @jessesquires u r amazing! your work is amazing man ^_^

@wdcurry
Copy link

wdcurry commented Nov 10, 2014

@jessesquires, i had a bit of unneeded issues with a few pods i use, so i don't want to update them and i didn't take the time to update the podfile to lock them down to a version. This is something i guess i should do soon to ensure the integrity of my platform. I guess my logical mind reached out to thinking i should be able to use pod update JSQMessages to quickly grab your update.. but instead will lock each into a version and then update with your most recent..

@shivamkedia007
Copy link

Hii @jessesquires , thanks for the controller. It is really a great help. Can we please allow Audio files and contacts as well ?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests