@@ -169,8 +169,9 @@ When ACCOUNT or PASSWORD is empty string it will show a prompt."
169
169
(" login" . (" " :data , account ))
170
170
(" password" . (" " :data , password )))
171
171
:success
172
- (cl-function (lambda (&key data &allow-other-keys )
173
- (leetcode-global-loading-mode -1 )))
172
+ (cl-function
173
+ (lambda (&key data &allow-other-keys )
174
+ (leetcode-global-loading-mode -1 )))
174
175
:error
175
176
(cl-function
176
177
(lambda (&rest args &key error-thrown &allow-other-keys )
@@ -187,45 +188,44 @@ When ACCOUNT or PASSWORD is empty string it will show a prompt."
187
188
(request-cookie-alist
188
189
(concat " ." leetcode--domain) " /" t )))))
189
190
190
- (defun leetcode--set-user-and-problems (response )
191
+ (defun leetcode--set-user-and-problems (res )
191
192
" Set `leetcode--user' and `leetcode--problems' .
192
- If user isn't login, only `leetcode--problems' will be set.
193
- RESPONSE is a request.el response."
194
- (let ((data (request-response-data response)))
195
- ; ; user
196
- (setq leetcode--user (plist-put leetcode--user :username (alist-get 'user_name data)))
197
- (setq leetcode--user (plist-put leetcode--user :solved (alist-get 'num_solved data)))
198
- (setq leetcode--user (plist-put leetcode--user :easy (alist-get 'ac_easy data)))
199
- (setq leetcode--user (plist-put leetcode--user :medium (alist-get 'ac_medium data)))
200
- (setq leetcode--user (plist-put leetcode--user :hard (alist-get 'ac_hard data)))
201
- ; ; problem list
202
- (setq leetcode--problems (plist-put leetcode--problems :num (alist-get 'num_total data)))
203
- (setq leetcode--problems (plist-put leetcode--problems :tag " all" ))
204
- (setq leetcode--problems
205
- (plist-put leetcode--problems :problems
206
- (let ((raw-vec (alist-get 'stat_status_pairs data))
207
- (len (plist-get leetcode--problems :num ))
208
- problems)
209
- (dolist (i (number-sequence 0 (1- len)))
210
- (let* ((cur (aref raw-vec i))
211
- (stat (alist-get 'stat cur))
212
- (status (alist-get 'status cur))
213
- (difficulty (alist-get 'level (alist-get 'difficulty cur)))
214
- (paid-only (eq (alist-get 'paid_only cur) t ))
215
- (question-id (alist-get 'question_id stat))
216
- (total-submitted (alist-get 'total_submitted stat))
217
- (total-acs (alist-get 'total_acs stat)))
218
- (push
219
- (list
220
- :status status
221
- :id question-id
222
- :pos (- len i)
223
- :title (alist-get 'question__title stat)
224
- :acceptance (format " %. 1f%% " (* 100 (/ (float total-acs) total-submitted)))
225
- :difficulty difficulty
226
- :paid-only paid-only)
227
- problems)))
228
- problems)))))
193
+ If user isn't login, only `leetcode--problems' will be set. RES
194
+ is an alist comes from `leetcode--api-all-problems' ."
195
+ ; ; user
196
+ (setq leetcode--user (plist-put leetcode--user :username (alist-get 'user_name res)))
197
+ (setq leetcode--user (plist-put leetcode--user :solved (alist-get 'num_solved res)))
198
+ (setq leetcode--user (plist-put leetcode--user :easy (alist-get 'ac_easy res)))
199
+ (setq leetcode--user (plist-put leetcode--user :medium (alist-get 'ac_medium res)))
200
+ (setq leetcode--user (plist-put leetcode--user :hard (alist-get 'ac_hard res)))
201
+ ; ; problem list
202
+ (setq leetcode--problems (plist-put leetcode--problems :num (alist-get 'num_total res)))
203
+ (setq leetcode--problems (plist-put leetcode--problems :tag " all" ))
204
+ (setq leetcode--problems
205
+ (plist-put leetcode--problems :problems
206
+ (let ((raw-vec (alist-get 'stat_status_pairs res))
207
+ (len (plist-get leetcode--problems :num ))
208
+ problems)
209
+ (dolist (i (number-sequence 0 (1- len)))
210
+ (let* ((cur (aref raw-vec i))
211
+ (status (alist-get 'status cur))
212
+ (stat (alist-get 'stat cur))
213
+ (question-id (alist-get 'question_id stat))
214
+ (total-submitted (alist-get 'total_submitted stat))
215
+ (total-acs (alist-get 'total_acs stat))
216
+ (difficulty (alist-get 'level (alist-get 'difficulty cur)))
217
+ (paid-only (eq (alist-get 'paid_only cur) t )))
218
+ (push
219
+ (list
220
+ :status status
221
+ :id question-id
222
+ :pos (- len i)
223
+ :title (alist-get 'question__title stat)
224
+ :acceptance (format " %. 1f%% " (* 100 (/ (float total-acs) total-submitted)))
225
+ :difficulty difficulty
226
+ :paid-only paid-only)
227
+ problems)))
228
+ problems))))
229
229
230
230
(defun leetcode--slugify-title (title )
231
231
" Make TITLE a slug title.
@@ -305,7 +305,7 @@ row."
305
305
(defun leetcode--problems-rows ()
306
306
" Generate tabulated list rows from `leetcode--problems' .
307
307
Return a list of rows, each row is a vector:
308
- ([<checkmark> <position> <acceptance> <difficulty>] ...)"
308
+ \ ( [<checkmark> <position> <title > <acceptance> <difficulty>] ...)"
309
309
(let ((problems (reverse (plist-get leetcode--problems :problems )))
310
310
(easy-tag " easy" )
311
311
(medium-tag " medium" )
@@ -355,7 +355,8 @@ Return a list of rows, each row is a vector:
355
355
,(leetcode--referer leetcode--url-login))
356
356
:parser 'json-read )
357
357
(deferred:nextc it
358
- (lambda (response ) (leetcode--set-user-and-problems response)))
358
+ (lambda (response )
359
+ (leetcode--set-user-and-problems (request-response-data response))))
359
360
(deferred:nextc it
360
361
(lambda ()
361
362
(let* ((header-names '(" " " #" " Problem" " Acceptance" " Difficulty" ))
@@ -379,18 +380,17 @@ Return a list of rows, each row is a vector:
379
380
(interactive )
380
381
(if (get-buffer leetcode--buffer-name)
381
382
(switch-to-buffer leetcode--buffer-name)
382
- (if (leetcode--login-p)
383
- (deferred:$
383
+ (deferred:$
384
+ (if (leetcode--login-p)
385
+ (deferred:next
386
+ (lambda ()
387
+ (message " User have been login in. " )))
388
+ (leetcode--login leetcode-account leetcode-password))
389
+ (deferred:nextc it
390
+ (lambda ()
384
391
(deferred:nextc (leetcode-problems-refresh)
385
392
(lambda ()
386
- (switch-to-buffer leetcode--buffer-name))))
387
- (deferred:$
388
- (leetcode--login leetcode-account leetcode-password)
389
- (deferred:nextc it
390
- (lambda ()
391
- (deferred:nextc (leetcode-problems-refresh)
392
- (lambda ()
393
- (switch-to-buffer leetcode--buffer-name)))))))))
393
+ (switch-to-buffer leetcode--buffer-name))))))))
394
394
395
395
(defun leetcode--buffer-content (buf )
396
396
" Get content without text properties of BUF."
0 commit comments