mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	Mail form tweaks
Include add button Include add button
This commit is contained in:
		@@ -4,7 +4,6 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
 | 
				
			|||||||
import { EditDialogComponent } from 'src/app/components/common/edit-dialog/edit-dialog.component'
 | 
					import { EditDialogComponent } from 'src/app/components/common/edit-dialog/edit-dialog.component'
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  IMAPSecurity,
 | 
					  IMAPSecurity,
 | 
				
			||||||
  IMAPSecurityLabels,
 | 
					 | 
				
			||||||
  PaperlessMailAccount,
 | 
					  PaperlessMailAccount,
 | 
				
			||||||
} from 'src/app/data/paperless-mail-account'
 | 
					} from 'src/app/data/paperless-mail-account'
 | 
				
			||||||
import { MailAccountService } from 'src/app/services/rest/mail-account.service'
 | 
					import { MailAccountService } from 'src/app/services/rest/mail-account.service'
 | 
				
			||||||
@@ -40,6 +39,10 @@ export class MailAccountEditDialogComponent extends EditDialogComponent<Paperles
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get imapSecurityOptions() {
 | 
					  get imapSecurityOptions() {
 | 
				
			||||||
    return IMAPSecurityLabels
 | 
					    return [
 | 
				
			||||||
 | 
					      { id: IMAPSecurity.None, name: $localize`No encryption` },
 | 
				
			||||||
 | 
					      { id: IMAPSecurity.SSL, name: $localize`SSL` },
 | 
				
			||||||
 | 
					      { id: IMAPSecurity.STARTTLS, name: $localize`STARTTLS` },
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,24 +10,25 @@
 | 
				
			|||||||
        <app-input-text i18n-title title="Name" formControlName="name" [error]="error?.name"></app-input-text>
 | 
					        <app-input-text i18n-title title="Name" formControlName="name" [error]="error?.name"></app-input-text>
 | 
				
			||||||
        <app-input-text i18n-title title="Order" formControlName="order" [error]="error?.order"></app-input-text>
 | 
					        <app-input-text i18n-title title="Order" formControlName="order" [error]="error?.order"></app-input-text>
 | 
				
			||||||
        <app-input-select i18n-title title="Account" [items]="accounts" formControlName="account"></app-input-select>
 | 
					        <app-input-select i18n-title title="Account" [items]="accounts" formControlName="account"></app-input-select>
 | 
				
			||||||
        <app-input-text i18n-title title="Folder" formControlName="folder" [error]="error?.folder"></app-input-text>
 | 
					        <app-input-text i18n-title title="Folder" formControlName="folder" i18n-hint hint="Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server." [error]="error?.folder"></app-input-text>
 | 
				
			||||||
        <app-input-number i18n-title title="Maximum age" formControlName="maximum_age" [error]="error?.maximum_age"></app-input-number>
 | 
					        <app-input-number i18n-title title="Maximum age (days)" formControlName="maximum_age" [showAdd]="false" [error]="error?.maximum_age"></app-input-number>
 | 
				
			||||||
        <app-input-select i18n-title title="Attachment type" [items]="attachmentTypeOptions" formControlName="attachment_type"></app-input-select>
 | 
					        <app-input-select i18n-title title="Attachment type" [items]="attachmentTypeOptions" formControlName="attachment_type"></app-input-select>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
      <div class="col">
 | 
					      <div class="col">
 | 
				
			||||||
 | 
					        <p class="small" i18n>Paperless will only process mails that match <em>all</em> of the filters specified below.</p>
 | 
				
			||||||
        <app-input-text i18n-title title="Filter from" formControlName="filter_from" [error]="error?.filter_from"></app-input-text>
 | 
					        <app-input-text i18n-title title="Filter from" formControlName="filter_from" [error]="error?.filter_from"></app-input-text>
 | 
				
			||||||
        <app-input-text i18n-title title="Filter subject" formControlName="filter_subject" [error]="error?.filter_subject"></app-input-text>
 | 
					        <app-input-text i18n-title title="Filter subject" formControlName="filter_subject" [error]="error?.filter_subject"></app-input-text>
 | 
				
			||||||
        <app-input-text i18n-title title="Filter body" formControlName="filter_body" [error]="error?.filter_body"></app-input-text>
 | 
					        <app-input-text i18n-title title="Filter body" formControlName="filter_body" [error]="error?.filter_body"></app-input-text>
 | 
				
			||||||
        <app-input-text i18n-title title="Filter attachment filename" formControlName="filter_attachment_filename" [error]="error?.filter_attachment_filename"></app-input-text>
 | 
					        <app-input-text i18n-title title="Filter attachment filename" formControlName="filter_attachment_filename" i18n-hint hint="Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." [error]="error?.filter_attachment_filename"></app-input-text>
 | 
				
			||||||
        <app-input-select i18n-title title="Action" [items]="actionOptions" formControlName="attachment_type"></app-input-select>
 | 
					 | 
				
			||||||
        <app-input-text i18n-title title="Action parameter" formControlName="action_parameter" [error]="error?.action_parameter"></app-input-text>
 | 
					 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
      <div class="col">
 | 
					      <div class="col">
 | 
				
			||||||
 | 
					        <app-input-select i18n-title title="Action" [items]="actionOptions" formControlName="attachment_type" i18n-hint hint="Action is only performed when documents are consumed from the mail. Mails without attachments remain entirely untouched."></app-input-select>
 | 
				
			||||||
 | 
					        <app-input-text i18n-title title="Action parameter" formControlName="action_parameter" [error]="error?.action_parameter"></app-input-text>
 | 
				
			||||||
        <app-input-select i18n-title title="Assign title from" [items]="metadataTitleOptions" formControlName="assign_title_from"></app-input-select>
 | 
					        <app-input-select i18n-title title="Assign title from" [items]="metadataTitleOptions" formControlName="assign_title_from"></app-input-select>
 | 
				
			||||||
        <app-input-tags [allowCreate]="false" formControlName="assign_tags"></app-input-tags>
 | 
					        <app-input-tags [allowCreate]="false" formControlName="assign_tags"></app-input-tags>
 | 
				
			||||||
        <app-input-select i18n-title title="Assign document type" [items]="documentTypes" formControlName="assign_document_type"></app-input-select>
 | 
					        <app-input-select i18n-title title="Assign document type" [items]="documentTypes" [allowNull]="true" formControlName="assign_document_type"></app-input-select>
 | 
				
			||||||
        <app-input-select i18n-title title="Assign correspondent from" [items]="metadataCorrespondentOptions" formControlName="assign_correspondent_from"></app-input-select>
 | 
					        <app-input-select i18n-title title="Assign correspondent from" [items]="metadataCorrespondentOptions" formControlName="assign_correspondent_from"></app-input-select>
 | 
				
			||||||
        <app-input-select i18n-title title="Assign correspondent" [items]="correspondents" formControlName="assign_correspondent"></app-input-select>
 | 
					        <app-input-select *ngIf="showCorrespondentField" i18n-title title="Assign correspondent" [items]="correspondents" [allowNull]="true" formControlName="assign_correspondent"></app-input-select>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,13 +8,9 @@ import { PaperlessDocumentType } from 'src/app/data/paperless-document-type'
 | 
				
			|||||||
import { PaperlessMailAccount } from 'src/app/data/paperless-mail-account'
 | 
					import { PaperlessMailAccount } from 'src/app/data/paperless-mail-account'
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  MailAction,
 | 
					  MailAction,
 | 
				
			||||||
  MailActionOptions,
 | 
					 | 
				
			||||||
  MailFilterAttachmentType,
 | 
					  MailFilterAttachmentType,
 | 
				
			||||||
  MailFilterAttachmentTypeOptions,
 | 
					 | 
				
			||||||
  MailMetadataCorrespondentOption,
 | 
					  MailMetadataCorrespondentOption,
 | 
				
			||||||
  MailMetadataCorrespondentOptionOptions,
 | 
					 | 
				
			||||||
  MailMetadataTitleOption,
 | 
					  MailMetadataTitleOption,
 | 
				
			||||||
  MailMetadataTitleOptionOptions,
 | 
					 | 
				
			||||||
  PaperlessMailRule,
 | 
					  PaperlessMailRule,
 | 
				
			||||||
} from 'src/app/data/paperless-mail-rule'
 | 
					} from 'src/app/data/paperless-mail-rule'
 | 
				
			||||||
import { CorrespondentService } from 'src/app/services/rest/correspondent.service'
 | 
					import { CorrespondentService } from 'src/app/services/rest/correspondent.service'
 | 
				
			||||||
@@ -89,19 +85,82 @@ export class MailRuleEditDialogComponent extends EditDialogComponent<PaperlessMa
 | 
				
			|||||||
    })
 | 
					    })
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  get showCorrespondentField(): boolean {
 | 
				
			||||||
 | 
					    return (
 | 
				
			||||||
 | 
					      this.objectForm?.get('assign_correspondent_from')?.value ==
 | 
				
			||||||
 | 
					      MailMetadataCorrespondentOption.FromCustom
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get attachmentTypeOptions() {
 | 
					  get attachmentTypeOptions() {
 | 
				
			||||||
    return MailFilterAttachmentTypeOptions
 | 
					    return [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailFilterAttachmentType.Attachments,
 | 
				
			||||||
 | 
					        name: $localize`Only process attachments.`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailFilterAttachmentType.Everything,
 | 
				
			||||||
 | 
					        name: $localize`Process all files, including 'inline' attachments.`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get actionOptions() {
 | 
					  get actionOptions() {
 | 
				
			||||||
    return MailActionOptions
 | 
					    return [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailAction.Delete,
 | 
				
			||||||
 | 
					        name: $localize`Delete`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailAction.Move,
 | 
				
			||||||
 | 
					        name: $localize`Move to specified folder`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailAction.MarkRead,
 | 
				
			||||||
 | 
					        name: $localize`Mark as read, don't process read mails`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailAction.Flag,
 | 
				
			||||||
 | 
					        name: $localize`Flag the mail, don't process flagged mails`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailAction.Tag,
 | 
				
			||||||
 | 
					        name: $localize`Tag the mail with specified tag, don't process tagged mails`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get metadataTitleOptions() {
 | 
					  get metadataTitleOptions() {
 | 
				
			||||||
    return MailMetadataTitleOptionOptions
 | 
					    return [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailMetadataTitleOption.FromSubject,
 | 
				
			||||||
 | 
					        name: $localize`Use subject as title`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailMetadataTitleOption.FromFilename,
 | 
				
			||||||
 | 
					        name: $localize`Use attachment filename as title`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get metadataCorrespondentOptions() {
 | 
					  get metadataCorrespondentOptions() {
 | 
				
			||||||
    return MailMetadataCorrespondentOptionOptions
 | 
					    return [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailMetadataCorrespondentOption.FromNothing,
 | 
				
			||||||
 | 
					        name: $localize`Do not assign a correspondent`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailMetadataCorrespondentOption.FromEmail,
 | 
				
			||||||
 | 
					        name: $localize`Use mail address`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailMetadataCorrespondentOption.FromName,
 | 
				
			||||||
 | 
					        name: $localize`Use name (or mail address if not available)`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        id: MailMetadataCorrespondentOption.FromCustom,
 | 
				
			||||||
 | 
					        name: $localize`Use correspondent selected below`,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
  <label class="form-label" [for]="inputId">{{title}}</label>
 | 
					  <label class="form-label" [for]="inputId">{{title}}</label>
 | 
				
			||||||
  <div class="input-group" [class.is-invalid]="error">
 | 
					  <div class="input-group" [class.is-invalid]="error">
 | 
				
			||||||
    <input type="number" class="form-control" [id]="inputId" [(ngModel)]="value" (change)="onChange(value)" [class.is-invalid]="error">
 | 
					    <input type="number" class="form-control" [id]="inputId" [(ngModel)]="value" (change)="onChange(value)" [class.is-invalid]="error">
 | 
				
			||||||
    <button class="btn btn-outline-secondary" type="button" id="button-addon1" (click)="nextAsn()" [disabled]="value">+1</button>
 | 
					    <button *ngIf="showAdd" class="btn btn-outline-secondary" type="button" id="button-addon1" (click)="nextAsn()" [disabled]="value">+1</button>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  <div class="invalid-feedback">
 | 
					  <div class="invalid-feedback">
 | 
				
			||||||
    {{error}}
 | 
					    {{error}}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
import { Component, forwardRef } from '@angular/core'
 | 
					import { Component, forwardRef, Input } from '@angular/core'
 | 
				
			||||||
import { NG_VALUE_ACCESSOR } from '@angular/forms'
 | 
					import { NG_VALUE_ACCESSOR } from '@angular/forms'
 | 
				
			||||||
import { FILTER_ASN_ISNULL } from 'src/app/data/filter-rule-type'
 | 
					import { FILTER_ASN_ISNULL } from 'src/app/data/filter-rule-type'
 | 
				
			||||||
import { DocumentService } from 'src/app/services/rest/document.service'
 | 
					import { DocumentService } from 'src/app/services/rest/document.service'
 | 
				
			||||||
@@ -17,6 +17,9 @@ import { AbstractInputComponent } from '../abstract-input'
 | 
				
			|||||||
  styleUrls: ['./number.component.scss'],
 | 
					  styleUrls: ['./number.component.scss'],
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
export class NumberComponent extends AbstractInputComponent<number> {
 | 
					export class NumberComponent extends AbstractInputComponent<number> {
 | 
				
			||||||
 | 
					  @Input()
 | 
				
			||||||
 | 
					  showAdd: boolean = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor(private documentService: DocumentService) {
 | 
					  constructor(private documentService: DocumentService) {
 | 
				
			||||||
    super()
 | 
					    super()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -221,7 +221,11 @@
 | 
				
			|||||||
      <a ngbNavLink i18n>Paperless Mail</a>
 | 
					      <a ngbNavLink i18n>Paperless Mail</a>
 | 
				
			||||||
      <ng-template ngbNavContent>
 | 
					      <ng-template ngbNavContent>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <h4 i18n>Mail accounts</h4>
 | 
					        <ng-container *ngIf="mailAccounts && mailRules">
 | 
				
			||||||
 | 
					          <h4>
 | 
				
			||||||
 | 
					            <ng-container i18n>Mail accounts</ng-container>
 | 
				
			||||||
 | 
					            <button type="button" class="btn btn-sm btn-primary ms-4" (click)="editMailAccount()" i18n>Add Account</button>
 | 
				
			||||||
 | 
					          </h4>
 | 
				
			||||||
          <ul class="list-group" formGroupName="mailAccounts">
 | 
					          <ul class="list-group" formGroupName="mailAccounts">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <li class="list-group-item">
 | 
					            <li class="list-group-item">
 | 
				
			||||||
@@ -238,8 +242,9 @@
 | 
				
			|||||||
                  <div class="col d-flex align-items-center">{{account.imap_server}}</div>
 | 
					                  <div class="col d-flex align-items-center">{{account.imap_server}}</div>
 | 
				
			||||||
                  <div class="col">
 | 
					                  <div class="col">
 | 
				
			||||||
                    <div class="btn-group">
 | 
					                    <div class="btn-group">
 | 
				
			||||||
                    <button class="btn btn-primary" type="button" (click)="editMailAccount(account)" i18n>Edit</button>
 | 
					                      <button class="btn btn-sm btn-primary" type="button" (click)="editMailAccount(account)" i18n>Edit</button>
 | 
				
			||||||
                    <button class="btn btn-outline-danger" type="button" (click)="deleteMailAccount(account)" i18n>Delete</button>
 | 
					                      <button class="btn btn-sm btn-outline-danger" type="button" (click)="deleteMailAccount(account)" i18n>Delete</button>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
                  </div>
 | 
					                  </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
              </div>
 | 
					              </div>
 | 
				
			||||||
@@ -248,7 +253,10 @@
 | 
				
			|||||||
            <div *ngIf="mailAccounts.length == 0" i18n>No mail accounts defined.</div>
 | 
					            <div *ngIf="mailAccounts.length == 0" i18n>No mail accounts defined.</div>
 | 
				
			||||||
        </ul>
 | 
					        </ul>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <h4 class="mt-4" i18n>Mail rules</h4>
 | 
					          <h4 class="mt-4">
 | 
				
			||||||
 | 
					            <ng-container i18n>Mail rules</ng-container>
 | 
				
			||||||
 | 
					            <button type="button" class="btn btn-sm btn-primary ms-4" (click)="editMailRule()" i18n>Add Rule</button>
 | 
				
			||||||
 | 
					          </h4>
 | 
				
			||||||
          <ul class="list-group" formGroupName="mailRules">
 | 
					          <ul class="list-group" formGroupName="mailRules">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <li class="list-group-item">
 | 
					            <li class="list-group-item">
 | 
				
			||||||
@@ -265,8 +273,9 @@
 | 
				
			|||||||
                  <div class="col d-flex align-items-center">{{(mailAccountService.getCached(rule.account) | async)?.name}}</div>
 | 
					                  <div class="col d-flex align-items-center">{{(mailAccountService.getCached(rule.account) | async)?.name}}</div>
 | 
				
			||||||
                  <div class="col">
 | 
					                  <div class="col">
 | 
				
			||||||
                    <div class="btn-group">
 | 
					                    <div class="btn-group">
 | 
				
			||||||
                    <button class="btn btn-primary" type="button" (click)="editMailRule(rule)" i18n>Edit</button>
 | 
					                      <button class="btn btn-sm btn-primary" type="button" (click)="editMailRule(rule)" i18n>Edit</button>
 | 
				
			||||||
                    <button class="btn btn-outline-danger" type="button" (click)="deleteMailRule(rule)" i18n>Delete</button>
 | 
					                      <button class="btn btn-sm btn-outline-danger" type="button" (click)="deleteMailRule(rule)" i18n>Delete</button>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
                  </div>
 | 
					                  </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
              </div>
 | 
					              </div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -481,7 +481,7 @@ export class SettingsComponent
 | 
				
			|||||||
      backdrop: 'static',
 | 
					      backdrop: 'static',
 | 
				
			||||||
      size: 'xl',
 | 
					      size: 'xl',
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    modal.componentInstance.dialogMode = 'edit'
 | 
					    modal.componentInstance.dialogMode = account ? 'edit' : 'create'
 | 
				
			||||||
    modal.componentInstance.object = account
 | 
					    modal.componentInstance.object = account
 | 
				
			||||||
    modal.componentInstance.success
 | 
					    modal.componentInstance.success
 | 
				
			||||||
      .pipe(takeUntil(this.unsubscribeNotifier))
 | 
					      .pipe(takeUntil(this.unsubscribeNotifier))
 | 
				
			||||||
@@ -523,7 +523,7 @@ export class SettingsComponent
 | 
				
			|||||||
      backdrop: 'static',
 | 
					      backdrop: 'static',
 | 
				
			||||||
      size: 'xl',
 | 
					      size: 'xl',
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    modal.componentInstance.dialogMode = 'edit'
 | 
					    modal.componentInstance.dialogMode = rule ? 'edit' : 'create'
 | 
				
			||||||
    modal.componentInstance.object = rule
 | 
					    modal.componentInstance.object = rule
 | 
				
			||||||
    modal.componentInstance.success
 | 
					    modal.componentInstance.success
 | 
				
			||||||
      .pipe(takeUntil(this.unsubscribeNotifier))
 | 
					      .pipe(takeUntil(this.unsubscribeNotifier))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,12 +6,6 @@ export enum IMAPSecurity {
 | 
				
			|||||||
  STARTTLS = 3,
 | 
					  STARTTLS = 3,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const IMAPSecurityLabels: Array<{ id: number; name: string }> = [
 | 
					 | 
				
			||||||
  { id: IMAPSecurity.None, name: $localize`No encryption` },
 | 
					 | 
				
			||||||
  { id: IMAPSecurity.SSL, name: $localize`SSL` },
 | 
					 | 
				
			||||||
  { id: IMAPSecurity.STARTTLS, name: $localize`STARTTLS` },
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export interface PaperlessMailAccount extends ObjectWithId {
 | 
					export interface PaperlessMailAccount extends ObjectWithId {
 | 
				
			||||||
  name: string
 | 
					  name: string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,28 +1,10 @@
 | 
				
			|||||||
import { ObjectWithId } from './object-with-id'
 | 
					import { ObjectWithId } from './object-with-id'
 | 
				
			||||||
import { PaperlessCorrespondent } from './paperless-correspondent'
 | 
					 | 
				
			||||||
import { PaperlessDocumentType } from './paperless-document-type'
 | 
					 | 
				
			||||||
import { PaperlessMailAccount } from './paperless-mail-account'
 | 
					 | 
				
			||||||
import { PaperlessTag } from './paperless-tag'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export enum MailFilterAttachmentType {
 | 
					export enum MailFilterAttachmentType {
 | 
				
			||||||
  Attachments = 1,
 | 
					  Attachments = 1,
 | 
				
			||||||
  Everything = 2,
 | 
					  Everything = 2,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const MailFilterAttachmentTypeOptions: Array<{
 | 
					 | 
				
			||||||
  id: number
 | 
					 | 
				
			||||||
  name: string
 | 
					 | 
				
			||||||
}> = [
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: MailFilterAttachmentType.Attachments,
 | 
					 | 
				
			||||||
    name: $localize`Only process attachments.`,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: MailFilterAttachmentType.Everything,
 | 
					 | 
				
			||||||
    name: $localize`Process all files, including 'inline' attachments.`,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export enum MailAction {
 | 
					export enum MailAction {
 | 
				
			||||||
  Delete = 1,
 | 
					  Delete = 1,
 | 
				
			||||||
  Move = 2,
 | 
					  Move = 2,
 | 
				
			||||||
@@ -31,42 +13,11 @@ export enum MailAction {
 | 
				
			|||||||
  Tag = 5,
 | 
					  Tag = 5,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const MailActionOptions: Array<{ id: number; name: string }> = [
 | 
					 | 
				
			||||||
  { id: MailAction.Delete, name: $localize`Delete` },
 | 
					 | 
				
			||||||
  { id: MailAction.Move, name: $localize`Move to specified folder` },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: MailAction.MarkRead,
 | 
					 | 
				
			||||||
    name: $localize`Mark as read, don't process read mails`,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: MailAction.Flag,
 | 
					 | 
				
			||||||
    name: $localize`Flag the mail, don't process flagged mails`,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: MailAction.Tag,
 | 
					 | 
				
			||||||
    name: $localize`Tag the mail with specified tag, don't process tagged mails`,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export enum MailMetadataTitleOption {
 | 
					export enum MailMetadataTitleOption {
 | 
				
			||||||
  FromSubject = 1,
 | 
					  FromSubject = 1,
 | 
				
			||||||
  FromFilename = 2,
 | 
					  FromFilename = 2,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const MailMetadataTitleOptionOptions: Array<{
 | 
					 | 
				
			||||||
  id: number
 | 
					 | 
				
			||||||
  name: string
 | 
					 | 
				
			||||||
}> = [
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: MailMetadataTitleOption.FromSubject,
 | 
					 | 
				
			||||||
    name: $localize`Use subject as title`,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: MailMetadataTitleOption.FromFilename,
 | 
					 | 
				
			||||||
    name: $localize`Use attachment filename as title`,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export enum MailMetadataCorrespondentOption {
 | 
					export enum MailMetadataCorrespondentOption {
 | 
				
			||||||
  FromNothing = 1,
 | 
					  FromNothing = 1,
 | 
				
			||||||
  FromEmail = 2,
 | 
					  FromEmail = 2,
 | 
				
			||||||
@@ -74,28 +25,6 @@ export enum MailMetadataCorrespondentOption {
 | 
				
			|||||||
  FromCustom = 4,
 | 
					  FromCustom = 4,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const MailMetadataCorrespondentOptionOptions: Array<{
 | 
					 | 
				
			||||||
  id: number
 | 
					 | 
				
			||||||
  name: string
 | 
					 | 
				
			||||||
}> = [
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: MailMetadataCorrespondentOption.FromNothing,
 | 
					 | 
				
			||||||
    name: $localize`Do not assign a correspondent`,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: MailMetadataCorrespondentOption.FromEmail,
 | 
					 | 
				
			||||||
    name: $localize`Use mail address`,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: MailMetadataCorrespondentOption.FromName,
 | 
					 | 
				
			||||||
    name: $localize`Use name (or mail address if not available)`,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: MailMetadataCorrespondentOption.FromCustom,
 | 
					 | 
				
			||||||
    name: $localize`Use correspondent selected below`,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export interface PaperlessMailRule extends ObjectWithId {
 | 
					export interface PaperlessMailRule extends ObjectWithId {
 | 
				
			||||||
  name: string
 | 
					  name: string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user