diff options
| author | LLLL Colonq <llll@colonq> | 2024-12-10 14:28:30 -0500 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2024-12-10 14:28:30 -0500 |
| commit | 638bdddeb10b18dd35af5a6de2950aaa3c8a5e44 (patch) | |
| tree | 4a995c6b740ef3ef2b5619c7e9ffb68a970ae156 /src/Main | |
| parent | ff56e27d4874f559a62bea5e6eeb258443e31936 (diff) | |
Initial mrgreen activities
Diffstat (limited to 'src/Main')
| -rw-r--r-- | src/Main/API.purs | 10 | ||||
| -rw-r--r-- | src/Main/Auth.purs | 46 | ||||
| -rw-r--r-- | src/Main/Button.purs | 29 | ||||
| -rw-r--r-- | src/Main/Extension.purs | 19 | ||||
| -rw-r--r-- | src/Main/Greencircle.purs | 11 | ||||
| -rw-r--r-- | src/Main/Menu.purs | 22 | ||||
| -rw-r--r-- | src/Main/OBS.purs | 11 | ||||
| -rw-r--r-- | src/Main/Pubnix.purs | 52 | ||||
| -rw-r--r-- | src/Main/Register.purs | 45 |
9 files changed, 245 insertions, 0 deletions
diff --git a/src/Main/API.purs b/src/Main/API.purs new file mode 100644 index 0000000..f47c7d6 --- /dev/null +++ b/src/Main/API.purs @@ -0,0 +1,10 @@ +module Main.API where + +import Control.Monad (pure) +import Data.Unit (Unit, unit) +import Effect (Effect) +import Effect.Aff (launchAff_) + +main :: Effect Unit +main = launchAff_ do + pure unit diff --git a/src/Main/Auth.purs b/src/Main/Auth.purs new file mode 100644 index 0000000..04fe6e1 --- /dev/null +++ b/src/Main/Auth.purs @@ -0,0 +1,46 @@ +module Main.Auth where + +import Prelude + +import Auth (getQueryRedirect, getResponseRedirect) +import Data.HTTP.Method (Method(..)) +import Data.Maybe (Maybe(..)) +import Effect (Effect) +import Effect.Aff (launchAff_) +import Effect.Class (liftEffect) +import Effect.Console (log) +import Fetch (fetch) +import UI as UI +import Utils (byId, getValue, listen, removeClass) +import Web.Event.Event as Ev + +main :: Effect Unit +main = launchAff_ do + liftEffect $ log "hello from auth" + container <- byId "lcolonq-auth-login" + removeClass "lcolonq-invisible" container + form <- byId "lcolonq-auth-form" + listen form "submit" \ev -> launchAff_ do + liftEffect $ Ev.preventDefault ev + usernameInp <- byId "lcolonq-auth-username" + passwordInp <- byId "lcolonq-auth-password" + username <- getValue usernameInp + password <- getValue passwordInp + rd <- getQueryRedirect + { json: resp } <- fetch "/api/firstfactor" + { method: POST + , headers: { "Content-Type": "application/json" } + , body: UI.toJSON + { username + , password + , targetURL: case rd of + Just r -> r + Nothing -> "https://secure.colonq.computer" + } + } + res <- resp + getResponseRedirect res >>= case _ of + Nothing -> do + err <- byId "lcolonq-auth-error" + removeClass "lcolonq-invisible" err + Just r -> UI.redirect r diff --git a/src/Main/Button.purs b/src/Main/Button.purs new file mode 100644 index 0000000..e05a0d8 --- /dev/null +++ b/src/Main/Button.purs @@ -0,0 +1,29 @@ +module Main.Button where + +import Prelude + +import Config as Config +import Data.HTTP.Method (Method(..)) +import Effect (Effect) +import Effect.Aff (Aff, launchAff_) +import Effect.Class (liftEffect) +import Effect.Console (log) +import Fetch (fetch) +import Utils (byId, listen) + +buttonPress :: String -> Aff Unit +buttonPress b = do + void $ fetch (Config.apiServer <> "/sentiment/" <> b) + { method: POST + } +main :: Effect Unit +main = launchAff_ do + liftEffect $ log "hello from button" + green <- byId "lcolonq-button-link-green" + listen green "click" \_ev -> do + liftEffect $ log "+2" + launchAff_ $ buttonPress "green" + red <- byId "lcolonq-button-link-red" + listen red "click" \_ev -> do + liftEffect $ log "-2" + launchAff_ $ buttonPress "red" diff --git a/src/Main/Extension.purs b/src/Main/Extension.purs new file mode 100644 index 0000000..7a3bfd5 --- /dev/null +++ b/src/Main/Extension.purs @@ -0,0 +1,19 @@ +module Main.Extension where + +import Prelude + +import Effect (Effect) +import Effect.Aff (launchAff_) +import Effect.Class (liftEffect) +import Effect.Console (log) +import UI as UI +import Utils (appendElement, appendText, create, query) + +main :: Effect Unit +main = launchAff_ do + liftEffect $ log "hello from extension" + UI.setInterval 1000.0 do + e <- query ".chat-scrollable-area__message-container" + new <- create "div" [".chat-line__message"] [] + appendText new "test" + appendElement e new diff --git a/src/Main/Greencircle.purs b/src/Main/Greencircle.purs new file mode 100644 index 0000000..17f3e0c --- /dev/null +++ b/src/Main/Greencircle.purs @@ -0,0 +1,11 @@ +module Main.Greencircle where + +import Prelude + +import Effect (Effect) +import Effect.Class (liftEffect) +import Effect.Console (log) + +main :: Effect Unit +main = do + liftEffect $ log "hello it is greencircle" diff --git a/src/Main/Menu.purs b/src/Main/Menu.purs new file mode 100644 index 0000000..58364b6 --- /dev/null +++ b/src/Main/Menu.purs @@ -0,0 +1,22 @@ +module Main.Menu where + +import Prelude + +import Data.Foldable (for_) +import Effect (Effect) +import Effect.Aff (launchAff_) +import Effect.Class (liftEffect) +import Effect.Console (log) +import UI as UI +import Utils (listen, queryAll) +import Web.Event.Event as Ev + +main :: Effect Unit +main = launchAff_ do + liftEffect $ log "hello from menu" + textareas <- queryAll "textarea" + for_ textareas \ta -> listen ta "click" Ev.stopPropagation + boxes <- queryAll ".lcolonq-menu-box" + for_ boxes \box -> do + listen box "click" \_ev -> do + UI.submitRedeem box diff --git a/src/Main/OBS.purs b/src/Main/OBS.purs new file mode 100644 index 0000000..4cd679f --- /dev/null +++ b/src/Main/OBS.purs @@ -0,0 +1,11 @@ +module Main.OBS where + +import Prelude + +import Effect (Effect) +import Effect.Aff (launchAff_) +import Model (startModel) + +main :: Effect Unit +main = launchAff_ do + startModel diff --git a/src/Main/Pubnix.purs b/src/Main/Pubnix.purs new file mode 100644 index 0000000..6d0fb1a --- /dev/null +++ b/src/Main/Pubnix.purs @@ -0,0 +1,52 @@ +module Main.Pubnix where + +import Prelude + +import Audio as Audio +import Auth (getToken) +import Config as Config +import Data.Array as Array +import Data.Foldable (for_) +import Data.Maybe (Maybe(..)) +import Data.Tuple (Tuple(..)) +import Effect (Effect) +import Effect.Aff (Aff, launchAff_) +import Effect.Class (liftEffect) +import Effect.Console (log) +import Fetch (fetch) +import Model (startModel) +import Utils (byId, checkAuth, listen, setText) + +updateSubtitle :: Aff Unit +updateSubtitle = do + subtitle <- byId "lcolonq-pubnix-index-subtitle" + { text: catchphrase } <- fetch (Config.apiServer <> "/catchphrase") {} + catchphrase >>= setText subtitle + +main :: Effect Unit +main = launchAff_ do + liftEffect $ log "hi" + startModel + marq <- byId "lcolonq-pubnix-index-marquee" + { text: motd } <- fetch (Config.apiServer <> "/motd") {} + motd >>= setText marq + + getToken >>= case _ of + Just a@(Tuple t n) -> do + liftEffect $ log t + liftEffect $ log n + checkAuth a >>= log >>> liftEffect + _ -> pure unit + + updateSubtitle + subtitle <- byId "lcolonq-pubnix-index-subtitle" + listen subtitle "click" \_ev -> do + -- startTwitchAuth + launchAff_ updateSubtitle + + for_ (Array.range 0 6) \i -> do + letter <- byId $ "lcolonq-pubnix-index-letter-" <> show i + listen letter "click" \_ev -> do + Audio.playVoice true i + listen letter "mouseover" \_ev -> do + Audio.playVoice false i diff --git a/src/Main/Register.purs b/src/Main/Register.purs new file mode 100644 index 0000000..3741107 --- /dev/null +++ b/src/Main/Register.purs @@ -0,0 +1,45 @@ +module Main.Register where + +import Prelude + +import Auth (authHeader, getToken, startTwitchAuth) +import Config as Config +import Data.Maybe (Maybe(..)) +import Data.String as String +import Data.Tuple (Tuple(..)) +import Effect (Effect) +import Effect.Aff (launchAff_) +import Effect.Class (liftEffect) +import Effect.Console (log) +import Fetch (fetch) +import Utils (byId, listen, removeClass, setText) + +main :: Effect Unit +main = launchAff_ do + liftEffect $ log "hello from registration page" + link <- byId "lcolonq-register-link" + getToken >>= case _ of + Just a@(Tuple _t _n) -> do -- if there's an auth token in the fragment, ask the API to register us + { text: resp } <- fetch (Config.apiServer <> "/register") + { headers: + { "Authorization": authHeader a + } + } + r <- resp + case String.split (String.Pattern " ") r of + [user, pass] -> do + container <- byId "lcolonq-registered-container" + removeClass "lcolonq-invisible" container + fieldUsername <- byId "lcolonq-registered-username" + setText fieldUsername user + fieldPassword <- byId "lcolonq-registered-password" + setText fieldPassword pass + _ -> do + container <- byId "lcolonq-register-error-container" + removeClass "lcolonq-invisible" container + _ -> do -- otherwise, show the button to register + container <- byId "lcolonq-register-container" + removeClass "lcolonq-invisible" container + listen link "click" \_ev -> do + liftEffect $ log "register" + startTwitchAuth |
