From 4b9e11fc2acf6cc30b1523b34a594db7ba0be532 Mon Sep 17 00:00:00 2001 From: Emi Matchu Date: Sun, 21 Jan 2024 03:59:06 -0800 Subject: [PATCH] Sort trades in vaguely-recent order This logic is copied from DTI 2020! Though I didn't include the part where we highlight trade matches yet! --- app/helpers/item_trades_helper.rb | 24 ++++++++++++++++++++++++ app/views/item_trades/index.html.haml | 7 ++----- config/locales/en.yml | 2 ++ 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/app/helpers/item_trades_helper.rb b/app/helpers/item_trades_helper.rb index 45bfbdf4..1401462b 100644 --- a/app/helpers/item_trades_helper.rb +++ b/app/helpers/item_trades_helper.rb @@ -1,2 +1,26 @@ module ItemTradesHelper + def vague_trade_timestamp(last_trade_activity_at) + if last_trade_activity_at >= 1.week.ago + translate "item_trades.index.table.last_active.this_week" + else + last_trade_activity_at.strftime("%b %Y") + end + end + + def sorted_vaguely_by_trade_activity(trades) + # First, sort the list in ascending order. + trades_ascending = trades.sort_by do |trade| + if trade.user.last_trade_activity_at >= 1.week.ago + # Sort recent trades in a random order, but still collectively as the + # most recent. (This discourages spamming updates to game the system!) + [1, rand] + else + # Sort older trades by last trade activity. + [0, trade.user.last_trade_activity_at] + end + end + + # Then, reverse it! + trades_ascending.reverse! + end end diff --git a/app/views/item_trades/index.html.haml b/app/views/item_trades/index.html.haml index 83bc6c59..853caa99 100644 --- a/app/views/item_trades/index.html.haml +++ b/app/views/item_trades/index.html.haml @@ -13,13 +13,10 @@ %th= t(".table.headings.user.#{@type}") %th= t(".table.headings.lists") %tbody - - @trades.each do |trade| + - sorted_vaguely_by_trade_activity(@trades).each do |trade| %tr %td - -# TODO: Replace this with the coarse-grained version from 2020, - -# and translate it! - = time_ago_in_words trade.user.last_trade_activity_at - ago + = vague_trade_timestamp trade.user.last_trade_activity_at %td= trade.user.name %td - if trade.lists.present? diff --git a/config/locales/en.yml b/config/locales/en.yml index fba59820..ab35761f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -381,6 +381,8 @@ en: offering: Owner seeking: Seeker lists: Lists + last_active: + this_week: This week not_in_a_list: Not in a list no_trades_yet: No trades yet! To add your name to this page, add this item to one of