From da3287763591a55651cc4279d37187e49d656b1b Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Fri, 22 Sep 2023 11:28:23 -0700 Subject: [PATCH] Move mail settings to its own component --- src-ui/e2e/admin/settings.spec.ts | 23 - src-ui/src/app/app-routing.module.ts | 21 +- src-ui/src/app/app.component.ts | 10 +- src-ui/src/app/app.module.ts | 2 + .../admin/settings/settings.component.html | 96 +--- .../admin/settings/settings.component.spec.ts | 255 +--------- .../admin/settings/settings.component.ts | 471 ++++-------------- .../app-frame/app-frame.component.html | 21 +- .../manage/mail/mail.component.html | 83 +++ .../manage/mail/mail.component.scss | 0 .../manage/mail/mail.component.spec.ts | 304 +++++++++++ .../components/manage/mail/mail.component.ts | 232 +++++++++ .../app/services/rest/mail-account.service.ts | 4 +- 13 files changed, 771 insertions(+), 751 deletions(-) create mode 100644 src-ui/src/app/components/manage/mail/mail.component.html create mode 100644 src-ui/src/app/components/manage/mail/mail.component.scss create mode 100644 src-ui/src/app/components/manage/mail/mail.component.spec.ts create mode 100644 src-ui/src/app/components/manage/mail/mail.component.ts diff --git a/src-ui/e2e/admin/settings.spec.ts b/src-ui/e2e/admin/settings.spec.ts index 0dc2532e7..00bdde029 100644 --- a/src-ui/e2e/admin/settings.spec.ts +++ b/src-ui/e2e/admin/settings.spec.ts @@ -2,24 +2,6 @@ import { test, expect } from '@playwright/test' const REQUESTS_HAR = 'e2e/admin/requests/api-settings.har' -test('should post settings on save', async ({ page }) => { - await page.routeFromHAR(REQUESTS_HAR, { notFound: 'fallback' }) - await page.goto('/settings') - await page.getByLabel('Use system setting').click() - await page.getByRole('button', { name: 'Save' }).scrollIntoViewIfNeeded() - const updatePromise = page.waitForRequest((request) => { - const data = request.postDataJSON() - const isValid = data['settings'] != null - return ( - isValid && - request.method() === 'POST' && - request.url().includes('/api/ui_settings/') - ) - }) - await page.getByRole('button', { name: 'Save' }).click() - await updatePromise -}) - test('should activate / deactivate save button when settings change', async ({ page, }) => { @@ -89,11 +71,6 @@ test('should support tab direct navigation', async ({ page }) => { 'aria-selected', 'true' ) - await page.goto('/settings/mail') - await expect(page.getByRole('tab', { name: 'Mail' })).toHaveAttribute( - 'aria-selected', - 'true' - ) await page.goto('/settings/usersgroups') await expect( page.getByRole('tab', { name: 'Users & Groups' }) diff --git a/src-ui/src/app/app-routing.module.ts b/src-ui/src/app/app-routing.module.ts index f3e6b518a..95a4c9f24 100644 --- a/src-ui/src/app/app-routing.module.ts +++ b/src-ui/src/app/app-routing.module.ts @@ -22,6 +22,7 @@ import { PermissionType, } from './services/permissions.service' import { ConsumptionTemplatesListComponent } from './components/manage/consumption-templates-list/consumption-templates-list.component' +import { MailComponent } from './components/manage/mail/mail.component' export const routes: Routes = [ { path: '', redirectTo: 'dashboard', pathMatch: 'full' }, @@ -143,6 +144,10 @@ export const routes: Routes = [ }, }, }, + { + path: 'settings/mail', + redirectTo: '/mail', + }, { path: 'settings', component: SettingsComponent, @@ -167,11 +172,6 @@ export const routes: Routes = [ }, }, }, - { - path: 'settings/:section', - component: SettingsComponent, - canDeactivate: [DirtyFormGuard], - }, { path: 'tasks', component: TasksComponent, @@ -194,6 +194,17 @@ export const routes: Routes = [ }, }, }, + { + path: 'mail', + component: MailComponent, + canActivate: [PermissionsGuard], + data: { + requiredPermission: { + action: PermissionAction.View, + type: PermissionType.MailAccount, + }, + }, + }, ], }, diff --git a/src-ui/src/app/app.component.ts b/src-ui/src/app/app.component.ts index ca8e5ab23..1bed38752 100644 --- a/src-ui/src/app/app.component.ts +++ b/src-ui/src/app/app.component.ts @@ -179,6 +179,14 @@ export class AppComponent implements OnInit, OnDestroy { offset: 0, }, }, + { + anchorId: 'tour.mail', + content: $localize`Manage e-mail accounts and rules for automatically importing documents.`, + route: '/mail', + backdropConfig: { + offset: 0, + }, + }, { anchorId: 'tour.file-tasks', content: $localize`File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process.`, @@ -189,7 +197,7 @@ export class AppComponent implements OnInit, OnDestroy { }, { anchorId: 'tour.settings', - content: $localize`Check out the settings for various tweaks to the web app, toggle settings for saved views or setup e-mail checking.`, + content: $localize`Check out the settings for various tweaks to the web app, toggle settings for saved views or manage users.`, route: '/settings', backdropConfig: { offset: 0, diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index f53f24adc..c2313dadd 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -125,6 +125,7 @@ import localeSv from '@angular/common/locales/sv' import localeTr from '@angular/common/locales/tr' import localeUk from '@angular/common/locales/uk' import localeZh from '@angular/common/locales/zh' +import { MailComponent } from './components/manage/mail/mail.component' registerLocaleData(localeAf) registerLocaleData(localeAr) @@ -237,6 +238,7 @@ function initializeApp(settings: SettingsService) { ShareLinksDropdownComponent, ConsumptionTemplatesListComponent, ConsumptionTemplateEditDialogComponent, + MailComponent, ], imports: [ BrowserModule, diff --git a/src-ui/src/app/components/admin/settings/settings.component.html b/src-ui/src/app/components/admin/settings/settings.component.html index e2e4ed5c5..ad411aab7 100644 --- a/src-ui/src/app/components/admin/settings/settings.component.html +++ b/src-ui/src/app/components/admin/settings/settings.component.html @@ -11,7 +11,7 @@