Source Code

;; title: aibtc-action-send-message
;; version: 1.0.0
;; summary: A predefined action to send a message through the onchain messaging system.

;; traits
;;

(impl-trait 'SPW8QZNWKZGVHX012HCBJVJVPS94PXFG578P53TM.aibtc-dao-traits.extension)
(impl-trait 'SPW8QZNWKZGVHX012HCBJVJVPS94PXFG578P53TM.aibtc-dao-traits.action)

;; constants
;;

(define-constant ERR_NOT_DAO_OR_EXTENSION (err u2000))
(define-constant ERR_INVALID_PARAMETERS (err u2001))

;; public functions
;;

(define-public (callback
    (sender principal)
    (memo (buff 34))
  )
  (ok true)
)

(define-public (run (parameters (buff 2048)))
  (let ((message (unwrap! (from-consensus-buff? (string-utf8 2043) parameters)
      ERR_INVALID_PARAMETERS
    )))
    (try! (is-dao-or-extension))
    (contract-call? .fake-onchain-messaging send message)
  )
)

(define-public (check-parameters (parameters (buff 2048)))
  (let ((message (unwrap! (from-consensus-buff? (string-utf8 2043) parameters)
      ERR_INVALID_PARAMETERS
    )))
    ;; check there is a message
    (asserts! (> (len message) u0) ERR_INVALID_PARAMETERS)
    (ok true)
  )
)

;; private functions
;;

(define-private (is-dao-or-extension)
  (ok (asserts!
    (or
      (is-eq tx-sender .fake-base-dao)
      (contract-call? .fake-base-dao is-extension contract-caller)
    )
    ERR_NOT_DAO_OR_EXTENSION
  ))
)

Functions (4)

FunctionAccessArgs
callbackpublicsender: principal, memo: (buff 34
runpublicparameters: (buff 2048
check-parameterspublicparameters: (buff 2048
is-dao-or-extensionprivate