35 lines
1008 B
Clojure
35 lines
1008 B
Clojure
(ns advent.iap
|
|
(:import [com.badlogic.gdx Gdx Application])
|
|
(:require [clojure.core.async :as a]
|
|
[advent.utils :as utils]))
|
|
|
|
(def purchase-chan (a/chan 1))
|
|
(def has-purchased? (atom false))
|
|
(def can-purchase? (atom false))
|
|
|
|
(defn set-purchase-pref [val]
|
|
(println "setting preference purchased:" val)
|
|
(let [prefs (.getPreferences (Gdx/app) "purchases")]
|
|
(.putBoolean prefs "has-purchased?" val)
|
|
(.flush prefs))
|
|
(reset! has-purchased? val)
|
|
(a/go (a/>! purchase-chan val)))
|
|
|
|
(defn check-purchase-pref []
|
|
(let [prefs (.getPreferences (Gdx/app) "purchases")]
|
|
(if (.contains prefs "has-purchased?")
|
|
(.getBoolean prefs "has-purchased?")
|
|
false)))
|
|
|
|
(defn use-pref []
|
|
(swap! has-purchased? #(or % (check-purchase-pref)))
|
|
(println "preferences purchased:" @has-purchased?))
|
|
|
|
(defn start-purchase []
|
|
(utils/platformify
|
|
(do
|
|
(require '[advent.ios])
|
|
(@(resolve 'advent.ios/start-purchase)) )
|
|
(.triggerPurchase (Gdx/app))
|
|
(set-purchase-pref true)))
|