Skip to content

Recreated basic Twitter functions using the Twitter API

Notifications You must be signed in to change notification settings

lilyx998/Twitter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project 2 - Twitter

Twitter is a basic twitter app to read and compose tweets the Twitter API.

Time spent: 25 hours spent in total

User Stories

The following core features are completed:

A user should

  • See an app icon in the home screen and a styled launch screen
  • Be able to log in using their Twitter account
  • See at latest the latest 20 tweets for a Twitter account in a Table View
  • Be able to refresh data by pulling down on the Table View
  • Be able to like and retweet from their Timeline view
  • Only be able to access content if logged in
  • Each tweet should display user profile picture, username, screen name, tweet text, timestamp, as well as buttons and labels for favorite, reply, and retweet counts.
  • Compose and post a tweet from a Compose Tweet view, launched from a Compose button on the Nav bar.
  • See Tweet details in a Details view
  • App should render consistently all views and subviews in recent iPhone models and all orientations

The following stretch features are implemented:

A user could

  • Be able to unlike or un-retweet by tapping a liked or retweeted Tweet button, respectively. (Doing so will decrement the count for each)
  • Click on links that appear in Tweets
  • Load more tweets once they reach the bottom of the feed using infinite loading similar to the actual Twitter client
  • Reply to any Tweet (2 points) - only in home timeline
    • Replies should be prefixed with the username
    • The reply_id should be set when posting the tweet
  • See a character count when composing a Tweet (as well as a warning) (280 characters) (1 point)
  • See embedded media in Tweets that contain images or videos
  • Click on a Profile image to reveal another user's profile page, including:
    • Header view: picture and tagline
    • Basic stats: #tweets, #following, #followers
  • Switch between timeline, mentions, or profile view through a tab bar (3 points)
  • Profile Page: pulling down the profile page should blur and resize the header image. (4 points)

Please list two areas of the assignment you'd like to discuss further with your peers during the next class (examples include better ways to implement something, how to extend your app in certain ways, etc):

  1. Better ways to implement infinite scroll? What if loading takes a long time, and then you scroll up, then back down, and then it'll trigger another loading of Tweets?
  2. With more time, I would have loved to display replies in details view. I wonder if it would be like retrieving the home timeline, and could infinite scroll be implemented the same way on the replies?

Video Walkthrough

Here's a walkthrough of implemented user stories:

Login:

twitter login

Other Required Features:

twitter other required features

Optional Features:

optional features twitter

Notes

Recreating the basics of Twitter for this week 2 project, has helped to reinforce basic iOS programming concepts, such as UITableViews, outlets, API calls, segues, and custom classes. In addition, this project has introduced new concepts such as models and auto-layout, as well as other challenges encountered when implementing features like infinite scroll and replying to tweets. For this project, since it was more complicated, and I needed better ways to passing information between screens, I created custom delegate protocols to move information between my home timeline screen and my compose/reply screen. To implement infinite scroll, I would fetch more Tweets via an API call with specific parameters once I had scrolled down to the bottom, indicated by the loading of the last cell. I would add the new Tweets to my table and reload the table.

Credits

List an 3rd party libraries, icons, graphics, or other assets you used in your app.

License

Copyright [2022] [Lily Yang]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Recreated basic Twitter functions using the Twitter API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published