Procházet zdrojové kódy

Handle more values from Python's JobOffer class

jherve před 2 roky
rodič
revize
6bfe36d359
1 změnil soubory, kde provedl 32 přidání a 2 odebrání
  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 (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
 }
 }