@@ -3,10 +3,11 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
33import { ajaxPost , ajaxGet } from '@framework/Services' ;
44import { EntitySettings } from '@framework/Navigator'
55import * as Navigator from '@framework/Navigator'
6+ import * as Constructor from '@framework/Constructor'
67import * as Finder from '@framework/Finder'
78import { Lite , Entity , registerToString , JavascriptMessage } from '@framework/Signum.Entities'
89import { EntityOperationSettings } from '@framework/Operations'
9- import { PseudoType , Type , getTypeName } from '@framework/Reflection'
10+ import { PseudoType , Type , getTypeName , isTypeEntity } from '@framework/Reflection'
1011import * as Operations from '@framework/Operations'
1112import { EmailMessageEntity , EmailTemplateMessageEmbedded , EmailMasterTemplateEntity , EmailMasterTemplateMessageEmbedded , EmailMessageOperation , EmailPackageEntity , EmailRecipientEmbedded , EmailConfigurationEmbedded , EmailTemplateEntity , AsyncEmailSenderPermission , EmailModelEntity , IEmailOwnerEntity , EmailFromEmbedded , MicrosoftGraphEmbedded } from './Signum.Entities.Mailing'
1213import { EmailSenderConfigurationEntity , Pop3ConfigurationEntity , Pop3ReceptionEntity , EmailAddressEmbedded } from './Signum.Entities.Mailing'
@@ -61,17 +62,20 @@ export function start(options: {
6162
6263 Operations . addSettings ( new EntityOperationSettings ( EmailMessageOperation . CreateEmailFromTemplate , {
6364 onClick : ( ctx ) => {
64-
6565 var promise : Promise < string | undefined > = ctx . entity . model ? API . getConstructorType ( ctx . entity . model ) : Promise . resolve ( undefined ) ;
66- promise
67-
68- Finder . find ( { queryName : ctx . entity . query ! . key } ) . then ( lite => {
69- if ( ! lite )
70- return ;
71- Navigator . API . fetch ( lite ) . then ( entity =>
72- ctx . defaultClick ( entity ) )
73- . done ( ) ;
74- } ) . done ( ) ;
66+ return promise . then ( ct => {
67+ if ( ! ct || isTypeEntity ( ct ) )
68+ return Finder . find ( { queryName : ctx . entity . query ! . key } ) . then ( lite => {
69+ if ( ! lite )
70+ return ;
71+ return Navigator . API . fetch ( lite ) . then ( entity => ctx . defaultClick ( entity ) ) ;
72+ } ) ;
73+ else {
74+ var s = settings [ ct ] ;
75+ var promise = ( s ?. createFromTemplate ? s . createFromTemplate ( ctx . entity ) : Constructor . constructPack ( ct ) . then ( a => a && Navigator . view ( a ) ) ) ;
76+ return promise . then ( model => model && ctx . defaultClick ( model ) ) ;
77+ }
78+ } ) ;
7579 }
7680 } ) ) ;
7781
0 commit comments