   (js/console.log @video-id->message-id)
 
   (go
+    (-> (gmail-filters) <! find-youtube-filter js/console.log))
+
+  (go
     (-> (request-token) <! js/console.log))
   (go
     (-> (youtube-queue-ids {}) <!

            [goog.crypt.base64 :as gb]
            [clojure.string :as str]
            [pathom.core :as p]
            [cljs.spec :as s])
  (:import goog.Uri
           goog.Uri.QueryData))


(s/def :youtube.video/like-count nat-int?)
(s/def :youtube.video/dislike-count nat-int?)
(s/def :youtube.video/comment-count nat-int?)

(s/def :gmail.filter/id string?)
(s/def :gmail.filter.criteria/from string?)
(s/def :gmail.filter.action/add-label-ids string?)
(s/def :gmail.filter.action/remove-label-ids string?)

(defn map->flatten-ns [ns m]
  (reduce
    (fn [m [k v]]
      (let [k (-> k name gstr/toSelectorCase)]
        (if (map? v)
          (merge m (map->flatten-ns (str ns "." k) v))
          (assoc m (keyword ns k) v))))
    {}
    m))

(defn get-auth-token [options]
  (let [c (async/promise-chan)]
