diff --git a/resources/migrations/20171109164844-user-has-address-to-activity.down.sql b/resources/migrations/20171109164844-user-has-address-to-activity.down.sql new file mode 100644 index 0000000..e69de29 diff --git a/resources/migrations/20171109164844-user-has-address-to-activity.up.sql b/resources/migrations/20171109164844-user-has-address-to-activity.up.sql new file mode 100644 index 0000000..c516fe5 --- /dev/null +++ b/resources/migrations/20171109164844-user-has-address-to-activity.up.sql @@ -0,0 +1,79 @@ +DROP VIEW "public"."claims_view" CASCADE; + +CREATE VIEW "public"."claims_view" AS SELECT i.title AS issue_title, + i.issue_number, + r.repo AS repo_name, + r.owner AS repo_owner, + COALESCE(u.name, u.login) AS user_name, + u.avatar_url AS user_avatar_url, + i.payout_receipt, + p.updated, + i.updated AS issue_updated, + i.balance_eth, + i.tokens, + i.value_usd, + p.state AS pr_state, + i.is_open AS issue_open, + (case when u.address IS NULL THEN false ELSE true END) AS user_has_address + FROM issues i, + users u, + repositories r, + pull_requests p + WHERE r.repo_id = i.repo_id + AND p.issue_id = i.issue_id + AND p.user_id = u.id + AND i.contract_address IS NOT NULL + AND i.comment_id IS NOT NULL + ORDER BY p.updated; + + +CREATE OR REPLACE VIEW "public"."activity_feed_view" AS + SELECT 'open-claim'::text AS type, + claims_view.issue_title, + claims_view.repo_name, + claims_view.repo_owner, + claims_view.issue_number, + claims_view.user_name, + claims_view.user_avatar_url, + claims_view.balance_eth, + claims_view.tokens, + claims_view.value_usd, + claims_view.user_has_address, + claims_view.updated + FROM claims_view + WHERE claims_view.pr_state = 0 + AND claims_view.payout_receipt IS NULL + AND claims_view.issue_open IS TRUE +UNION + SELECT 'claim-pending'::text AS type, + claims_view.issue_title, + claims_view.repo_name, + claims_view.repo_owner, + claims_view.issue_number, + claims_view.user_name, + claims_view.user_avatar_url, + claims_view.balance_eth, + claims_view.tokens, + claims_view.value_usd, + claims_view.user_has_address, + claims_view.issue_updated AS updated + FROM claims_view + WHERE claims_view.pr_state = 1 + AND claims_view.payout_receipt IS NULL +UNION + SELECT 'claim-payout'::text AS type, + claims_view.issue_title, + claims_view.repo_name, + claims_view.repo_owner, + claims_view.issue_number, + claims_view.user_name, + claims_view.user_avatar_url, + claims_view.balance_eth, + claims_view.tokens, + claims_view.value_usd, + claims_view.user_has_address, + claims_view.issue_updated AS updated + FROM claims_view + WHERE claims_view.pr_state = 1 + AND claims_view.payout_receipt IS NOT NULL + ORDER BY 12 DESC; diff --git a/resources/sql/queries.sql b/resources/sql/queries.sql index 976c928..a95f34b 100644 --- a/resources/sql/queries.sql +++ b/resources/sql/queries.sql @@ -571,6 +571,7 @@ SELECT balance_eth, tokens, value_usd, + user_has_address, updated FROM activity_feed_view ORDER BY updated DESC diff --git a/src/clj/commiteth/routes/services.clj b/src/clj/commiteth/routes/services.clj index 379e254..9b72051 100644 --- a/src/clj/commiteth/routes/services.clj +++ b/src/clj/commiteth/routes/services.clj @@ -13,7 +13,6 @@ [commiteth.eth.core :as eth] [commiteth.github.core :as github] [clojure.tools.logging :as log] - [commiteth.eth.core :as eth] [commiteth.config :refer [env]] [commiteth.util.util :refer [usd-decimal->str eth-decimal->str]] @@ -147,15 +146,16 @@ (defn prettify-bounty-items [bounty-items] (let [renames {:user_name :display-name - :user_avatar_url :avatar-url - :issue_title :issue-title - :type :item-type - :repo_name :repo-name - :repo_owner :repo-owner - :issue_number :issue-number - :value_usd :value-usd - :claim_count :claim-count - :balance_eth :balance-eth}] + :user_avatar_url :avatar-url + :issue_title :issue-title + :type :item-type + :repo_name :repo-name + :repo_owner :repo-owner + :issue_number :issue-number + :value_usd :value-usd + :claim_count :claim-count + :balance_eth :balance-eth + :user_has_address :user-has-address}] (map #(-> % (rename-keys renames) (update :value-usd usd-decimal->str) @@ -185,28 +185,9 @@ (dissoc :email) (assoc :status-team-member? status-member?))})) -;; NOTE: This assumes username can be trusted and not tampered with -(def user-whitelisted? - #{"oskarth" - "tpatja" - "carlbennetts" - "jarradh" - "anna02test" - "anna03test" - "anna04test" - "anna05test" - "anna06test" - "anna07test" - "anna08test" - "anna09test" - "pablanopete" - "andytudhope" - "ara4n" - "commitethtest" - "noman-land" - "cancuncoconut" - "Chu127001" - "izqui"}) +(defn user-whitelisted? [user] + (let [whitelist (env :user-whitelist #{})] + (whitelist user))) (defapi service-routes (when (:dev env) diff --git a/src/cljs/commiteth/activity.cljs b/src/cljs/commiteth/activity.cljs index 8c1ba94..36f4162 100644 --- a/src/cljs/commiteth/activity.cljs +++ b/src/cljs/commiteth/activity.cljs @@ -11,7 +11,8 @@ item-type repo-owner repo-name - issue-number] :as item}] + issue-number + user-has-address] :as item}] (let [issue-link [:a {:href (issue-url repo-owner repo-name issue-number)} issue-title]] @@ -21,7 +22,10 @@ " for " issue-link] "open-claim" [:div "Submitted a claim for " issue-link] "balance-update" [:div issue-link " bounty increased to USD " value-usd] - "claim-pending" [:div "Won USD " value-usd " for " issue-link " (payout pending maintainer confirmation)"] + "claim-pending" [:div "Won USD " value-usd " for " issue-link + (if user-has-address + " (payout pending maintainer confirmation)" + " (payout pending user to update ETH address)")] "")))