the-djmaze
eb0cd796b0
Improved mailbox handling of empty message subject and messagelist folder detection
2022-08-04 12:18:07 +02:00
the-djmaze
28d4a018fd
Resolve #439
2022-06-16 01:16:19 +02:00
the-djmaze
8cf8502485
Filter more message flags/keywords/tags
2022-06-10 01:06:17 +02:00
the-djmaze
5a47893cd2
Process feedback of #419
2022-06-10 00:35:13 +02:00
the-djmaze
c2d6ee90ac
Improved message flags/keywords/tags #419
2022-06-08 14:54:51 +02:00
the-djmaze
78a3b1a5be
Cleanup some MessageFlagsCache handling
2022-06-07 15:48:16 +02:00
the-djmaze
9e4edd8843
Improved tags #419
2022-06-03 14:46:05 +02:00
the-djmaze
70e3e6423e
Added message tags toggle for #419
2022-06-03 13:47:04 +02:00
the-djmaze
a6d97a601c
Translate some for #419
2022-06-02 23:13:20 +02:00
the-djmaze
855e2c61c5
Improved message flags/keywords handling for #419
2022-06-02 21:26:57 +02:00
the-djmaze
899648d8e4
Improved handling of imap message flags/keywords
2022-05-31 20:38:35 +02:00
the-djmaze
1e61171f9c
Fix RFC 9051 IMAP4rev2 keywords and $ReadReceipt should be $MDNSent
2022-05-31 17:12:29 +02:00
the-djmaze
fe9d0da14a
Added Thunderbird labels colors as test for #419
2022-05-30 12:58:50 +02:00
the-djmaze
e205a0d3e0
Resolve #248 View eml attachments
2022-05-11 23:13:24 +02:00
the-djmaze
0106751e64
Bugfix: HTMLTemplateElement never has a <body> element
2022-03-09 16:53:04 +01:00
the-djmaze
661cd2aaf9
Restructure JavaScript
...
Split list code from MessageUserStore into MessagelistUserStore
Move functions out of AppUser
2022-02-23 19:26:52 +01:00
the-djmaze
f4bed88e39
Cleanup pgp decrypt code and show green when decrypted
2022-02-17 10:18:47 +01:00
the-djmaze
6c795d4ced
Bugfix: missing comma
2022-02-15 12:08:52 +01:00
the-djmaze
9b82830c36
Improved bug #228
2022-02-15 11:05:01 +01:00
the-djmaze
9d8325d5a8
Improved "View in separate window" with theme colors
2022-02-13 20:01:21 +01:00
the-djmaze
803113568f
Resolve #228
2022-02-13 12:58:01 +01:00
the-djmaze
e0e490c64f
#89 Decrypt and verify with OpenPGP.js and GnuPG
2022-02-11 11:01:07 +01:00
the-djmaze
2037f21c45
Resolve #180 and now works with #89
2022-02-10 17:01:36 +01:00
the-djmaze
9188a8bcd2
Improved cleanHtml and the handling of removeColors for dark mode
2022-02-10 10:25:21 +01:00
the-djmaze
ad6e1bebf8
Much better HTML to Plain converter
2022-02-07 10:23:41 +01:00
the-djmaze
3fc5216841
Improved Composer handling with PGP messages
2022-02-04 13:40:59 +01:00
the-djmaze
96de0be977
#89 solve edit/reply encrypted message/draft
2022-02-04 09:54:59 +01:00
the-djmaze
6b2311663b
#89 Hide PGP SIGNATURE from cleartext signed messages
2022-02-02 18:43:55 +01:00
the-djmaze
93db6e6e0e
#89 verify detached signature using GnuPG
2022-02-02 14:36:49 +01:00
the-djmaze
e265a0f1c1
Moved the message HTML parsing from PHP to JavaScript
...
Now we can properly parse PGP/MIME HTML messages
2022-02-02 13:02:48 +01:00
the-djmaze
6b26ddec7a
#89 Redesign HTML parsing for securing PGP decrypted HTML
2022-02-01 11:46:12 +01:00
the-djmaze
4eb70c3f06
#89 show decrypted HTML with inline attachments
2022-01-31 17:29:41 +01:00
the-djmaze
ff7e41ad08
#89 Use OpenPGP.js v5.1.0 (still in progress)
2022-01-27 16:00:52 +01:00
the-djmaze
a7eeeb4f55
Many more changes for #89
2022-01-20 16:38:27 +01:00
the-djmaze
a47397ef09
Revamp PGP management due to implementing Mailvelop and PEAR Crypt_GPG
2022-01-19 18:24:07 +01:00
the-djmaze
bf84684965
Added GnuPG->verify() for testing #89
...
Bugfix SnappyMail\PGP\Keyservers
Renamed DoPgpVerify to DoMessagePgpVerify
2022-01-17 22:04:14 +01:00
the-djmaze
fde44c0102
Changes for #89
...
This part fetches the required message parts for pgp verification.
2022-01-17 17:16:25 +01:00
the-djmaze
8dcd0cf833
Changes for #89
...
Now it does not fetch the PGP signature, because validation was broken anyway.
Instead it validates multipart/signed according to RFC 3156 section 5 and returns details for the signed part:
* BodyPartId
* SigPartId
* MicAlg
So in the future several implementations (GnuPG, OpenPGP.js, etc.) can use the correct data for verification.
2022-01-17 15:58:23 +01:00
the-djmaze
630dc1e854
Added toggle in message menu to switch between HTML/Plain content parts (when available)
2022-01-14 17:13:17 +01:00
the-djmaze
464e766fcc
Put OpenPGP check outside "plain".
...
This allows also for checking HTML messages (but errors for now)
2022-01-13 12:00:12 +01:00
djmaze
94bfe09f63
Cleanup message attachments collections
2021-12-16 15:54:43 +01:00
djmaze
d734a3e415
Better mail message handling
...
* Cleanup HTML parsing
* Drop useless Microsoft 'Sensitivity' MIME Header
* Revamp Flags handling
2021-12-06 16:08:58 +01:00
djmaze
6d7911a9ed
Object.entries().forEach() to forEachObjectEntry()
2021-12-01 14:23:37 +01:00
djmaze
547d66ebcb
Easier SystemFolders handling
2021-12-01 13:54:35 +01:00
djmaze
96e2e6576c
IMAP UID is integer
2021-09-10 16:28:29 +02:00
djmaze
cca8ce065c
Resolve issue #139
2021-09-02 12:09:16 +02:00
djmaze
fa25be0631
Make unsubsribeLinks observable
2021-09-01 16:10:44 +02:00
djmaze
5895804e9a
More excessive DOM reductions
2021-08-12 14:44:38 +02:00
djmaze
5590fd4860
isNonEmptyArray => arrayLength
2021-07-21 21:34:17 +02:00
djmaze
bb15cd1ec3
Resolve Issue #100
2021-07-19 11:57:47 +02:00
djmaze
3d10bbface
Added SpamResult
2021-04-09 09:01:48 +02:00
djmaze
168ee911b3
Added: Show spam score in % in message detailed info
...
Currently only for SpamAssassin and Rspamd
2021-04-08 15:56:46 +02:00
djmaze
89cbcf6f63
Remove unused properties and improved message view header
2021-04-07 16:35:46 +02:00
djmaze
7eaaa0a793
Upgrade i18n() to use Object.entries()
...
And replace quoted object keys to be without quotes
2021-03-24 21:26:40 +01:00
djmaze
0b64083543
Array.isArray to isArray
...
Array.isNotEmpty to isNonEmptyArray
2021-03-16 16:49:14 +01:00
djmaze
6a454ec624
Convert user stores to single object instances
...
Removed unused ContactUserStore.exportingCsv and ContactUserStore.exportingVcf
2021-03-10 22:41:35 +01:00
djmaze
e2d6528bf5
Bugfix: message threaded mode was broken (knockout computable requires call to observable)
2021-03-08 15:21:54 +01:00
djmaze
db0d03db83
Bugfix: conflicting File object with native JS
...
Cleanup: Stores and tooltips
2021-02-17 14:40:21 +01:00
djmaze
10f9ce39d9
Revamp mobile including CSS flexbox for messageListItem
2021-02-15 15:20:22 +01:00
djmaze
32c3f1f059
Cleanup links
2021-02-04 11:25:00 +01:00
djmaze
7ccc44616d
Small code cleanups and fix translations
2021-01-27 00:26:31 +01:00
djmaze
ad8fd8879b
This version uses Rollup instead of WebPack.
...
Due to that the code is smaller and has changes to prevent Circular Dependencies
2021-01-25 22:00:13 +01:00
djmaze
f3bfa0e8c1
Cleanup and split Enums
2021-01-24 22:58:06 +01:00
djmaze
1535dd00f1
cleanup webpack export references
2021-01-22 16:32:08 +01:00
djmaze
b6f0b634fb
Cleanup calls to Knockout observableArray
...
Improved Knockout observableArray
2021-01-22 12:23:20 +01:00
djmaze
a28b5c2b6c
Cleanup and deduplicate languages
2021-01-21 17:21:19 +01:00
djmaze
2c40475bfa
Bugfix: failed to set message data from dom
2020-11-05 10:38:17 +01:00
djmaze
b165a1de4f
Added addComputables() to *Model
2020-10-25 14:14:14 +01:00
djmaze
22f606ea75
Bugfix: revamp MessageModel broke flags cache
...
And took the liberty to put all MessageFlagsCache functions into a class
2020-10-25 13:50:26 +01:00
djmaze
d7a4639d6b
Prevent memory leaks in *Model
2020-10-25 11:46:58 +01:00
djmaze
76c4f62186
Improved reviveFromJson() for *Model
2020-10-23 15:15:54 +02:00
djmaze
188a40b196
Basic JSON object properties revival now handled by AbstractModel
...
This will be better for future use of JSON.stringify() and JSON.parse()
For now the difference between the PHP JSON being PascalCase and the JS object properties being camelCase is handled by AbstractModel
2020-10-20 17:39:00 +02:00
djmaze
53bf7c1d60
setFromJson was not called at reviveFromJson
2020-10-20 17:29:24 +02:00
djmaze
15e07a73e9
merge all Model JSON @Object parsers into a reviveFromJson()
2020-10-18 19:46:47 +02:00
djmaze
ddc866735c
Drop unused sModelName
2020-10-18 19:19:45 +02:00
djmaze
1d6a636433
Split Common/Utils.js
...
Because admin app doesn't need most of them
2020-10-14 19:16:37 +02:00
djmaze
a0f8ac0dad
Cleanup Date.fromNow() and friendlySize()
2020-10-03 14:02:33 +02:00
djmaze
2bd9528098
Clean message preview/print
2020-10-03 13:04:23 +02:00
djmaze
c3a2da65df
Revamp array filtering
...
Replaced fakeMd5 with new Jua.randomId
Cleanup more code
2020-10-02 23:54:15 +02:00
djmaze
9992b20163
Merge file and mime code into simple Common/File.js
2020-10-02 14:44:29 +02:00
djmaze
b66e68a3b1
Merge some parts of initByJson and initUpdateByMessageJson
...
Cleanup messageListChecked handling
2020-09-20 11:29:31 +02:00
djmaze
9241726ffe
Bugfix: Message attachments should be observable or else KnockoutJS is not updating
2020-09-17 22:14:51 +02:00
djmaze
385cd9588c
Bugfix: i've wrecked rendering of inline images
2020-09-15 20:40:55 +02:00
djmaze
e99a69a9aa
Attachments array to new AttachmentCollectionModel
2020-09-15 15:08:08 +02:00
djmaze
344edaec2a
cleanup Fetch API code
2020-09-15 11:51:07 +02:00
djmaze
062f8d078e
Message from, to, cc, bcc, replyTo and deliveredTo to the new EmailCollectionModel
2020-09-15 09:43:53 +02:00
djmaze
f2d194947d
Merge Objects prototype extensions
2020-09-04 17:07:35 +02:00
djmaze
bdb36ec128
Use less jQuery, more native
2020-08-27 15:45:47 +02:00
djmaze
b185402ae7
Bugfix: Contacts.js trim() missing
...
Bugfix: ClearCookie failed
2020-08-22 01:05:43 +02:00
djmaze
7a21694396
Drop windowResize/windowResizeCallback in favor of ResizeObservable
2020-08-19 12:34:05 +02:00
djmaze
aaf4933b0a
Embed cleaner node modules
2020-08-12 01:47:24 +02:00
djmaze
e7180a86ce
Made eslint using 'browser' environment and added globals, because RainLoop is used in browsers.
...
This also allowed to remove all webpack 'externals' overhead.
2020-08-12 00:25:36 +02:00
djmaze
b1678a1566
Replaced moment.js with simple extended Date.prototype
2020-08-07 14:44:33 +02:00
djmaze
bbd9f49dcd
$.proxy is deprecated
...
$.trim is deprecated
2020-08-06 18:24:46 +02:00
djmaze
b3dd0c51b5
Removed lozad. Lazy loading of images. A browser can itself these days.
2020-08-06 15:07:43 +02:00
djmaze
ea48f5060b
isArray to native Array.isArray
...
isUnd(*) to native undefined === *
isFunc to native typeof * === 'function'
isObject to native typeof * === 'object'
microtime() to native Date().getTime();
noop to native ()=>{}
noopFalse to native ()=>false
noopTrue to native ()=>true
boolToAjax to native *?'1':'0'
Underscore.js to native
2020-07-29 21:49:41 +02:00
djmaze
2ba34532c2
JavaScript string compare '' is always a ToBoolean
...
See https://www.ecma-international.org/ecma-262/5.1/#sec-9.2
2020-07-28 17:20:14 +02:00
djmaze
82bed1ed80
Cleanup array.length checks and for() to forEach()
2020-07-28 12:35:41 +02:00
djmaze
dca0ff02ed
Use jQuery.slim
...
Underscore.js _.uniq(_.compact( to native Array.filter((value, index, self) => !!value && self.indexOf(value) == index)
Underscore.js _.compact to native Array.filter(value => !!value)
Underscore.js _.uniq to native Array.filter((value, index, self) => self.indexOf(value) == index)
Underscore.js _.values to native Object.values
Underscore.js _.flatten to native Array.flat
Underscore.js _.union to native Array.concat + unique filter
Underscore.js _.reduce to native Array.reduce
Underscore.js _.escape replaced with advanced htmlspecialchars()
Underscore.js _.memoize replaced
Now Underscore.js is a slim custom version (only _.debounce, _.defer & _.throttle)
2020-07-23 16:06:16 +02:00
djmaze
43c92a82e6
Underscore.js _.delay() to native setTimeout()
2020-07-22 20:28:25 +02:00