|
25 | 25 | [frontend.handler.global-config :as global-config-handler] |
26 | 26 | [frontend.handler.notification :as notification] |
27 | 27 | [frontend.handler.page :as page-handler] |
| 28 | + [frontend.handler.plugin :as plugin-handler] |
28 | 29 | [frontend.handler.plugin-config :as plugin-config-handler] |
29 | 30 | [frontend.handler.repo :as repo-handler] |
30 | 31 | [frontend.handler.repo-config :as repo-config-handler] |
|
137 | 138 |
|
138 | 139 | (defn start! |
139 | 140 | [render] |
140 | | - |
141 | | - (idb/start) |
142 | | - (get-system-info) |
143 | | - (set-global-error-notification!) |
144 | | - |
145 | | - (register-components-fns!) |
146 | | - (user-handler/restore-tokens-from-localstorage) |
147 | | - (user.login/setup-configure!) |
148 | | - (state/set-db-restoring! true) |
149 | | - (when (util/electron?) |
150 | | - (el/listen!)) |
151 | | - (render) |
152 | | - (i18n/start) |
153 | | - (instrument/init) |
154 | | - |
155 | | - (-> (util/indexeddb-check?) |
156 | | - (p/catch (fn [_e] |
157 | | - (notification/show! "Sorry, it seems that your browser doesn't support IndexedDB, we recommend to use latest Chrome(Chromium) or Firefox(Non-private mode)." :error false) |
158 | | - (state/set-indexedb-support! false)))) |
159 | | - |
160 | | - (react/run-custom-queries-when-idle!) |
161 | | - |
162 | | - (events/run!) |
163 | | - |
164 | | - (log/info ::start-web-worker {}) |
165 | | - |
166 | | - (p/do! |
167 | | - (-> (p/let [_ (db-browser/start-db-worker!) |
168 | | - repos (repo-handler/get-repos) |
169 | | - _ (state/set-repos! repos) |
170 | | - _ (mobile-util/hide-splash) ;; hide splash as early as ui is stable |
171 | | - repo (or (state/get-current-repo) (:url (first repos))) |
172 | | - _ (if (empty? repos) |
173 | | - (repo-handler/new-db! config/demo-repo) |
174 | | - (restore-and-setup! repo))] |
175 | | - (set-network-watcher!) |
176 | | - |
177 | | - (when (util/electron?) |
178 | | - (persist-db/run-export-periodically!)) |
179 | | - (when (mobile-util/native-platform?) |
180 | | - (state/restore-mobile-theme!))) |
181 | | - (p/catch (fn [e] |
182 | | - (js/console.error "Error while restoring repos: " e))) |
183 | | - (p/finally (fn [] |
184 | | - (state/set-db-restoring! false) |
185 | | - (p/resolve! state/app-ready-promise true) |
186 | | - (when-not (util/mobile?) |
187 | | - (p/let [webgpu-available? (db-browser/<check-webgpu-available?)] |
188 | | - (log/info :webgpu-available? webgpu-available?) |
189 | | - (when webgpu-available? |
190 | | - (p/do! (db-browser/start-inference-worker!) |
191 | | - (db-browser/<connect-db-worker-and-infer-worker!) |
192 | | - (reset! vector-search-flows/*infer-worker-ready true)))) |
193 | | - nil)))) |
194 | | - |
195 | | - (util/<app-wake-up-from-sleep-loop (atom false)) |
196 | | - |
197 | | - (when-not (util/mobile?) |
198 | | - (persist-var/load-vars)))) |
| 141 | + (let [t1 (util/time-ms)] |
| 142 | + (p/do! |
| 143 | + (idb/start) |
| 144 | + (plugin-handler/setup!) |
| 145 | + (render)) |
| 146 | + |
| 147 | + (get-system-info) |
| 148 | + (set-global-error-notification!) |
| 149 | + |
| 150 | + (register-components-fns!) |
| 151 | + (user-handler/restore-tokens-from-localstorage) |
| 152 | + (user.login/setup-configure!) |
| 153 | + (state/set-db-restoring! true) |
| 154 | + (when (util/electron?) |
| 155 | + (el/listen!)) |
| 156 | + |
| 157 | + (i18n/start) |
| 158 | + (instrument/init) |
| 159 | + |
| 160 | + (react/run-custom-queries-when-idle!) |
| 161 | + |
| 162 | + (events/run!) |
| 163 | + |
| 164 | + (log/info ::start-web-worker {}) |
| 165 | + |
| 166 | + (p/do! |
| 167 | + (-> (p/let [t2 (util/time-ms) |
| 168 | + _ (db-browser/start-db-worker!) |
| 169 | + _ (log/info ::db-worker-spent-time (- (util/time-ms) t2)) |
| 170 | + repos (repo-handler/get-repos) |
| 171 | + _ (state/set-repos! repos) |
| 172 | + _ (mobile-util/hide-splash) ;; hide splash as early as ui is stable |
| 173 | + repo (or (state/get-current-repo) (:url (first repos))) |
| 174 | + _ (if (empty? repos) |
| 175 | + (repo-handler/new-db! config/demo-repo) |
| 176 | + (restore-and-setup! repo))] |
| 177 | + (set-network-watcher!) |
| 178 | + |
| 179 | + (when (util/electron?) |
| 180 | + (persist-db/run-export-periodically!)) |
| 181 | + (when (mobile-util/native-platform?) |
| 182 | + (state/restore-mobile-theme!))) |
| 183 | + (p/catch (fn [e] |
| 184 | + (js/console.error "Error while restoring repos: " e))) |
| 185 | + (p/finally (fn [] |
| 186 | + (state/set-db-restoring! false) |
| 187 | + (p/resolve! state/app-ready-promise true) |
| 188 | + (log/info ::app-init-spent-time (- (util/time-ms) t1)) |
| 189 | + (when-not (util/mobile?) |
| 190 | + ;; (p/let [webgpu-available? (db-browser/<check-webgpu-available?)] |
| 191 | + ;; (log/info :webgpu-available? webgpu-available?) |
| 192 | + ;; (when webgpu-available? |
| 193 | + ;; (p/do! (db-browser/start-inference-worker!) |
| 194 | + ;; (db-browser/<connect-db-worker-and-infer-worker!) |
| 195 | + ;; (reset! vector-search-flows/*infer-worker-ready true)))) |
| 196 | + nil)))) |
| 197 | + |
| 198 | + (util/<app-wake-up-from-sleep-loop (atom false)) |
| 199 | + |
| 200 | + (when-not (util/mobile?) |
| 201 | + (persist-var/load-vars))))) |
199 | 202 |
|
200 | 203 | (defn stop! [] |
201 | 204 | (prn "stop!")) |
|
0 commit comments