@@ -62,17 +62,50 @@ jsaddleInit jsm evaluateJavascriptAsyncPtr = do
6262 }
6363
6464data AppConfig = AppConfig
65− { _appConfig_firebaseInstanceIdServiceSendRegistrationToServer :: Text -> IO ()
65+ { _appConfig_mainActivityOnCreate :: IO ()
66+ , _appConfig_mainActivityOnStart :: IO ()
67+ , _appConfig_mainActivityOnResume :: IO ()
68+ , _appConfig_mainActivityOnPause :: IO ()
69+ , _appConfig_mainActivityOnStop :: IO ()
70+ , _appConfig_mainActivityOnDestroy :: IO ()
71+ , _appConfig_mainActivityOnRestart :: IO ()
72+ , _appConfig_firebaseInstanceIdServiceSendRegistrationToServer :: Text -> IO ()
6673 }
6774
6875instance Default AppConfig where
69− def = AppConfig (\_ -> return ())
76+ def = AppConfig
77+ { _appConfig_mainActivityOnCreate = return ()
78+ , _appConfig_mainActivityOnStart = return ()
79+ , _appConfig_mainActivityOnResume = return ()
80+ , _appConfig_mainActivityOnPause = return ()
81+ , _appConfig_mainActivityOnStop = return ()
82+ , _appConfig_mainActivityOnDestroy = return ()
83+ , _appConfig_mainActivityOnRestart = return ()
84+ , _appConfig_firebaseInstanceIdServiceSendRegistrationToServer = \_ -> return ()
85+ }
7086
7187appConfigToAppCallbacks :: AppConfig -> IO AppCallbacks
72−appConfigToAppCallbacks (AppConfig firebaseReg) = do
73− firebaseRegPtr <- wrapMessageCallback $ \token ->
74− firebaseReg =<< (T.pack <$> peekCString token)
75− return $ AppCallbacks firebaseRegPtr
88+appConfigToAppCallbacks c = do
89+ create <- wrapStartCallback $ _appConfig_mainActivityOnCreate c
90+ start <- wrapStartCallback $ _appConfig_mainActivityOnStart c
91+ resume <- wrapStartCallback $ _appConfig_mainActivityOnResume c
92+ pause <- wrapStartCallback $ _appConfig_mainActivityOnPause c
93+ stop <- wrapStartCallback $ _appConfig_mainActivityOnStop c
94+ destroy <- wrapStartCallback $ _appConfig_mainActivityOnDestroy c
95+ restart <- wrapStartCallback $ _appConfig_mainActivityOnRestart c
96+ firebaseRegPtr <- wrapMessageCallback $ \token -> do
97+ token' <- T.pack <$> peekCString token
98+ _appConfig_firebaseInstanceIdServiceSendRegistrationToServer c token'
99+ return $ AppCallbacks
100+ { _appCallbacks_mainActivity_onCreate = create
101+ , _appCallbacks_mainActivity_onStart = start
102+ , _appCallbacks_mainActivity_onResume = resume
103+ , _appCallbacks_mainActivity_onPause = pause
104+ , _appCallbacks_mainActivity_onStop = stop
105+ , _appCallbacks_mainActivity_onDestroy = destroy
106+ , _appCallbacks_mainActivity_onRestart = restart
107+ , _appCallbacks_firebaseInstanceIdService_sendRegistrationToServer = firebaseRegPtr
108+ }
76109
77110pokeAppConfig :: Ptr AppCallbacks -> AppConfig -> IO ()
78111pokeAppConfig ptr cfg = poke ptr =<< appConfigToAppCallbacks cfg