import { PremiumPlugin } from '@baserow_premium/plugins' import { JSONTableExporter, XMLTableExporter, } from '@baserow_premium/tableExporterTypes' import { DashboardType, WorkspacesAdminType, UsersAdminType, LicensesAdminType, } from '@baserow_premium/adminTypes' import rowCommentsStore from '@baserow_premium/store/row_comments' import kanbanStore from '@baserow_premium/store/view/kanban' import calendarStore from '@baserow_premium/store/view/calendar' import timelineStore from '@baserow_premium/store/view/timeline' import impersonatingStore from '@baserow_premium/store/impersonating' import { PremiumDatabaseApplicationType } from '@baserow_premium/applicationTypes' import { registerRealtimeEvents } from '@baserow_premium/realtime' import { KanbanViewType, CalendarViewType, TimelineViewType, } from '@baserow_premium/viewTypes' import { LeftBorderColorViewDecoratorType, BackgroundColorViewDecoratorType, } from '@baserow_premium/viewDecorators' import { SingleSelectColorValueProviderType, ConditionalColorValueProviderType, } from '@baserow_premium/decoratorValueProviders' import { FormViewSurveyModeType } from '@baserow_premium/formViewModeTypes' import en from '@baserow_premium/locales/en.json' import fr from '@baserow_premium/locales/fr.json' import nl from '@baserow_premium/locales/nl.json' import de from '@baserow_premium/locales/de.json' import es from '@baserow_premium/locales/es.json' import it from '@baserow_premium/locales/it.json' import pl from '@baserow_premium/locales/pl.json' import { PremiumLicenseType } from '@baserow_premium/licenseTypes' import { PersonalViewOwnershipType } from '@baserow_premium/viewOwnershipTypes' import { ViewOwnershipPermissionManagerType } from '@baserow_premium/permissionManagerTypes' import { RowCommentMentionNotificationType, RowCommentNotificationType, } from '@baserow_premium/notificationTypes' import { CommentsRowModalSidebarType } from '@baserow_premium/rowModalSidebarTypes' import { AIFieldType, PremiumFormulaFieldType, } from '@baserow_premium/fieldTypes' export default (context) => { const { store, app, isDev } = context app.$clientErrorMap.setError( 'ERROR_FEATURE_NOT_AVAILABLE', 'License required', 'This functionality requires an active premium license. Please refresh the page.' ) app.$clientErrorMap.setError( 'ERROR_USER_NOT_COMMENT_AUTHOR', app.i18n.t('rowComment.errorUserNotCommentAuthorTitle'), app.i18n.t('rowComment.errorUserNotCommentAuthor') ) app.$clientErrorMap.setError( 'ERROR_INVALID_COMMENT_MENTION', app.i18n.t('rowComment.errorInvalidCommentMentionTitle'), app.i18n.t('rowComment.errorInvalidCommentMention') ) // Allow locale file hot reloading if (isDev && app.i18n) { const { i18n } = app i18n.mergeLocaleMessage('en', en) i18n.mergeLocaleMessage('fr', fr) i18n.mergeLocaleMessage('nl', nl) i18n.mergeLocaleMessage('de', de) i18n.mergeLocaleMessage('es', es) i18n.mergeLocaleMessage('it', it) i18n.mergeLocaleMessage('pl', pl) } store.registerModule('row_comments', rowCommentsStore) store.registerModule('page/view/kanban', kanbanStore) store.registerModule('page/view/calendar', calendarStore) store.registerModule('page/view/timeline', timelineStore) store.registerModule('template/view/kanban', kanbanStore) store.registerModule('template/view/calendar', calendarStore) store.registerModule('template/view/timeline', timelineStore) store.registerModule('impersonating', impersonatingStore) app.$registry.register('plugin', new PremiumPlugin(context)) app.$registry.register('admin', new DashboardType(context)) app.$registry.register('admin', new UsersAdminType(context)) app.$registry.register('admin', new WorkspacesAdminType(context)) app.$registry.register('admin', new LicensesAdminType(context)) app.$registry.register('exporter', new JSONTableExporter(context)) app.$registry.register('exporter', new XMLTableExporter(context)) app.$registry.register('field', new AIFieldType(context)) app.$registry.register('field', new PremiumFormulaFieldType(context)) app.$registry.register('view', new KanbanViewType(context)) app.$registry.register('view', new CalendarViewType(context)) app.$registry.register('view', new TimelineViewType(context)) app.$registry.register( 'viewDecorator', new LeftBorderColorViewDecoratorType(context) ) app.$registry.register( 'viewDecorator', new BackgroundColorViewDecoratorType(context) ) app.$registry.register( 'decoratorValueProvider', new SingleSelectColorValueProviderType(context) ) app.$registry.register( 'decoratorValueProvider', new ConditionalColorValueProviderType(context) ) app.$registry.register( 'viewOwnershipType', new PersonalViewOwnershipType(context) ) app.$registry.register('formViewMode', new FormViewSurveyModeType(context)) app.$registry.register('license', new PremiumLicenseType(context)) app.$registry.register( 'permissionManager', new ViewOwnershipPermissionManagerType(context) ) registerRealtimeEvents(app.$realtime) // Overwrite the existing database application type with the one customized for // premium use. app.$registry.register( 'application', new PremiumDatabaseApplicationType(context) ) app.$registry.register( 'notification', new RowCommentMentionNotificationType(context) ) app.$registry.register( 'notification', new RowCommentNotificationType(context) ) app.$registry.register( 'rowModalSidebar', new CommentsRowModalSidebarType(context) ) }