From 74a7c8cd0600ede0665c2c900f4b31e2d32eeb5b Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Thu, 21 Sep 2017 07:28:40 -0700 Subject: [PATCH] first stab at android. --- android/src/clojure/advent/android.clj | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 android/src/clojure/advent/android.clj 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)))))) ) +