module Card::Auth::Setup

singleton methods for managing setup state

Constants

NEEDS_SETUP

Public Instance Methods

instant_account_activation() { || ... } click to toggle source
# File lib/card/auth/setup.rb, line 24
def instant_account_activation
  simulate_needs_setup!
  yield
ensure
  simulate_needs_setup! false
end
needs_setup?() click to toggle source

app is not totally set up yet @return [true/false]

# File lib/card/auth/setup.rb, line 9
def needs_setup?
  if @needs_setup == false || Card.cache.read(NEEDS_SETUP)&.to_s == "false"
    @needs_setup = false
  else
    needs_setup_if_no_accounts
  end
end
simulate_setup!(mode=true) click to toggle source

for testing setup

# File lib/card/auth/setup.rb, line 18
def simulate_setup! mode=true
  Card.cache.delete NEEDS_SETUP
  @needs_setup = nil
  @hidden_accounts = mode ? user_account_ids : nil
end

Private Instance Methods

needs_setup_if_no_accounts() click to toggle source
# File lib/card/auth/setup.rb, line 33
def needs_setup_if_no_accounts
  user_account_count.zero?.tap do |need|
    Card.cache.write NEEDS_SETUP, false unless need
  end
end
user_account_count() click to toggle source
# File lib/card/auth/setup.rb, line 48
def user_account_count
  cql = user_account_cql
  cql[:not] = { id: ["in"].concat(@hidden_accounts) } if @hidden_accounts.present?
  as_bot { Card.count_by_cql cql }
end
user_account_cql() click to toggle source
# File lib/card/auth/setup.rb, line 43
def user_account_cql
  # every deck starts with two accounts: WagnBot and Anonymous
  { right: :account, creator_id: ["ne", Card::WagnBotID] }
end
user_account_ids() click to toggle source
# File lib/card/auth/setup.rb, line 39
def user_account_ids
  as_bot { Card.search user_account_cql.merge(return: :id) }
end