2020-04-01 00:09:07 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
class UserBookmarkList
|
|
|
|
include ActiveModel::Serialization
|
|
|
|
|
|
|
|
PER_PAGE = 20
|
|
|
|
|
2022-09-01 06:04:00 -04:00
|
|
|
attr_reader :bookmarks, :per_page, :has_more
|
2022-08-08 10:24:04 -04:00
|
|
|
attr_accessor :more_bookmarks_url, :bookmark_serializer_opts
|
2020-04-01 00:09:07 -04:00
|
|
|
|
2020-04-01 01:04:04 -04:00
|
|
|
def initialize(user:, guardian:, params:)
|
2020-04-01 00:09:07 -04:00
|
|
|
@user = user
|
|
|
|
@guardian = guardian
|
2021-01-18 17:53:49 -05:00
|
|
|
@params = params
|
|
|
|
|
|
|
|
@params.merge!(per_page: PER_PAGE) if params[:per_page].blank?
|
|
|
|
@params[:per_page] = PER_PAGE if @params[:per_page] > PER_PAGE
|
|
|
|
|
2020-04-01 00:09:07 -04:00
|
|
|
@bookmarks = []
|
2022-08-08 10:24:04 -04:00
|
|
|
@bookmark_serializer_opts = {}
|
2020-04-01 00:09:07 -04:00
|
|
|
end
|
|
|
|
|
2022-08-08 10:24:04 -04:00
|
|
|
def load(&blk)
|
2022-09-01 06:04:00 -04:00
|
|
|
query = BookmarkQuery.new(user: @user, guardian: @guardian, params: @params)
|
|
|
|
@bookmarks = query.list_all(&blk)
|
|
|
|
@has_more = (@params[:page].to_i + 1) * @params[:per_page] < query.count
|
2020-04-01 00:09:07 -04:00
|
|
|
@bookmarks
|
|
|
|
end
|
|
|
|
|
|
|
|
def per_page
|
2021-01-18 17:53:49 -05:00
|
|
|
@per_page ||= @params[:per_page]
|
2020-04-01 00:09:07 -04:00
|
|
|
end
|
|
|
|
end
|