# frozen_string_literal: true module PostRepr BASE = { include: { tags: TagRepr::BASE, uploaded_user: UserRepr::BASE } }.freeze module_function def base post, current_user = nil json = post.as_json(BASE) return json.merge(viewed: false) unless current_user viewed = current_user.viewed?(post) json.merge(viewed:) end def many posts, current_user = nil posts.map { |p| base(p, current_user) } end end