on master help sign in
Add MainActivity callbacks
commit526b3c5280faec889f859ceee7274c4aa1d6af3c authorAli Abrar <aliabrar@gmail.com> dateMon 22 May 2017, 15:39 (9 years ago) parent53ac06c
3 files changed+69−8
jsaddle-clib/cbits/include/jsaddle.h+7 jsaddle-clib/src-ghc/Language/Javascript/JSaddle/CLib.hs+39−6 jsaddle-clib/src/Language/Javascript/JSaddle/CLib/Internal.hsc+23−2
jsaddle-clib/cbits/include/jsaddle.h+7
@@ -9,6 +9,13 @@ typedef struct native_callbacks {
99} native_callbacks;
1010
1111typedef struct app_callbacks {
12+ void (* mainActivity_onCreate) ()
13+ void (* mainActivity_onStart) ()
14+ void (* mainActivity_onResume) ()
15+ void (* mainActivity_onPause) ()
16+ void (* mainActivity_onStop) ()
17+ void (* mainActivity_onDestroy) ()
18+ void (* mainActivity_onRestart) ()
1219 void (* firebaseInstanceIdService_sendRegistrationToServer) (char *);
1320} app_callbacks;
1421
jsaddle-clib/src-ghc/Language/Javascript/JSaddle/CLib.hs+39−6
@@ -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
jsaddle-clib/src/Language/Javascript/JSaddle/CLib/Internal.hsc+23−2
@@ -28,13 +28,34 @@ instance Storable NativeCallbacks where
2828 <*> #{peek native_callbacks, jsaddleHtmlData} p
2929
3030data AppCallbacks = AppCallbacks
31− { _appCallbacks_firebaseInstanceIdService_sendRegistrationToServer :: !(FunPtr (CString -> IO ()))
31+ { _appCallbacks_mainActivity_onCreate :: !(FunPtr (IO ()))
32+ , _appCallbacks_mainActivity_onStart :: !(FunPtr (IO ()))
33+ , _appCallbacks_mainActivity_onResume :: !(FunPtr (IO ()))
34+ , _appCallbacks_mainActivity_onPause :: !(FunPtr (IO ()))
35+ , _appCallbacks_mainActivity_onStop :: !(FunPtr (IO ()))
36+ , _appCallbacks_mainActivity_onDestroy :: !(FunPtr (IO ()))
37+ , _appCallbacks_mainActivity_onRestart :: !(FunPtr (IO ()))
38+ , _appCallbacks_firebaseInstanceIdService_sendRegistrationToServer :: !(FunPtr (CString -> IO ()))
3239 }
3340
3441instance Storable AppCallbacks where
3542 sizeOf _ = #{size app_callbacks}
3643 alignment _ = #{alignment app_callbacks}
3744 poke p nc = do
45+ #{poke app_callbacks, mainActivity_onCreate} p $ _appCallbacks_mainActivity_onCreate nc
46+ #{poke app_callbacks, mainActivity_onStart} p $ _appCallbacks_mainActivity_onStart nc
47+ #{poke app_callbacks, mainActivity_onResume} p $ _appCallbacks_mainActivity_onResume nc
48+ #{poke app_callbacks, mainActivity_onPause} p $ _appCallbacks_mainActivity_onPause nc
49+ #{poke app_callbacks, mainActivity_onStop} p $ _appCallbacks_mainActivity_onStop nc
50+ #{poke app_callbacks, mainActivity_onDestroy} p $ _appCallbacks_mainActivity_onDestroy nc
51+ #{poke app_callbacks, mainActivity_onRestart} p $ _appCallbacks_mainActivity_onRestart nc
3852 #{poke app_callbacks, firebaseInstanceIdService_sendRegistrationToServer} p $ _appCallbacks_firebaseInstanceIdService_sendRegistrationToServer nc
3953 peek p = AppCallbacks
40− <$> #{peek app_callbacks, firebaseInstanceIdService_sendRegistrationToServer} p
54+ <$> #{peek app_callbacks, mainActivity_onCreate} p
55+ <*> #{peek app_callbacks, mainActivity_onStart} p
56+ <*> #{peek app_callbacks, mainActivity_onResume} p
57+ <*> #{peek app_callbacks, mainActivity_onPause} p
58+ <*> #{peek app_callbacks, mainActivity_onStop} p
59+ <*> #{peek app_callbacks, mainActivity_onDestroy} p
60+ <*> #{peek app_callbacks, mainActivity_onRestart} p
61+ <*> #{peek app_callbacks, firebaseInstanceIdService_sendRegistrationToServer} p