diff --git a/app/src/i18n/locales/en.json b/app/src/i18n/locales/en.json index 4ec1499a..4d9a36a9 100644 --- a/app/src/i18n/locales/en.json +++ b/app/src/i18n/locales/en.json @@ -68,6 +68,8 @@ "app_manage_label_and_tiles": "Manage label and tiles", "app_make_default": "Make default", "app_show_categories": "Show categories", + "app_state_broken": "broken", + "app_state_broken_explanation": "This application is currently broken and not installable according to YunoHost's automatic tests", "app_state_inprogress": "not yet working", "app_state_inprogress_explanation": "This maintainer of this app declared that this application is not ready yet for production use. BE CAREFUL!", "app_state_lowquality": "low quality", @@ -102,6 +104,7 @@ "confirm_install_custom_app": "WARNING! Installing 3rd party applications may compromise the integrity and security of your system. You should probably NOT install it unless you know what you are doing. Are you willing to take that risk?", "confirm_install_domain_root": "Are you sure you want to install this application on '/'? You will not be able to install any other app on {domain}", "confirm_app_install": "Are you sure you want to install this application?", + "confirm_install_app_broken": "WARNING! This application is broken according to YunoHost's automatic tests and it is likely to break your system! You should probably NOT install it unless you know what you are doing. Are you willing to take that risk?", "confirm_install_app_lowquality": "Warning: this application may work but is not well-integrated in YunoHost. Some features such as single sign-on and backup/restore might not be available.", "confirm_install_app_inprogress": "WARNING! This application is still experimental (if not explicitly not working) and it is likely to break your system! You should probably NOT install it unless you know what you are doing. Are you willing to take that risk?", "confirm_migrations_skip": "Skipping migrations is not recommended. Are you sure you want to do that?", diff --git a/app/src/views/app/AppCatalog.vue b/app/src/views/app/AppCatalog.vue index c776711a..66bdc39b 100644 --- a/app/src/views/app/AppCatalog.vue +++ b/app/src/views/app/AppCatalog.vue @@ -270,12 +270,18 @@ export default { for (const key in data.apps) { const app = data.apps[key] app.isInstallable = !app.installed || app.manifest.integration.multi_instance - app.working = app.state === 'working' && app.level > 0 + app.working = app.state === 'working' app.decent_quality = app.working && app.level > 4 app.high_quality = app.working && app.level >= 8 - app.color = app.decent_quality ? 'success' : app.working ? 'warning' : 'danger' - if (app.working && app.level <= 4) { + app.color = 'danger' + if (app.working && app.level <= 0) { + app.state = 'broken' + app.color = 'danger' + } else if (app.working && app.level <= 4) { app.state = 'lowquality' + app.color = 'warning' + } else if (app.working) { + app.color = 'success' } app.searchValues = [ app.id,