Source Code

;; Zikr Counter - Digital dhikr tracking
;; Halal - remembrance of Allah
(define-constant ERR-NONE (err u404))
(define-data-var global-zikr uint u0)
(define-map user-zikr principal { total: uint, sessions: uint, last-block: uint })
(define-map zikr-types (string-ascii 30) uint)
(define-public (count-zikr (zikr-type (string-ascii 30)) (count uint))
  (let ((u (default-to { total: u0, sessions: u0, last-block: u0 } (map-get? user-zikr tx-sender)))
        (prev (default-to u0 (map-get? zikr-types zikr-type))))
    (map-set user-zikr tx-sender { total: (+ (get total u) count), sessions: (+ (get sessions u) u1), last-block: stacks-block-height })
    (map-set zikr-types zikr-type (+ prev count))
    (var-set global-zikr (+ (var-get global-zikr) count)) (ok count)))
(define-read-only (get-user-zikr (who principal)) (map-get? user-zikr who))
(define-read-only (get-zikr-type (t (string-ascii 30))) (ok (default-to u0 (map-get? zikr-types t))))
(define-read-only (get-global-zikr) (ok (var-get global-zikr)))

Functions (4)

FunctionAccessArgs
count-zikrpubliczikr-type: (string-ascii 30
get-user-zikrread-onlywho: principal
get-zikr-typeread-onlyt: (string-ascii 30
get-global-zikrread-only