Explorar el Código

Handle more values from Python's JobOffer class

jherve hace 1 año
padre
commit
a59cc99c84
Se han modificado 1 ficheros con 32 adiciones y 2 borrados
  1. 32 2
      src/NativeMessage.purs

+ 32 - 2
src/NativeMessage.purs

@@ -7,9 +7,10 @@ import Browser.WebExt.Message (Message, mkMessage, unwrapMessage)
 import Browser.WebExt.Port (Port, onDisconnectAddListener, onMessageAddListener)
 import Browser.WebExt.Port as Port
 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.Encode (class EncodeJson)
+import Data.Argonaut.Encode (class EncodeJson, encodeJson)
 import Data.Argonaut.Encode.Generic (genericEncodeJson)
 import Data.Either (Either(..))
 import Data.Generic.Rep (class Generic)
@@ -38,10 +39,39 @@ data NativeMessage =
   | NativeMessageJobAdded {job :: 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 = {
   id :: String,
   title :: 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_rejection_date :: Maybe String
 }