|
@@ -7,9 +7,10 @@ import Browser.WebExt.Message (Message, mkMessage, unwrapMessage)
|
|
|
import Browser.WebExt.Port (Port, onDisconnectAddListener, onMessageAddListener)
|
|
import Browser.WebExt.Port (Port, onDisconnectAddListener, onMessageAddListener)
|
|
|
import Browser.WebExt.Port as Port
|
|
import Browser.WebExt.Port as Port
|
|
|
import Browser.WebExt.Runtime (Application, connectNative)
|
|
import Browser.WebExt.Runtime (Application, connectNative)
|
|
|
-import Data.Argonaut.Decode (class DecodeJson, printJsonDecodeError)
|
|
|
|
|
|
|
+import Data.Argonaut.Decode (class DecodeJson, JsonDecodeError(..), printJsonDecodeError)
|
|
|
|
|
+import Data.Argonaut.Decode.Decoders (decodeString)
|
|
|
import Data.Argonaut.Decode.Generic (genericDecodeJson)
|
|
import Data.Argonaut.Decode.Generic (genericDecodeJson)
|
|
|
-import Data.Argonaut.Encode (class EncodeJson)
|
|
|
|
|
|
|
+import Data.Argonaut.Encode (class EncodeJson, encodeJson)
|
|
|
import Data.Argonaut.Encode.Generic (genericEncodeJson)
|
|
import Data.Argonaut.Encode.Generic (genericEncodeJson)
|
|
|
import Data.Either (Either(..))
|
|
import Data.Either (Either(..))
|
|
|
import Data.Generic.Rep (class Generic)
|
|
import Data.Generic.Rep (class Generic)
|
|
@@ -38,10 +39,39 @@ data NativeMessage =
|
|
|
| NativeMessageJobAdded {job :: NativePythonJobOffer}
|
|
| NativeMessageJobAdded {job :: NativePythonJobOffer}
|
|
|
| NativeMessageJobOfferList (Array NativePythonJobOffer)
|
|
| NativeMessageJobOfferList (Array NativePythonJobOffer)
|
|
|
|
|
|
|
|
|
|
+data ApplicationProcess
|
|
|
|
|
+ = ApplicationProcessLinkedInSimplified
|
|
|
|
|
+ | ApplicationProcessRegular
|
|
|
|
|
+ | ApplicationProcessCareerSite
|
|
|
|
|
+ | ApplicationProcessSpurious
|
|
|
|
|
+
|
|
|
|
|
+derive instance Generic ApplicationProcess _
|
|
|
|
|
+instance Show ApplicationProcess where show = genericShow
|
|
|
|
|
+instance EncodeJson ApplicationProcess where
|
|
|
|
|
+ encodeJson = case _ of
|
|
|
|
|
+ ApplicationProcessLinkedInSimplified -> encodeJson "linked_in_simplified"
|
|
|
|
|
+ ApplicationProcessRegular -> encodeJson "regular"
|
|
|
|
|
+ ApplicationProcessCareerSite -> encodeJson "career_site"
|
|
|
|
|
+ ApplicationProcessSpurious -> encodeJson "spurious"
|
|
|
|
|
+
|
|
|
|
|
+instance DecodeJson ApplicationProcess where
|
|
|
|
|
+ decodeJson json = case decodeString json of
|
|
|
|
|
+ Right "linked_in_simplified" -> Right ApplicationProcessLinkedInSimplified
|
|
|
|
|
+ Right "regular" -> Right ApplicationProcessRegular
|
|
|
|
|
+ Right "career_site" -> Right ApplicationProcessCareerSite
|
|
|
|
|
+ Right "spurious" -> Right ApplicationProcessSpurious
|
|
|
|
|
+ _ -> Left $ UnexpectedValue json
|
|
|
|
|
+
|
|
|
type NativePythonJobOffer = {
|
|
type NativePythonJobOffer = {
|
|
|
id :: String,
|
|
id :: String,
|
|
|
title :: String,
|
|
title :: String,
|
|
|
url :: String,
|
|
url :: String,
|
|
|
|
|
+ company :: String,
|
|
|
|
|
+ location :: Maybe String,
|
|
|
|
|
+ company_domain :: Maybe String,
|
|
|
|
|
+ company_url :: Maybe String,
|
|
|
|
|
+ flexibility :: Maybe JobFlexibility,
|
|
|
|
|
+ application_process :: Maybe ApplicationProcess,
|
|
|
application_date :: Maybe String,
|
|
application_date :: Maybe String,
|
|
|
application_rejection_date :: Maybe String
|
|
application_rejection_date :: Maybe String
|
|
|
}
|
|
}
|