Skip to content

RealRaven2000/SmartTemplates

Repository files navigation

To do: add a readme or wiki, just dumping some notes here:

SmartTemplates Template Flow (Simplified)

User Action: Reply / ReplyAll / ReplyToList / Forward / New
│
├─> Menu Click: "Reply with Template" / "Insert Template"
│    armedEntry set via fileTemplateInstance.armEntry()
│    ├─ numSelected for multi-message support
│    └─ timeStamp for deferred processing
│
├─> MRU Key Determination (gMsgCompose.type → Ci.nsIMsgCompType)
│    ├─ New / NewsPost / MailToUrl → "new"
│    ├─ Reply → "rsp"
│    ├─ ReplyAll → "rsp.all"
│    ├─ ReplyToList → "rsp.list"
│    ├─ ReplyToSender / ReplyToGroup / ReplyToSenderAndGroup → "rsp"
│    ├─ ForwardAsAttachment / ForwardInline → "fwd"
│    └─ Draft / EditAsNew / EditTemplate → skipped
│
├─> insertTemplate()
│    ├─ Compose case mapping (setComposeCase):
│    │    composeCase / st4composeType set based on gMsgCompose.type
│    ├─ Template Activation Check
│    │    isActiveOnAccount = pref.isTemplateActive(idKey, st4composeType)
│    │    Drafts skipped at startup
│    ├─ Template Loading:
│    │    ├─ File Template → fileTemplateSource
│    │    ├─ Thunderbird Template → editor.innerHTML
│    │    └─ Regular Template → pref.getTemplate(idKey, st4composeType)
│    ├─ Signature Extraction:
│    │    extractSignature(theIdentity, sigType, st4composeType)
│    ├─ Quote/Header Handling:
│    │    ├─ Reply: delReplyHeader() depending on flags
│    │    └─ Forward: delForwardHeader() depending on flags
│    └─ Template Processing: getProcessedText()
│
└─> Post-Insert MRU Update
     ├─ normalizeForMRU(entry) → strip unnecessary props
     ├─ storePreviousTemplate(composeType, entry)
     │    ├─ JSON.stringify(lastTemplate) → save to prefs
     │    └─ Notify background for menu update (if requested)
     └─ armedEntry.messageCount decremented if >1 (multi-message)