Introduction
Let’s put our theory into practice again. I keep mentioning as we progress through this course I am going to give less and less specific instructions on how to do things. I am again going to continue with that idea in this build, and will only be giving general instructions for everything we have already covered at some point. I won’t have reminders to add imports, or to inject dependencies, and so on.
As I mentioned in the last application build, in cases where you do feel a bit lost/stuck I would recommend following these steps:
- Reflect on the situation independently for a little bit
- Research using the documentation or just Googling
- Go back to the equivalent situation in the Quicklists application or view the source code
However, we will also be exploring some new concepts in this application, and they will be covered in depth. Most notably, this application is going to take RxJS streams and reactive programming to another level. There is a use case in this application that calls for heavy usage of RxJS operators, and it provides a fantastic opportunity to really try to wrap your head around what is going on.
Don’t be intimidated by the observable streams in this application if you don’t properly understand them. Just due to the nature of what we are building with this application, we will be dealing with far more complex situations with streams than is typical. Consider this application to be a challenge of your knowledge of observable streams, and a way to push them to the next level.
About Giflist
Giflist has a pretty simple concept, the general idea is that a user can enter in any subreddit from reddit, and the app will fetch and display GIFs from that subreddit.
I’m going to assume if you’re doing this course then you know what Reddit is — but — I don’t really like to make any assumptions so if you’re somehow not familiar with Reddit, basically it’s a site where people can submit links to anything and the user base votes up stuff that they think is cool or relevant. A “subreddit” is basically a category on Reddit, a few popular ones being:
Although the concept is pretty simple, there are a few interesting things that you will learn through building it. These concepts will include:
- Fetching data from a 3rd party API
- Creating advanced interfaces
- Manipulating data
- Complex observable streams
- Complex state management
Here’s a quick run down on the exact features of the application:
- The user will be able to input any subreddit
- An endless list of GIFs will be displayed as a list (assuming GIFs are available)
- The user will be able to play a GIF by tapping it
- The user will be able to view the original submission on reddit through a browser instance
- The user’s settings will be remembered upon returning to the application
Ready?
Now that you know what you’re in for, let’s get to building it!