diff --git a/.env.sample b/.env.sample index ccdcb8a..abf2af3 100644 --- a/.env.sample +++ b/.env.sample @@ -3,8 +3,10 @@ DAEMON_URL= # These are for powering the LBRY Developer Program +DEV_PROGRAM_OAUTH= GITHUB_APP_ID= -GITHUB_APP_TOKEN= +REWARD_URL= +REWARD_URL_TEST= # https://developer.github.com/apps/building-oauth-apps/creating-an-oauth-app # We use this to show the GitHub feed on the homepage diff --git a/app/dist/scripts/sockets.js b/app/dist/scripts/sockets.js index 6d5344b..3e236a2 100644 --- a/app/dist/scripts/sockets.js +++ b/app/dist/scripts/sockets.js @@ -19,7 +19,7 @@ function checkWebSocketConnection() { function initializeWebSocketConnection() { ws = new WebSocket(location.origin.replace(/^http/, "ws")); - ws.onopen = () => console.log("WebSocket connection established"); // eslint-disable-line + // ws.onopen = () => console.log("WebSocket connection established"); // eslint-disable-line no-console ws.onmessage = socket => { const data = JSON.parse(socket.data); diff --git a/app/sockets.js b/app/sockets.js index bdd3c7d..7afbedc 100644 --- a/app/sockets.js +++ b/app/sockets.js @@ -13,10 +13,44 @@ import fetchMetadata from "@helper/fetch-metadata"; import { generateGitHubFeed } from "@helper/github"; import messageSlack from "@helper/slack"; +const apiUrl = process.env.NODE_ENV === "development" ? + process.env.REWARD_URL_TEST : + process.env.REWARD_URL; + // P R O G R A M +async function syncWithApi(data, socket) { + try { + let result = await got(`https://${apiUrl}/reward/new?github_token=${process.env.DEV_PROGRAM_OAUTH}&reward_type=github_developer&wallet_address=${data.address}`, { json: true }); + + result = result.body.data; + + return send(socket, { + html: `

Success! Your wallet has been credited with ${result.reward_amount} LBC.

`, + message: "updated html", + selector: "developer-program" + }); + } catch(error) { + if (!error.body) { + return send(socket, { + html: "

LBRY API is down. Please try again later.

", + message: "updated html", + selector: "developer-program" + }); + } + + console.log(error.body); // eslint-disable-line no-console + + return send(socket, { + html: "

This reward is limited to ONE per person. Your enthusiasm is appreciated.

", + message: "updated html", + selector: "developer-program" + }); + } +} + export default (socket, action) => { if (typeof socket !== "object" && typeof action !== "object") return; @@ -26,6 +60,10 @@ export default (socket, action) => { getGitHubUserToken(socket); break; + case action.message === "verify github auth": + syncWithApi(action, socket); + break; + case action.message === "fetch metadata": fetchMetadata(action, socket); break; @@ -335,7 +373,7 @@ function generateMemeCreator(socket) { function getGitHubUserToken(socket) { send(socket, { message: "redirect", - url: `https://github.com/login/oauth/authorize?client_id=${process.env.GITHUB_APP_ID}` + url: `https://github.com/login/oauth/authorize?client_id=${process.env.GITHUB_APP_ID}&scope=public_repo,user:email` }); }