@social-mail/social-mail-client 1.2.308 → 1.2.310
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/AdminAppIndex.pack.js +461 -23
- package/dist/admin/AdminAppIndex.pack.js.map +1 -1
- package/dist/admin/AdminAppIndex.pack.min.js +6 -6
- package/dist/admin/AdminAppIndex.pack.min.js.map +1 -1
- package/dist/model/model.d.ts +76 -4
- package/dist/model/model.d.ts.map +1 -1
- package/dist/model/model.js +356 -16
- package/dist/model/model.js.map +1 -1
- package/dist/public/channel/ChannelView.pack.js +397 -19
- package/dist/public/channel/ChannelView.pack.js.map +1 -1
- package/dist/public/channel/ChannelView.pack.min.js +3 -3
- package/dist/public/channel/ChannelView.pack.min.js.map +1 -1
- package/dist/public/store/Store.pack.js +356 -16
- package/dist/public/store/Store.pack.js.map +1 -1
- package/dist/public/store/Store.pack.min.js +1 -1
- package/dist/public/store/Store.pack.min.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/web/AppIndex.pack.js +461 -23
- package/dist/web/AppIndex.pack.js.map +1 -1
- package/dist/web/AppIndex.pack.min.js +6 -6
- package/dist/web/AppIndex.pack.min.js.map +1 -1
- package/dist/web/commands/MailAppEvents.d.ts +6 -0
- package/dist/web/commands/MailAppEvents.d.ts.map +1 -0
- package/dist/web/commands/MailAppEvents.js +16 -0
- package/dist/web/commands/MailAppEvents.js.map +1 -0
- package/dist/web/page/mails/ConversationPage.d.ts +3 -0
- package/dist/web/page/mails/ConversationPage.d.ts.map +1 -1
- package/dist/web/page/mails/ConversationPage.js +53 -2
- package/dist/web/page/mails/ConversationPage.js.map +1 -1
- package/dist/web/page/mails/MailboxContacts.d.ts +2 -0
- package/dist/web/page/mails/MailboxContacts.d.ts.map +1 -1
- package/dist/web/page/mails/MailboxContacts.js +11 -2
- package/dist/web/page/mails/MailboxContacts.js.map +1 -1
- package/dist/web/page/mails/service/ConversationService.d.ts +2 -0
- package/dist/web/page/mails/service/ConversationService.d.ts.map +1 -1
- package/dist/web/page/mails/service/ConversationService.js +21 -2
- package/dist/web/page/mails/service/ConversationService.js.map +1 -1
- package/package.json +1 -1
- package/src/model/model.ts +112 -10
- package/src/web/commands/MailAppEvents.ts +8 -0
- package/src/web/page/mails/ConversationPage.tsx +54 -1
- package/src/web/page/mails/MailboxContacts.tsx +8 -0
- package/src/web/page/mails/service/ConversationService.tsx +16 -0
package/src/model/model.ts
CHANGED
|
@@ -336,15 +336,13 @@ export interface ICachedItem extends IClrEntity {
|
|
|
336
336
|
expiry?: DateTime;
|
|
337
337
|
ready?: boolean;
|
|
338
338
|
slide?: boolean;
|
|
339
|
-
lockToken?: string | null;
|
|
340
|
-
lockExpiry?: DateTime | null;
|
|
341
339
|
}
|
|
342
340
|
|
|
343
341
|
export const CachedItem: IModel<ICachedItem> = new Model<ICachedItem>(
|
|
344
342
|
"CachedItem",
|
|
345
|
-
["itemID"
|
|
346
|
-
{ key: "",expiry: new DefaultFactory(() => new DateTime()),ready: false,slide: false },
|
|
347
|
-
{"name":"cached_item","keys":[{"name":"itemID","type":"number","generated":"identity"},{"name":"keyHash","type":"string"
|
|
343
|
+
["itemID"],
|
|
344
|
+
{ keyHash: "",key: "",expiry: new DefaultFactory(() => new DateTime()),ready: false,slide: false },
|
|
345
|
+
{"name":"cached_item","keys":[{"name":"itemID","type":"number","generated":"identity"}],"properties":[{"name":"keyHash","type":"string","default":["keyHash","\"\""]},{"name":"key","type":"string","default":["key","\"\""]},{"name":"expiry","type":"DateTime","default":["expiry","new DefaultFactory(() => new DateTime())"]},{"name":"ready","type":"boolean","default":["ready","false"]},{"name":"slide","type":"boolean","default":["slide","false"]}],"relations":[]}
|
|
348
346
|
);
|
|
349
347
|
modelEntitySchemas["CachedItem"] = CachedItem;
|
|
350
348
|
|
|
@@ -462,13 +460,15 @@ export interface IEmail extends IClrEntity {
|
|
|
462
460
|
userID?: number | null;
|
|
463
461
|
readonly received?: boolean;
|
|
464
462
|
headers?: string | null;
|
|
463
|
+
hasUnsubscribe?: boolean;
|
|
465
464
|
headerMessageID?: string | null;
|
|
465
|
+
inReplyTo?: string | null;
|
|
466
466
|
externalEmailID?: string | null;
|
|
467
467
|
dateReceived?: DateTime;
|
|
468
468
|
dateCreated?: DateTime;
|
|
469
469
|
dateSent?: DateTime | null;
|
|
470
470
|
dateUpdated?: DateTime | null;
|
|
471
|
-
status?: "queued" | "received" | "draft" | "published" | "pending-approval" | "scheduled" | "sent" | "sent-failed" | "deleted";
|
|
471
|
+
status?: "queued" | "received" | "draft" | "published" | "pending-approval" | "scheduled" | "sent" | "sent-failed" | "deleted" | "closed";
|
|
472
472
|
forwardCount?: number;
|
|
473
473
|
replyCount?: number;
|
|
474
474
|
viewCount?: number;
|
|
@@ -481,7 +481,7 @@ export interface IEmail extends IClrEntity {
|
|
|
481
481
|
parentID?: number | null;
|
|
482
482
|
threadID?: number | null;
|
|
483
483
|
forwardedID?: number | null;
|
|
484
|
-
|
|
484
|
+
lastReplyID?: number | null;
|
|
485
485
|
engagement?: string | null;
|
|
486
486
|
tags?: string | null;
|
|
487
487
|
senderEmail?: IEmailAddress;
|
|
@@ -495,6 +495,8 @@ export interface IEmail extends IClrEntity {
|
|
|
495
495
|
threadChildren?: ICollection<IEmail>;
|
|
496
496
|
forwarded?: IEmail;
|
|
497
497
|
forwards?: ICollection<IEmail>;
|
|
498
|
+
lastReply?: IEmail;
|
|
499
|
+
lastRepliedThreads?: ICollection<IEmail>;
|
|
498
500
|
attachments?: ICollection<IAppFile>;
|
|
499
501
|
engagements?: ICollection<IEmailEngagement>;
|
|
500
502
|
recipients?: ICollection<IEmailRecipient>;
|
|
@@ -505,13 +507,13 @@ export interface IEmail extends IClrEntity {
|
|
|
505
507
|
subscriberActivities?: ICollection<ISubscriberActivity>;
|
|
506
508
|
}
|
|
507
509
|
|
|
508
|
-
export const EmailStatusArray = [{"label":"queued","value":"queued"},{"label":"received","value":"received"},{"label":"draft","value":"draft"},{"label":"published","value":"published"},{"label":"pending-approval","value":"pending-approval"},{"label":"scheduled","value":"scheduled"},{"label":"sent","value":"sent"},{"label":"sent-failed","value":"sent-failed"},{"label":"deleted","value":"deleted"}];
|
|
510
|
+
export const EmailStatusArray = [{"label":"queued","value":"queued"},{"label":"received","value":"received"},{"label":"draft","value":"draft"},{"label":"published","value":"published"},{"label":"pending-approval","value":"pending-approval"},{"label":"scheduled","value":"scheduled"},{"label":"sent","value":"sent"},{"label":"sent-failed","value":"sent-failed"},{"label":"deleted","value":"deleted"},{"label":"closed","value":"closed"}];
|
|
509
511
|
|
|
510
512
|
export const Email: IModel<IEmail> = new Model<IEmail>(
|
|
511
513
|
"Email",
|
|
512
514
|
["emailID"],
|
|
513
|
-
{ senderName: "",received: false,dateReceived: new DefaultFactory(() => new DateTime()),dateCreated: new DefaultFactory(() => new DateTime()),status: "queued",forwardCount: 0,replyCount: 0,viewCount: 0,emailSize: 0,originalFileSize: 0 },
|
|
514
|
-
{"name":"emails","keys":[{"name":"emailID","type":"number","generated":"identity"}],"properties":[{"name":"subject","type":"string","default":["subject","\"\""]},{"name":"summary","type":"string","default":["summary","\"\""]},{"name":"textBody","type":"string","default":["textBody","\"\""]},{"name":"htmlBody","type":"string","default":["htmlBody","\"\""]},{"name":"senderName","type":"string","default":["senderName","\"\""]},{"name":"senderID","type":"number"},{"name":"userID","type":"number"},{"name":"received","type":"boolean","default":["received","false"]},{"name":"headers","type":"string","default":["headers","\"\""]},{"name":"headerMessageID","type":"string","default":["headerMessageID","\"\""]},{"name":"externalEmailID","type":"string","default":["externalEmailID","\"\""]},{"name":"dateReceived","type":"DateTime","default":["dateReceived","new DefaultFactory(() => new DateTime())"]},{"name":"dateCreated","type":"DateTime","default":["dateCreated","new DefaultFactory(() => new DateTime())"]},{"name":"dateSent","type":"DateTime","default":["dateSent","new DefaultFactory(() => new DateTime())"]},{"name":"dateUpdated","type":"DateTime","default":["dateUpdated","new DefaultFactory(() => new DateTime())"]},{"name":"status","type":"string","default":["status","\"queued\""]},{"name":"forwardCount","type":"number","default":["forwardCount","0"]},{"name":"replyCount","type":"number","default":["replyCount","0"]},{"name":"viewCount","type":"number","default":["viewCount","0"]},{"name":"mimeFileID","type":"number"},{"name":"sentMessageID","type":"string","default":["sentMessageID","\"\""]},{"name":"htmlBodyID","type":"number"},{"name":"emailSize","type":"number","default":["emailSize","0"]},{"name":"originalFileSize","type":"number","default":["originalFileSize","0"]},{"name":"workflowID","type":"string","default":["workflowID","\"\""]},{"name":"parentID","type":"number"},{"name":"threadID","type":"number"},{"name":"forwardedID","type":"number"},{"name":"
|
|
515
|
+
{ senderName: "",received: false,hasUnsubscribe: false,dateReceived: new DefaultFactory(() => new DateTime()),dateCreated: new DefaultFactory(() => new DateTime()),status: "queued",forwardCount: 0,replyCount: 0,viewCount: 0,emailSize: 0,originalFileSize: 0 },
|
|
516
|
+
{"name":"emails","keys":[{"name":"emailID","type":"number","generated":"identity"}],"properties":[{"name":"subject","type":"string","default":["subject","\"\""]},{"name":"summary","type":"string","default":["summary","\"\""]},{"name":"textBody","type":"string","default":["textBody","\"\""]},{"name":"htmlBody","type":"string","default":["htmlBody","\"\""]},{"name":"senderName","type":"string","default":["senderName","\"\""]},{"name":"senderID","type":"number"},{"name":"userID","type":"number"},{"name":"received","type":"boolean","default":["received","false"]},{"name":"headers","type":"string","default":["headers","\"\""]},{"name":"hasUnsubscribe","type":"boolean","default":["hasUnsubscribe","false"]},{"name":"headerMessageID","type":"string","default":["headerMessageID","\"\""]},{"name":"inReplyTo","type":"string","default":["inReplyTo","\"\""]},{"name":"externalEmailID","type":"string","default":["externalEmailID","\"\""]},{"name":"dateReceived","type":"DateTime","default":["dateReceived","new DefaultFactory(() => new DateTime())"]},{"name":"dateCreated","type":"DateTime","default":["dateCreated","new DefaultFactory(() => new DateTime())"]},{"name":"dateSent","type":"DateTime","default":["dateSent","new DefaultFactory(() => new DateTime())"]},{"name":"dateUpdated","type":"DateTime","default":["dateUpdated","new DefaultFactory(() => new DateTime())"]},{"name":"status","type":"string","default":["status","\"queued\""]},{"name":"forwardCount","type":"number","default":["forwardCount","0"]},{"name":"replyCount","type":"number","default":["replyCount","0"]},{"name":"viewCount","type":"number","default":["viewCount","0"]},{"name":"mimeFileID","type":"number"},{"name":"sentMessageID","type":"string","default":["sentMessageID","\"\""]},{"name":"htmlBodyID","type":"number"},{"name":"emailSize","type":"number","default":["emailSize","0"]},{"name":"originalFileSize","type":"number","default":["originalFileSize","0"]},{"name":"workflowID","type":"string","default":["workflowID","\"\""]},{"name":"parentID","type":"number"},{"name":"threadID","type":"number"},{"name":"forwardedID","type":"number"},{"name":"lastReplyID","type":"number"},{"name":"engagement","type":"string","default":["engagement","\"\""]},{"name":"tags","type":"string","default":["tags","\"\""]}],"relations":[{"name":"senderEmail","fkMap":[{"fk":"senderID","relatedKey":"emailAddressID"}],"relatedName":"EmailAddress"},{"name":"senderUser","fkMap":[{"fk":"userID","relatedKey":"userID"}],"relatedName":"User"},{"name":"mimeFile","fkMap":[{"fk":"mimeFileID","relatedKey":"logID"}],"relatedName":"EmailLog"},{"name":"logs","isCollection":true,"isInverse":true,"relatedName":"EmailLog"},{"name":"htmlBodyFile","fkMap":[{"fk":"htmlBodyID","relatedKey":"logID"}],"relatedName":"EmailLog"},{"name":"parent","fkMap":[{"fk":"parentID","relatedKey":"emailID"}],"relatedName":"Email"},{"name":"children","isCollection":true,"isInverse":true,"relatedName":"Email"},{"name":"thread","fkMap":[{"fk":"threadID","relatedKey":"emailID"}],"relatedName":"Email"},{"name":"threadChildren","isCollection":true,"isInverse":true,"relatedName":"Email"},{"name":"forwarded","fkMap":[{"fk":"forwardedID","relatedKey":"emailID"}],"relatedName":"Email"},{"name":"forwards","isCollection":true,"isInverse":true,"relatedName":"Email"},{"name":"lastReply","fkMap":[{"fk":"lastReplyID","relatedKey":"emailID"}],"relatedName":"Email"},{"name":"lastRepliedThreads","isCollection":true,"isInverse":true,"relatedName":"Email"},{"name":"attachments","isCollection":true,"isInverse":true,"relatedName":"AppFile"},{"name":"engagements","isCollection":true,"isInverse":true,"relatedName":"EmailEngagement"},{"name":"recipients","isCollection":true,"isInverse":true,"relatedName":"EmailRecipient"},{"name":"emailTags","isCollection":true,"isInverse":true,"relatedName":"EmailTag"},{"name":"mailboxes","isCollection":true,"isInverse":true,"relatedName":"MailboxEmail"},{"name":"lastEmailThreads","isCollection":true,"isInverse":true,"relatedName":"MailboxContact"},{"name":"threadContacts","isCollection":true,"isInverse":true,"relatedName":"MailboxContactEmail"},{"name":"subscriberActivities","isCollection":true,"isInverse":true,"relatedName":"SubscriberActivity"}]}
|
|
515
517
|
);
|
|
516
518
|
modelEntitySchemas["Email"] = Email;
|
|
517
519
|
|
|
@@ -713,6 +715,7 @@ export interface IMailboxContact extends IClrEntity {
|
|
|
713
715
|
blocked?: boolean;
|
|
714
716
|
mute?: boolean;
|
|
715
717
|
status?: "invited" | "added" | "active" | "unsubscribed" | "blocked";
|
|
718
|
+
closeAllConversations?: boolean;
|
|
716
719
|
notify?: boolean;
|
|
717
720
|
emailAddressText?: string;
|
|
718
721
|
name?: string;
|
|
@@ -1535,6 +1538,105 @@ export const Tag: IModel<ITag> = new Model<ITag>(
|
|
|
1535
1538
|
);
|
|
1536
1539
|
modelEntitySchemas["Tag"] = Tag;
|
|
1537
1540
|
|
|
1541
|
+
export interface IVirtualServer extends IClrEntity {
|
|
1542
|
+
readonly serverID?: number;
|
|
1543
|
+
serverName?: string;
|
|
1544
|
+
ownerEmailAddress?: string | null;
|
|
1545
|
+
ownerPhoneNumber?: string | null;
|
|
1546
|
+
active?: boolean;
|
|
1547
|
+
bucketName?: string | null;
|
|
1548
|
+
database?: string | null;
|
|
1549
|
+
host?: string;
|
|
1550
|
+
forwardHost?: string | null;
|
|
1551
|
+
forwardPublicKey?: string | null;
|
|
1552
|
+
environmentVariables?: string | null;
|
|
1553
|
+
maxStorageGB?: number;
|
|
1554
|
+
dnsZones?: ICollection<IDnsZone>;
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1557
|
+
export const VirtualServer: IModel<IVirtualServer> = new Model<IVirtualServer>(
|
|
1558
|
+
"VirtualServer",
|
|
1559
|
+
["serverID"],
|
|
1560
|
+
{ serverName: "",active: false,host: "",maxStorageGB: 0 },
|
|
1561
|
+
{"name":"virtual_servers","keys":[{"name":"serverID","type":"number","generated":"identity"}],"properties":[{"name":"serverName","type":"string","default":["serverName","\"\""]},{"name":"ownerEmailAddress","type":"string","default":["ownerEmailAddress","\"\""]},{"name":"ownerPhoneNumber","type":"string","default":["ownerPhoneNumber","\"\""]},{"name":"active","type":"boolean","default":["active","false"]},{"name":"bucketName","type":"string","default":["bucketName","\"\""]},{"name":"database","type":"string","default":["database","\"\""]},{"name":"host","type":"string","default":["host","\"\""]},{"name":"forwardHost","type":"string","default":["forwardHost","\"\""]},{"name":"forwardPrivateKey","type":"string","default":["forwardPrivateKey","\"\""]},{"name":"forwardPublicKey","type":"string","default":["forwardPublicKey","\"\""]},{"name":"environmentVariables","type":"string","default":["environmentVariables","\"\""]},{"name":"maxStorageGB","type":"number","default":["maxStorageGB","0"]}],"relations":[{"name":"dnsZones","isCollection":true,"isInverse":true,"relatedName":"DnsZone"}]}
|
|
1562
|
+
);
|
|
1563
|
+
modelEntitySchemas["VirtualServer"] = VirtualServer;
|
|
1564
|
+
|
|
1565
|
+
export interface IDnsZone extends IClrEntity {
|
|
1566
|
+
readonly zoneID?: number;
|
|
1567
|
+
serverID?: number;
|
|
1568
|
+
zone?: string;
|
|
1569
|
+
keySigningKeyID?: number;
|
|
1570
|
+
zoneSigningKeyID?: number;
|
|
1571
|
+
dateCreated?: DateTime;
|
|
1572
|
+
dateUpdated?: DateTime;
|
|
1573
|
+
signed?: string | null;
|
|
1574
|
+
unsigned?: string | null;
|
|
1575
|
+
virtualServer?: IVirtualServer;
|
|
1576
|
+
ksk?: IDnsSigningKey;
|
|
1577
|
+
zsk?: IDnsSigningKey;
|
|
1578
|
+
records?: ICollection<IDnsZoneRecord>;
|
|
1579
|
+
}
|
|
1580
|
+
|
|
1581
|
+
export const DnsZone: IModel<IDnsZone> = new Model<IDnsZone>(
|
|
1582
|
+
"DnsZone",
|
|
1583
|
+
["zoneID"],
|
|
1584
|
+
{ zone: "",dateCreated: new DefaultFactory(() => new DateTime()),dateUpdated: new DefaultFactory(() => new DateTime()) },
|
|
1585
|
+
{"name":"dns_zones","keys":[{"name":"zoneID","type":"number","generated":"identity"}],"properties":[{"name":"serverID","type":"number"},{"name":"zone","type":"string","default":["zone","\"\""]},{"name":"zoneLowerCase","type":"string","generated":"computed"},{"name":"keySigningKeyID","type":"number"},{"name":"zoneSigningKeyID","type":"number"},{"name":"dateCreated","type":"DateTime","default":["dateCreated","new DefaultFactory(() => new DateTime())"]},{"name":"dateUpdated","type":"DateTime","default":["dateUpdated","new DefaultFactory(() => new DateTime())"]},{"name":"signed","type":"string","default":["signed","\"\""]},{"name":"unsigned","type":"string","default":["unsigned","\"\""]}],"relations":[{"name":"virtualServer","fkMap":[{"fk":"serverID","relatedKey":"serverID"}],"relatedName":"VirtualServer"},{"name":"ksk","fkMap":[{"fk":"keySigningKeyID","relatedKey":"keyID"}],"relatedName":"DnsSigningKey"},{"name":"zsk","fkMap":[{"fk":"zoneSigningKeyID","relatedKey":"keyID"}],"relatedName":"DnsSigningKey"},{"name":"records","isCollection":true,"isInverse":true,"relatedName":"DnsZoneRecord"}]}
|
|
1586
|
+
);
|
|
1587
|
+
modelEntitySchemas["DnsZone"] = DnsZone;
|
|
1588
|
+
|
|
1589
|
+
export interface IDnsZoneRecord extends IClrEntity {
|
|
1590
|
+
readonly recordID?: number;
|
|
1591
|
+
zoneID?: number;
|
|
1592
|
+
disabled?: boolean;
|
|
1593
|
+
name?: string;
|
|
1594
|
+
type?: "A" | "AAAA" | "CNAME" | "MX" | "TXT" | "PTR" | "SRV" | "CAA" | "NS" | "SOA";
|
|
1595
|
+
isAlias?: boolean;
|
|
1596
|
+
value?: string;
|
|
1597
|
+
ttl?: number;
|
|
1598
|
+
dateCreated?: DateTime;
|
|
1599
|
+
dateUpdated?: DateTime;
|
|
1600
|
+
notes?: string | null;
|
|
1601
|
+
signature?: string | null;
|
|
1602
|
+
expiryDate?: DateTime | null;
|
|
1603
|
+
readonly fqdn?: string | null;
|
|
1604
|
+
hosted?: boolean;
|
|
1605
|
+
zone?: IDnsZone;
|
|
1606
|
+
}
|
|
1607
|
+
|
|
1608
|
+
export const DnsZoneRecordTypeArray = [{"label":"A","value":"A"},{"label":"AAAA","value":"AAAA"},{"label":"CNAME","value":"CNAME"},{"label":"MX","value":"MX"},{"label":"TXT","value":"TXT"},{"label":"PTR","value":"PTR"},{"label":"SRV","value":"SRV"},{"label":"CAA","value":"CAA"},{"label":"NS","value":"NS"},{"label":"SOA","value":"SOA"}];
|
|
1609
|
+
|
|
1610
|
+
export const DnsZoneRecord: IModel<IDnsZoneRecord> = new Model<IDnsZoneRecord>(
|
|
1611
|
+
"DnsZoneRecord",
|
|
1612
|
+
["recordID"],
|
|
1613
|
+
{ disabled: false,name: "",type: "A",isAlias: false,value: "",ttl: 0,dateCreated: new DefaultFactory(() => new DateTime()),dateUpdated: new DefaultFactory(() => new DateTime()),hosted: false },
|
|
1614
|
+
{"name":"dns_zone_records","keys":[{"name":"recordID","type":"number","generated":"identity"}],"properties":[{"name":"zoneID","type":"number"},{"name":"disabled","type":"boolean","default":["disabled","false"]},{"name":"name","type":"string","default":["name","\"\""]},{"name":"type","type":"Object","default":["type","\"A\""]},{"name":"isAlias","type":"boolean","default":["isAlias","false"]},{"name":"value","type":"string","default":["value","\"\""]},{"name":"ttl","type":"number","default":["ttl","0"]},{"name":"dateCreated","type":"DateTime","default":["dateCreated","new DefaultFactory(() => new DateTime())"]},{"name":"dateUpdated","type":"DateTime","default":["dateUpdated","new DefaultFactory(() => new DateTime())"]},{"name":"notes","type":"string","default":["notes","\"\""]},{"name":"signature","type":"string","default":["signature","\"\""]},{"name":"expiryDate","type":"DateTime","default":["expiryDate","new DefaultFactory(() => new DateTime())"]},{"name":"fqdn","type":"string","default":["fqdn","\"\""]},{"name":"hosted","type":"boolean","default":["hosted","false"]}],"relations":[{"name":"zone","fkMap":[{"fk":"zoneID","relatedKey":"zoneID"}],"relatedName":"DnsZone"}]}
|
|
1615
|
+
);
|
|
1616
|
+
modelEntitySchemas["DnsZoneRecord"] = DnsZoneRecord;
|
|
1617
|
+
|
|
1618
|
+
export interface IDnsSigningKey extends IClrEntity {
|
|
1619
|
+
readonly keyID?: number;
|
|
1620
|
+
publicKey?: string;
|
|
1621
|
+
digestAlgorithm?: number;
|
|
1622
|
+
signingAlgorithm?: number;
|
|
1623
|
+
digest?: string;
|
|
1624
|
+
flags?: number;
|
|
1625
|
+
dateCreated?: DateTime;
|
|
1626
|
+
expiryDate?: DateTime;
|
|
1627
|
+
fileName?: string;
|
|
1628
|
+
kskZones?: ICollection<IDnsZone>;
|
|
1629
|
+
zskZones?: ICollection<IDnsZone>;
|
|
1630
|
+
}
|
|
1631
|
+
|
|
1632
|
+
export const DnsSigningKey: IModel<IDnsSigningKey> = new Model<IDnsSigningKey>(
|
|
1633
|
+
"DnsSigningKey",
|
|
1634
|
+
["keyID"],
|
|
1635
|
+
{ publicKey: "",digestAlgorithm: 0,signingAlgorithm: 0,digest: "",flags: 0,dateCreated: new DefaultFactory(() => new DateTime()),expiryDate: new DefaultFactory(() => new DateTime()),fileName: "" },
|
|
1636
|
+
{"name":"dns_signing_keys","keys":[{"name":"keyID","type":"number","generated":"identity"}],"properties":[{"name":"publicKey","type":"string","default":["publicKey","\"\""]},{"name":"privateKey","type":"string","default":["privateKey","\"\""]},{"name":"digestAlgorithm","type":"number","default":["digestAlgorithm","0"]},{"name":"signingAlgorithm","type":"number","default":["signingAlgorithm","0"]},{"name":"digest","type":"string","default":["digest","\"\""]},{"name":"flags","type":"number","default":["flags","0"]},{"name":"dateCreated","type":"DateTime","default":["dateCreated","new DefaultFactory(() => new DateTime())"]},{"name":"expiryDate","type":"DateTime","default":["expiryDate","new DefaultFactory(() => new DateTime())"]},{"name":"fileName","type":"string","default":["fileName","\"\""]}],"relations":[{"name":"kskZones","isCollection":true,"isInverse":true,"relatedName":"DnsZone"},{"name":"zskZones","isCollection":true,"isInverse":true,"relatedName":"DnsZone"}]}
|
|
1637
|
+
);
|
|
1638
|
+
modelEntitySchemas["DnsSigningKey"] = DnsSigningKey;
|
|
1639
|
+
|
|
1538
1640
|
const fixRelatedSchemas = (schema) => {
|
|
1539
1641
|
for (const key in schema) {
|
|
1540
1642
|
if (Object.prototype.hasOwnProperty.call(schema, key)) {
|
|
@@ -178,6 +178,19 @@ export default class ConversationPage extends ContentPage {
|
|
|
178
178
|
|
|
179
179
|
const isDraft = item.status === "draft";
|
|
180
180
|
|
|
181
|
+
if (item.status === "closed") {
|
|
182
|
+
return <div
|
|
183
|
+
class={itemCss}
|
|
184
|
+
data-sent={sent}>
|
|
185
|
+
<div data-layout="row">
|
|
186
|
+
<div data-flex="stretch-full" text={`Closed by ${item.senderName}`}/>
|
|
187
|
+
<div
|
|
188
|
+
text={DateFormats.relative.short(internalDate)}
|
|
189
|
+
title={DateFormats.withWeekDayAndTime(internalDate)}/>
|
|
190
|
+
</div>
|
|
191
|
+
</div>;
|
|
192
|
+
}
|
|
193
|
+
|
|
181
194
|
let readStatus = "";
|
|
182
195
|
let readColor = "";
|
|
183
196
|
if (sent) {
|
|
@@ -297,7 +310,23 @@ export default class ConversationPage extends ContentPage {
|
|
|
297
310
|
this.actionRenderer = () => <PopupActionButton
|
|
298
311
|
icon="fas fa-bars"
|
|
299
312
|
>
|
|
300
|
-
<div
|
|
313
|
+
<div
|
|
314
|
+
data-layout="vertical-flex"
|
|
315
|
+
style-width="200px"
|
|
316
|
+
data-font-size="small">
|
|
317
|
+
<MenuItem
|
|
318
|
+
data-click-event="close-all-threads"
|
|
319
|
+
label="Close All Threads"
|
|
320
|
+
/>
|
|
321
|
+
{ !this.parameters.autoClose
|
|
322
|
+
? <MenuItem
|
|
323
|
+
data-click-event="close-permanently"
|
|
324
|
+
label="Close Threads Permanently"
|
|
325
|
+
/>
|
|
326
|
+
: <MenuItem
|
|
327
|
+
data-click-event="open-threads"
|
|
328
|
+
label="Open Threads on new Email"
|
|
329
|
+
/>}
|
|
301
330
|
{ this.parameters.blocked
|
|
302
331
|
? <MenuItem
|
|
303
332
|
data-click-event="unblock-sender"
|
|
@@ -413,6 +442,30 @@ export default class ConversationPage extends ContentPage {
|
|
|
413
442
|
await this.conversationService.stopEmail(thread);
|
|
414
443
|
}
|
|
415
444
|
|
|
445
|
+
@Action({
|
|
446
|
+
onEvent: "close-all-threads",
|
|
447
|
+
confirm: "You sure you want to close all threads?"
|
|
448
|
+
})
|
|
449
|
+
async closeAllThreads() {
|
|
450
|
+
await this.conversationService.closeAllThreads(this.parameters);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
@Action({
|
|
454
|
+
onEvent: "close-permanently",
|
|
455
|
+
confirm: "Are you sure, you wan to close this contact permanently?"
|
|
456
|
+
})
|
|
457
|
+
async closePermament() {
|
|
458
|
+
await this.conversationService.closePermanently(this.parameters);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
@Action({
|
|
462
|
+
onEvent: "open-threads",
|
|
463
|
+
confirm: "Are you sure you want to change this contact to normal?"
|
|
464
|
+
})
|
|
465
|
+
async openThreads() {
|
|
466
|
+
await this.conversationService.closePermanently(this.parameters);
|
|
467
|
+
}
|
|
468
|
+
|
|
416
469
|
@Action({ onEvent: "forward-email"})
|
|
417
470
|
async forwardEmail(thread: IMailboxContactEmail, ce: CustomEvent) {
|
|
418
471
|
void InlinePopup.show(ce.target as HTMLElement, <div
|
|
@@ -25,6 +25,7 @@ import AddMiniContactPage from "./contact/AddMiniContactPage";
|
|
|
25
25
|
import PopupService from "@web-atoms/core/dist/web/services/PopupService";
|
|
26
26
|
import MailboxService from "../../../common/pages/mailboxes/services/MailboxService";
|
|
27
27
|
import { toKMBString } from "../../../common/NumberFormats";
|
|
28
|
+
import { MailAppEvents } from "../../commands/MailAppEvents";
|
|
28
29
|
|
|
29
30
|
const css = styled.css `
|
|
30
31
|
|
|
@@ -201,6 +202,7 @@ export default class MailsPage extends MasterDetailPage {
|
|
|
201
202
|
private version = 1;
|
|
202
203
|
|
|
203
204
|
private conversationType = "all";
|
|
205
|
+
private threadsRepeater: AtomRepeater;
|
|
204
206
|
|
|
205
207
|
async init() {
|
|
206
208
|
|
|
@@ -251,6 +253,7 @@ export default class MailsPage extends MasterDetailPage {
|
|
|
251
253
|
data-items-updated-event="mails-available"
|
|
252
254
|
data-selection-updated-event="mail-selected"
|
|
253
255
|
selectedItem={Bind.twoWays(() => this.selectedThread)}
|
|
256
|
+
presenter={Bind.presenter((c) => this.threadsRepeater = c)}
|
|
254
257
|
selectOnClick={true}
|
|
255
258
|
items={this.mails}
|
|
256
259
|
{ ... InfiniteRepeater.pagedItems((start) => (c, e, cancelToken) => this.mailService.list({
|
|
@@ -307,6 +310,11 @@ export default class MailsPage extends MasterDetailPage {
|
|
|
307
310
|
}));
|
|
308
311
|
}
|
|
309
312
|
|
|
313
|
+
@Action({ onEvent: MailAppEvents.mailboxContactUpdated})
|
|
314
|
+
updateMailboxContact(mc: IMailboxContact) {
|
|
315
|
+
this.threadsRepeater.refreshItem(mc);
|
|
316
|
+
}
|
|
317
|
+
|
|
310
318
|
@Action({ onEvent: "compose-template"})
|
|
311
319
|
async composeTemplate() {
|
|
312
320
|
const template = await PageNavigator.pushPageForResult(ChooserTemplatePage);
|
|
@@ -14,6 +14,7 @@ import BusyProgress from "../../../../services/BusyProgress";
|
|
|
14
14
|
import EmailContentDownloader from "../../../../services/email/EmailContentDownloader";
|
|
15
15
|
import EngagementService from "./EngagementService";
|
|
16
16
|
import { apiPath } from "../../../../common/apiPath";
|
|
17
|
+
import { MailAppEvents } from "../../../commands/MailAppEvents";
|
|
17
18
|
|
|
18
19
|
export const renderMail = AtomControl.registerProperty("data-html", "html", (c, e, value) => {
|
|
19
20
|
if (!value) {
|
|
@@ -105,6 +106,21 @@ export default class ConversationService {
|
|
|
105
106
|
@Inject
|
|
106
107
|
private engagementService: EngagementService;
|
|
107
108
|
|
|
109
|
+
async closeAllThreads(contact: IMailboxContact) {
|
|
110
|
+
contact.dateUpdated = DateTime.now;
|
|
111
|
+
contact.closeAllConversations = true;
|
|
112
|
+
await this.entityService.save(contact, (c) => c);
|
|
113
|
+
(contact as any).openThreads = 0;
|
|
114
|
+
MailAppEvents.mailboxContactUpdated.dispatchEvent(contact);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async closePermanently(contact: IMailboxContact) {
|
|
118
|
+
contact.autoClose = !contact.autoClose;
|
|
119
|
+
contact.dateUpdated = DateTime.now;
|
|
120
|
+
await this.entityService.save(contact, (c) => c);
|
|
121
|
+
MailAppEvents.mailboxContactUpdated.dispatchEvent(contact);
|
|
122
|
+
}
|
|
123
|
+
|
|
108
124
|
public async getDraft({ mailboxID, emailAddressID, email }: IMailboxContactEmail) {
|
|
109
125
|
const draft = "draft";
|
|
110
126
|
return await this.entityService.query(MailboxContactEmail)
|