aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/users_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/users_controller.rb')
-rw-r--r--app/controllers/users_controller.rb123
1 files changed, 61 insertions, 62 deletions
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 670c1c6..1ebb5a6 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -1,84 +1,83 @@
class UsersController < ApplicationController
+ def show
+ tweet_id = Integer(params[:id])
+
+ @item = Tweet.find(tweet_id)
+ @user = @item.user
+ helpers = ApplicationController.helpers
+ @title = "\"#{helpers.strip_tags(helpers.format_tweet_text(@item.text))[0...30]}\" from @#{@item.user.screen_name}"
+
+ respond_to do |format|
+ format.html do
+ prepare_info
+ end
+
+ format.json do
+ @trim_user = params[:trim_user] == "true"
+ end
+ end
+ end
+
def best
- page = get_page_number(params)
- screen_name = params[:screen_name]
- user = User.where(:screen_name => screen_name).first
- if user
- @items = user.tweets
- .where("favorites_count > 0 OR retweets_count > 0")
- .order("COALESCE(favorites_count, 0) + COALESCE(retweets_count, 0) DESC")
- .page(page)
- .per(Settings.page_per)
- else
- @items = []
+ user = render_timeline(params) do |tweets, user|
+ tweets.of(user).reacted.order_by_reactions
end
- @title = "@#{screen_name}'s Best Tweets"
+ @title = "@#{user.screen_name}'s Best Tweets"
end
def recent
- page = get_page_number(params)
- screen_name = params[:screen_name]
- user = User.where(:screen_name => screen_name).first
- if user
- @items = user.tweets
- .where("favorites_count > 0 OR retweets_count > 0")
- .order("id DESC")
- .page(page)
- .per(Settings.page_per)
- else
- @items = []
+ user = render_timeline(params) do |tweets, user|
+ tweets.of(user).recent.reacted.order_by_reactions
end
- @title = "@#{screen_name}'s Newest Favorited Tweets"
+ @title = "@#{user.screen_name}'s Recent Best Tweets"
end
def timeline
- page = get_page_number(params)
- screen_name = params[:screen_name]
- user = User.where(:screen_name => screen_name).first
- if user
- @items = user.tweets
- .order("id DESC")
- .page(page)
- .per(Settings.page_per)
- else
- @items = []
+ user = render_timeline(params) do |tweets, user|
+ if params[:tweets] == "all"
+ tweets.of(user).order_by_id
+ else
+ tweets.of(user).reacted.order_by_id
+ end
+ end
+ @title = "@#{user.screen_name}'s Newest Tweets"
+
+ if user.protected
+ raise Exception # FIXME
end
- @title = "@#{screen_name}'s Newest Tweets"
end
def my
+ user = render_timeline(params) do |tweets, user|
+ tweets.discovered(user).order_by_id
+ end
+ @title = "@#{user.screen_name}'s Recent Discoveries"
+ end
+
+ private
+ def render_timeline(params, &g)
page = get_page_number(params)
screen_name = params[:screen_name]
- user = User.where(:screen_name => screen_name).first
- if user
- @items = Tweet
- .where("id IN (SELECT tweet_id FROM (" +
- "SELECT tweet_id FROM favorites WHERE user_id = #{user.id} " +
- "UNION " +
- "SELECT tweet_id FROM retweets WHERE user_id = #{user.id}" +
- ") AS rf)")
- .order("id DESC")
- .page(page)
- .per(Settings.page_per)
- else
- @items = []
+ @user = User.where(:screen_name => screen_name).first
+ unless @user
+ raise ActiveRecord::RecordNotFound.new(screen_name)
end
- @title = "@#{screen_name}'s Recent Discoveries"
- prepare_cache
- end
- def info
- screen_name = params[:screen_name]
- user = User.where(:screen_name => screen_name).first
- if user
- @tweets_count = user.tweets.count
- @favorites_count = user.favorites.count
- @retweets_count = user.retweets.count
- @favorited_count = user.tweets.inject(0){|s, m| s + m.favorites_count}
- @retweeted_count = user.tweets.inject(0){|s, m| s + m.retweets_count}
- else
- @info = nil
+ @items = g.call(Tweet, @user)
+ .page(page)
+ .per(Settings.page_per)
+
+ respond_to do |format|
+ format.html do
+ prepare_info
+ end
+
+ format.json do
+ @trim_user = params[:trim_user] == "true"
+ end
end
+
+ return @user
end
end