class SettingsScreenPresenter implements HasBusyIndicator {

    public Promise<Void> setupUsingCurrentSection() {
        this.view.init(this);

        showBusyIndicator(ts.getTranslation(LibraryConstants.Loading));

        view.enableActions(canUpdate());

        return setupSections(new SpaceScreenModel()).then(o -> {
            hideBusyIndicator();

            if (sectionManager.manages(sectionManager.getCurrentSection())) {
                return sectionManager.goToCurrentSection();
            } else {
                return sectionManager.goToFirstAvailable();
            }
        }).catch_(o -> promises.catchOrExecute(o, e -> {
            hideBusyIndicator();
            return promises.reject(e);
        }, i -> {
            notificationEvent.fire(new NotificationEvent(ts.getTranslation(LibraryConstants.SettingsLoadError), ERROR));
            hideBusyIndicator();
            return promises.resolve();
        }));
    }

    @Inject public  SettingsScreenPresenter(final View view,
                                   final TranslationService ts,
                                   final OrganizationalUnitController organizationalUnitController,
                                   final WorkspaceProjectContext projectContext,
                                   final BusyIndicatorView busyIndicatorView,
                                   final SectionManager<SpaceScreenModel> sectionManager,
                                   final @SpaceSettings SettingsSections settingsSections,
                                   final Promises promises,
                                   final Event<NotificationEvent> notificationEvent);

}