diff --git a/android/src/clojure/advent/android.clj b/android/src/clojure/advent/android.clj new file mode 100644 index 00000000..bdd27e1e --- /dev/null +++ b/android/src/clojure/advent/android.clj @@ -0,0 +1,22 @@ +(ns advent.android + (:import [com.android.billingclient.api PurchasesUpdatedListener PurchaseHistoryResponseListener Purchase$PurchasesResult]) + (:require [clojure.core.async :as a])) + +(def purchase-chan (a/chan)) + +(def listener + (reify PurchasesUpdatedListener + (onPurchasesUpdated [this response-code purchases] + (println response-code purchases) + (let [result (and purchases (> (.size purchases) 0))] + (reset! @(resolve 'advent.core/has-purchased?) (if result true false)) + (a/go (a/>! purchase-chan (if result true false)))))) ) + +(def history-listener + (reify PurchaseHistoryResponseListener + (onPurchaseHistoryResponse [this purchases-result] + (println "got history") + (let [result (and purchases-result (.getPurchasesList purchases-result) (> (.size (.getPurchasesList purchases-result)) 0))] + (reset! @(resolve 'advent.core/has-purchased?) (if result true false)) + (a/go (a/>! purchase-chan (if result true false)))))) ) +