2024-01-21 03:10:06 -08:00
|
|
|
module ItemTradesHelper
|
2025-06-22 10:40:27 -07:00
|
|
|
def vague_trade_timestamp(trade)
|
|
|
|
|
return nil if trade.nil?
|
|
|
|
|
|
|
|
|
|
if trade.last_activity_at >= 1.week.ago
|
2024-01-21 03:59:06 -08:00
|
|
|
translate "item_trades.index.table.last_active.this_week"
|
|
|
|
|
else
|
2025-06-22 10:40:27 -07:00
|
|
|
trade.last_activity_at.to_date.to_fs(:month_and_year)
|
2024-01-21 03:59:06 -08:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2025-06-22 10:40:27 -07:00
|
|
|
def same_vague_trade_timestamp?(trade1, trade2)
|
|
|
|
|
vague_trade_timestamp(trade1) == vague_trade_timestamp(trade2)
|
|
|
|
|
end
|
|
|
|
|
|
2024-01-21 03:59:06 -08:00
|
|
|
def sorted_vaguely_by_trade_activity(trades)
|
|
|
|
|
# First, sort the list in ascending order.
|
|
|
|
|
trades_ascending = trades.sort_by do |trade|
|
2025-06-22 10:40:27 -07:00
|
|
|
if trade.last_activity_at >= 1.week.ago
|
2024-01-21 03:59:06 -08:00
|
|
|
# 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.
|
2025-06-22 10:40:27 -07:00
|
|
|
[0, trade.last_activity_at]
|
2024-01-21 03:59:06 -08:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# Then, reverse it!
|
|
|
|
|
trades_ascending.reverse!
|
|
|
|
|
end
|
2024-01-21 03:10:06 -08:00
|
|
|
end
|