Skip to content

Commit ea33ed1

Browse files
committed
modify for multiple team
1 parent f235230 commit ea33ed1

21 files changed

+985
-863
lines changed

slack-bot-message.el

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,31 +28,30 @@
2828
(require 'slack-message)
2929
(require 'slack-message-formatter)
3030

31-
(defvar slack-bots)
31+
(defun slack-find-bot (id team)
32+
(with-slots (bots) team
33+
(cl-find-if (lambda (bot)
34+
(string= id (plist-get bot :id)))
35+
bots)))
3236

33-
(defun slack-find-bot (id)
34-
(cl-find-if (lambda (bot)
35-
(string= id (plist-get bot :id)))
36-
slack-bots))
37-
38-
(defmethod slack-bot-name ((m slack-bot-message))
37+
(defmethod slack-bot-name ((m slack-bot-message) team)
3938
(if (slot-boundp m 'bot-id)
40-
(let ((bot (slack-find-bot (oref m bot-id))))
39+
(let ((bot (slack-find-bot (oref m bot-id) team)))
4140
(if bot
4241
(plist-get bot :name)))
4342
(oref m username)))
4443

45-
(defmethod slack-message-to-alert ((m slack-bot-message))
44+
(defmethod slack-message-to-alert ((m slack-bot-message) team)
4645
(let ((text (if (slot-boundp m 'text)
4746
(oref m text))))
4847
(with-slots (attachments) m
4948
(if (and text (< 0 (length text)))
50-
(slack-message-unescape-string text)
49+
(slack-message-unescape-string text team)
5150
(let ((attachment-string (mapconcat #'slack-attachment-to-alert attachments " ")))
52-
(slack-message-unescape-string attachment-string))))))
51+
(slack-message-unescape-string attachment-string team))))))
5352

54-
(defmethod slack-message-sender-name ((m slack-bot-message))
55-
(slack-bot-name m))
53+
(defmethod slack-message-sender-name ((m slack-bot-message) team)
54+
(slack-bot-name m team))
5655

5756
(defmethod slack-attachment-to-string ((a slack-attachment))
5857
(with-slots (fallback text pretext title title-link) a

slack-buffer.el

Lines changed: 46 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,9 @@
4444
""
4545
(lui-set-prompt lui-prompt-string))
4646

47-
(defvar slack-current-room)
48-
(make-local-variable 'slack-current-room)
49-
47+
(defvar slack-current-room-id)
48+
(defvar slack-current-team-id)
5049
(defvar slack-current-message nil)
51-
5250
(defcustom slack-buffer-emojify nil
5351
"Show emoji with `emojify' if true."
5452
:group 'slack)
@@ -64,8 +62,11 @@
6462
(add-hook 'lui-post-output-hook 'slack-buffer-add-ts-property nil t)))
6563
buffer))
6664

67-
(defun slack-buffer-set-current-room (room)
68-
(set (make-local-variable 'slack-current-room) room))
65+
(defun slack-buffer-set-current-room-id (room)
66+
(set (make-local-variable 'slack-current-room-id) (oref room id)))
67+
68+
(defun slack-buffer-set-current-team-id (team)
69+
(set (make-local-variable 'slack-current-team-id) (oref team id)))
6970

7071
(defun slack-buffer-enable-emojify ()
7172
(if slack-buffer-emojify
@@ -76,14 +77,15 @@
7677

7778
(defun slack-buffer-insert-previous-link (oldest-msg)
7879
(lui-insert (concat (propertize "(load more message)"
79-
'face '(:underline t)
80-
'oldest (oref oldest-msg ts)
81-
'keymap (let ((map (make-sparse-keymap)))
82-
(define-key map (kbd "RET")
83-
#'slack-room-load-prev-messages)
84-
map))
85-
"\n")))
86-
(cl-defun slack-buffer-create (room &optional
80+
'face '(:underline t)
81+
'oldest (oref oldest-msg ts)
82+
'keymap (let ((map (make-sparse-keymap)))
83+
(define-key map (kbd "RET")
84+
#'slack-room-load-prev-messages)
85+
map))
86+
"\n")))
87+
(cl-defun slack-buffer-create (room team
88+
&optional
8789
(insert-func
8890
#'slack-buffer-insert-messages)
8991
(type 'message))
@@ -92,12 +94,13 @@
9294
(cl-ecase type
9395
(message (slack-get-buffer-create buf-name))
9496
(info (slack-get-info-buffer-create buf-name)))))
95-
(let* ((buf-name (slack-room-buffer-name room))
97+
(let* ((buf-name (slack-room-buffer-name room team))
9698
(buffer (get-buffer type buf-name)))
9799
(with-current-buffer buffer
98100
(if insert-func
99-
(funcall insert-func room))
100-
(slack-buffer-set-current-room room)
101+
(funcall insert-func room team))
102+
(slack-buffer-set-current-room-id room)
103+
(slack-buffer-set-current-team-id team)
101104
(oset room unread-count-display 0)
102105
(slack-buffer-enable-emojify))
103106
buffer)))
@@ -114,70 +117,55 @@
114117
(point-min) (point-max)
115118
`(ts ,(oref slack-current-message ts)))))
116119

117-
(defun slack-buffer-insert (message &optional not-tracked-p)
120+
(defun slack-buffer-insert (message team &optional not-tracked-p)
118121
(let ((lui-time-stamp-time (slack-message-time-stamp message))
119122
(beg lui-input-marker)
120123
(inhibit-read-only t))
121124
(let ((slack-current-message message))
122-
(lui-insert (slack-message-to-string message) not-tracked-p))))
125+
(lui-insert (slack-message-to-string message team) not-tracked-p))))
123126

124-
(defun slack-buffer-insert-messages (room)
127+
(defun slack-buffer-insert-messages (room team)
125128
(let ((messages (slack-room-latest-messages room)))
126129
(when messages
127130
(slack-buffer-insert-previous-link (cl-first messages))
128131
(mapc (lambda (m)
129-
(slack-buffer-insert m t))
132+
(slack-buffer-insert m team t))
130133
messages)
131134
(let ((latest-message (car (last messages))))
132135
(slack-room-update-last-read room latest-message)
133-
(slack-room-update-mark room latest-message)))))
136+
(slack-room-update-mark room team latest-message)))))
134137

135-
(cl-defun slack-buffer-update (room msg &key replace)
138+
139+
(cl-defun slack-buffer-update (room msg &key replace team)
136140
(cl-labels ((do-update (buf room msg)
137141
(with-current-buffer buf
138142
(slack-room-update-last-read room msg)
139-
(slack-buffer-insert msg))))
140-
(let* ((buf-name (slack-room-buffer-name room))
143+
(slack-buffer-insert msg team))))
144+
(let* ((buf-name (slack-room-buffer-name room team))
141145
(buffer (get-buffer buf-name))
142146
(win-buf-names (mapcar #'buffer-name (mapcar #'window-buffer
143-
(window-list)))))
147+
(window-list)))))
144148
(if (cl-member buf-name win-buf-names :test #'string=)
145-
(slack-room-update-mark room msg)
149+
(slack-room-update-mark room team msg)
146150
(cl-incf (oref room unread-count-display)))
147151
(if buffer
148152
(if replace (slack-buffer-replace buffer msg)
149153
(do-update buffer room msg))))))
150154

151155
(defun slack-buffer-replace (buffer msg)
152-
(cl-labels ((ts-eq
153-
(start ts)
154-
(cl-loop for i from start to (point-max)
155-
if (string=
156-
(get-text-property i 'ts)
157-
ts)
158-
return i))
159-
(ts-not-eq
160-
(start ts)
161-
(cl-loop for i from start to (point-max)
162-
if (not (string=
163-
(get-text-property i 'ts)
164-
ts))
165-
return i)))
166-
(with-current-buffer buffer
167-
(let* ((cur-point (point))
168-
(ts (oref msg ts))
169-
(beg (ts-eq (point-min) ts))
170-
(end (ts-not-eq beg ts))
171-
;; (beg (text-property-any (point-min) (point-max) 'ts (oref msg ts)))
172-
;; (end (next-single-property-change beg 'ts))
173-
(lui-time-stamp-last (get-text-property beg 'slack-last-ts)))
174-
(if (and beg end)
175-
(let ((inhibit-read-only t))
176-
(delete-region beg end)
177-
(set-marker lui-output-marker beg)
178-
(slack-buffer-insert msg)
179-
(goto-char cur-point)
180-
(slack-buffer-recover-lui-output-marker)))))))
156+
(with-current-buffer buffer
157+
(let* ((cur-point (point))
158+
(beg (text-property-any (point-min) (point-max) 'ts (oref msg ts)))
159+
(end (next-single-property-change beg 'ts))
160+
(lui-time-stamp-last (get-text-property beg 'slack-last-ts)))
161+
(if (and beg end)
162+
(let ((inhibit-read-only t))
163+
(delete-region beg end)
164+
(set-marker lui-output-marker beg)
165+
(slack-buffer-insert msg
166+
(slack-team-find slack-current-team-id))
167+
(goto-char cur-point)
168+
(slack-buffer-recover-lui-output-marker))))))
181169

182170
(defun slack-buffer-recover-lui-output-marker ()
183171
(set-marker lui-output-marker (- (marker-position
@@ -210,7 +198,8 @@
210198
buf))
211199

212200
(defun slack-reset-room-last-read ()
213-
(let ((room slack-current-room))
201+
(let ((room (slack-room-find slack-current-room-id
202+
(slack-team-find slack-current-team-id))))
214203
(slack-room-update-last-read room
215204
(slack-message "msg" :ts "0"))))
216205

0 commit comments

Comments
 (0)