mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05: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,8 +221,12 @@ | |||||||
|       <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"> | ||||||
|         <ul class="list-group" formGroupName="mailAccounts"> |           <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"> | ||||||
|  |  | ||||||
|             <li class="list-group-item"> |             <li class="list-group-item"> | ||||||
|               <div class="row"> |               <div class="row"> | ||||||
| @@ -232,14 +236,15 @@ | |||||||
|               </div> |               </div> | ||||||
|             </li> |             </li> | ||||||
|  |  | ||||||
|             <li *ngFor="let account of mailAccounts" class="list-group-item" [formGroupName]="account.id"> |               <li *ngFor="let account of mailAccounts" class="list-group-item" [formGroupName]="account.id"> | ||||||
|               <div class="row"> |                 <div class="row"> | ||||||
|                 <div class="col d-flex align-items-center"><button class="btn btn-link p-0" type="button" (click)="editMailAccount(account)">{{account.name}}</button></div> |                   <div class="col d-flex align-items-center"><button class="btn btn-link p-0" type="button" (click)="editMailAccount(account)">{{account.name}}</button></div> | ||||||
|                 <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,8 +253,11 @@ | |||||||
|             <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"> | ||||||
|         <ul class="list-group" formGroupName="mailRules"> |             <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"> | ||||||
|  |  | ||||||
|             <li class="list-group-item"> |             <li class="list-group-item"> | ||||||
|               <div class="row"> |               <div class="row"> | ||||||
| @@ -259,14 +267,15 @@ | |||||||
|               </div> |               </div> | ||||||
|             </li> |             </li> | ||||||
|  |  | ||||||
|             <li *ngFor="let rule of mailRules" class="list-group-item" [formGroupName]="rule.id"> |               <li *ngFor="let rule of mailRules" class="list-group-item" [formGroupName]="rule.id"> | ||||||
|               <div class="row"> |                 <div class="row"> | ||||||
|                 <div class="col d-flex align-items-center"><button class="btn btn-link p-0" type="button" (click)="editMailRule(rule)">{{rule.name}}</button></div> |                   <div class="col d-flex align-items-center"><button class="btn btn-link p-0" type="button" (click)="editMailRule(rule)">{{rule.name}}</button></div> | ||||||
|                 <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
	 Michael Shamoon
					Michael Shamoon