emacs-slack
emacs-slack copied to clipboard
Zoom links not supported (solution inside)
In my company we using slack with zoom app, which generates special blocks inside buffer with "join" button and additional stuff. I added rudimentary support for this type of blocks - it's not perfect, but I suppose it useful enough to post it here. Just add it somewhere in your slack config:
;; Zoom support
(defclass slack-zoom-call-block ()
((type :initarg :type :type string)
(block-id :initarg :block_id :type string)
(name :initarg :name :type string)
(id :initarg :id :type string)
(join-url :initarg :join_url :type string)))
(cl-defmethod slack-block-to-string ((this slack-zoom-call-block) &optional _option)
(with-slots (name id join-url) this
(format "%s\nMeeting ID: %s\n<%s|Join>"
(propertize name 'face 'slack-mrkdwn-bold-face) id join-url)))
(defun slack-create-zoom-call-block (payload)
(let ((call-data (plist-get (plist-get payload :call) :v1)))
(make-instance 'slack-zoom-call-block
:type (plist-get payload :type)
:block_id (plist-get payload :block_id)
:name (plist-get call-data :name)
:id (plist-get call-data :id)
:join_url (plist-get call-data :join_url))))
(defun my/slack-create-layout-block-advice (orig &rest args)
(let ((type (plist-get (cl-first args) :type)))
(if (string= "call" type)
(slack-create-zoom-call-block (cl-first args))
(apply orig args))))
(advice-add 'slack-create-layout-block :around 'my/slack-create-layout-block-advice)