@@ -199,16 +199,24 @@ class StatePlatform {
199199 StatePlugins .instance.installMissingEmbeddedPlugins(context);
200200
201201 for (plugin in StatePlugins .instance.getPlugins()) {
202- _icons [plugin.config.id] = StatePlugins .instance.getPluginIconOrNull(plugin.config.id) ? :
203- ImageVariable (plugin.config.absoluteIconUrl, null );
204- _iconsByName [plugin.config.name.lowercase()] = StatePlugins .instance.getPluginIconOrNull(plugin.config.id) ? :
205- ImageVariable (plugin.config.absoluteIconUrl, null );
206-
207- val client = JSClient (context, plugin);
208- client.onCaptchaException.subscribe { c, ex ->
209- StateApp .instance.handleCaptchaException(c, ex);
202+ try {
203+ val client = JSClient (context, plugin);
204+ client.onCaptchaException.subscribe { c, ex ->
205+ StateApp .instance.handleCaptchaException(c, ex);
206+ }
207+
208+ _icons [plugin.config.id] = StatePlugins .instance.getPluginIconOrNull(plugin.config.id) ? :
209+ ImageVariable (plugin.config.absoluteIconUrl, null );
210+ _iconsByName [plugin.config.name.lowercase()] = StatePlugins .instance.getPluginIconOrNull(plugin.config.id) ? :
211+ ImageVariable (plugin.config.absoluteIconUrl, null );
212+ _availableClients .add(client);
213+ }
214+ catch (ex: Throwable ) {
215+ Logger .e(TAG , " Failed to initialize plugin [${plugin.config.name} ]" , ex);
216+ StateApp .instance.scopeOrNull?.launch(Dispatchers .Main ) {
217+ UIDialogs .toast(" Plugin ${plugin.config.name} failed to load\n ${ex.message} " );
218+ }
210219 }
211- _availableClients .add(client);
212220 }
213221
214222 if (_availableClients .distinctBy { it.id }.count() < _availableClients .size) {
0 commit comments