mox/webmail/msg.ts
2023-11-20 21:36:40 +01:00

67 lines
1.8 KiB
TypeScript

// Javascript is generated from typescript, do not modify generated javascript because changes will be overwritten.
// Loaded from synchronous javascript.
declare let messageItem: api.MessageItem
const init = () => {
const mi = api.parser.MessageItem(messageItem)
let msgattachmentview = dom.div()
if (mi.Attachments && mi.Attachments.length > 0) {
dom._kids(msgattachmentview,
dom.div(
style({borderTop: '1px solid #ccc'}),
dom.div(dom._class('pad'),
'Attachments: ',
join(mi.Attachments.map(a => a.Filename || '(unnamed)'), () => ', '),
),
)
)
}
const msgheaderview = dom.table(dom._class('msgheaders'), style({marginBottom: '1ex', width: '100%'}))
loadMsgheaderView(msgheaderview, mi, [], null, true)
const l = window.location.pathname.split('/')
const w = l[l.length-1]
let iframepath: string
if (w === 'msgtext') {
iframepath = 'text'
} else if (w === 'msghtml') {
iframepath = 'html'
} else if (w === 'msghtmlexternal') {
iframepath = 'htmlexternal'
} else {
window.alert('Unknown message type '+w)
return
}
iframepath += '?sameorigin=true'
let iframe: HTMLIFrameElement
const page = document.getElementById('page')!
dom._kids(page,
dom.div(
style({backgroundColor: '#f8f8f8', borderBottom: '1px solid #ccc'}),
msgheaderview,
msgattachmentview,
),
iframe=dom.iframe(
attr.title('Message body.'),
attr.src(iframepath),
style({border: '0', width: '100%', height: '100%'}),
function load() {
// Note: we load the iframe content specifically in a way that fires the load event only when the content is fully rendered.
iframe.style.height = iframe.contentDocument!.documentElement.scrollHeight+'px'
if (window.location.hash === '#print') {
window.print()
}
},
)
)
}
try {
init()
} catch (err) {
window.alert('Error: ' + ((err as any).message || '(no message)'))
}