| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- module ExampleWebExt.Content where
- import Prelude
- import Browser.DOM (getBrowserDom)
- import Data.Either (Either(..))
- import Effect (Effect)
- import Effect.Class.Console (logShow, warn)
- import Effect.Console (log)
- import ExampleWebExt.RuntimeMessage (RuntimeMessage(..), onRuntimeMessageAddListener, sendMessageToBackground)
- import LinkedIn (extractFromDocument, getContext)
- import LinkedIn.PageUrl (PageUrl(..))
- main :: Effect Unit
- main = do
- log "[content] starting up"
- dom <- getBrowserDom
- ctx <- getContext dom
- onRuntimeMessageAddListener backgroundMessageHandler
- _ <- sendMessageToBackground RuntimeMessageContentInit
- case ctx of
- Right (UrlJobOffer _) -> extractDataAndSendToBackground
- Right (UrlListRecommendedJobOffers) -> colorAlreadyVisitedOffers
- Right (UrlSearchJobOffers) -> colorAlreadyVisitedOffers
- _ -> log "[content] Nothing to do"
- -- TODO : Implement that function once local storage is updated by background
- colorAlreadyVisitedOffers ∷ Effect Unit
- colorAlreadyVisitedOffers = log "[content] Coloring of job offers is not implemented yet"
- backgroundMessageHandler ∷ RuntimeMessage → Effect Unit
- backgroundMessageHandler = case _ of
- RuntimeMessageRequestPageContent -> extractDataAndSendToBackground
- m -> logShow m
- extractDataAndSendToBackground ∷ Effect Unit
- extractDataAndSendToBackground = do
- dom <- getBrowserDom
- data_ <- extractFromDocument dom
- sendMessageToBackground RuntimeMessageContentInit
- case data_ of
- Left err -> warn $ "[content] " <> show err
- Right data_' -> sendMessageToBackground $ RuntimeMessagePageContent data_'
|