about summary refs log tree commit diff
path: root/configs/shared/emacs/.emacs.d/elpa/slack-20180913.651/slack-user.el
diff options
context:
space:
mode:
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/slack-20180913.651/slack-user.el')
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/slack-20180913.651/slack-user.el398
1 files changed, 0 insertions, 398 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/slack-20180913.651/slack-user.el b/configs/shared/emacs/.emacs.d/elpa/slack-20180913.651/slack-user.el
deleted file mode 100644
index 3653a6d1c184..000000000000
--- a/configs/shared/emacs/.emacs.d/elpa/slack-20180913.651/slack-user.el
+++ /dev/null
@@ -1,398 +0,0 @@
-;;; slack-user.el ---slack user interface            -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2015  南優也
-
-;; Author: 南優也 <yuyaminami@minamiyuunari-no-MacBook-Pro.local>
-;; Keywords:
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;;
-
-;;; Code:
-
-(require 'slack-util)
-(require 'slack-request)
-(require 'slack-room)
-
-(defconst slack-dnd-team-info-url "https://slack.com/api/dnd.teamInfo")
-(defconst slack-dnd-end-dnd-url "https://slack.com/api/dnd.endDnd")
-(defconst slack-dnd-set-snooze-url "https://slack.com/api/dnd.setSnooze")
-(defconst slack-set-presence-url "https://slack.com/api/users.setPresence")
-(defconst slack-user-info-url "https://slack.com/api/users.info")
-(defconst slack-user-profile-set-url "https://slack.com/api/users.profile.set")
-(defconst slack-bot-info-url "https://slack.com/api/bots.info")
-(defconst slack-bot-list-url "https://slack.com/api/bots.list")
-(defvar slack-current-user-id nil)
-
-(defun slack-user--find (id team)
-  (with-slots (users) team
-    (cl-find-if (lambda (user)
-                  (string= id (plist-get user :id)))
-                users)))
-
-(defun slack-user-find-by-name (name team)
-  (with-slots (users) team
-    (cl-find-if (lambda (user)
-                  (string= name (plist-get user :name)))
-                users)))
-
-(defun slack-user-get-id (name team)
-  (let ((user (slack-user-find-by-name name team)))
-    (if user
-        (plist-get user :id))))
-
-(defun slack-user-name (id team)
-  (slack-if-let* ((user (slack-user--find id team)))
-      (if (oref team full-and-display-names)
-          (plist-get user :real_name)
-        (plist-get user :name))))
-
-(defun slack-user-status (id team)
-  (let* ((user (slack-user--find id team))
-         (profile (and user (plist-get user :profile)))
-         (emoji (and profile (plist-get profile :status_emoji)))
-         (text (and profile (plist-get profile :status_text))))
-    (mapconcat #'identity (cl-remove-if #'null (list emoji text))
-               " ")))
-
-(defun slack-user-names (team)
-  (with-slots (users) team
-    (mapcar (lambda (u) (cons (plist-get u :name) u))
-            (cl-remove-if #'slack-user-hidden-p users))))
-
-(defun slack-user-dnd-in-range-p (user)
-  (let ((current (time-to-seconds))
-        (dnd-start (plist-get (plist-get user :dnd_status) :next_dnd_start_ts))
-        (dnd-end (plist-get (plist-get user :dnd_status) :next_dnd_end_ts)))
-    (and dnd-start dnd-end
-         (<= dnd-start current)
-         (<= current dnd-end))))
-
-(defun slack-user-dnd-status-to-string (user)
-  (if (slack-user-dnd-in-range-p user)
-      "Z"
-    nil))
-
-(defun slack-user-presence-to-string (user)
-  (if (string= (plist-get user :presence) "active")
-      "*"
-    " "))
-
-(defun slack-user-set-status ()
-  (interactive)
-  (let ((team (slack-team-select))
-        (emoji (slack-select-emoji))
-        (text (read-from-minibuffer "Text: ")))
-    (slack-user-set-status-request  team emoji text)))
-
-(defun slack-user-set-status-request (team emoji text)
-  (cl-labels ((on-success
-               (&key data &allow-other-keys)
-               (slack-request-handle-error
-                (data "slack-user-set-status-request"))))
-    (slack-request
-     (slack-request-create
-      slack-user-profile-set-url
-      team
-      :type "POST"
-      :data (list (cons "id" (oref team self-id))
-                  (cons "profile"
-                        (json-encode (list (cons "status_text" text)
-                                           (cons "status_emoji" emoji)))))
-      :success #'on-success))))
-
-(defun slack-bot-info-request (bot_id team &optional after-success)
-  (cl-labels
-      ((on-success (&key data &allow-other-keys)
-                   (slack-request-handle-error
-                    (data "slack-bot-info-request")
-                    (push (plist-get data :bot) (oref team bots))
-                    (if after-success
-                        (funcall after-success team)))))
-    (slack-request
-     (slack-request-create
-      slack-bot-info-url
-      team
-      :params (list (cons "bot" bot_id))
-      :success #'on-success))))
-
-(defun slack-bot-list-update (&optional team)
-  (interactive)
-  (let ((team (or team (slack-team-select))))
-    (cl-labels
-        ((on-success
-          (&key data &allow-other-keys)
-          (slack-request-handle-error
-           (data "slack-bot-list-update")
-           (oset team bots (append (plist-get data :bots) nil)))))
-      (slack-request
-       (slack-request-create
-        slack-bot-list-url
-        team
-        :success #'on-success)))))
-
-(defface slack-user-profile-header-face
-  '((t (:foreground "#FFA000"
-                    :weight bold
-                    :height 1.5)))
-  "Face used to user profile header."
-  :group 'slack)
-
-(defface slack-user-profile-property-name-face
-  '((t (:weight bold :height 1.2)))
-  "Face used to user property."
-  :group 'slack)
-
-(define-derived-mode slack-user-profile-mode fundamental-mode "Slack User"
-  ""
-  (setq-local default-directory slack-default-directory))
-
-(defun slack-user-profile (user)
-  (plist-get user :profile))
-
-(defun slack-user-fname (user)
-  (plist-get (slack-user-profile user) :first_name))
-
-(defun slack-user-lname (user)
-  (plist-get (slack-user-profile user) :last_name))
-
-(defun slack-user-header (user)
-  (let* ((fname (slack-user-fname user))
-         (lname (slack-user-lname user))
-         (name (plist-get user :name)))
-    (or (and fname lname
-             (format "%s %s - @%s"
-                     (slack-user-fname user)
-                     (slack-user-lname user)
-                     (plist-get user :name)))
-        name)))
-
-(defun slack-user-timezone (user)
-  (let ((offset (/ (plist-get user :tz_offset) (* 60 60))))
-    (format "%s, %s"
-            (or (plist-get user :tz)
-                (plist-get user :tz_label))
-            (if (<= 0 offset)
-                (format "+%s hour" offset)
-              (format "%s hour" offset)))))
-
-(defun slack-user-property-to-str (value title)
-  (and value (< 0 (length value))
-       (format "%s\n\t%s"
-               (propertize title 'face 'slack-user-profile-property-name-face)
-               value)))
-
-(defun slack-user-profile-to-string (id team)
-  (let* ((user (slack-user--find id team))
-         (image (slack-image-string (list (slack-user-image-url user 512)
-                                          nil nil nil (window-width
-                                                       (get-buffer-window
-                                                        (current-buffer))
-                                                       t))
-                                    nil t))
-         (profile (slack-user-profile user))
-         (header (propertize (slack-user-header user)
-                             'face 'slack-user-profile-header-face))
-         (presence (slack-user-property-to-str (plist-get user :presence) "Presence"))
-         (status (slack-user-property-to-str (slack-user-status id team) "Status"))
-         (timezone (slack-user-property-to-str (slack-user-timezone user) "Timezone"))
-         (email (slack-user-property-to-str (plist-get profile :email) "Email"))
-         (phone (slack-user-property-to-str (plist-get profile :phone) "Phone"))
-         (skype (slack-user-property-to-str (plist-get profile :skype) "Skype"))
-         (body (mapconcat #'identity
-                          (cl-remove-if #'null
-                                        (list presence status timezone email phone skype))
-                          "\n"))
-         (dm-button (propertize "[Open Direct Message]"
-                                'face '(:underline t)
-                                'keymap (let ((map (make-sparse-keymap)))
-                                          (define-key map (kbd "RET")
-                                            #'(lambda ()
-                                                (interactive)
-                                                (slack-if-let* ((buf slack-current-buffer))
-                                                    (slack-buffer-display-im buf))))
-                                          map))))
-    (format "\n%s\n\n%s%s\n%s\n\n%s" image header (format "  (%s)" id) body dm-button)))
-
-(defun slack-user-self-p (user-id team)
-  (string= user-id (oref team self-id)))
-
-(defun slack-user-name-alist (team &key filter)
-  (let ((users (oref team users)))
-    (mapcar #'(lambda (e) (cons (slack-user-name (plist-get e :id) team) e))
-            (if filter (funcall filter users)
-              users))))
-
-(defun slack-user-hidden-p (user)
-  (not (eq (plist-get user :deleted) :json-false)))
-
-(defun slack--user-select (team)
-  (slack-select-from-list ((slack-user-names team) "Select User: ")))
-
-(defun slack-user-select ()
-  (interactive)
-  (let* ((team (slack-team-select))
-         (alist (slack-user-name-alist
-                 team
-                 :filter #'(lambda (users)
-                             (cl-remove-if #'slack-user-hidden-p users)))))
-    (slack-select-from-list (alist "Select User: ")
-        (let ((buf (slack-create-user-profile-buffer team (plist-get selected :id))))
-          (slack-buffer-display buf)))))
-
-(cl-defun slack-user-info-request (user-id team &key after-success)
-  (cl-labels
-      ((on-success
-        (&key data &allow-other-keys)
-        (slack-request-handle-error
-         (data "slack-user-info-request")
-         (oset team users (cons (plist-get data :user)
-                                (cl-remove-if #'(lambda (user)
-                                                  (string= (plist-get user :id) user-id))
-                                              (oref team users))))
-         (slack-im-open (plist-get data :user))
-         (when after-success (funcall after-success)))))
-    (slack-request
-     (slack-request-create
-      slack-user-info-url
-      team
-      :params (list (cons "user" user-id))
-      :success #'on-success))))
-
-(defun slack-user-image-url-24 (user)
-  (plist-get (slack-user-profile user) :image_24))
-
-(defun slack-user-image-url-32 (user)
-  (plist-get (slack-user-profile user) :image_32))
-
-(defun slack-user-image-url-48 (user)
-  (plist-get (slack-user-profile user) :image_48))
-
-(defun slack-user-image-url-72 (user)
-  (plist-get (slack-user-profile user) :image_72))
-
-(defun slack-user-image-url-512 (user)
-  (plist-get (slack-user-profile user) :image_512))
-
-(defun slack-user-image-url (user size)
-  (cond
-   ((eq size 24) (slack-user-image-url-24 user))
-   ((eq size 32) (slack-user-image-url-32 user))
-   ((eq size 48) (slack-user-image-url-48 user))
-   ((eq size 72) (slack-user-image-url-72 user))
-   ((eq size 512) (slack-user-image-url-512 user))
-   (t (slack-user-image-url-32 user))))
-
-(defun slack-user-fetch-image (user size team)
-  (let* ((image-url (slack-user-image-url user size))
-         (file-path (and image-url (slack-profile-image-path image-url team))))
-    (when file-path
-      (if (file-exists-p file-path) file-path
-        (slack-url-copy-file image-url file-path
-                             :success (lambda ()
-                                        (slack-log (format "Success download Image: %s"
-                                                           file-path)
-                                                   team)))))
-    file-path))
-
-(cl-defun slack-user-image (user team &optional (size 32))
-  (when user
-    (let ((image (slack-user-fetch-image user size team)))
-      (when image
-        (create-image image nil nil :ascent 80)))))
-
-(defun slack-user-presence (user)
-  (plist-get user :presence))
-
-(defun slack-request-set-presence (team &optional presence)
-  (unless presence
-    (let ((current-presence (slack-user-presence (slack-user--find (oref team self-id)
-                                                                   team))))
-
-      (setq presence (or (and (string= current-presence "away") "auto")
-                         "away"))
-      ))
-  (cl-labels
-      ((on-success (&key data &allow-other-keys)
-                   (slack-request-handle-error
-                    (data "slack-request-set-presence"))))
-    (slack-request
-     (slack-request-create
-      slack-set-presence-url
-      team
-      :success #'on-success
-      :params (list (cons "presence" presence))))))
-
-(defun slack-request-dnd-set-snooze (team time)
-  (cl-labels
-      ((on-success (&key data &allow-other-keys)
-                   (slack-request-handle-error
-                    (data "slack-request-dnd-set-snooze")
-                    (message "setSnooze: %s" data))))
-    (let* ((input (slack-parse-time-string time))
-           (num-minutes (and time (/ (- (time-to-seconds input) (time-to-seconds))
-                                     60))))
-      (unless num-minutes
-        (error "Invalid time string %s" time))
-      (slack-request
-       (slack-request-create
-        slack-dnd-set-snooze-url
-        team
-        :success #'on-success
-        :params (list (cons "num_minutes" (format "%s" num-minutes))))))))
-
-(defun slack-request-dnd-end-dnd (team)
-  (cl-labels
-      ((on-success (&key data &allow-other-keys)
-                   (slack-request-handle-error
-                    (data "slack-request-dnd-end-dnd")
-                    (message "endDnd: %s" data))))
-    (slack-request
-     (slack-request-create
-      slack-dnd-end-dnd-url
-      team
-      :success #'on-success
-      ))))
-
-(defun slack-user-update-dnd-status (user dnd-status)
-  (plist-put user :dnd_status dnd-status))
-
-(defun slack-request-dnd-team-info (team &optional after-success)
-  (cl-labels
-      ((on-success
-        (&key data &allow-other-keys)
-        (slack-request-handle-error
-         (data "slack-request-dnd-team-info")
-         (let ((users (plist-get data :users)))
-           (oset team users
-                 (cl-loop for user in (oref team users)
-                          collect (plist-put
-                                   user
-                                   :dnd_status
-                                   (plist-get users
-                                              (intern (format ":%s"
-                                                              (plist-get user :id)))))))))
-        (when (functionp after-success)
-          (funcall after-success team))))
-    (slack-request
-     (slack-request-create
-      slack-dnd-team-info-url
-      team
-      :success #'on-success))))
-
-(provide 'slack-user)
-;;; slack-user.el ends here